Statement of Purpose
On this page I’d like to keep track of where I am with open source. I’m planning a trial swith from my longtime bastion of Gentoo GNU/Linux to something new and difficult: FreeBSD. On this page I will post HOWTOs, config files and other bits of information to help not only myself, but hopefully a few others.
In my first post, I’ll lay out some personal reasons for the switch, along with a basic stragety to accomplish it.
Why now?
In general, up until now, I haven’t minded reinventing the wheel with my computer. First, it’s fun, and second, it helps me to remember instead of just copying and pasting.
I first tried linux in 2000 with Mandrake 7.0 or so. All I managed to do with that was erase my sister’s music files, along with everything else on the family’s computer, for that matter. Actually I did that twice. I gave up with Mandrake 7 after I got some anonymous death threats…
I started seriously using linux the second I got my own laptop in 2002. It wasn’t until a few years later, in 2004 that I had enough knowledge and patience to get rid of Windows for good. I have used only linux ever since. I started in 2004 with a distribution called Gentoo, and except for about a year with Debian/Ubuntu, and a few weeks with almost every other major player, I have stuck with it.
Why so serious this time?
I have frivolously tried a lot of distros before so I’m not at all afraid to just dive in to FreeBSD, but this time is a little different. I have become very comfortable running a stable distribution. I also work full time and need my computer to be available when I need it. Ahh, sometimes being a grown-up sucks. :-/
What’s Gentoo?
Ah, Gentoo…. I really like Gentoo. Gentoo is a so-called “meta distribution” because it really isn’t designed for one specific use. When one thinks of Gentoo, nothing visual comes to mind in the way that Suse or Ubuntu conjure a specific theme. Gentoo does have its reputation though. Gentoo is one of the favorite butts of linux users’ jokes. That’s because every single program must be compiled from its source code. Initial setup is stupidly complex and can take a few days to complete, and if I want to upgrade Firefox (from source) or another large application, I should start it now and come back in an hour or so and hope it’s done.
Of course, we Gentoo users aren’t really masochists. At least not as much as our image would warrant others to believe. You see, with all that silliness comes with a lot of power and responsibility. For example, Gentoo allows you to define what they call USE flags, which basically are compile time flags that tell a program what parts of that program you want, and what parts you don’t. Let me give you an example of the way USE flags make life easy for people who want extreme control over their system. Let’s take the case of vlc, a very popular cross-platform media player.
First, let’s look at vlc as it exists on my system right now. We’ll use the Gentoo program equery (.ebuild is the file extension for Gentoo systems, like .exe for Windows or .deb for Debian/Ubuntu).
vault ~ # equery uses vlc [ Searching for packages matching vlc... ] [ Colour Code : set unset ] [ Legend : Left column (U) - USE flags from make.conf ] [ : Right column (I) - USE flags packages was installed with ] [ Found these USE variables for media-video/vlc-0.8.6g ] U I - - 3dfx : Enable support for Voodoo chipsets, also called as 3DFX and TDFX + + X : Adds support for X11 + + a52 : Enables support for decoding ATSC A/52 streams used in DVD - - aalib : Adds support for media-libs/aalib (ASCII-Graphics Library) + + alsa : Adds support for media-libs/alsa-lib (Advanced Linux Sound Architecture) - - altivec : Adds support for optimizations for G4 and G5/ppc970 processors - - arts : Adds support for aRts: the KDE sound daemon + + avahi : Add avahi/Zeroconf support - - bidi : Enables bidirectional language support - - cdda : Enables libcdda cd audio playback support. + + cddb : Access cddb servers to retrieve and submit information about compact disks - - corba : Enables corba interface support. - - daap : Enables DAAP shares services discovery support. - - dc1394 : Enables IIDC cameras support. - - debug : Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml - - directfb : Adds support for DirectFB layer (library for FB devices) + + dts : Enables DTS Coherent Acoustics decoder support - - dvb : Adds support for DVB (Digital Video Broadcasting) + + dvd : Adds support for DVDs - - esd : Adds support for media-sound/esound (Enlightened Sound Daemon) - - fbcon : Adds framebuffer support for the console, via the kernel + + flac : Adds support for FLAC: Free Lossless Audio Codec - - ggi : Adds support for media-libs/libggi (non-X video api/drivers) + + gnome : Adds GNOME support [...] + + svg : Adds support for SVG (Scalable Vector Graphics) - - svga : Adds support for SVGAlib (graphics library) + + theora : Adds support for the Theora Video Compression Codec + + truetype : Adds support for FreeType and/or FreeType2 fonts - - upnp : Enables support for Intel UPnP stack. + + v4l : Enables video4linux support - - vcd : Video CD support - - vlm : New videolan (media) manager (vlm), a little manager designed to launch and manage multiple streams from within one instance of VLC. + + vorbis : Adds support for the OggVorbis audio codec + + win32codecs : use win32codecs package for dll avi decoding support (wmv and what not) + + wxwindows : Adds support for wxWidgets/wxGTK GUI toolkit - - x264 : Enable h264 encoding using x264 + + xinerama : Add support for the xinerama X11 extension, which allows you to stretch your display across multiple monitors + + xml : Add support for XML files - - xosd : Sends display using the X On Screen Display library - - xulrunner : Build native browser integration against xulrunner instead of firefox or seamonkey + + xv : Adds in optional support for the Xvideo extension (an X API for video playback)
As I mentioned, USE flags are basically shortcuts to compile-time flags build into the source of the program. That means that it is not impossible to do this same thing on Ubuntu or any other linux distribution. But as you can see above, USE flags make it very easy. If you apt-get vlc or install vlc on Windows, most of these options will be compiled in by default. But I have chosen exactly which features I intend to use and built the program to fit my needs. That’s another reason Gentoo is called a meta distribution: the entire system is built around exactly what you want. Notice for example that I have enabled the dvd flag because I intend to watch dvds on my computer, but I have not enabled the vcd flag, because I do not own or intend to watch video cds on my computer.
And it’s easy to experiment and make changes. For example, I have just recently updated to Firefox 3.0. Some programs link against firefox for web-browser support, etc. However at the end my upgrade, Firefox spit out the message:
All the packages built against mozilla-firefox won't compile, if after installing firefox 3.0 you get some blockers, please add 'xulrunner' to your USE-flags.
This is a good thing. Firefox’s “run-time environment” is very popular and used by most other Mozilla projects, as well as some other programs that need browser-like behavior. It’s a good thing to move them outside the program so that all the programs that need it can use that copy. From XULRunner’s Wikipedia entry:
Benefits and rationale
Benefits of having a separate shared run-time environment are the same as those with shared libraries. Benefits to developers and source-based systems – that is, systems on which programs are compiled from source as opposed to downloaded in binary form – are decreased compilation time, less bandwidth needs and less storage space needed.
So let’s assume I’ve done my research and decided to use XULRunner system-wide. Let me show you how Gentoo lets me do that:
vault ~ # euse --enable xulrunner /etc/make.conf was modified, a backup copy has been placed at /etc/make.conf.euse_backup
In that one line, my system-wide configuration (make.conf) file was changed. Now let’s see what happens when I go to upgrade vlc:
vault ~ # emerge --ask vlc These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] media-video/vlc-0.8.6g USE="xulrunner*" Would you like to merge these packages? [Yes/No]
Now, vlc (as well as all other programs that can be) will be rebuild to link against xulrunner. Simple as that.
Why change?
After almost four years with Gentoo, I’m considering switching, and that’s the reason for this page: just to keep track of my own ideas and document how and if I can make the change successfully.
Of course this is just my opinion. But here are some things I am worried about with Gentoo:
- Lack of direction
- I simply feel like there is a lack of direction in the distribution. I really think that it being a meta distribution with numerous uses is one thing that makes Gentoo so strong, but a lack of direction can cause stagnation. One cause of this lack of direction might be…
- Lack of leadership
- A lot of distributions have a “benevolent leader” or a backing company like Ubuntu’s Canonical, Suse’s Novell, or Fedora’s Red Hat. Other distributions, like Debian, have a solid and understandable hierarchy. Gentoo’s leaders, decision making process, and structure are a mystery to me even after four years, which I think also points to…
- Lack of community involvement
- I am incredibly interested in my distro of favor. I want to read about it all the time. I want to know the little decisions and changes. But I’m not sure there’s a good way to do that besides maybe getting myself on the developers’ mailing list, which is a little too technical for me. I am signed up for the monthly newsletter. I still feel like the important issues are not being discussed like adults in an open manner. Don’t get me wrong, the community is great. The way that developers involve the community is not.
- Portage/Paludis
- Gentoo’s current package manager, Portage, is great, but outdated and quite slow. Paludis is a replacement package manager for Gentoo. But most Gentoo devs apparently don’t like Paludis, and frankly neither do I. The face that Paludis’s devs show the Gentoo public is elitest and less than cooperative, in my opinion. Also, it changes so much that doesn’t need to be changed, including all the names of the common commands that Gentoo users know and love. No emerge? No revdep-rebuild? Revdep-rebuild (the command to find and automatically rebuild packages broken by reverse dependencies) becomes reconcilio under Paludis. Sorry, but I feel like I should be wearing a top-hat and waving a wand while saying the magic words: Abra kadabra reconclio!! *POOF*! Gentoo without Portage is like Debian without apt, or maybe like Windows without a Start menu, for you non-linux users ;-) .
I don’t think I’m the only one who feels this way. I’m also certainly not the only one to have switched from Gentoo. But I’ve put a lot of time into Gentoo and it feels like home to me, so I won’t make a big switch unless I find something which is clearly better. I wish I had two laptops!
So what might a replacement look like?
Enter FreeBSD
FreeBSD is a unix-like free operating system. FreeBSD generally can run most of the things that linux can run, and they are very similar in a lot of ways. But there are some serious differences. I have never used a BSD-based system before so I cannot comment on those differences… yet!
Here are some reasons why I would consider wiping my super-configured Gentoo to try FreeBSD:
- Solid leadership: the way FreeBSD develops everything from the kernel on out as a whole system is quite unlike any linux distribution, as I understand it.
- Clear direction
- Knowledgabe community: this is a must for me, because Gentoo is well known for its top-notch user community, I would settle for nothing less.
- Mac OS X: modern Macs run FreeBSD as a backend. Knowing FreeBSD means knowing Macs better than most Mac users.
- Ports: Gentoo’s Portage, the program which builds programs from source, was originally modeled after FreeBSD’s Ports system. Apparently it’s excellent. As I understand it, Ports also gives you the opportunity to change compile-time flags like in Gentoo, but we’ll see if their system is as robust and useful as Gentoo’s USE flags.
- ZFS: Sun’s amazing new file system (also will be in next gen Macs)… not due out for linux for quite some time do to licencing issues as I understand it ZFS is available for linux if you use FUSE and run it in userspace, essentially running it on top of your real FS. True ZFS is already in FreeBSD-CURRENT.
And of course, there’s always my cool factor to think about! :-)
Plan of action
As I mentioned above, I am very, very comfortable with Gentoo. I don’t want to be silly and wipe everything and start new like I used to. I’m going to do the full backup, lots of research, and wait until I have time approach. How grown-up of me!
So, here’s the plan of action:
- Keep doing research about Gentoo and FreeBSD. Try to answer unanswered questions about both OSs.
- Start backing up config files and saving up config files I’ll need for the switch.
- Download Freesbie liveCD and get some experience with BSD’s differences, especially how to compile a kernel, which I hear is quite different.
- Do a full backup on my Gentoo system.
- Burn FreeBSD’s CD and aim for install in early August (during summer vacation when I have lots of time to putter).
Good luck to me!!

So interesting! After i forced multilib-requiring applications to run on my no-multilib profile (so in fact doing something kinda impossible), something went wrong, and my Gentoo install was broken.
Got me Arch Linux installed since wednesday.. but i-can’t-get-used-to-binary-stuff. Not only that, the whole thing seems messy. And all i get from non-Gentoo users when i say i find it weird is “You are an idiot!”.
I wanted to install some programs like the 32bit flash plugin, Skype, Cedega, and _the_ gtk frontend to their package manager Pacman.. fail: http://onedot.nl/images/4.png. I heard about Bashee.. horrible: http://onedot.nl/images/5.png. So, lets take a better example. Lets install mplayer.. total install size is 235% useless stuff _on top of_ mplayer it’s own install size, fail: http://onedot.nl/images/6.png.
Now, i can’t know Arch Linux well enough after just a few days, and offcourse i need to get used to this.. but i’m wondering how long i’ll be able to take it. Can’t let it come to a point where i’m ripping my hair out.
Been thinking about FreeBSD too, but then again.. this laptop is very very new, and even Linux doesn’t understand all this new hardware yet, then FreeBSD will never. I’m thinking about going back to the directionless Gentoo again. Yeap, i agree in all your points.. but i don’t know any good alternative.
Wow, yeah totally different level of control, huh? Mplayer is pulling in all sorts of funky stuff there, like lirc… I hope you are planning on using mplayer with a remote :)
Gentoo may have some problems, but it is still on of the best linux distributions. Especially for people looking for a more technically capable distro.
Try out Freesbie (FreeBSD Live CD) to see how much hardware works on your new laptop :) That’s what I’m doing tonight.
Ow, didn’t know it had a liveCD! Well, i am soooo interested in FreeBSD but i want to use KVM (Kernel Virtual Machine) too, that thing’s been rocking on Gentoo. Gonna try it monday i think :)
Anyway, another image to rock the boat: wanted to clean the deps left behind on the Arch laptop, and it descided Xorg could go (even though i have stuff like Firefox, The Gimp, etc installed).. http://onedot.nl/images/7.png.
I’ve had identical problems with direction, leadership,
attitude of developers, and community involvement by developers
as you have at Gentoo. Every time I tell them something, they
get mad, and insist I’m wrong. A few years later, there it is,
exactly as I said it should be done, since of course, I was
right. I’m usually way ahead of the curve, so that’s something
I’m used to, but I should have more people more like me in a
distro like Gentoo, so I find it very annoying.
I’ve stopped trying to interact directly with Gentoo developers.
I like multilib for AMD64, which is what I’m currently using, and
amazingly, this thing runs X264 files in mplayer way faster than
my P4, even though it’s cheaper, so 64 bit as it’s meant to be
(very competently enabled by Gentoo’s support of it) apparently
is really really super-better and faster than Intel (otherwise,
my P4 intel compiles programs about 5 times as fast as the AMD64
(despite having half the RAM of the AMD), so it is intensely
application-specific). I didn’t have any of the stability issues
of the other multilib person at all. Yes, AMD64 is a niche that
requires some nursing sometimes, but the benefits are well worth it.
(Note: I am a heavy mplayer user, and the opposite of the poster here,
I enable every possible little thing I can in mplayer, and have at
some point used just about all of them. Yes, I even have LIRC with
a remote, which is currently working great last I used it.)
With core duo processors now from Intel, I think Intel might
be in the lead again, but are the core duos 64bit? If not, I’m
not interested. If so, I highly advocate going 64bit, and leaving
32 bit in the dust. Screw flash media — if they can’t release
64bit code, then who needs them? If you really do, then make a
mirror distro just for them or something, and do everything else 64bit.
Anyway, I did have a month where portage would crash every time
I started it on both my P4 and my AMD, so I switched to paludis,
which worked perfectly. Obviously, since portage crashed 100%
for me for a month on both systems, it is permanently soured for
me, and I’m not going back to it. Long live Paludis! I have been
happy with Paludis’s reliability and performance. Things which
used to take grueling fights with portage are a breeze in paludis.
I have 6GB in /usr (which doesn’t include /usr/portage, /usr/src,
or /usr/local/src), with thousands of included packages. I need
a competent package management system, and portage isn’t it; paludis
is. Things are very smooth right now with paludis.
I’d rather fix Gentoo than abandon it, but if I have to abondon it,
I hope there is a competent replacement. I cannot ever go back
to binary-release systems; they are just too horrible. I have been
referred to FreeBSD many times. If I had a non-cutting-edge server
system or farm, I’d probably include OpenBSD and some other BSD variant
on it, and keep a modern Gentoo around the farm just to make sure it
was well rounded. But as it is, my needs are too ambitious and
feature-demanding to drop down feature-wise to a BSD. However,
I sorely miss the reliability that Linux once had, which was more
akin to the reputation that BSDs’ reliability has had. As most know,
Linux has switched places with Microsoft’s XP in terms of kernel
crash reliability. My uptime right now is 3 days; I used to have 3
digit uptimes as a rule. I guess trying to upgrade the kernel had
something to do with that, but my most recent straight-out
user-oriented Linux crash was less than two weeks ago, and it was
just a bloody mythbackend with a few compiles and moderate fileserving
going at the same time — well within the bounds of the memory,
disk, and cpu. It was the software that failed. Oh sure, perhaps
there was a PCI bottleneck someplace, but nothing that wasn’t
what SW should have handled. It was the SW’s fault that the thing
crashed, anyway; if I overtaxed it, it ought to just spit out some
errors, not crash.
I can’t even get Linux 2.6.26.5-rt9 working.
Oh yeah — I use rt linux (realtime), by Mingo et al. I’m sure
that has a lot to do with it. I swear by RT — it fixes all of my
multitude of multimedia priority needs. It required a bevy of
special backup scripts and high priority management interfaces
to make sure there are no runaways, most of which I had to write
and install myself, but the careful balance works well enough
that I’m quite comfortable with it now. (Warning: there will
be a few months of debugging your realtime runaway scripts in
real-world failures that piss the hell out of you, but if you
take each failure as an opportunity to recreate the bug and
debug the scripts, you will get there.)
I’m running Asterisk, MythTV as I mentioned (Myth is a can
of rabid worms, but at least it is a simple paludis/emerge command
and a few simple config options away, and poof! 50% of what you
told it to record will often record without failure (yeah, a 50%
failure rate) — MythTV generally sucks), SAMBA, and probably one or
two other heavy packages I forgot. This host also has a bunch of
gateway stuff, so it is supporting upnp, NAT, etc., for 4 users,
all of whom are multimedia hungry and individualistic in tastes,
and mostly just use Microsoft variants (Windows 2000, XP HE, and
Vista). I often pull up an mplayer and watch something here.
I hope someday Gentoo can get a better direction, better leadership,
et. al., since for me it fills a gap in the BSD-Microsoft continuum.
I’ve been ok sitting on the sidelines, taking what they have to
offer, and occasionally putting something in /etc/portage or
/usr/local/src myself.