On of those issues is rebuildability as it pertains specifically to the requirements set forth in the GPl and LGPL licenses that much of the runtimes depend on. You have to remember unlike the apps, the runtimes are an aggregate of dozens, maybe hundreds of individual projects, representing hundreds maybe thousands of individual contributors that contributed code under agreements set forth by the GPL, LGPL and other licenses. It’s not clear to me, yet, that the runtimes at flathub are respecting those agreements. And that’s a problem that needs to be solved… its sort of fundamental actually from my pov.
And back in July, I was actually having good conversations about that.. that resulted in Timothee writing up new documentation at flathub on how the source publishing works to address most of my concerns when flathub builder is used. I thought we were having a good discussion, leading to solid documentation on the existing tooling that the application flatpaks mostly use. The tooling isn’t perfect, but its a solid foundation for the app flatpaks where there could be cooperation to further enhance the tooling. Which reminds me, I need to follow up on the deficiencies in flatpak builder, its on my list.
Unfortunately that only seems to apply to the applications that use flathub builder, things built inside flathub infrastructure. Some of the critical runtimes are built elsewhere using other tooling and published at flathub. Its the runtimes I’m focused on right now. Its the runtimes that are critical to the operation of flathub, because the are critical shared dependencies for the operation of a significant portion of the open source applications at flathub.
I am doing the work to discuss the issues as transparently as possible. Unfortunately at GUADEC I found something that multiple people agreed on I shouldn’t talk about, and it took 3 months for my embargo to be lifted. And now I’m back and ready to continue talking about the issue of source availability and rebuildability. I’m ready to continue to do the work as transparently as possible.
There is a high likelihood that I will find more problems of a sensitive nature on this journey, and I will be embargod again, simply because what I am trying to address may be tied to legal liability for flathub as a distributor and I need to be sensitive to that. I want the problems addressed. I’m hoping the next thing, if it comes, results in a shorter embargo. Sitting out on the material public discussions for 3 months is difficult. I’m not interested in watching flathub get actionable C&D letters based on things I find… that’s the last thing I want. If anything I want to make sure flathub doesn’t get blindsided by an actionable C&D concerning any GPL or LGPL code in the runtimes. If they had to pull any of the runtimes down in response to something like that it would be highly damaging, possibly crippling, or at the very least inconveniencing to application developers and users. I want to fix the underlying problem, so the possibility of that grows increasingly less likely.
I’ve reviewed the fedora flatpak process.. its also not perfect. But because all the fedora flatpaks are just rpm content, we have a coherent source availiability story. I’m pretty confident I can grab the corresponding source for a fedora flatpak, patch it and rebuild a replacement flatpak for my own use if I need to. Even the Fedora runtime flatpak which is composed from dozens of rpms. I should poke someone about writing something up from the pov of someone who needs to do a local patch and build of a fedora flatpak so we can have a cleanly documented example for everyone. But because we already have that story for fedora rpms, I’m confident that we can write that up into something coherent for the entire collection.
I’ve no idea how to even imagine doing something similar for the runtimes ive looked at at flathub in this moment. It would be great if someone who feels they understand flathub better than i do, took a stab at that. Just attempt it and write up your findings. Your a user and you want to patch the gnome runtime flatpak and use your local patched copy. How do you do that right now? How do you do it in a way that you’re confident that the sources you are starting from are the sources that were used to build the binary distributed by flathub?
I don’t think its possible to actually do that at present. I would love to be proven wrong about that.