The original version of this article was first published on IBM
developerWorks, and is property of Westtech Information Services. This
document is an updated version of the original article, and contains
various improvements made by the Gentoo Linux Documentation team.
This document is not actively maintained.
Making the distribution, Part 3
The author strays from Linux and then returns
At the end of my previous
article, I described how Gentoo Linux development had effectively been
brought to a halt by a strange idle-lockup bug that I began experiencing as soon
as I upgraded to a new dual-Celeron motherboard (an Abit BP6). Because I was
unable to fix the problem, and at the time didn't have the funds to replace my
motherboard, I decided to halt Gentoo Linux development and switch over to
FreeBSD. I needed a working system, and since Linux was locking up all the time,
this would be an excellent time to get familiar with a BSD operating system. So
I installed FreeBSD, started learning, and didn't touch Linux at all for several
All in all, I really liked FreeBSD. I felt that the operating system was well
put together and that nearly every part of the system had a consistently
high-level of refinement that's almost never found in the Linux world. I enjoyed
the fact that FreeBSD contained a full complement of man pages, unlike Linux
where many programs only have GNU info documentation, which I don't particularly
Most of all, I was impressed with FreeBSD's ports system, the technology used to
maintain and upgrade the system. Unlike the Linux approach, ports didn't use
binary packages but instead automatically compiled everything locally from their
original sources. Whether you were installing Samba or upgrading the core
system, everything was compiled right on your local machine. This approach
appealed to me and was very similar to the one I had been creating under Gentoo
Linux. In this and many other ways, FreeBSD's design agreed with my
sensibilities as a developer and a system administrator. For this reason,
FreeBSD provided a comfortable work environment for many months, and I'm glad I
took the time to get familiar with this excellent operating system.
A lot of the differences between Linux and FreeBSD come from their different
development structures. Linux development is very decentralized, and we rely on
distributions to pull in and unite the various pieces of Linux scattered
throughout the Internet. Compare this to FreeBSD and the other BSDs (OpenBSD and
NetBSD), where there's a unified development team plugging away at a single,
unified set of sources. Well, at least each BSD has its own set of unified
sources. This can be a good thing, and results in FreeBSD not having a "patched
together" feel like many Linux distributions do.
Next, we can compare the technology under the hood. Many a FreeBSD fan will
assert that FreeBSD is better suited to being a server than Linux is. They'll
tell you that FreeBSD is better under high loads, and has a better TCP/IP stack.
If you're comparing Linux 2.2 or earlier with FreeBSD, I'd have to agree.
FreeBSD is a great server OS, that's for sure. But, that's just Linux 2.2 and
earlier. I happen to be a big fan of the 2.4 test kernels that I've been
running. They're really, really great and contain a nice TCP/IP stack and a
totally redesigned "netfilter" system that really rocks. In the end, I think
that Linux will be the one to set new performance standards and make free UNIX
servers even more competitive versus their commercial counterparts.
As for the desktop, rather than the server world, there's really no comparison
-- Linux is where the action is. All the latest desktop developments appear on
Linux first, and Linux is ahead in its support of accelerated 3D graphics and
sound cards. With Linux 2.4 approaching, Linux will continue its dominance in
The one thing I don't like about FreeBSD is its use of the UFS filesystem. While
UFS is more reliable and rugged than ext2, it's also mind-numbingly slow. It's
possible to use a special UFS extension called soft updates, which is able to
speed up the filesystem by aggregating IO operations into bigger chunks. While
soft updates improves UFS tremendously, I can't say that UFS really outperforms
ext2 in any way. Of course, it's more reliable, so FreeBSD ends up beating Linux
in the filesystem war. Again, at least this is true when comparing older Linux
2.2 distributions to FreeBSD.
However, the tables turn when we start to compare modern Linux 2.2 and Linux 2.4
to FreeBSD. ReiserFS (a new journalling filesystem available for Linux) is just
amazing. Linux also has ext3, IBM's JFS, and XFS to look forward to, from which
we expect excellent performance and reliability as well. As of now, ReiserFS
gives Linux a major speed advantage over FreeBSD, and is one of the reasons I
believe that Linux 2.4 overturns many of the old arguments of FreeBSD's
superiority over Linux.
Back to Gentoo Linux development
After a few months, I decided to rejoin the Linux world and get Gentoo Linux
running on a new development box. At first, the decision to restart Gentoo Linux
development was more of a business decision -- I had invested a lot of my time
in becoming Linux-knowledgeable, and it would be a waste to throw all this
knowledge away by sticking with BSD. However, shortly after I began updating
Gentoo Linux, I found several new reasons why Linux was worth switching back to,
namely all the filesystem and kernel improvements mentioned above. FreeBSD was a
peaceful home, but a little too boring, too staid. Linux is where the action
was, where major progress was being made. There's no doubt that if you're
looking for excitement and innovation, Linux is the place to be.
To me, the Linux 2.2 era was a disappointing letdown from the 2.0 era, but the
2.4 era promised to be worth the wait. So, Gentoo Linux was reborn, and I was
There was another key to Gentoo Linux's rebirth -- Achim Gottinger, my
development team lead. I want to take some space to thank Achim for helping me
restart Gentoo Linux development. I started getting e-mails from Achim shortly
before my return to the Linux world. In almost every e-mail, he'd include some
new .ebuild (autobuild) scripts for Gentoo Linux, or some desperately needed
bugfixes. As I restarted Gentoo Linux development, Achim continued to contribute
his time and resources to help get the distribution back on its feet. Up until
recently, Achim and I have been the only two people working on Gentoo Linux, and
this has been by choice. Because we both have a similar vision for the
distribution, and because of Achim's skill, we were able to get a tremendous
amount of work done and I never really felt that adding a third developer would
significantly help our progress. Now, Achim serves as the Gentoo Linux
development lead, and continues to make major improvements to Gentoo Linux on an
almost daily basis. We've reached the point where we're ready for others to
start working on our CVS tree, and have begun to gradually and carefully expand
the Gentoo Linux development team.
The new vision
I don't feel that the time I spent in the BSD world was in any way wasted. In
fact, it gave me a tremendous opportunity to reflect on the happenings in the
entire Linux community and how Gentoo Linux could help to improve things.
In the new version of Gentoo Linux, I made the decision to not use pgcc anymore,
nor use very high optimizations to compile all binaries. Since stability was
paramount, we would use reasonable ("-O2 -mpentium") optimizations but provide
an easy way for users to customize these optimizations to their liking by using
our autobuild system.
FreeBSD gave me a really good idea of how an autobuild system should function. I
decided to add several FreeBSD features to make our autobuild system (now called
Portage) a true next-generation ports system.
Portage is the heart of Gentoo Linux, and is more than a simple package
management or maintenance system. Consisting of a set of build tools and build
scripts, Portage allows you to rebuild the entire distribution from original
sources. But more importantly to me, Portage gives the user full access to the
intelligence of how Gentoo Linux was built. To us, this is very important
because it means that we are documenting how to build a distribution while at
the same time moving Gentoo Linux development forward. And, because Portage is
easy to use and understand, we hope that it will open up Linux internals to even
more people, so that others can begin to contribute to our sources and scripts.
Portage is our way of opening up Linux technology to others. By studying the
autobuild scripts, you can see how all the various packages fit together into a
unified whole. If necessary, you can grab our entire CVS tree and hack away at
it, producing your own custom distribution or Linux-based technology. We believe
that this is a good thing -- we want to give people the knowledge they need to
take Linux into new realms.
Since its inception, there have been many people of various backgrounds involved
with Gentoo Linux development. And I wasn't surprised to find that our
developers had wildly different opinions of how we should approach the
money-making end of Gentoo Linux. Basically, there were two groups of
developers: one group was generally opposed to money-making pursuits, while the
other group was excited about helping Gentoo Linux become a successful
commercial product. This was an expected split; the first group saw commercial
involvement as a corrupting influence, while the second saw no such negative
In the Enoch days, I used to waver on this issue and didn't really know the
right approach. I recognized the fact that distributions like Debian were truly
committed to free distribution of their software. I liked that. Compared to
other commercial distributions, they made things easy for the user by providing
detailed instructions on their Web site. That was a good thing, and something I
wanted to emulate.
At the same time, I really wanted Gentoo Linux to be commercially successful. I
struggled to find a balance, but never really found one until recently.
What to do?
So, how are we planning to balance commercial and non-commercial interests? The
key is to remember our foundation -- the foundation of Gentoo Linux is Open
Source software. Thus, the foundation for all our endeavors must focus on Open
Source. It's not good enough to just acknowledge Open Source software, or just
to use it. We must also encourage its development and distribution, and never
oppose this stance for commercial gain. More importantly, we must never
structure our business model so that there's a temptation to restrict the free
distribution of our sources. Our development team needs to be open and
accessible to the public, and free distribution of Gentoo Linux must not only be
allowed, but encouraged. We need to be Open Source advocates, not just in word,
but in action also.
If a company wants to use Gentoo Linux for a commercial Linux-based technology,
they can just grab the contents of our CVS tree and start using it, since all
our work is distributed under the GPL. We don't want to limit the use of our
work in any way, except to ensure that all derivative products comply with the
GNU Public License.
We'd like as many people as possible to benefit from our work, but we'd also
like to benefit as much as possible from your improvements to Gentoo Linux. If
you're part of a company using Gentoo Linux as a base for your product, we hope
that you'll send any freely-distributable improvements to us so that we can add
them to our CVS tree. That way, everyone benefits. We can continue to maintain
and improve your additions, and you in turn can benefit from these improvements.
We want to foster collaboration between commercial and non-commercial entities.
This way, both the sysadmin using Gentoo Linux at his ISP and the corporation
building a commercial server product can benefit from each other's improvements
and fixes to Gentoo Linux. It's time to promote the free exchange of code
between everyone. Only Open Source makes it possible.
What does the future hold?
Right now, we're at the verge of releasing Gentoo Linux 1.0 (it may be available
by the time you read this article on developerWorks.) But what does the future
As we move towards 2.0, I hope to continue to improve Portage, the technology at
the heart of Gentoo Linux. Any major improvement to Gentoo Linux generally
starts with an improvement to Portage. I'd like to continue the process of
converting the majority of the code from bash to python, which will allow us to
add new features like object-oriented design to our autobuild system.
In addition to changes to Portage, I hope to continue to slowly and carefully
grow our development team by finding skilled developers who share our same
vision. As our development team grows, we will be able to vastly expand the
number of autobuild scripts available for Gentoo Linux. But even more important
than this, a slightly larger development team will give us the resources we need
to continue to keep Gentoo Linux on the cutting edge of Linux technology. That's
where the fun is :)
We also hope that commercial Linux technology companies will choose Gentoo Linux
as a base for their products. We currently have one such relationship and we
hope to have many more in the future. These kinds of collaborations promise to
be lots of fun and to be a great benefit to all Gentoo Linux users.
In the end, our primary goal is to contribute something meaningful to the Linux
community. Although there are many Linux distributions to choose from, we know
that Gentoo Linux offers something that really isn't available anywhere else.
We're excited about the future of Gentoo Linux development, and we hope you are
About the author
Daniel Robbins lives in Albuquerque, New Mexico. He was the President/CEO of
Gentoo Technologies Inc., the Chief Architect of the Gentoo Project and is a
contributing author of several books published by MacMillan: Caldera OpenLinux
Unleashed, SuSE Linux Unleashed, and Samba Unleashed. Daniel has been involved
with computers in some fashion since the second grade when he was first exposed
to the Logo programming language and a potentially lethal dose of Pac Man. This
probably explains why he has since served as a Lead Graphic Artist at SONY
Electronic Publishing/Psygnosis. Daniel enjoys spending time with his wife Mary
and his new baby daughter, Hadassah. You can contact Daniel at