phone

    • chevron_right

      Florian Müllner: Extensions in GNOME 45

      news.movim.eu / PlanetGnome • 2 September, 2023 • 3 minutes

    By now it is probably no longer news to many: GNOME Shell moved from GJS’ own custom imports system to standard JavaScript modules (ESM).

    Imports? ESM?

    JavaScript originated in web browsers to add a bit of interactivity to otherwise static pages. There was no need to split up small code snippets into multiple files, so the language did not provide a mechanism for that.

    This did become an issue when people started writing bigger programs in JavaScript, so environments like node.js and GJS added their own import systems to organize code into multiple files. As a consequence, developers and tooling had a hard time transitioning from one environment to another.

    That changed in 2015 when ECMAScript 6 standardized modules, resulting in a well-defined, widely-supported syntax supported by all major JavaScript engines. GJS has supported ESModules since 2021, but porting GNOME Shell was a much bigger task that had to be done all at once.

    So? Why should I care?

    Well, there is a teeny tiny drawback: Modules and legacy imports are incompatible in practice.

    Modules are loaded differently than scripts, and some statements — namely import and export — are only valid in modules. That means that trying to import a module with the legacy system will result in a syntax error if the module uses one of those statements (about as likely as a pope being Catholic).

    Modules also hide anything to the outside that isn’t explicitly exported. So while it is technically possible to import a script as module, it is about as useful as importing an empty file.

    What does this mean for extensions?

    Extensions that target older GNOME versions will not work in GNOME 45. Likewise, extensions that are adapted to work with GNOME 45 will not work in older versions.

    You can still support more than one GNOME version, but you will have to upload different versions to extensions.gnome.org for pre- and post-45 support.

    There is a porting guide with detailed information. The two most important changes (that will be enough for many extensions!) are:

    1. Use standard syntax to import modules from gnome-shell:

      import * as Main from 'resource:///org/gnome/shell/ui/main.js';
      
      Main.notify('Loaded!');
      
    2. Export a default class with enable() and disable() methods from your extension.js .

      You may want to extend the new Extension class that replaces the convenience API from the old ExtensionUtils module.

      import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
      
      export default class MyTestExtension extends Extension {
          enable() {
              console.log(_('%s is now enabled').format(this.uuid));
          }
      
          disable() {
              console.log(_('%s is now disabled.').format(this.uuid));
          }
      }
      

    Last but not least, you can always find friendly people on Matrix and Discourse who will be happy to help with any porting issues.

    Summary
    • Moving from the custom import system from GJS to the industry standard ECMAScript 6 will cause every extension to break. The move though will mean we are following proper standards and not home grown ones allowing greater compatibility with JavaScript ecosystem.
    • Legacy imports are still supported on extensions.gnome.org but you will need to upload a pre and post GNOME 45 support in order support both LTS and regular distribtuions.

    For GNOME Extension Developers:
    There is a active extension community who can help you port to the new import system at Matrix and Discourse who can help you quickly port to the new version.

    You can test your extensions by downloading the latest GNOME OS and trying your extension there.

    To the GNOME Community:
    Please file bugs with your favorite extensions or have a friendly conversation with your extension writers so that we can help minimize the impact of this change. Ideally, you could help with the port and provide a pull or merge request to help maintainers.

    Resources
    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /shell-dev/2023/09/02/extensions-in-gnome-45/

    • chevron_right

      Aryan Kaushik: GUADEC 2023 Experience

      news.movim.eu / PlanetGnome • 2 September, 2023 • 5 minutes

    Sveiki visiem!

    In this blog, I'm pumped to share my experience attending GUADEC 2023 held in Riga, Latvia.

    Let's start :)

    During the conference, I presented a joint talk with Pooja Patel on "How to add 16.67% more users and contributors: A guide to creating accessible applications".

    The talk was on Day 2 of the conference and we got quite nervous haha. We didn't join the walking tour and had to skip some of the most amazing talks on Day 2.

    Fortunately, The journey was made more streamlined due to the extensive support of the staff team. I also want to thank Melissa for doing all the bookings and keeping up with our issues xD

    The conference was not easy to attend in any way. Me and Asmit (One of the organisers and friends) decided pretty early on that we would volunteer for the GUADEC Organising team. Unfortunately, a lot of stuff happened and I got late. Then I refrained from joining conferences for some time, but my friends convinced me in the end :D And then another downturn came when my exams got severely delayed and clashed completely with the conference. I wanted to volunteer there but it crashed all the plans.

    After severe planning and exploring options, I decided to skip 2 exams and attend the conference either way, hence I had to take the remaining exams the next day on reaching India. Although I will have to give the skipped ones again, I don't regret it even a bit. But it made the trip somewhat hectic as I had the tension of remaining exams throughout the trip which took a toll on my health :(

    Anyway, let's proceed with the blog :D

    University of Latvia

    The touchdown

    After reaching Helsinki (Layover for flight), I met the GSoC'23 interns of GNOME. It rejuvenated the memories when we were one and took our first flight. It was amazing to interact with them and share our love for open source.

    We then took a Flight to Riga. The sights from the plane were mesmerising, to say the least.

    On reaching the hotel all my friends surprised me, it was great to catch up with them and meet them again after GNOME Asia. They are the best ;)

    Unfortunately, I didn't arrive on time for the introductory party but well

    Latvia Riga airport

    The first day of summit

    The first day was quite good, got to attend the talks which I was looking forward to like - "Accessibility update: the Python stack, Rust, and DBus" by Federico, "Oxidizing GTK" by Emmanuele (The memes like the Elon one were awesome xD), "Community building and best DEI practices in Free and Open Source Communities" by Anisa was great, I had the pleasure of meeting her during GNOME Asia and it was the same energy and an amazing talk as expected.

    During the break, I met many people like the Ubuntu staff (Mauro you were a delight to converse with). Met Matthias and Rosanna again, awesome as always and finally met Melissa :D.

    Then I attended "GNOME Design: State of the Union" which was awesome as I got a sneak peek into how GNOME is evolving and saw those beautiful designs. It amazes me how much GNOME has progressed.

    After that, we attended the "How GNOME Gets into Ubuntu" and "Keynote: All the little things that keep open source going" which following the overall themes, were again great.

    Day 1 random pics 1

    Day 1 random pics 2

    The second day of summit

    On the second day, I mostly attended online due to our talk. We practised it, tried to remove our nervousness and got ready.

    And the moment finally came. Anisa and Caroline introduced and motivated us :) In the end, it went quite smoothly, There were things which could have been executed in a better manner, but in the end, what can't.

    Aryan and Pooja talk at GUADEC 2023

    Then we attended the Lightning talks, and man they were so fun. Probably one of the best moments of the conference. There I got to learn Melissa's awesome stage-handling skills LOL. It was just indescribable.

    I also conversed with Regina during the break and it was awesome to discuss various topics. She had some great viewpoints and insights regarding GNOME mentorship and contributor involvement.

    After the talks, we explored the city a bit and enjoyed the mesmerising architecture and culture of Latvia.

    The third day of summit

    Attending "Building Student Communities to Foster OSS" by Hrittik was quite a good experience, he then handed out some swag which I'm using right now to plan the blog haha, so thanks for that.

    Then the AGM and group photo session came. The group photo was funny and amazing, I wish that was recorded as well lol.

    GNOME Group picture

    I certainly enjoyed the "Our logo sucks" Lightning talk just after the "pants of thanks". You need a certain level of courage to bash the logo in front of its creator at a conference organised by the same organisation lol. Jokes aside, it was quite on point and I can relate with most of the stuff mentioned. Even if it is not implemented, I hope it stirs a discussion at least.

    GNOMELogo sucks lightning talk

    After which we continued to attend other talks and enjoyed the conference end.

    Then we attended the GNOME Dinner, it was great! I met Rudolf and we conversed quite a lot. He was awesome and full of energy. I also met Georges Stavracas (feaneron), the person who killed the meme (iykyk) Unfortunately due to my introvertness I wasn't able to converse much with them but yeah, was great to finally meet. There were many more people there whom I wanted to ping but dinner is probably not a good time to do so lol unless sitting together.

    GNOME Dinner selfie

    I also had a great time talking with Felipe, a person I hoped to meet for quite a long.

    Felipe and Aryan selfie

    The BoFs

    Being a GNOME GSoC'22 Intern, I was looking forward to the "GSoC + Outreachy internships with GNOME" BoF by Felipe, we discussed various points which we hope to get implemented to enhance the contributor experience even more and strengthen our community more.

    Felipe GSoC BoF

    The Nothern Riga tour

    The tour was a great opportunity to check out Riga and interact with people.

    GNOME India Group photo

    Met Emmanuele there and finally decided to speak to him. He was as awesome as I imagined, Again introvertness killed me but yeah, it is always great to meet people you look up to.

    Emmanuele and Aryan selfie

    Meeting people

    At last, I met many new people and got to learn a lot. Made new friends, got to meet people I look up to and many more. Overall it was amazing. I hope I wasn't that introvert but yeah, slowly getting comfortable around new people :)

    The End

    Thanks to all the people for making the event so great. It was an experience like no other. I would also like to thank GNOME Foundation for sponsoring the trip :)

    I also got accepted as a GNOME Foundation member just recently, which is awesome :D.

    Sponsored by gnome badge

    • wifi_tethering open_in_new

      This post is public

      www.aryank.in /posts/2023-09-02-guadec-2023-experience/

    • chevron_right

      Jussi Pakkanen: CapyPDF 0.5 is out

      news.movim.eu / PlanetGnome • 1 September, 2023

    There are no actual release notes, but a bunch of stuff got added. Code is here . Many of these were things needed by Inkscape for its new CMYK PDF exporter. More info about that can be found here .

    • chevron_right

      Christian Hergert: Spellchecking for GTK 4

      news.movim.eu / PlanetGnome • 12 July, 2023

    Apparently, spellchecking was preventing some people from porting their applications to GTK 4. So I spent a little time today extracting Text Editor’s spellcheck engine into a library you can use in your GTK 4 application without having to write fun data-structures on your own.

    It’s slightly different since I have to avoid putting code in subclasses of GtkTextView and GtkTextBuffer , but it should work nonetheless.

    It does benefit from GtkSourceView from git though, as I added a new function to avoid doing work while buffers are loading (as Text Editor does).

    https://gitlab.gnome.org/chergert/libspelling/

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /chergert/2023/07/12/spellchecking-for-gtk-4/

    • chevron_right

      Sriyansh Shivam: 10 Web Development Tools Every Developer Should Know About

      news.movim.eu / PlanetGnome • 24 May, 2023 • 5 minutes

    Web development has become an integral part of building modern websites and applications. To streamline the development process, enhance productivity, and ensure high-quality output, developers rely on a range of web development tools. In this article, we'll explore ten essential web development tools that every developer should know about. These tools are designed to simplify various aspects of web development, from coding and testing to performance optimization and collaboration.

    Introduction

    Web development tools refer to software applications or utilities that aid developers in designing, coding, testing, and maintaining websites and web applications. These tools offer features that automate repetitive tasks, provide debugging capabilities, optimize code performance, and enhance collaboration among team members. By leveraging the right web development tools, developers can streamline their workflow, save time, and deliver high-quality web projects.

    Essential Web Development Tools

    1. Text Editors and Integrated Development Environments (IDEs)

    alt

    Text editors and IDEs are the starting point for any web development project. They provide a platform to write, edit, and manage code efficiently. Popular text editors include Visual Studio Code, Sublime Text, and Atom, while well-known IDEs like JetBrains' WebStorm and Eclipse offer more comprehensive development environments.

    2. Version Control Systems

    alt

    Version control systems such as Git enable developers to track changes in their codebase, collaborate with others, and easily revert to previous versions if needed. Git, with platforms like GitHub and GitLab, has become the industry standard for version control.

    3. Package Managers

    alt

    Package managers like npm (Node Package Manager) and Yarn simplify the installation and management of external libraries and frameworks. They automate the process of fetching dependencies, ensuring that developers can easily integrate and update third-party code in their projects.

    4. Command Line Tools

    alt

    Command line tools provide developers with a powerful interface to execute various tasks quickly. Tools like npm scripts, Gulp, and Grunt allow developers to automate repetitive tasks, such as bundling and minifying code, running tests, and deploying projects.

    5. Browser Developer Tools

    alt

    Browser developer tools, such as Chrome DevTools and Firefox Developer Tools, are indispensable for web development. They enable developers to inspect and debug HTML, CSS, and JavaScript code, analyze network requests, optimize performance, and test responsive layouts.

    6. Testing and Debugging Tools

    alt

    Testing and debugging are crucial for ensuring the functionality and stability of web projects. Tools like Jest, Mocha, and Jasmine provide frameworks for automated testing, while debuggers like Chrome DevTools and VS Code's debugger help identify and fix code errors.

    7. Task Runners

    alt

    Task runners like Gulp and Grunt automate repetitive tasks in web development workflows. They can handle tasks such as compiling CSS preprocessors, transpiling JavaScript code, optimizing images, and live-reloading the browser during development.

    8. CSS Preprocessors

    alt

    CSS preprocessors like Sass and Less extend the capabilities of CSS by introducing variables, mixins, and nested syntax. They improve code maintainability and make it easier to write modular and reusable CSS code.

    9. JavaScript Frameworks and Libraries

    alt

    JavaScript frameworks and libraries, such as React, Angular, and Vue.js, provide developers with tools and components to build interactive and dynamic web applications more efficiently. They offer a structured approach to web development, promoting code reusability and maintainability.

    10. Performance Optimization Tools

    alt

    Performance optimization tools help optimize website speed and improve user experience. Tools like Google PageSpeed Insights, Lighthouse, and WebPageTest analyze and provide suggestions for optimizing page load times, minimizing file sizes, and improving caching strategies.

    Additional Web Development Tools

    Apart from the essential tools mentioned above, developers can also benefit from other web development tools that cater to specific needs or enhance productivity further. Some of these additional tools include:

    1. Wireframing and Prototyping Tools

    alt

    Wireframing and prototyping tools like Adobe XD and Sketch assist in creating visual mockups and interactive prototypes, allowing developers and designers to validate their ideas before diving into actual coding.

    2. Code Editors with Live Preview

    alt

    Code editors with live preview features, such as Brackets and CodePen, provide real-time visual feedback as developers write code, making it easier to see how changes affect the appearance and behavior of the web page.

    3. Responsive Design Testing Tools

    alt

    Responsive design testing tools, like Responsive Design Checker and BrowserStack, help developers ensure their websites look and function correctly across different screen sizes and devices.

    4. Content Management Systems (CMS)

    alt

    Content Management Systems like WordPress and Drupal offer a user-friendly interface for creating and managing website content. They are particularly useful for non-technical users who want to update website content without diving into code.

    5. SEO and Analytics Tools

    alt

    SEO and analytics tools, such as Google Analytics and Moz, help developers monitor website performance, track user behavior, and optimize websites for search engines. These tools provide valuable insights for improving website visibility and attracting organic traffic.

    6. Collaboration and Project Management Tools

    alt

    Collaboration and project management tools like Slack, Trello, and Jira facilitate communication, task tracking, and collaboration among team members, ensuring smooth project execution and efficient workflow.

    7. Security Testing Tools

    alt

    Security testing tools like OWASP ZAP and Burp Suite assist in identifying potential security vulnerabilities in web applications. They simulate attacks and provide insights to strengthen the security of websites and protect sensitive data.

    8. Image Optimization Tools

    alt

    Image optimization tools like TinyPNG and ImageOptim help reduce image file sizes without compromising quality, improving website performance and reducing bandwidth usage.

    9. Deployment Tools

    alt

    Deployment tools like Netlify and Heroku simplify the process of deploying web applications to production environments. They automate tasks such as building and deploying code, managing server configurations, and scaling applications.

    10. Code Quality and Analysis Tools

    alt

    Code quality and analysis tools like ESLint and SonarQube help maintain code consistency, identify potential bugs, and enforce coding best practices. They analyze code for issues related to code style, security vulnerabilities, and maintainability.

    Conclusion

    In today's rapidly evolving web development landscape, using the right tools can make a significant difference in productivity, code quality, and project success. The ten essential web development tools mentioned in this article provide developers with a solid foundation for efficient and effective web development. Additionally, exploring additional tools that cater to specific needs can further enhance the development process and deliver exceptional results.

    FAQs

    1. What are web development tools? Web development tools are software applications or utilities that aid developers in designing, coding, testing, and maintaining websites and web applications.

    2. Why are web development tools important? Web development tools simplify tasks, automate repetitive processes, enhance collaboration, optimize performance, and improve code quality, thereby streamlining the development process and delivering high-quality web projects.

    3. Can I use multiple web development tools together? Absolutely! Developers often use a combination of tools that work together seamlessly to enhance their workflow and achieve desired outcomes.

    4. Are web development tools free? Many web development tools have free versions or open-source alternatives available. However, premium versions or enterprise-level tools may come with a cost.

    5. How can I learn to use web development tools effectively? To learn and master web development tools, you can explore online tutorials, documentation, and community forums. Additionally, hands-on practice and real-world projects will further solidify your skills and familiarity with these tools.

    • wifi_tethering open_in_new

      This post is public

      sonichere.hashnode.dev /10-web-development-tools-every-developer-should-know-about

    • chevron_right

      Jussi Pakkanen: Advanced dependency management and building Python wheels with Meson

      news.movim.eu / PlanetGnome • 24 May, 2023 • 1 minute

    One of the most complex pieces of developing C and C++ programs (and most other languages) is dependency management. When developing A4PDF I have used Ubuntu's default distro dependencies. This is very convenient because you typically don't need to fiddle with getting them built and they are battle tested and almost always work.

    Unfortunately you can't use those in most dev environments, especially Windows. So let's see how much work it takes to build the whole thing on Windows using only Visual Studio and to bundle the whole thing into a Python wheel so it can be installed and distributed. I would have wanted to also put it in Pypi but currently there is a lockdown caused by spammers so no go on that front.

    Seems like a lot of effort? Let's start by listing all the dependencies:

    • fmt
    • Freetype
    • LibTIFF
    • LibPNG
    • LibJPEG (turbo)
    • LittleCMS2
    • Zlib
    These are all available via WrapDB , so each one can be installed by executing a command like the following:

    meson wrap install fmt

    With that done Meson will automatically download and compile the dependencies from source. No changes need to be done in the main project's meson.build files. Linux builds will keep using system deps as if nothing happened.

    Next we need to build a Python extension package. This is different from a Python extension module, as the project uses ctypes for Python <-> C interop. Fortunately thanks to the contributors of Meson-Python this comes down to writing an 18 line toml file . Everything else is automatically handled for you. Installing the package is then a question of running this command:

    pip install .

    After a minute or two of compilation the module is installed. Here is a screenshot of the built libraries in the system Python's site-packages .

    Now we can open a fresh terminal and start using the module.

    Random things of note

    • Everything here uses only Meson. There are no external dependency managers, unix userland emulators or special terminals that you have to use.
    • In theory this could work on macOS too, but the code is implemented in C++23 and Apple's toolchain is too old to support it.
    • The build definitions for A4PDF take only 155 lines (most of which is source and program name listings).
    • If, for whatever reason, you can't use WrapDB, you can host your own.
    • wifi_tethering open_in_new

      This post is public

      nibblestew.blogspot.com /2023/05/advanced-dependency-management-and.html

    • chevron_right

      Hans de Goede: Fedora IPU6 camera support now available in rpmfusion-nonfree

      news.movim.eu / PlanetGnome • 24 May, 2023 • 5 minutes

    Installation

    I am happy to announce that Intel's IPU6 camera stack has been packaged in rpmfusion and now can be installed under Fedora 37 and newer with a single `dnf install` command.

    First enable both the rpmfusion-free and rpmfusion-nonfree repositories, for instructions see https://rpmfusion.org/Configuration

    The IPU6 support requires kernel >= 6.3.1 which is in updates-testing for now and v4l2loopback also needs to be updated to the latest version (in case you already have it installed):

    sudo dnf update \
    --enablerepo=updates-testing \
    --enablerepo=rpmfusion-free-updates-testing \
    --enablerepo=rpmfusion-nonfree-updates-testing \
    'kernel*' '*v4l2loopback'

    And now things are ready to install the IPU6 driver stack:

    sudo dnf install \
    --enablerepo=updates-testing \
    --enablerepo=rpmfusion-free-updates-testing \
    --enablerepo=rpmfusion-nonfree-updates-testing \
    akmod-intel-ipu6

    After this command reboot and you should be able to test your camera with https://mozilla.github.io/webrtc-landing/gum_test.html under firefox now.

    This relies on Intel's partly closed-source hw-enablement for the IPU6, as such this known to not work on laptop models which are not covered by Intel's hw-enablement work. If your laptop has an option to come with Linux pre-installed and that SKU uses the IPU6 cameras then this should work. Currently known to work models are:

    • Dell Latitude 9420 (ov01a1s sensor)
    • Lenovo ThinkPad X1 Carbon Gen 10 (ov2740 sensor)
    • Lenovo ThinkPad X1 Nano Gen 2 (ov2740 sensor)
    • Lenovo ThinkPad X1 Yoga Gen 7 (ov2740 sensor)

    If the IPU6 driver works for you on an unlisted model please drop mean email at <hdegoede@redhat.com> so that the above list can be updated.

    Description of the stack

    The IPU6 camera stack consists of the following layers:

    1. akmod-intel-ipu6 the IPU6 kernel drivers. These are currently out of tree. Work is ongoing on getting various IO-expander, sensor drivers and the CSI2 receiver patches upstream. This is a slow process though and currently there is no clear path to getting the actual ISP part of the IPU supported upstream.
    2. ipu6-camera-bins this is a set of closed-source userspace libraries which the rest of the userspace stack builds on top of. There is a separate set of libraries for each IPU6 variant. Currently there are 2 sets, "ipu6" for Tiger Lake and "ipu6ep" for Alder Lake.
    3. ipu6-camera-hal this is a library on top of the set of libraries in ipu6-camera-bins. This needs to be built separately for the "ipu6" and "ipu6ep" library sets from ipu6-camera-bins.
    4. gstreamer1-plugins-icamerasrc a gstreamer plugin built on top of ipu6-camera-hal. This allows using the camera through gstreamer.
    5. akmod-v4l2loopback + v4l2-relayd . Most apps don't use gstreamer for camera access and even those that do don't know they need to use the icamerasrc element. v4l2-relayd will monitor a v4l2loopback /dev/video0 node and automatically start a gstreamer pipeline to send camera images into the loopback when e.g. firefox opens the /dev/video0 node to capture video.

    Packaging challenges and technical details

    1. akmod-intel-ipu6 : There were 2 challenges to overcome before the IPU6 kernel drivers could be packaged:

      1. The sensor drivers required patches to the main kernel package, specifically to the INT3472 driver which deals with providing GPIO, clk, regulator and LED resources to the sensor drivers. Patches have been written for both the main kernel, including some LED subsystem core additions , as well as patches to the IPU6 sensor drivers to bring them inline with mainline kernel conventions for GPIOs, clks and LEDs. All the necessary patches for this are upstream now, allowing the latest ipu6-drivers code to work with an unmodified mainline kernel.
      2. Until now the IPU6 drivers seem to have been used with a script which manually loads the modules in a specific order. Using automatic driver loading by udev exposed various probe-ordering issues. Requiring numerous patches (all upstreamed to Intel's github repo) to fix.

    2. ipu6-camera-bins : Since there were 2 sets of libraries for different IPU6 versions, these are now installed in separate /usr/lib64/ipu6[ep] directories and the headers and pkgconfig files are also installed in 2 different variants.
    3. ipu6-camera-hal : This needs to be built twice against the 2 different sets of ipu6-camera-bins libraries. Letting the user pick the right libcamhal.so build to install is not very user friendly, to avoid the user needing to manually chose:

      1. Both builds are installed in separate /usr/lib64/ipu6[ep] directories.
      2. The libcamhal.so under these directories is patched to include the directory it is installed in as RPATH, so that dynamic-linking against that libcamhal.so will automatically link against the right set of ipu6-camera-bins libraries.
      3. To make all this all work transparently the actual /usr/lib64/libcamhal.sois a symlink to /run/libcamhal.so and /run/libcamhal.so is set by udev rules to point to /usr/lib64/ipu6[ep]/libcamhal.so depending on the actual hw. The /run/libcamhal.so indirection is there so that things will also work with an immutable /usr .
      4. ipu6-camera-hal's udev rules also set a /run/v4l2-relayd config file symlink to configure the gstreamer pipeline use by v4l2-relayd to match the ipu6 vs ipu6ep capabilities.

    4. akmod-v4l2loopback + v4l2-relayd : Getting this to work with Firefox was somewhat tricky, there were 2 issues which had to be solved:

      1. Firefox does not accept the NV12 image format generated by ipu6ep pipelines. To work around this a conversion to YUV420 has been added to the v4l2-relayd pipeline feeding into v4l2loopback. This workaround can be dropped once Firefox 114, which will have NV12 support, is released.
      2. Gstreamer sends v4l2-buffers with a wrong bytesused field value into v4l2loopback causing Firefox to reject the video frames. A patch has been written and merged upstream to make v4l2loopback fix up the bytesused value, fixing this.


    Many thanks to my colleague Kate Hsuan for doing most of the packaging work for this.

    And also a big thank you to the rpmfusion team for maintaining the rpmfusion repo and infrastructure which allows packaging software which does not meet Fedora's strict guidelines outside of the Fedora infra.
    • chevron_right

      Michael Meeks: Welcoming Caolán McNamara to Collabora

      news.movim.eu / PlanetGnome • 15 May, 2023 • 2 minutes

    For anyone that doesn't know him - Caolán has contributed amazing work on the LibreOffice code-base for over two decades, latterly for RedHat. He has pioneered work in many areas around LibreOffice:

    • helping to found The Document Foundation, and contributing to its growth and governance
    • handling security for LibreOffice, managing CVEs and patch porting
    • maintaining our static checking with Coverity and others
    • getting fuzzing working, tending oss-fuzz, and incorporating a large number of fixes to stop issues escaping in releases.
    • tending our crash-testing of ~750k documents (~60Gb) of bug documents which we continually run through (thanks to hardware sponsorship from Adfinis ) - maintaining the great quality of our filters.

    We expect Caolán will continue to spend time on these as part of his role at Collabora; but of course this is only a subset of the things he has contributed for RedHat some highlights being:

    • re-working the entire LibreOffice UI to use auto-layout instead of fixed-positions, it is hard to comprehend what a huge investment this represents - with over a thousand glade dialog fragments, with over half a million lines.
    • adapting the UI toolkit to allow native gtk (& Javascript) widgets.
    • maintaining our gtk backends to cope with the latest gtk churn^Wimprovements.
    • various vital features such as printing comments in the margins in writer.
    • getting almost every package in a RedHat distro to use the same Hunspell dictionaries.
    • complex text rendering & layout, fixing innumerable bugs, improving the user-experience and much more.

    RedHat was instrumental in founding The Document Foundation, and has invested far more than we had any right to expect through its team over a long period; they deserve our thanks. I expect that LibreOffice will still be available from flathub going forward. However with RedHat now choosing to laser focus its development investment into the open hybrid cloud, it became clear that in order for us to continue to enjoy Caolán's contribution - he would need a new home.

    Happily - this circumstance is rather similar to the history of Collabora Productivity's founding with the direction changes at SUSE, and we could act quickly. The paid and volunteer team around the code-base continues to grow. However, it is is important that we retain skills, and continue to deepen the talent pool around LibreOffice Technology and Collabora Online as circumstances change.

    The Collabora team is looking forward to working with Caolán to continue his work in three areas: on the underlying LibreOffice Technology , serving our customers as part of our growing ( we're hiring ) team, and of course to make Collabora Online even better for our partners and customers. Welcome Caolán!

    • wifi_tethering open_in_new

      This post is public

      meeksfamily.uk /~michael/blog/2023-05-15-caolan.html

    • chevron_right

      Michael Meeks: 2023-05-14 Sunday

      news.movim.eu / PlanetGnome • 14 May, 2023

    • Up earlyish, pre-service practice with Cedric, played - home for Pizza lunch. Caught up the blog; listened to another Psalm 1 talk.
    • wifi_tethering open_in_new

      This post is public

      meeksfamily.uk /~michael/blog/2023-05-14.html