phone

    • chevron_right

      Jussi Pakkanen: The PDF text model is quite nice, actually

      news.movim.eu / PlanetGnome · Thursday, 16 March, 2023 - 15:05 · 1 minute

    As was discussed earlier, the way PDF handles fonts and glyphs is arcane and tedious . It takes a lot of boilerplate and hitting your shins against sharp stones to get working. However once you do and can turn to the higher level text functionality, things become a lot nicer. (Right-to-left, vertical and calligraphic scripts might be more difficult, but I don't know any of those.)

    The PDF text drawing model provides a fairly wide selection of text operations.

    If you, for example, want to produce a paragraph of justified text, first you need to calculate how the text should be split in lines and the additional word and character scaling parameters needed. Then the text can be rendered with the following pseudocode:

    • Create a text object with the correct font and position.
    • Set spacing values for the current line.
    • Output the current line of text (add kerning manually if it is in a format Freetype does not handle)
    • Repeat the above two steps until the paragraph is done
    • Close the text object
    This shifts the burden of having to compute each letter's exact location from you to the PDF renderer. If you need more precision than this, then you need to dig out Harfbuzz, and draw the glyphs one by one to precomputed coordinates.

    • wifi_tethering open_in_new

      This post is public

      nibblestew.blogspot.com /2023/03/the-pdf-text-model-is-quite-nice.html

    • chevron_right

      Felipe Borges: Register for Linux App Summit 2023!

      news.movim.eu / PlanetGnome · Thursday, 16 March, 2023 - 13:09

    LAS 2023 is happening next month and registrations are open !

    You can  check the schedule in https://conf.linuxappsummit.org/event/5/timetable/#20230422

    We are excited to have you visiting us in Brno, Czech Republic . The conference starts on Friday, April 21st, with a pre-registration social event. Saturday and Sunday are full of interesting talks, panels, workshops, and more!

    • wifi_tethering open_in_new

      This post is public

      feborg.es /register-for-linux-app-summit-2023/

    • chevron_right

      Martín Abente Lahaye: Portfolio 0.9.15

      news.movim.eu / PlanetGnome · Wednesday, 15 March, 2023 - 13:16 · 1 minute

    After a long hiatus, a new release of Portfolio is out 📱 🤓 . This new release comes with important bug fixes, small-detail additions and a few visual improvements.

    In terms of visuals, by popular demand, the most notable change is the use of regular icons for the files browser view. It should be easier now to quickly catch what each file is about. Thanks to @AngelTomkins for the initial implementation, @Exalm for helping with the reviews, and to the GNOME design team for such lovely new icons.

    Another addition is support for system-wide style management. This is specially useful now that desktops like GNOME provide quick toggle buttons to switch between dark and light modes. Thanks to @pabloyoyoista for the initial implementation.

    One small-detail change to the properties view is the addition of file permissions.  Plus, the properties view was broken down into three different sections to reduce the visual load, and labels can now be selected which is useful for copying locations or ellipsized values.

    Moving on to bug fixes, two important changes landed. The first one solves an issue which prevented opening files with special characters 🤦 . Thanks to @jwaataja for detecting and fixing this issue. The second one solves an issue with Portfolio not properly detecting mount points under some specific conditions. Thanks to mo2mo for reaching out and sharing his system details, so I could figure this out.

    Last but never least, many thanks to @carlosgonz0 , @Vistaus , @rffontenelle , @AsciiWolf , and @eson57 for keeping translations up to date, and  to @rene-coty for the new French translation.

    flathub-badge-en-e1614625122207.png

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /tchx84/2023/03/15/portfolio-0-9-15/

    • chevron_right

      Jussi Pakkanen: First A4PDF release, version 0.1.0 "embarrasment"

      news.movim.eu / PlanetGnome · Sunday, 12 March, 2023 - 15:02

    The time has come to make the first technical preview release of A4PDF, nicknamed embarrasment . The name stems from this statement .

    If you're not embarrassed by the first version of your product, you've launched too late.

    It does not do much yet, but the basics are there to draw shapes, text and images using a plain C API:

    A pkg-config file is also provided. There is also a Python wrapper to run scripts like these:

    Distro packaging

    People should probably not do any distro packaging yet, as the library is neither ABI nor even API stable. However if someone wants to build deb packages, the source portion of Debian control file would look something like this:

    Source: a4pdf
    Maintainer: Bob McBob <bob@example.org>
    Section: misc
    Priority: optional
    Standards-Version: 3.9.2
    Build-Depends: debhelper (>= 10),
    liblcms2-dev,
    libpng-dev,
    libjpeg-dev,
    libgtk-4-dev,
    libfmt-dev,
    libfreetype-dev,
    meson,
    python3-pil,
    fonts-noto-core,
    ghostscript

    • wifi_tethering open_in_new

      This post is public

      nibblestew.blogspot.com /2023/03/first-a4pdf-release-version-010.html

    • chevron_right

      Michael Meeks: 2023-03-11 Saturday

      news.movim.eu / PlanetGnome · Saturday, 11 March, 2023 - 20:19

    • Up lateish, J. to AllSaints, provided on-hand debugging advice for N. much of the day.
    • Tried to get memory trimming patch pushed; fell over amusing CI fails due to day-of-week dependent code in unit test at the weekend issue up-stream. Makes a pleasant change from random breakage introduced by me . Always bad when you have no recollection of writing the code , but the style shows it must have been you.
    • wifi_tethering open_in_new

      This post is public

      meeksfamily.uk /~michael/blog/2023-03-11.html

    • chevron_right

      Jussi Pakkanen: My book is finally available for purchase

      news.movim.eu / PlanetGnome · Saturday, 11 March, 2023 - 12:44 · 2 minutes

    A major difference between software and book projects is that the latter have a point when they can be considered complete and finished. For my debut novel, that time has come.

    The text block has been created with a "mini-LaTeX" DTP program that I wrote basically from scratch. This caused "fun" things to happen. For example I got an email from the printing house some four days before the unveiling event that the book contains words that were not hyphenated according to recommended style guides. I was aware of said style guides, had added handling for those and even had unit tests to ensure that they work. And yet in production they did not work. This lead to a very stressful debugging session where you know that the only person in the world that can fix it is you, and that there is a very strict and personal deadline.

    The actual PDF generation was done with Cairo and Pango. Surprisingly there were zero issues with them, the printer accepted them just fine and the printout looks great. The cover was made with Scribus and it did have several issues none of which had anything to do with Scribus itself, just that doing a full color managed print job is to this day a bit tricky. did have to postprocess Cairo's output with Ghostscript because Cairo only produces PDFs in the RGB colorspace whereas printers require grayscale PDFs.

    The "back blurb"

    Humanity has managed to create the technology needed for interstellar travel and civilizations from outer space have invited them to visit. The people of Earth immediately begin work on creating a space ship suitable for the journey, with stylish appearance being their number one priority. Eventually the ship gets under way commandeered by an egomaniacal captain and staffed by a nerve wrecked crew. What they don't know is who they are actually going to meet, what they should do once they get there and why the ships has an ice rink.

    [Name of book would go here, but I could not come up with a proper translation as the original is a pun] mixes classical space sci-fi, scientifically accurate technology and dark comedy into a hypergolic stew, whose blast wave nothing can survive intact — not even space sex.

    Where to get it?

    Every now and then people ask me how they could support Meson financially. Buying this book is by far the best way to do that at the current time. Yes, it is in Finnish, so most people reading this blog post can't comprehend it, but reading it is optional, you can just buy it to keep on your coffee table for maximal hipster street cred. :)

    Finnish people who prefer getting their books via libraries can request it via online forms such as this one .

    • wifi_tethering open_in_new

      This post is public

      nibblestew.blogspot.com /2023/03/my-book-is-finally-available-for.html

    • chevron_right

      Andy Wingo: pre-initialization of garbage-collected webassembly heaps

      news.movim.eu / PlanetGnome · Friday, 10 March, 2023 - 09:20 · 6 minutes

    Hey comrades, I just had an idea that I won't be able to work on in the next couple months and wanted to release it into the wild. They say if you love your ideas, you should let them go and see if they come back to you, right? In that spirit I abandon this idea to the woods.

    Basically the idea is Wizer-like pre-initialization of WebAssembly modules , but for modules that store their data on the GC-managed heap instead of just in linear memory.

    Say you have a WebAssembly module with GC types . It might look like this:

    (module
      (type $t0 (struct (ref eq)))
      (type $t1 (struct (ref $t0) i32))
      (type $t2 (array (mut (ref $t1))))
      ...
      (global $g0 (ref null eq)
        (ref.null eq))
      (global $g1 (ref $t1)
        (array.new_canon $t0 (i31.new (i32.const 42))))
      ...
      (function $f0 ...)
      ...)
    

    You define some struct and array types, there are some global variables, and some functions to actually do the work. (There are probably also tables and other things but I am simplifying.)

    If you consider the object graph of an instantiated module, you will have some set of roots R that point to GC-managed objects. The live objects in the heap are the roots and any object referenced by a live object.

    Let us assume a standalone WebAssembly module. In that case the set of types T of all objects in the heap is closed: it can only be one of the types $t0 , $t1 , and so on that are defined in the module. These types have a partial order and can thus be sorted from most to least specific. Let's assume that this sort order is just the reverse of the definition order, for now. Therefore we can write a general type introspection function for any object in the graph:

    (func $introspect (param $obj anyref)
      (block $L2 (ref $t2)
        (block $L1 (ref $t1)
          (block $L0 (ref $t0)
            (br_on_cast $L2 $t2 (local.get $obj))
            (br_on_cast $L1 $t1 (local.get $obj))
            (br_on_cast $L0 $t0 (local.get $obj))
            (unreachable))
          ;; Do $t0 things...
          (return))
        ;; Do $t1 things...
        (return))
      ;; Do $t2 things...
      (return))
    

    In particular, given a WebAssembly module, we can generate a function to trace edges in an object graph of its types. Using this, we can identify all live objects, and what's more, we can take a snapshot of those objects:

    (func $snapshot (result (ref (array (mut anyref))))
      ;; Start from roots, use introspect to find concrete types
      ;; and trace edges, use a worklist, return an array of
      ;; all live objects in topological sort order
      )
    

    Having a heap snapshot is interesting for introspection purposes, but my interest is in having fast start-up. Many programs have a kind of "initialization" phase where they get the system up and running, and only then proceed to actually work on the problem at hand. For example, when you run python3 foo.py , Python will first spend some time parsing and byte-compiling foo.py , importing the modules it uses and so on, and then will actually run foo.py 's code. Wizer lets you snapshot the state of a module after initialization but before the real work begins, which can save on startup time.

    For a GC heap, we actually have similar possibilities, but the mechanism is different. Instead of generating an array of all live objects, we could generate a serialized state of the heap as bytecode, and another function to read the bytecode and reload the heap:

    (func $pickle (result (ref (array (mut i8))))
      ;; Return an array of bytecode which, when interpreted,
      ;; can reconstruct the object graph and set the roots
      )
    (func $unpickle (param (ref (array (mut i8))))
      ;; Interpret the bytecode, building object graph in
      ;; topological order
      )
    

    The unpickler is module-dependent: it will need one case to construct each concrete type $tN in the module. Therefore the bytecode grammar would be module-dependent too.

    What you would get with a bytecode-based $pickle / $unpickle pair would be the ability to serialize and reload heap state many times. But for the pre-initialization case, probably that's not precisely what you want: you want to residualize a new WebAssembly module that, when loaded, will rehydrate the heap. In that case you want a function like:

    (func $make-init (result (ref (array (mut i8))))
      ;; Return an array of WebAssembly code which, when
      ;; added to the module as a function and invoked, 
      ;; can reconstruct the object graph and set the roots.
      )
    

    Then you would use binary tools to add that newly generated function to the module.

    In short, there is a space open for a tool which takes a WebAssembly+GC module M and produces M', a module which contains a $make-init function. Then you use a WebAssembly+GC host to load the module and call the $make-init function, resulting in a WebAssembly function $init which you then patch in to the original M to make M'', which is M pre-initialized for a given task.

    Optimizations

    Some of the object graph is constant; for example, an instance of a struct type that has no mutable fields. These objects don't have to be created in the init function; they can be declared as new constant global variables, which an engine may be able to initialize more efficiently.

    The pre-initialized module will still have an initialization phase in which it builds the heap. This is a constant function and it would be nice to avoid it. Some WebAssembly hosts will be able to run pre-initialization and then snapshot the GC heap using lower-level facilities (copy-on-write mappings, pointer compression and relocatable cages, pre-initialization on an internal level...). This would potentially decrease latency and may allow for cross-instance memory sharing.

    Limitations

    There are five preconditions to be able to pickle and unpickle the GC heap:

    1. The set of concrete types in a module must be closed.

    2. The roots of the GC graph must be enumerable.

    3. The object-graph edges from each live object must be enumerable.

    4. To prevent cycles, we have to know when an object has been visited: objects must have identity.

    5. We must be able to create each type in a module.

    I think there are three limitations to this pre-initialization idea in practice.

    One is externref ; these values come from the host and are by definition not introspectable by WebAssembly. Let's keep the closed-world assumption and consider the case where the set of external reference types is closed also. In that case if a module allows for external references, we can perhaps make its pickling routines call out to the host to (2) provide any external roots (3) identify edges on externref values (4) compare externref values for identity and (5) indicate some imported functions which can be called to re-create exernal objects.

    Another limitation is funcref . In practice in the current state of WebAssembly and GC, you will only have a funcref which is created by ref.func , and which (3) therefore has no edges and (5) can be re-created by ref.func . However neither WebAssembly nor the JS API has no way of knowing which function index corresponds to a given funcref. Including function references in the graph would therefore require some sort of host-specific API. Relatedly, function references are not comparable for equality ( func is not a subtype of eq ), which is a little annoying but not so bad considering that function references can't participate in a cycle. Perhaps a solution though would be to assume (!) that the host representation of a funcref is constant: the JavaScript (e.g.) representations of (ref.func 0) and (ref.func 0) are the same value (in terms of === ). Then you could compare a given function reference against a set of known values to determine its index. Note, when function references are expanded to include closures, we will have more problems in this area.

    Finally, there is the question of roots. Given a module, we can generate a function to read the values of all reference-typed globals and of all entries in all tables. What we can't get at are any references from the stack, so our object graph may be incomplete. Perhaps this is not a problem though, because when we unpickle the graph we won't be able to re-create the stack anyway.

    OK, that's my idea. Have at it, hackers!

    • wifi_tethering open_in_new

      This post is public

      wingolog.org /archives/2023/03/10/pre-initialization-of-garbage-collected-webassembly-heaps

    • chevron_right

      Marcus Lundblad: Maps and GNOME 44

      news.movim.eu / PlanetGnome · Friday, 10 March, 2023 - 08:28 · 2 minutes

    So it's that time that occurs twice a year when we're approaching a new GNOME release, this time 44.



    In Maps there's been some polish touching up some of the rough edges in 43.x (from the GTK 4 port).

    For example keyboard navigation of the search results is back.


    Also, the focus handling of the entry is fixed so that the quirky flickering (re-popping up the the results popover when typing a space into the search entry) is now gone.

    Also thanks to Christopher Davis for fixing up the styling of the results!

    We also had contributions from an anonymous user improving the style of some labels, among others the tooltips of the headerbar buttons.


    Adrien Plazas has worked on making the „Export as Image“ dialog fit on phones.


    Unfortunately an issue has come to our attention with the way the „go to“ animations works, resulting some times when covering large distances (for example when selecting a search result far away) that results in throttling from the tile server (HTTP 429, „too many requests”). This results in empty tiles showing up at the destination (and one needs to sometimes wait a while before Maps gets the view refreshed with new tiles (after restarting to force re-trying).

    As this results in a really bad user experience as a work-around we have disabled the animations for now (the animations when zooming is still in place, and of course panning the map view still works as usual).

    I also cherry-picked this for the 43 branch, and will probably also cut a 43.4 with this change (versions prior to 43.0 is not affected, as the animations in libchamplain uses another algorithm, first zooming out „high“ (a low zoom level) before moving, resulting in less intermediate tiles compared to the “fly to“-like animations now used in libshumate.

    We will try to come up with a better solution in libshumate soon. Either reverting to an approach like that in libchamplain, or try to implement our own rate limiting of some sort during animations to avoid firing off too many requests.

    Meanwhile at the libshumate side James Westman has been busy working on the vector tile support implementing label support among other things.

    He is also working on a vector tile style using the GNOME color palette in light and dark variants.


    This can be trying out on https://maps.jwestman.net/

    There will also be some other things coming for the next development cycle for GNOME 45, but let's save that for next time!

    • wifi_tethering open_in_new

      This post is public

      ml4711.blogspot.com /2023/03/maps-and-gnome-44.html

    • chevron_right

      Robert McQueen: Flathub in 2023

      news.movim.eu / PlanetGnome · Tuesday, 7 March, 2023 - 11:00 · 12 minutes

    It’s been quite a few months since the most recent updates about Flathub last year. We’ve been busy behind the scenes, so I’d like to share what we’ve been up to at Flathub and why—and what’s coming up from us this year. I want to focus on:

    • Where Flathub is today as a strong ecosystem with 2,000 apps
    • Our progress on evolving Flathub from a build service to an app store
    • The economic barrier to growing the ecosystem , and its consequences
    • What’s next to overcome our challenges with focused initiatives

    Today

    Flathub is going strong: we offer 2,000 apps from over 1,500 collaborators on GitHub. We’re averaging 700,000 app downloads a day , with 898 million HTTP requests totalling 88.3 TB served by our CDN each day (thank you Fastly!). Flatpak has, in my opinion, solved the largest technical issue which has held back the mainstream growth and acceptance of Linux on the desktop (or other personal computing devices) for the past 25 years: namely, the difficulty for app developers to publish their work in a way that makes it easy for people to discover, download (or sideload, for people in challenging connectivity environments), install and use. Flathub builds on that to help users discover the work of app developers and helps that work reach users in a timely manner.

    Initial results of this disintermediation are promising: even with its modest size so far, Flathub has hundreds of apps that I have never, ever heard of before—and that’s even considering I’ve been working in the Linux desktop space for nearly 20 years and spent many of those staring at the contents of dselect (showing my age a little) or GNOME Software, attending conferences, and reading blog posts, news articles, and forums. I am also heartened to see that many of our OS distributor partners have recognised that this model is hugely complementary and additive to the indispensable work they are doing to bring the Linux desktop to end users, and that “having more apps available to your users” is a value-add allowing you to focus on your core offering and not a zero-sum game that should motivate infighting.

    Ongoing Progress

    Getting Flathub into its current state has been a long ongoing process. Here’s what we’ve been up to behind the scenes:

    Development

    Last year, we concluded our first engagement with Codethink to build features into the Flathub web app to move from a build service to an app store. That includes accounts for users and developers, payment processing via Stripe, and the ability for developers to manage upload tokens for the apps they control. In parallel, James Westman has been working on app verification and the corresponding features in flat-manager to ensure app metadata accurately reflects verification and pricing, and to provide authentication for paying users for app downloads when the developer enables it. Only verified developers will be able to make direct uploads or access payment settings for their apps.

    Legal

    So far, the GNOME Foundation has acted as an incubator and legal host for Flathub even though it’s not purely a GNOME product or initiative. Distributing software to end users along with processing and forwarding payments and donations also has a different legal profile in terms of risk exposure and nonprofit compliance than the current activities of the GNOME Foundation. Consequently, we plan to establish an independent legal entity to own and operate Flathub which reduces risk for the GNOME Foundation, better reflects the independent and cross-desktop interests of Flathub, and provides flexibility in the future should we need to change the structure.

    We’re currently in the process of reviewing legal advice to ensure we have the right structure in place before moving forward.

    Governance

    As Flathub is something we want to set outside of the existing Linux desktop and distribution space—and ensure we represent and serve the widest community of Linux users and developers—we’ve been working on a governance model that ensures that there is transparency and trust in who is making decisions, and why . We have set up a working group with myself and Martín Abente Lahaye from GNOME, Aleix Pol Gonzalez, Neofytos Kolokotronis, and Timothée Ravier from KDE, and Jorge Castro flying the flag for the Flathub community. Thanks also to Neil McGovern and Nick Richards who were also more involved in the process earlier on.

    We don’t want to get held up here creating something complex with memberships and elections, so at first we’re going to come up with a simple/balanced way to appoint people into a board that makes key decisions about Flathub and iterate from there.

    Funding

    We have received one grant for 2023 of $100K from Endless Network which will go towards the infrastructure, legal, and operations costs of running Flathub and setting up the structure described above. (Full disclosure: Endless Network is the umbrella organisation which also funds my employer, Endless OS Foundation.) I am hoping to grow the available funding to $250K for this year in order to cover the next round of development on the software, prepare for higher operations costs (e.g., accounting gets more complex), and bring in a second full-time staff member in addition to Bartłomiej Piotrowski to handle enquiries, reviews, documentation, and partner outreach.

    We’re currently in discussions with NLnet about funding further software development, but have been unfortunately turned down for a grant from the Plaintext Group for this year; this Schmidt Futures project around OSS sustainability is not currently issuing grants in 2023. However, we continue to work on other funding opportunities.

    Remaining Barriers

    My personal hypothesis is that our largest remaining barrier to Linux desktop scale and impact is economic . On competing platforms—mobile or desktop—a developer can offer their work for sale via an app store or direct download with payment or subscription within hours of making a release. While we have taken the “time to first download” time down from months to days with Flathub, as a community we continue to have a challenging relationship with money. Some creators are lucky enough to have a full-time job within the FLOSS space, while a few “superstar” developers are able to nurture some level of financial support by investing time in building a following through streaming, Patreon, Kickstarter, or similar. However, a large proportion of us have to make do with the main payback from our labours being a stream of bug reports on GitHub interspersed with occasional conciliatory beers at FOSDEM (other beverages and events are available).

    The first and most obvious consequence is that if there is no financial payback for participating in developing apps for the free and open source desktop, we will lose many people in the process —despite the amazing achievements of those who have brought us to where we are today. As a result, we’ll have far fewer developers and apps. If we can’t offer access to a growing base of users or the opportunity to offer something of monetary value to them, the reward in terms of adoption and possible payment will be very small. Developers would be forgiven for taking their time and attention elsewhere. With fewer apps, our platform has less to entice and retain prospective users.

    The second consequence is that this also represents a significant hurdle for diverse and inclusive participation . We essentially require that somebody is in a position of privilege and comfort that they have internet, power, time, and income—not to mention childcare, etc.—to spare so that they can take part. If that’s not the case for somebody, we are leaving them shut out from our community before they even have a chance to start. My belief is that free and open source software represents a better way for people to access computing , and there are billions of people in the world we should hope to reach with our work. But if the mechanism for participation ensures their voices and needs are never represented in our community of creators, we are significantly less likely to understand and meet those needs.

    While these are my thoughts, you’ll notice a strong theme to this year will be leading a consultation process to ensure that we are including, understanding and reflecting the needs of our different communities —app creators, OS distributors and Linux users—as I don’t believe that our initiative will be successful without ensuring mutual benefit and shared success. Ultimately, no matter how beautiful, performant, or featureful the latest versions of the Plasma or GNOME desktops are, or how slick the newly rewritten installer is from your favourite distribution, all of the projects making up the Linux desktop ecosystem are subdividing between ourselves an absolutely tiny market share of the global market of personal computers. To make a bigger mark on the world, as a community, we need to get out more.

    What’s Next?

    After identifying our major barriers to overcome, we’ve planned a number of focused initiatives and restructuring this year:

    Phased Deployment

    We’re working on deploying the work we have been doing over the past year, starting first with launching the new Flathub web experience as well as the rebrand that Jakub has been talking about on his blog . This also will finally launch the verification features so we can distinguish those apps which are uploaded by their developers .

    In parallel, we’ll also be able to turn on the Flatpak repo subsets that enable users to select only verified and/or FLOSS apps in the Flatpak CLI or their desktop’s app center UI.

    Consultation

    We would like to make sure that the voices of app creators, OS distributors, and Linux users are reflected in our plans for 2023 and beyond. We will be launching this in the form of Flathub Focus Groups at the Linux App Summit in Brno in May 2023, followed up with surveys and other opportunities for online participation. We see our role as interconnecting communities and want to be sure that we remain transparent and accountable to those we are seeking to empower with our work.

    Whilst we are being bold and ambitious with what we are trying to create for the Linux desktop community, we also want to make sure we provide the right forums to listen to the FLOSS community and prioritise our work accordingly.

    Advisory Board

    As we build the Flathub organisation up in 2023, we’re also planning to expand its governance by creating an Advisory Board . We will establish an ongoing forum with different stakeholders around Flathub: OS vendors, hardware integrators, app developers and user representatives to help us create the Flathub that supports and promotes our mutually shared interests in a strong and healthy Linux desktop community.

    Direct Uploads

    Direct app uploads are close to ready , and they enable exciting stuff like allowing Electron apps to be built outside of flatpak-builder, or driving automatic Flathub uploads from GitHub actions or GitLab CI flows; however, we need to think a little about how we encourage these to be used. Even with its frustrations, our current Buildbot ensures that the build logs and source versions of each app on Flathub are captured, and that the apps are built on all supported architectures. (Is 2023 when we add RISC-V? Reach out if you’d like to help!). If we hand upload tokens out to any developer, even if the majority of apps are open source, we will go from this relatively structured situation to something a lot more unstructured—and we fear many apps will be available on only 64-bit Intel/AMD machines.

    My sketch here is that we need to establish some best practices around how to integrate Flathub uploads into popular CI systems, encouraging best practices so that we promote the properties of transparency and reproducibility that we don’t want to lose . If anyone is a CI wizard and would like to work with us as a thought partner about how we can achieve this—make it more flexible where and how build tasks can be hosted, but not lose these cross-platform and inspectability properties—we’d love to hear from you.

    Donations and Payments

    Once the work around legal and governance reaches a decent point, we will be in the position to move ahead with our Stripe setup and switch on the third big new feature in the Flathub web app. At present, we have already implemented support for one-off payments either as donations or a required purchase. We would like to go further than that, in line with what we were describing earlier about helping developers sustainably work on apps for our ecosystem: we would also like to enable developers to offer subscriptions. This will allow us to create a relationship between users and creators that funds ongoing work rather than what we already have .

    Security

    For Flathub to succeed, we need to make sure that as we grow, we continue to be a platform that can give users confidence in the quality and security of the apps we offer. To that end, we are planning to set up infrastructure to help ensure developers are shipping the best products they possibly can to users. For example, we’d like to set up automated linting and security scanning on the Flathub back-end to help developers avoid bad practices, unnecessary sandbox permissions, outdated dependencies, etc. and to keep users informed and as secure as possible .

    Sponsorship

    Fundraising is a forever task—as is running such a big and growing service. We hope that one day, we can cover our costs through some modest fees built into our payments—but until we reach that point, we’re going to be seeking a combination of grant funding and sponsorship to keep our roadmap moving. Our hope is very much that we can encourage different organisations that buy into our vision and will benefit from Flathub to help us support it and ensure we can deliver on our goals. If you have any suggestions of who might like to support Flathub, we would be very appreciative if you could reach out and get us in touch.

    Finally, Thank You!

    Thanks to you all for reading this far and supporting the work of Flathub, and also to our major sponsors and donors without whom Flathub could not exist: GNOME Foundation , KDE e.V. , Mythic Beasts , Endless Network , Fastly , and Equinix Metal via the CNCF Community Cluster . Thanks also to the tireless work of the Freedesktop SDK community to give us the runtime platform most Flatpaks depend on, particularly Seppo Yli-Olli, Codethink and others.

    I wanted to also give my personal thanks to a handful of dedicated people who keep Flathub working as a service and as a community: Bartłomiej Piotrowski is keeping the infrastructure working essentially single-handedly (in his spare time from keeping everything running at GNOME); Kolja Lampe and Bart built the new web app and backend API for Flathub which all of the new functionality has been built on, and Filippe LeMarchand maintains the checker bot which helps keeps all of the Flatpaks up to date.

    And finally, all of the submissions to Flathub are reviewed to ensure quality, consistency and security by a small dedicated team of reviewers, with a huge amount of work from Hubert Figuière and Bart to keep the submissions flowing. Thanks to everyone­—named or unnamed—for building this vision of the future of the Linux desktop together with us.

    (originally posted to Flathub Discourse , head there if you have any questions or comments)

    • wifi_tethering open_in_new

      This post is public

      ramcq.net /2023/03/07/flathub-in-2023/