|
|
Subscribe / Log in / New account

Poettering: Revisiting how we put together Linux systems

Poettering: Revisiting how we put together Linux systems

Posted Sep 3, 2014 18:13 UTC (Wed) by HelloWorld (guest, #56129)
In reply to: Poettering: Revisiting how we put together Linux systems by raven667
Parent article: Poettering: Revisiting how we put together Linux systems

But a maximal /usr is *not* what users want. You either ship too much, resulting in waste of space (not what you want on an embedded device), or you ship too little, resulting in bundled libraries and the associated problems. This whole thing doesn't solve any real problem, and that's not a surprise given that the underlying problem is basically unsolvable: you want bugfixes for the libraries, but no regressions or incompatibilities. Given that there's no way to tell them apart, you're hosed.


to post comments

Poettering: Revisiting how we put together Linux systems

Posted Sep 3, 2014 19:02 UTC (Wed) by raven667 (subscriber, #5198) [Link]

> But a maximal /usr is *not* what users want. You either ship too much, resulting in waste of space (not what you want on an embedded device), or you ship too little, resulting in bundled libraries and the associated problems.

That remains to be seen, there is room in this scheme for a whole marketplace of different pre-baked /usr filesystems with as much or as little included, how popular those runtimes are can help determine where the sweet spot is. There will surely be many different runtimes for different workloads under this scheme, very minimal ones for embedded and maximal ones for desktops, which can be built using the same tools that distros use now for yum grouplists and such.

There are definitely a group of people though who have a visceral reaction against anything they are not actively using being on their system and feel unclean, they will be resistant to a generic /usr because of the amount of stuff that must go in it. I figure for a generic desktop you can afford to spend maybe 10G on system libraries and apps given that most desktops have at least a 128G SSD, which is enough for 2 maybe 3 maximal /usr filesystems, for a generic server maybe 1-2G is appropriate and one /usr, although for a Docker-like container server it may be appropriate to have 50G or more with dozens of /usr filesystems for each distro and server framework, much like AWS images.

> This whole thing doesn't solve any real problem, and that's not a surprise given that the underlying problem is basically unsolvable: you want bugfixes for the libraries, but no regressions or incompatibilities. Given that there's no way to tell them apart, you're hosed.

You are right in that it doesn't solve this problem, it sidesteps it entirely because the problem is practically unsolvable as you state. By having a standardized scheme for managing multiple /usr filesystems it lowers the friction and increases the integration of a mix-and-match system, compared to running each app in a VM with nested kernels and limited shared system state (no shared services like d-bus or x or wayland). Instead of picking one way or the other, do both, cut the gordian knot.

Poettering: Revisiting how we put together Linux systems

Posted Sep 3, 2014 19:08 UTC (Wed) by martin.langhoff (subscriber, #61417) [Link] (5 responses)

The battle for what should be in that "base" and what should not be there is a significant one. Linux distros have sidestepped it with good package management and deps.

OSX and Windows have not, and the price they have paid is: a "base" install that is bloated and includes much of the graphical stack even for servers, yet so lean that it forgets to include important libraries, so app authors have to bundle them.

Wherever you draw the line, you are doing it wrong :-)

Fedora seems poised to draw some line between a "base" and "stacks", but that line us a lot more fluid because it is still underpinned by yum. The promise is that each stack will be better integrated and easy to install "whole", providing a better defined platform. And still, you get your openssl security patches from one high quality source.

Poettering: Revisiting how we put together Linux systems

Posted Sep 3, 2014 19:33 UTC (Wed) by raven667 (subscriber, #5198) [Link] (4 responses)

> Wherever you draw the line, you are doing it wrong :-)

This whole thing is about not having to make a singular choice, you can have 2 or 3 or more different /usr systems which draw the line in different places for different apps. Over time under this proposed system I would expect a few natural groupings to fall out and a feedback between app and runtime developers to negotiate what makes sense at what layer so app developers are not ultimately responsible for system libraries they don't care about.

Poettering: Revisiting how we put together Linux systems

Posted Sep 3, 2014 20:46 UTC (Wed) by martin.langhoff (subscriber, #61417) [Link] (3 responses)

So we expect a new role in the ecosystem: "app packagers"; and we are giving them a rather hellish test matrix. Not only every major distro LTS and cadence releases, but 3 different "base systems" for every release.

Looking at it from this perspective, things look even weirder. If application (and app stack) developers were keen on this kind of distribution, tools like Klik and ZeroInstall would be much more popular amongst app developers and users than they are today.

I honestly believe that most projects are happy to leave packaging, with all the specialized knowledge it entails about ABI changes in different distro releases, to folks on the distro side. The exceptions are very large projects, with the manpower and "ecosystem" to sustain that role. Those projects are hosting their PPA/Copr style repositories already -- but it's not that many, and you can see those repos are not that well maintained.

Poettering: Revisiting how we put together Linux systems

Posted Sep 3, 2014 21:04 UTC (Wed) by raven667 (subscriber, #5198) [Link] (2 responses)

> So we expect a new role in the ecosystem: "app packagers"; and we are giving them a rather hellish test matrix. Not only every major distro LTS and cadence releases, but 3 different "base systems" for every release.

I think the proposal is for the exact opposite, an app package will depend on exactly one runtime and will not claim to work with anything else, reducing the test matrix from all popular distros which a user might conceivably have installed to just the one type of system they built the app on in the first place.

> Klik and ZeroInstall would be much more popular

This does cover some of the same ground as those utilities, this is a discussion about how to solve this in a generic and standard way across all of the different kinds of Linux, maybe avoiding some of the pitfalls those utilities have had.

> I honestly believe that most projects are happy to leave packaging, with all the specialized knowledge it entails about ABI changes in different distro releases, to folks on the distro side.

Which is a system this proposal preserves as the distros are the ones maintaining /usr volumes, as an application developer you get to choose which /usr fits your needs and can rely on the end user being able to easily get a copy of that /usr, supported by its distributor, when they want to run your application, without disturbing the rest of their system preferences.

Poettering: Revisiting how we put together Linux systems

Posted Sep 3, 2014 21:17 UTC (Wed) by martin.langhoff (subscriber, #61417) [Link] (1 responses)

@raven677, can you clarify whether you mean

a - that each bundle will match only one "base OS runtime", but that you expect app packagers to produce one bundle for each popular "base OS runtime"? In this case the test matrix is 1:1 for each bundle, but large for the app packaging team...

b - that each app dev team will publish _one_ bundle, matched to one "base OS runtime". In this scenario, it is the "end user"/sysadmin that might be in a situation of having to install and run a particular base OS runtime because the app bundle demands it.

Or perhaps both depending on manpower. I don't like an ecosystem that spans the gamut between these two dynamics.

Most app projects are under-resourced, so I suspect case "b" will be the most common case. So if on my desktop I'm running a dozen apps, they might in turn each be coupled to a specific OS runtime, so perhaps I'd be running bits and pieces of 6 OS runtimes.

Poettering: Revisiting how we put together Linux systems

Posted Sep 3, 2014 21:36 UTC (Wed) by raven667 (subscriber, #5198) [Link]

Yes, the proposal describes situation B in your listing, situation A is the current status quo where apps are already packaged separately for each base OS runtime and few app packages are maintained by their upstreams because dealing with the quirks of N possible base OS runtimes is too difficult, the ones that do their own app packages in the status quo tend to have to bundle a lot of libraries because there is no ABI discipline between base OS runtimes.

So yes, you might have 6 different base OS /usr runtimes installed to run 6 different apps although it seems clear that there will be a lot of pressure to standardize on just a few /usr runtimes in each use case (Desktop, Server, Phone, Tablet, IVI, Network appliance, other embedded, etc.) and since this reduces the friction of maintaining different /usr spaces (no re-install or booting of VMs) it makes the process of shaking out what developers and users really want from /usr smoother.

Maybe this could lead to a resurgence of LSB, defining the ABI for an entire /usr for applications to target rather than a uselessly small subset. By changing where the pain points are for supporting applications a very different marketplace could stably emerge.


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds