New Post: How to Be Upstream-First

By Tobias Bernard:

One of the things I’m most proud of about my work on the Librem 5 team is the productive collaborations we have with upstream free software projects, and the contributions to the broader ecosystem we’ve been able to make as a result.

Over the past four years the Librem 5 software team has worked on dozens of upstream GNOME modules, resulting in many cool new features and improvements for people using GNOME across all devices, not just on mobile. These include helping to modernize apps such as Software, Contacts, Calculator, or Geary, adding and improving Settings panels, and of course the massive leap in consistency and developer experience that came with Libhandy/Libadwaita.

Adaptive GNOME apps using Libadwaita

The result is that we now not only have a free software mobile platform and vibrant third party app ecosystem based on the GNOME stack, but also that GNOME on the desktop has gotten much better at the same time.

Given the small size of the team what we’ve achieved is pretty incredible, especially compared to previous efforts to build a free software mobile platform.

I think a big part of the success of this initiative has been our upstream-first approach to development.

Read the rest of the post here:


I think it’s the best strategy to have, even if it comes with a few sacrifices (the stakeholders shall agree), because the product is always up-to-date in all aspects. I would even say that there is the visual upstream changes (adaptive windows, icons, etc.) and the non visual changes (gestures, etc.).

As Purism is very pro-active, I have a service to ask, if you can of course (because why not, it’s a good opportunity no ?) :

We have 2 very good tools in Gnome / PureOS :

  1. Gnome Web (Epiphany)
  2. Secrets (password manager)
    But… they don’t work together. I mean :
    -> open Gnome Web > Open Secret > select the ID > long press > copy > swipe from bottom screen > select Gnome Web > go to ID field > long press > paste > swipe from bottom screen > select Secret > select the password > long press > copy > swipe from bottom screen > select Gnome Web > go to the password field > long press > paste.
    It’s more or less the process.

Question :
What about auto-completion ? this is typically the kind of integration you can push and that would benefit all the Gnome / PureOS ecosystem.
It seems one of the only topic talking about Secrets (ex: Password Safe) and Gnome Web is abandoned

It may be worth continuing that feature request discussion in a new thread (or even better in feature request tickets for the projects!) just so we can keep this thread a discussion thread of the topics in the post.

1 Like

One is to periodically take the newest version of the upstream project and re-apply all your changes. This is often very difficult and time-consuming, depending on how much changed upstream.

One point to bring out of the above is that the consequence of this can be

  • Your project is based on a fairly out-of-date version of the upstream project, and hence missing the latest features.
  • There can be delays in getting important bugfixes out, whether security or functional.

Things that are “difficult and time-consuming” often just don’t happen.

You want things to be “easy and fast”. :slight_smile:

1 Like

And unfortunately that desire is often what drives people away from upstream first development, because it’s a tradeoff between what’s “easy and fast” today and what’s “easy and fast” long term. The downside with upstream-first development is that you have to do more work up front, in exchange for things being simpler longer term.

That is a really challenging trade-off for most tech companies to take. Most (because they are driven by VC money that pushes toward quick results and quick investor exits) are strongly motivated to get something quickly, incur a lot of technical debt as a result, and either exit before that technical debt becomes due, or use the next round of funding to fund the complete rewrite, starting all over again.

It’s not just tech companies that face this of course. Think about how many forks (and dead projects) exist in FOSS projects that are only there because the developer wanted to make some changes to an established FOSS project for their personal needs but didn’t want to go to the extra effort of getting those changes accepted upstream.


In my most recent experience, there’s at least one more factor that affects upstreaming: upstream’s responsiveness. If they are slow to review your changes, you might be forced to fork if you want any progress at all. If they have a critical mass already, your fork may be doomed to remain in obscurity from the start.

And, of course, the upstream may not want to follow your direction at all, but at least typically you’ll be unambiguously informed about that.

Purism’s close ties to GNOME really make things easier in both those aspects.

1 Like

Yes! I think you meant it in another way, but: Does anybody know when gnome 42 and all new gtk4 apps/libadwaita will be available on the librem5 with pureos? At the moment gnome 3.38 is the newest you get.

With PureOS 11 (crimson). Some parts may still appear in PureOS 10 (byzantium), but that will likely be a small minority.