Journal ThreeFarthingStone's Journal: Portage Wars 2
Related Links
- Gentoo Linux - Forums
- Gentoo Weekly Newsletter for 30 June 2003
- Zynot Foundation - Forums
- Slashdot Story
What is Gentoo?
(skip reading this section if you do not need background on Gentoo)
about Gentoo - It's all explained in About Gentoo Linux, although you should have some Linux experience first. Gentoo is a compile-from-source GNU/Linux distribution. By compiling the software yourself, you can use compiler flags that optimize for your computer, and make your own customizations.
portage - Gentoo's amazing package manager is portage, which I find an improvement over RPM. Like BSD ports, it will download, compile, and install a package given its name. Portage is written in python and has features that make it more powerful. Using portage's emerge command, one can search for, install, upgrade, and remove different versions of packages and dependencies, without first cd'ing to the correct directory. Portage maintains a database of installed packages, and who owns what files.
stages - To install Gentoo, one takes an existing Linux system (usually by booting from a Gentoo LiveCD), extracts the stage 1 tarball to an empty partition, and chroot's into a minimal system. Using the bootstrap script one rebuilds glibc and gcc to reach stage 2. Then one does emerge system to get basic programs like the shell to reach stage 3. From there they install a logger, cron, and the Linux kernel itself, and set up booting. It's also possible to skip steps by starting with a stage 2 or 3 tarball.
ebuilds - To upgrade Gentoo, one uses emerge sync to download the portage tree, which contains the latest ebuild files. The ebuilds contain bash (shell script) functions that describe how to build the software. The ebuilds also give the URL for downloading, the stable/unstable status on different architectures (x86, ppc, sparc, etc.), the required dependencies, etc. There is one ebuild for each version of each package.
Debate over Gentoo and Portage
users' actions - I am not a Gentoo developer; I only use their software, so I do not usually know much about Gentoo development. Users discuss Gentoo forums, where one can find an unofficial GentooBSD port (site) and HURD port (site). Such ports start by running portage on the BSD or HURD kernel.
developers' actions - Meanwhile, some other projects have more official status. The port to Mac OS X is an example. Thus, there are both official Gentoo projects and unofficial Gentoo-related projects.
debate of portage features - Thus, both developers and users do things to portage. They have debated topics like adding an SQL database to portage to speed it up, rewriting portage in C++, adding a progress bar to portage, all things that are very interesting. The current version of portage, as installed by emerge sync; emerge portage, already has nice features: emerge displays its help and other texts in color, it sets the titlebars of xterm windows to show progress, emerge -p lists what would be installed by an emerge command, emerge -U world upgrades whatever is installed on the computer.
control of portage - So who controls portage? The core Gentoo developers do, and how they handle it between themselves is not of my concern. Remember, for portage to have a feature, someone must actually write the code. Some people donate code. Some control whether it is accepted.
control of Gentoo - The same is true of the rest of Gentoo. The LiveCDs, the stage tarballs, etc.. But there apparently was a dispute over control which led to the creation of the Zynot Foundation. Zynot intends to fork the Gentoo distro; portage will be involved.
"yet-to-be-named Package Management System"
cause of the fork - On or before 1 July 2003, Zynot's web site was already featuring a lengthy description of why Zynot was forking Gentoo. My current understanding of the document's claims is that Zachary Welch did not like how Daniel Robbins was running the project. Robbins was steering the project in favor of his own "business interests" and not Welch's. Welch was frustrated at trying to support embedded devices in Gentoo. So he started the fork.
avoiding Gentoo control - Welch could have created another distro with closed management, like Gentoo, except the management would be controlled from him and could therefore serve his interests better. Instead, he chose an open model based on a non-profit foundation eventually to be controlled by all the Zynot users. Perhaps, by mistake or with reason, he associated one bad (for him) closed management structure with all closed structures. Perhaps he is just doing it to attract more users.
portage by any other name - In fact, by browsing the Zynot forums (there are now 313 users) it seems that the Zynot distribution will be much more then, for example, a small set of ebuilds to add to the portage tree, and an alternate C++ version of portage, all of which to be used on embedded devices. Instead, the new distro might be a complete fork, with its own package tree, stages, and liveCDs. The distro and the package manager still need a name.
new features - How different will Zynot's package manager be from portage? The Zynot forums package manager section contains a lot of proposals, a lot more than in the Gentoo forums. It seems the plan for a fork has created a desire to modify portage. Some of them sound interesting, such as multiple overlays of ebuild and recipes for multiple packages.
Bagheera - Geert Bevin was also dissatisfied with Gentoo and started work on a C++ portage before switching to Java. This could become Zynot's package manager, but it might not be. It could also become one of many, including a modification of python portage.
Incompatibilities Await
not like RPM - Does this mean that portage will get into a situation like RPM? RPM is used in Red Hat, Mandrake, and SuSE, and probably many other distros. But (under my impression) there aren't that many variations in RPM. In fact RPM is becoming standardized. The inability to install distro A's RPM package on distro B is usually because B has software older than in A, or B uses a slightly different package tree (packages with different names) than A. The first problem disappears for portage because portage compiles from source, against what software version you have, or upgrades dependencies for you. The second problem disappears as long as only the official Gentoo portage tree or slight modifications are used. If Zynot's distro makes significant modifications, there could be incompatibility.
Gentoo-Zynot compatibility question - Zynot forums has a page about compatibility. As it is not clear what Zynot's package manager will eventually look like (if a distro is actually created), it also is not clear how much compatibility there will be.
ebuild changes - The ebuilds might change in form, if features make that necessary. From my observation of the Zynot forums it seems most of the current ideas for a package manager do not require changes to the ebuild formats. Although ebuilds might need fixing (perhaps to not assume gcc as the compiler) the fixes could still be compatible with Gentoo. The few ebuilds that need it can have dependencies on other package managers, or a virtual package. Then there would be multiple package managers sharing one ebuild tree - you could pick a manager written in python or Java, or one that uses a client-server or database model.
Hatred and Intolerance
holy war? - It would be nice, then, if Gentoo and Zynot could agree to share ebuilds... but holy war could get in the way. If the two communities hate each other too much, they will insist on introducing incompatibilities in the ebuild format or the package names. They will try to make portage unable to co-exist with a Zynot package manager. They will attempt to unsuscribe each other from mailing lists. They will suspect a few of their own users of working for the other side and kick them away. All Gentoo users will switch to GNOME while Zynot users take KDE - or something like that.
target Microsoft - I don't believe in holy war. If you want to hate an OS, hate Microsoft Windows - but even I don't hate Windows anymore.
My Position
an account - I now have an account on Zynot's forums. My Gentoo forums account is a few months old. I created the Zynot account for the low user ID (I'm the 313th user, so my ID is 314). The forums look mostly dead, and no one else has signed up in the few hours since I did, which suggests the USA is an obscure timezone for Zynot.
my preference - I still use Gentoo. There is nothing wrong with it from my point of view; I wouldn't have forked the distro myself; I probably don't need any of the upcoming Zynot new features. A concern (that I have mostly avoided in this journal entry so far) is that Zynot will die without making a software release, so I don't have plans to switch yet. Zynot has not much of an identity (its OS distro does not even have a name) and I don't know if I want to switch. But Zynot interests me because there is potential for both improvement and disaster in portage. There could be portage alternatives with more features, and improved ebuilds for portage, or there could be hatred and destruction - a disaster for portage.
I wait for the future.
Re:portage is a broken nightmare (Score:1)
By "portage compatibility" I mostly meant "sharing ebuilds" or at least accepting ebuilds from Gentoo's tree. Then, for example, if it is discovered that package xxx needs the -fdo-something-special compiler flag to build on PowerPC gcc, only one ebuild has to be modified. Also, people don't have to learn a new ebuild-replacing format.
(Portage)