|
|
Subscribe / Log in / New account

Modularizing Fedora

By Jonathan Corbet
March 16, 2016
Those who hang around on the Fedora mailing lists may have seen occasional passing references to "modularization" and the initiatives around it. That makes some of us curious about just what "modularization" means in this context. A bit of digging makes the picture more clear, though it seems that even the developers in the middle of this effort have not entirely figured out what they are doing yet. In short, "modularization" is another attempt to address the strains that are increasingly clear in the Linux distribution model.

In that model, distributors are the gatekeepers; they gather together a bunch of software, make it all work well together, and ship it on a regular schedule. After that, they support what they have shipped for some period of time while working on the next big release. This mode of operation seemed logical in the early days of Linux, but it is an awkward fit in a world of ever more complex software stacks, faster release schedules, and a desire within projects to deal more directly with their users.

One particular pain point is the disconnect between any given distribution's release cycle and the release cycles of any projects of interest. Waiting for the next major release from a distribution, which could happen either months or years in the future, can be a problem for impatient users. This is especially true for developers building stacks of software; waiting for a distributor to update the lower-level dependencies in such a stack is often just not an option. So, for a while now, distributors have been looking for ways to stay more relevant for their users, whether it be moving to a rolling model, adding "app stores," jumping on the container bandwagon, or something else.

Back in 2013, Fedora launched an initiative called "rings," which was an attempt to partition the distribution into layers, some of which could move more quickly than others. Splitting the distribution into three editions was one outcome of this effort, one which seems to have worked out reasonably well. But much of the hoped-for benefit of rings has not really materialized. As the Fedora modularization wiki page points out, "it seems that the simple metaphor of concentric rings doesn't actually work very well for our increasingly messy open source software world." Modularization is an attempt to address that messiness more directly.

A "module," in short, is a collection of software that serves a specific purpose, carries its own dependencies, is developed and tested as a unit, and is shipped together. Modules can have their own lifecycles that do not match up with that of the distribution as a whole. Beyond that, the definition gets a bit fuzzy; the modularization page adds text like:

A dotted line we draw around a set of components that we declare a "thing." I hesitate to give examples of a "thing" because we aren't sure yet if "apache-httpd" is a module, "webserver" is a module, or both are. However, I think it makes sense as "a larger unit of measure than a traditional RPM". [...]

A module has an API. In essence, the API is what "makes" the module. For example, if we had a "Web server" module, its "api" might be HTTP/2, we could provide that using httpd or nginx, and, next week, swap it, because the api is king, not the binaries inside.

The hope is that, with software chunked into modules in this way, it can be more easily supported and updated independently of the rest of the distribution. There is some clear enthusiasm behind the idea, as is evidenced by the Fedora Council's March 14 decision to approve the modularization effort as an official Fedora project.

The current plan, as described in this page, is to have a prototype implementation available at the time of the Fedora 25 release, so that it can be demonstrated in early 2017. [Diagram] That means that much of the initial work must be done by Fedora 24, due in June of this year. Needless to say, that is an ambitious schedule.

So what will be done for this prototype? The developers provide the diagram to the right as a way of describing what they are aiming for, but readers may not find it all that enlightening. Once those developers manage to put away their diagram editors, they plan to make a working prototype, "functional enough that people can use it, understand it, hammer on it, and improve it", in the next year. The number of actual modules is likely to be small, consisting of a "core" module and a handful of applications. There should also be the various mechanisms in place to make modularization work: a way to automatically test modules, a delivery setup, and more.

One interesting issue has to do with the plan to have each module contain its own dependencies. Having modules move at different speeds means that they will certainly, at times, need different versions of shared dependencies, so each module is likely to have its own. This starts to sound a lot like the bundling of dependencies, a practice that Fedora (like most Linux distributors) has fiercely resisted. This blog post by Langdon White (who is taking the lead on much of this work) states that "we need to be able to define an 'application' (or module) without resorting to bundling", but the RPM package-management system does not currently respond well to attempts to install multiple versions of the same package. So it will be hard to install dependencies in a way that they can be shared between any modules that can use the same versions.

That is just one of the many tooling issues that the modularization developers will have to solve, but it looks to be one of the more difficult ones. Other problems include things like security updates; patching a dependency will require creating new modules that use that dependency and testing them all. Some modules may not work properly with the patch applied, leading to further version skew.

All told, it looks like a significant technical challenge to make all of this work. But the benefits, in the form of a more amorphous, flexible, and useful Fedora, may well be worth it. Langdon has indicated that Red Hat is putting a number of developers on the job, so the necessary resources might just be available. One way or another, the community as a whole is likely to learn more about the problem of running a distribution in the year of the 25th anniversary of Linux.


to post comments

Modularizing Fedora

Posted Mar 17, 2016 12:15 UTC (Thu) by mattdm (subscriber, #18) [Link]

Probably not putting away the diagram editor (Inkscape!) just yet, because that lump of arrows between the left two columns is out of control. :)

Modularizing Fedora

Posted Mar 17, 2016 14:18 UTC (Thu) by NAR (subscriber, #1313) [Link] (10 responses)

I think the user story is "simple": I want the latest Firefox, but I also want that 10 years old window manager (the last version before upstream broke "focus follows mouse"). I want the bugfixes from the latest kernel but do not want new audio plumbing. I don't want to upgrade X (the current config and binary blob works, do not touch it). LibreOffice can open and edit all of my documents, so I don't need new versions of that either. I don't care what process runs as pid 1, but do not change it in order to fix something I'm not using (I don't trust anyone not to break something that I do use). I have an UTP cable coming out of the back of my computer so I don't want to see anything related to WiFi. It's a desktop machine so I don't need a battery icon.

This is a wishlist from a user, not from a tester or "community member" or a freedom-activist. I'm not sure the distributions are capable to achieve it though.

Modularizing Fedora

Posted Mar 17, 2016 14:50 UTC (Thu) by pizza (subscriber, #46) [Link] (5 responses)

> This is a wishlist from a user, not from a tester or "community member" or a freedom-activist. I'm not sure the distributions are capable to achieve it though.

BTW, you left out "I don't want to pay anything for any of this."

Modularizing Fedora

Posted Mar 17, 2016 15:33 UTC (Thu) by NAR (subscriber, #1313) [Link] (4 responses)

Of course. After all, I don't get any warranty.

Modularizing Fedora

Posted Mar 17, 2016 15:51 UTC (Thu) by anselm (subscriber, #2796) [Link]

That was shorthand for “I want other people to work for free on my personal behalf to figure out exactly what it is that I want, to implement, test, debug, and document it, and to keep it available and working just like I wanted it, for eternity.”

Modularizing Fedora

Posted Mar 17, 2016 18:46 UTC (Thu) by bronson (subscriber, #4806) [Link]

Your wishlist basically amounts to a warranty.

Modularizing Fedora

Posted Mar 19, 2016 14:25 UTC (Sat) by leoc (guest, #39773) [Link] (1 responses)

Paying for software rarely gets you a warrantee.

Modularizing Fedora

Posted Mar 19, 2016 20:09 UTC (Sat) by hummassa (subscriber, #307) [Link]

s/rarely/never

Modularizing Fedora

Posted Mar 18, 2016 14:13 UTC (Fri) by mattdm (subscriber, #18) [Link] (1 responses)

Yes, exactly. Although your caricature is a bit extreme, this is really what everyone asks from operating systems — with the key point being that everyone's idea of what they want to change quickly, what they want to stay stable, and what they don't care about is completely different.

Modularizing Fedora

Posted Mar 18, 2016 14:53 UTC (Fri) by raven667 (subscriber, #5198) [Link]

> everyone's idea of what they want to change quickly, what they want to stay stable, and what they don't care about is completely different

This kind of leads to the idea of containerization of applications with all their dependancies, either with the App model (xdg-app, Android .APK, iOS .app, etc.) or automated virtualization of the entire OS like https://lwn.net/Articles/610067/ so you can mix and match software, at the cost of disk space for all the differing dependancies, without expecting OS distributions to maintain infinite versions forever of every component.

Modularizing Fedora

Posted Mar 18, 2016 16:25 UTC (Fri) by flussence (guest, #85566) [Link]

It sounds like that user wishes they weren't using Fedora. Gentoo already provides everything in that list (except stale LibreOffice versions), I'm sure quite a few others do too.

Modularizing Fedora

Posted Mar 23, 2016 18:22 UTC (Wed) by dmoulding (subscriber, #95171) [Link]

Translation: "I want Gentoo, I just don't know it yet."

Modularizing Fedora

Posted Mar 20, 2016 22:15 UTC (Sun) by jospoortvliet (guest, #33164) [Link]

Points for fedora for looking for solutions. These might or might not cut it but they are aware of the problems that exist with the current model. I wonder when Debian wakes up, now openSUSE, Ubuntu and Fedora are all trying new things.


Copyright © 2016, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds