call_end

    • chevron_right

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

      news.movim.eu / PlanetGnome • 10 March, 2023 • 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 • 10 March, 2023 • 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 • 7 March, 2023 • 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/

    • chevron_right

      Ross Burton: Building a big-endian Arm system in Yocto

      news.movim.eu / PlanetGnome • 6 March, 2023 • 1 minute

    For reasons I won't bore anyone with I needed to build a 32-bit big-endian system with the Yocto Project to test a package, and I thought I'd write the steps down in case I ever need to do it again (or, even more unlikely, someone else needs to do it).

    For unsurprising reasons I thought I'd do a big-endian Arm build. So we start by picking the qemuarm machine, which is a Armv7-A processor (Cortex-A15, specifically) in little-endian mode by default.

    MACHINE = "qemuarm"
    

    qemumarm.conf requires tune-cortexa15.inc which then requires arch-armv7ve.inc , and this file defines the base tunes. The default tune is armv7ve , we can make it big-endian by simply adding a b :

    DEFAULTTUNE:qemuarm = "armv7veb"
    

    And now we just build an image:

    $ MACHINE=qemuarm bitbake core-image-minimal
    ...
    Summary: 4 tasks failed:
      .../poky/meta/recipes-kernel/linux/linux-yocto_6.1.bb:do_package_qa
      .../poky/meta/recipes-graphics/xorg-proto/xorgproto_2022.2.bb:do_configure
      .../poky/meta/recipes-core/glib-2.0/glib-2.0_2.74.5.bb:do_configure
      .../poky/meta/recipes-graphics/wayland/wayland_1.21.0.bb:do_configure
    

    Or not.

    There are two failure cases here. First, the kernel:

    ERROR: linux-yocto-6.1.9+gitAUTOINC+d7393c5752_ccd3b20fb5-r0 do_package_qa: QA Issue: Endiannes did not match (1, expected 0) in /lib/modules/6.1.9-yocto-standard/kernel/net/ipv4/ah4.ko [arch]
    

    It turns out the kernel needs to be configured specifically to be big or little endian, and the default configuration is, predictably, little endian. There is a bug open to make this automatic, but big-endian really is dead because it has been open since 2016. The solution is a quick kernel configuration fragment added to the kernel's SRC_URI :

    CONFIG_CPU_BIG_ENDIAN=y
    CONFIG_CPU_LITTLE_ENDIAN=n
    

    With this, the kernel builds as expected. The second set of failures are all from Meson, failing to execute a target binary:

    ../xorgproto-2022.2/meson.build:22:0: ERROR: Executables created by c compiler armeb-poky-linux-gnueabi-gcc [...] are not runnable.
    

    Meson is trying to run the target binaries in a qemu-user that we set up, but the problem here is to save build time we only build the qemu targets that are typically used. This doesn't include usermode big-endian 32-bit Arm, so this target needs enabling:

    QEMU_TARGETS:append = " armeb"
    

    Now the image builds successfully, and we discover that indeed gdbm refuses to open a database which was generated on a system with a different endian.

    • wifi_tethering open_in_new

      This post is public

      www.burtonini.com /blog/2023/03/06/big-endian/

    • chevron_right

      Adrien Plazas: David Revoy (Comic Artist): “At First, Publishing Under a Free License Scared Me”

      news.movim.eu / PlanetGnome • 5 March, 2023 • 8 minutes

    In this article I use the words “librism” and “librist” as direct borrows from the French “librisme” and “libriste”. You can define librism as a conjunction of the free software and free culture movements. I prefer to define it as the fringe of the anticapitalist struggles that strives to destroy intellectual property by creating new intangible commons and protecting them.

    The following is a translation of an interview published in the February 2023 issue of Alternative Libertaire . I conducted this interview with the goal of offering to its readers a glimpse of what the free culture movement is. The magazine doesn’t target free software or free culture enthusiasts, and its printed edition constrains the size of its content. Please excuse the resulting briefness and simplifications.

    Thanks to Nina for proofreading the translation.

    Making comics, deciding to give up copyright and hoping to make a living from them in capitalist lands, what an idea! Yet that’s what the comic artist and librist activist David Revoy decided to do. Here’s a look at his unusual journey into the commons.

    Alternative Libertaire: Hi David, your main work follows the adventures of the young witch Pepper and her cat Carrot, and you distribute your works under free licenses. What led you to make your work part of the commons?

    David Revoy : At first, I was afraid of free licenses, I was afraid that one of my characters would be copied, that my style would be imitated, that I would have no control over it.

    In the years 2009–2010, I worked for the Blender Foundation, the Creative Commons was mandatory and under their wing, it reassured me. I made concept-arts and it went well, I saw beautiful derivations, fan-arts and I didn’t see any unpleasant derivation, it reassured me a lot. I even saw the beneficial effects on propagation, audience and interest. There was an added value, it became a common good, a sandbox that other creators could use.

    When I did my own comic book project, Pepper & Carrot , the commons imposed itslef to me as evident.

    david-revoy-photo.jpg

    David Revoy is a French comic book author, publishing all its work under a free license

    A community collaborates in the creation of you universes, how is it integrated into the creative process?

    It’s not completely integrated, I’m using a software forge to create my collaborative space which is abused as a forum, and we have an instant messenging tool on the side. I made a special scenario forge, where people can publish their Pepper & Carrot scenarios under a free license, to check if it can inspire me to make an episode. But you can’t improvise yourself a scenarist, and I have a lot of scripts that start out with very good ideas but fail to come up with a ending or a plot-twist. So there’s a lot of fragments of ideas that I sometimes pick up, some published episodes are inspired by things that have been suggested to me.

    What really happens in terms of collaboration is feedback. I share my story-board and the community will show me things that could be avoided, like a proofreading before publication. For example, two panels didn’t flow well and we couldn’t understand why the character comes from the right and then from the left, or why there was a bubble that said that at this particular moment. It allows me to anticipate these questions and to know if they are desired or if it is uncontrolled, if something is not understandable.

    After that, the collaborative space is mostly around translation, there are now sixty languages and about a hundred people gravitating around the project, around twenty of which are active.

    How do you manage to make a living from your art while giving up on the usual models?

    Since all my work is under a free license and accessible without any pay wall, to make an economic model around it, there are not 3 000 solutions, there is only donation, voluntary patronage of the readers. Only a small percentage of the readership will contribute to the author’s livelihood by making a donation for the next episode that I publish every two months.

    david-revoy-site.jpg

    Home page of www.peppercarrot.com

    When I made Pepper & Carrot in 2014, asking money like that was really frowned upon, for web-comics it was donations on Paypal and e-shops , one-time donations, but not recurring donations. Now it’s much more commonplace and almost every starting artist has a system for recurring donations, this system has spread a lot.

    Since 2016, Pepper & Carrot is published by Glénat in print edition. Did you approach them or did they come to you after the online success of Pepper & Carrot?

    Glénat clearly came to me after the online success of the comic, the publishing house was looking for web-comics authors and they contacted me to edit Pepper & Carrot . I was offered the classic contract following their process, with the standard contract from their legal department. They are the ones who have leverage on the author; unless you already make a lot of sales, when you are a very small author, you don’t tend to negotiate too much.

    Except I told them that this would not be the concept at all, that there was the free tool, the free culture, and that I had no interest in the exclusivity system. They were convinced by the unusual concept that now serves as an experiment. We just signed the Creative Commons together. It bothered the legal department a bit because it’s not their usual process and they know that a competing publisher like Delcourt could publish Pepper & Carrot , it would be completely legal.

    Glénat pays me when I release a new comic, as patronage, and I have no copyright on the books. When I do signings, whether I sell a million copies or zero, I don’t make any money, but I help Glénat to help me in return. Besides, I love signing books and I can’t sign web-comics , there’s a kind of synergy, we have a relationship based on trust.

    Last October, you shared your irritation when you discovered the Bulgarian edition removed a lesbian relationship from the story . If the license gives them this right, how do you reconcile the desire to create commons and to preserve your story?

    We had a full range of legal resources at our disposal, the Creative Commons doesn’t remove moral right, so if this edition put a red cross on the lesbian kiss panel, it would have been an opinion expressed to say “this is bad” and there I could have expressed my moral right and sued over it, because it is not what I want to express as an author. The fact that it removes the panel from the story doesn’t mean that the author is against it, because it doesn’t take anything away from the story. There’s an omission because the editor didn’t want to be persona non grata in the media for defending an opinion too progressive for his country.

    I couldn’t use my moral rights on it, it’s annoying but there was a movement of readers who organized themselves to print the panel and glue it back into their album, it became a sign of militancy to patch the printed book.

    You also promote the freely licensed tools you use, like the Krita drawing software. What do you gain by using these instead of proprietary tools like Photoshop?

    Mostly freedom. Not the freedom to not pay because I have a support subscription on Krita equal to what Photoshop costs, but I can install it on as many machines as I want, use it in a computer room, and tell everyone “we’re doing a Krita workshop, install it”.

    I’ve been helping the Krita project since 2010 by giving feedback, and I had a lot of adjustments made for my needs. Krita has become tailored to my drawing technique, I have all my reflexes catered for, it is the ultimate comfort. Secondly, I’m sure there is no telemetry. I can’t read Krita’s code, but I know that there’s a whole community who does and can assure me that at no moment in time there can be a line of code able to find out which documents I’m using, what tablet, how much time I’m spending on my drawing. It guarantees my privacy and ensures that I don’t have any ad.

    david-revoy-bd.jpg

    Illustration taken from the 37th episode of “Pepper & Carrot” , David Revoy, 2022

    If tomorrow Adobe is bought by a billionaire, people who use Photoshop have no recourse. On Krita, there’s the Krita Foundation that develops it, but if they stop, its free license requires that the code has to be published somewhere and accessible. There will certainly be another group, or even myself, who will continue to build Krita and use it. This ensures that I can still benefit from my level and practice of drawing in the years to come, a guarantee that a Photoshp user would never get.

    You also participate in the promotion of free software and free culture by illustrating many Framasoft campaigns. What political significance do you see in librism?

    I see it as an online sandbox where you can try your hand at collaboration. You can try out a pyramidal structure with a leader, or a horizontal structure with each person being here on their own initiative, wanting to develop the project and to know how it works. I think this sandbox will allow us to develop reflexes of appreciation for certain models that will make us adopt certain policies instead retrospectively .

    I don’t really believe in someone who will come up with a ready-made policy. School is not made like that, hobbies in France are not made like that, we always have a master on a podium, and now, all of a sudden, we’re going to be able to really have a space for experimentation of what collaboration is. I’ve already seen in librist festivals, when you have to pack up, how people organize themselves. That’s where free software has a great political force: to train people to collaborate.

    • wifi_tethering open_in_new

      This post is public

      adrienplazas.com /blog/2023/03/06/david-revoy-comic-artist-at-first-publishing-under-a-free-license-scared-me.html

    • chevron_right

      Jussi Pakkanen: The code functionality tipping point

      news.movim.eu / PlanetGnome • 5 March, 2023

    Software development is weirdly nonlinear. When you start working on a new project at first it does not really do much. Adding more and more code does not seem to help. The "end user visible" functionality is pretty poor and it does not seem to get visibly better. You can do something, but nothing that would be actually useful.

    This goes on for some amount of time that can't be predicted.

    And then, unexpectedly, the pieces come together and useful functionality jumps from "almost nothing" to "quite a lot, actually".

    Case in point. Up until yesterday a4pdf was pretty much useless. But today you can take this piece of Python code:

    to produce a PDF that looks like this:


    • wifi_tethering open_in_new

      This post is public

      nibblestew.blogspot.com /2023/03/the-code-functionality-tipping-point.html

    • chevron_right

      Felix Häcker: #85 Preferred Installations

      news.movim.eu / PlanetGnome • 3 March, 2023 • 5 minutes

    Update on what happened across the GNOME project in the week from February 24 to March 03.

    GNOME Development Tools

    GNOME Builder

    IDE for writing GNOME-based software.

    hergertme reports

    Builder now allows you to choose a preferred Flatpak installation to use when installing new SDKs and SDK extensions. That Flatpak installation must include a remote providing the necessary FlatpakRef to be used.

    GNOME Circle Apps and Libraries

    Plum Nutty (she/they) says

    Chess Clock added support for the Bronstein delay and simple delay timing methods. These methods prevent a player’s time from increasing by playing fast moves, as is possible with increment time control.

    Sophie 🏳️‍🌈 🏳️‍⚧️ ✊ reports

    This week, Elastic joined GNOME Circle. Elastic allows you to design spring animations. Congratulations!

    Third Party Projects

    nxyz reports

    This week I released Conjure , a simple gtk4/libadwaita app that allows you to manipulate images with various transform & filter operations. Manipulation is done with the popular image processing library, ImageMagick with python bindings from Wand .

    gh repo: https://github.com/nate-xyz/conjure Flathub page: https://beta.flathub.org/apps/io.github.nate_xyz.Conjure

    angeloverlain announces

    Hello everyone! This week, Sticky Notes was released. It’s a simple libadwaita app that allows you to quickly jote down ideas in notes. Notes contain text with some formatting (bold, italic, underline and strikethrough) and every note can be assigned one of 8 pastel colors to categorize notes. You can get it from Flathub

    abb128 says

    Since my last post, I’ve updated Live Captions with a few new features:

    • The window can now automatically be kept on top on X11, or on Wayland if you have the GNOME Extension or KWin script
    • Support for lower-end hardware (at potentially reduced accuracy)
    • New history window and history export

    Download Live Captions from FlatHub if you’re interested in trying it out!

    I’ve also been working on improving the april-asr library so hopefully more open-source apps can make use of live speech recognition. There are now C# and Python bindings available. I’m not calling them stable yet, but they should be usable. Open an issue if you have any problems or suggestions!

    Tube Converter

    An easy-to-use video downloader (yt-dlp frontend).

    Nick announces

    Tube Converter V2023.3.0-beta1 is here! This is the first beta featuring the new C# rewrite. It continues to use yt-dlp and ffmpeg in its backend, however, the application now has a much more stable and cleaner architecture, allowing for faster downloads and fewer crashes. The C# rewrite also makes Tube Converter available for Windows! This work couldn’t have been possible without the help of @fsobolev and @DaPigGuy ❤️

    Here’s the changelog:

    • Tube Converter has been rewritten in C#. With the C# rewrite, Tube Converter is now available on Windows!
    • Added download progress/speed indicators
    • Replaced the View Log button with an Open Save Folder button on successful download and a Retry Download button on error
    • Redesigned download rows to better fit small screens/mobile devices
    • Fixed UI freeze while downloads in progress

    The beta is available on flathub-beta :

    flatpak remote-add --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
    flatpak install flathub-beta org.nickvision.tubeconverter
    flatpak run org.nickvision.tubeconverter//beta
    

    For translators: Please update all translations on Weblate before Friday, March 3 2023, to be included in the stable release.

    Phosh

    A pure wayland shell for mobile devices.

    Guido says

    This week we released phosh 0.25.0 featuring a new plugin to configure the emergency preferences as shown on the lock screen by Chris Talbot and a style refresh updating the settings menu by Sam Hewitt:

    Denaro

    A personal finance manager.

    Nick says

    Denaro V2023.2.2 is here! This release includes many UI tweaks and improvements as we gear up for joining The Circle ;)

    Here’s the full changelog:

    • New and improved icon (Thanks @bertob)!
    • Various UX improvements
    • Updated and added translations (Thanks to everyone on Weblate)!

    Shell Extensions

    Just Perfection says

    The port guide for GNOME Shell 44 extensions is ready: https://gjs.guide/extensions/upgrading/gnome-shell-44.html If you need any help porting your extensions to GNOME Shell 44, please ask us on GNOME Matrix Channel

    Cleo Menezes Jr. announces

    Weather O’Clock and Auto Activities extensions received support for GNOME Shell 44. Along with their respective releases, there were also some visual refinements and bug fixes.

    Miscellaneous

    barthalion announces

    While my job title proudly says “DevOps Engineer”, it really means I’m doing a little bit of everything everywhere. This week has been almost entirely wasted on playing the cat & mouse game with a spammer attacking gitlab.gnome.org. As the part of remediation steps, I ended up disabling external authentication providers like Google, limiting the possibility to create or fork repositories without SSH key configured, and applied on the behalf of GNOME Foundation for Akismet enterprise plan for better spam detection. I have also started banning such abusive accounts instead of outright removing them, and currently the situation seems to be under control.

    GNOME has been accepted to the Fast Forward program by Fastly . Infrastructure changes are not live yet, but we will finally have proper zero downtime upgrades of the underlying servers, as we will no longer rely on DNS-based round-robin traffic distribution, and gain the support for IPv6, including Flathub’s website.

    Over at Flathub, we’re tying various loose ends related to the upcoming beta version launch. I don’t want to spoil too much as we’re closer to the finish line than we’ve ever been since the first commit 2 years ago, but you can already poke around at beta.flathub.org to see what’s coming.

    Hemish 🇮🇳🏳️‍🌈 announces

    New interface translations for Hindi language have been done for GNOME Characters, GNOME Calendar, GNOME Clocks, GNOME Weather, Console, Calls, GNOME Initial Setup, GNOME Tour, GNOME Display Manager (GDM), Sound Recorder, libshumate, gnome-bluetooth, xdg-desktop-portal-gnome, libadwaita, Dialect and Solanum. (Translations did not exist for these software)

    GNOME Shell and Yelp got a lot of previous translations corrected, and new translations added after accumulation of new strings due to being inactive for past 8-9 years. GNOME Shell and Yelp are fully translated now.

    All these translation works are making their way into GNOME 44 release.

    GNOME Foundation

    Sonny announces

    GNOME Foundation has been accepted as a GSoC 2023 mentoring org!

    We are glad to announce that once again the GNOME Foundation will be part of Google Summer of Code . We are interested in onboarding new contributors that are passionate about GNOME and motivated to become long term GNOME developers!

    Thank you Felipe Borges for organizing!

    That’s all for this week!

    See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects!

    • chevron_right

      Michael Meeks: 2023-03-02 Thursday

      news.movim.eu / PlanetGnome • 2 March, 2023

    • Mail chew, thrilled to see our work with Nextcloud and Deutsche Telekom around their great MagentaCLOUD announced . This brings Collabora Online (and LibreOffice technology ) to another large group of users, and lets us continue to invest to improve both COOL and the underlying LibreOffice technology for everyone; more in Steven's article .
    • Also really pleased (something of a news roundup today) to see the EDPS piloting Collabora Online too with Nextcloud. FLOSS solutions that give you back your Digital Sovereignty: full control over your data, software, and IT stack are here.
    • wifi_tethering open_in_new

      This post is public

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

    • chevron_right

      Michael Meeks: 2023-03-01 Wednesday

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

    • Chat with Stelios, sales planning call; caught up with William, lunch. Partner call, introducing Anna, more calling action with William.
    • wifi_tethering open_in_new

      This post is public

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