Fedora's Boltron preview
In many ways, distributions shackle their users to particular versions of tools, libraries, and frameworks. Distributions do not do that to be cruel, of course, but to try to ensure a consistent and well-functioning experience across all of the software they ship. But users have often chafed at these restrictions, especially for the fast-moving environments surrounding various web frameworks and their dependencies. Fedora has been making an effort to make it easier for a single system to support these kinds of environments with its Modularity initiative. In late July, Fedora announced a preview release of the server side of the Modularity equation, Boltron, which is a version of the distribution that supports the initiative.
In order to be able to support multiple versions of various packages, those packages need to be created and made available to Fedora installations. That's where Boltron comes in. First, the packages need to be decoupled from a Fedora release, which is how they are delivered today. This was done by adjusting the existing tools rather than starting over. The Modularity working group did so to try to reduce the effects of the changes:
As a result, the group didn't treat this as a greenfield experiment that would take years to harden and trust. Instead, they kept the warts and wrinkles with the toolset, and implemented tools and procedures that slightly adjusted the existing systems to provide something new. Largely, the resultant package set can be thought of as virtualized, separate repositories. In other words, the client tooling (dnf) treats the traditional flat repo as if it was a set of repos that are only enabled when you want that version of the component.
This was done by modifying the existing tooling to support arbitrary branching within the package database so the service level (SL) and end of life (EOL) dates can be separated from a specific Fedora release. More information about arbitrary branching—how it would work and why it is needed—can be found in the focus document.
That document uses the example of the Django web framework and the Python Requests module. The packages in the database would no longer only have branches for each release (e.g. Fedora 25, EPEL 7), but would also have branches corresponding to the upstream release versions. That way, a Django module could have multiple versions that depended on particular versions of its dependencies. So, for example, Django module 1.9 could depend on Requests 2.12, while Django module 1.10 could depend on the master branch for Requests (or, perhaps, 2.13 if following the upstream master is deemed too risky).
There is another side to Modularity, though. There needs to be a way to allow incompatible modules to coexist on a single system. There are a number of ways to support that, each with its own set of tradeoffs. Instead of coming up with yet another solution, the working group is focused on supporting existing mechanisms, such as Flatpak and containers of various sorts (Open Container Initiative (OCI) containers and System containers).
As the announcement notes, the Boltron preview is "somewhere between
a Spin and a preview for the future of Fedora Server Edition
".
There is a wealth of
information on the Modularity page for those interested in trying it out or
simply for curiosity's sake.
Boltron is shipped as a container image that can be downloaded from the Fedora
Docker registry as described in the "getting
started" guide. There is also a guided
walkthrough that serves both as an guide to using Boltron and as a way
for the working group to collect feedback on the changes.
A module is simply a collection of related packages that work together to provide some task or service. That could be a web server and a selected group of modules or add-ons, a particular version of a web framework and its dependencies, or a particular language version with any needed runtime components. Multiple versions of those modules can be created, each with its own stability level and lifetime. Each of those versions is handled as a different "stream" of the module.
In Boltron, an updated version of the now familiar dnf command is used to manage modules. For example:
# dnf install httpd # dnf install @httpd # dnf module install httpdThe first of these would install the httpd module, if one exists, or fall back to installing the httpd package. The latter two are requesting the httpd module only (the middle reuses the existing "group" syntax for dnf). Individual streams can be chosen for installation by appending the stream name (e.g. httpd-2.4). When a dnf update is done, updates are only taken from the appropriate stream. There are ways to install different profiles of modules (for a database server versus client, say) or to simply install certain packages from a module. Eventually, packages will only come from modules, so a module must be enabled before individual packages can be installed from it.
As the "preview" term would imply, there's not much more to Boltron at this point. There are some 25 modules that have the same stream as that of the regular packages for Fedora 26. So far, the only module with multiple streams is for Node.js, with version 8 being available in the nodejs-8 stream. The intent is that more modules and streams will be added so that Fedora 27 servers can be composed by picking and choosing modules and streams to fit their intended use cases. Containers would presumably be used to manage multiple conflicting modules. There is, clearly, plenty more to be worked on.
The Modularity effort is a bold rethinking of how Fedora is built, used, and managed, as we have noted in some previous articles along the way. For a year or more, Modularity has largely just been an idea and a few, somewhat confusing diagrams, at least from the perspective of Fedora users. We are finally starting to see some of the behind-the-scenes efforts bear fruit. It will be interesting to watch and see where it all leads.
Posted Aug 30, 2017 20:42 UTC (Wed)
by cyperpunks (subscriber, #39406)
[Link] (7 responses)
For RHEL this makes sense, since they are stuck on outdated legacy versions even before first GA.
Can someone explain the benefit for Fedora users?
Posted Aug 30, 2017 21:56 UTC (Wed)
by khim (subscriber, #9252)
[Link] (4 responses)
Planned release dates: As you could see Django 2.0 clearly misses Fedora 27 and is released about 1.5 months after it. Then you moan and complain for about 5 months because you couldn't use released and stable version of Django - and in Fedora 28 it's only supported for about four months before it's declared obsolete and you are supposed to switch to Django 2.1 Which means that with our "very fast moving distro" half of the time you would be forced to use old, obsolete package in the "extended support" state (basically: only security bugfixes) and half of them time you would enjoy supported package. If Fedora release wouldn't slip (they don't ever slip, right?), that is. Otherwise situation would be even worse.
Posted Aug 30, 2017 23:11 UTC (Wed)
by jhoblitt (subscriber, #77733)
[Link] (2 responses)
Posted Aug 30, 2017 23:26 UTC (Wed)
by rahulsundaram (subscriber, #21946)
[Link]
https://fedoraproject.org/wiki/Fedora_Release_Life_Cycle#...
Posted Aug 30, 2017 23:57 UTC (Wed)
by anselm (subscriber, #2796)
[Link]
That's a typo – Django 2.0 is supposed to be supported until August 2018, not 2017. This is “mainstream support”, which according to the Django team means they will deal with “security fixes, data loss bugs, crashing bugs, major functionality bugs in newly-introduced features, and regressions from older versions of Django”. Django 2.0 is scheduled to be on “extended support”, i.e., security fixes and fixes for data loss bugs, until April 2019.
Having said that, Django 1.11, which is the current version, will enjoy extended support until at least April 2020 because it is an “LTS”, or “long-term support” release. The next planned LTS release is Django 2.2, which according to the current roadmap will be out in April 2019. It would make reasonable sense today to base a new web project on Django 1.11, because that gives you two and a half years of fixes and a year of overlap between this LTS release and the next one. You will also want to use Python 3 from the get-go, since one significant difference between Django 1.x and Django 2.x is that Django 2.x will no longer support Python 2.
Posted Aug 30, 2017 23:47 UTC (Wed)
by Conan_Kudo (subscriber, #103240)
[Link]
Your example is invalid. Django 2.0 will release in December 2017 and mainstream support will end in August 2018. All support ends April 2019. That fits perfectly fine within any Fedora support window. Django 1.11 ends mainstream support in December 2017, but all support ends in April 2020 (the end date for Python 2, incidentally).
You could probably come up with something that would demonstrate your point, but the thing is, as a Fedora user and contributor, as well as an independent software developer, modules do not make my life easier. Instead, they make it harder. The problems that "modules" attempt to solve are not problems for a distribution like Fedora. They are problems for a distribution like Red Hat Enterprise Linux.
At this stage, I seriously hope we do not throw all of our eggs into the modularity basket, because it's clearly not in a sane state.
Posted Aug 31, 2017 9:42 UTC (Thu)
by NAR (subscriber, #1313)
[Link]
Posted Aug 31, 2017 12:26 UTC (Thu)
by mattdm (subscriber, #18)
[Link]
Posted Sep 4, 2017 13:05 UTC (Mon)
by Cato (guest, #7643)
[Link]
However, maybe this ship has sailed - lots of development teams are using Docker these days for similar reasons. Docker, Flatpak, etc also have the advantage of not being coupled to a particular distribution.
Fedora's Boltron preview
By now more or less everything in RHEL6 is hopeless outdated: MySQL 5.1, GCC 4.4, etc etc.
Fedora's Boltron preview
I don't have that need, I want to move forward, not backwards.
And you couldn't.
Can someone explain the benefit for Fedora users?
Let's use Django as an example.
Fedora 27 - 2017-10-31
Fedora 28 - 2018-05-08
Django 2.0 release - December 2017
Django 2.0 end of mainstream support - August 2017Fedora's Boltron preview
Fedora's Boltron preview
Fedora's Boltron preview
Fedora's Boltron preview
Fedora's Boltron preview
Fedora's Boltron preview
Fedora's Boltron preview