We've already talked with the developers behind Draco and Arch Linux. Two advanced Linux-distributions following the KISS (Keep It Simple, Stupid) philosophy.
This time, we're talking with the lead-developer of a distribution with a filesystem unlike any other. The distribution in question is no other than GoboLinux.
GoboLinux is yet another advanced Linux-distribution, but as the lead-developer - Hisham Muhammad - will explain in the following pages, it has a logical filesystem which makes it truly unique. And if that wasn't enough, it also uses a Portage-inspired package manager called Compile. Though the name may not be the most creative, it distinguishes itself by being well integrated with the filesystem.
Curious? Read on to know what GoboLinux is all about.
This article is also available in Norwegian.
Who are you? Your name, background and role in the development of GoboLinux.
Edsger Dijkstra about BASIC
It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
My name is Hisham Muhammad. My first contact with Linux was in Operating Systems classes at the university, back in 1999. I used to use Conectiva Linux back then, which was a Red Hat derivative made in Brazil, mostly because it was the one with best internationalization support for Brazil (in other words, it was the one in which accented characters worked out of the box with Brazilian keyboards!).
I've been messing around with computers since 1986; my first computer was an Apple II and by extension my first programming language was BASIC. And even after a BSc degree in Computer Science and a MSc in Programming Languages, I must say that I'm living proof about Dijkstra's quote about being exposed to programming through BASIC.
When it comes to GoboLinux, I'm one of the founders of the distribution, and I'm still active as a developer.
So what is GoboLinux?
GoboLinux was created in 2002 while André Detsch and I were both university students here in Brazil. We wanted something that would help us manage our own machines, where the power would be in our hands and not in the hands of the package management software or the distribution's repository.
At first, the project something we shared among our friends (some of them, like Lucas Villa Real, became active developers later on), but it was when we introduced the project to the world in 2003 that the repercussion really soared.
Over time, a community grew around the project. We have been steadily making releases ever since and we're happy now to have developers from all over the world! Nowadays it's hard to arrange online meetings with the dev group because of the number of timezones involved!
I understand the filesystem is unique in GoboLinux, how so?
Each program lives in a self-contained structure within a single directory. So, each of them has their own Unix tree. For example, the executable for the Audacious music player is in /Programs/Audacious/1.4.5/bin/audacious, and its libaudacious library is in /Programs/Audacious/1.4.5/lib/libaudacious.so.
The system is organized through some indexing directories containing symlinks to these program entries, so that for instance, all libraries are available at /System/Links/Libraries (which also doubles as /usr/lib, for Unix compatibility). You can read more about this here.
Other than the filesystem, what else is special about GoboLinux?
The fact that we broke with the Unix tradition to try a new approach has brought us what I consider one of our most distinctive features, which is our great userbase. The ideas of GoboLinux attract people who tend to like alternative systems, alternative programming languages, etc., so the Gobo environment is one of very forward-thinking people.
At the same time, another feature that is even curious to advertise, but which is rarer and rarer nowadays, is that in Gobo we have a policy of respecting the program settings from the upstream projects we include in the distro. So, we don't make efforts to "brand" their projects to put our face in them. In Gobo, our packages are as vanilla as possible. We do this to avoid introducing bugs and compatibility issues, and also out of respect to the upstream projects.
How can the community get involved in the development?
The typical entry point is by contributing recipes or submitting bug reports in our bugtracker. We also have a developer mailing list where anyone can contribute fixes and patches.
How many developers are working on GoboLinux? Do you see this number increase anytime soon?
There are five people, including myself, in our core development team. There are of course other active developers and translators working on GoboLinux and they are listed here.
Like every free software project, numbers fluctuate and developers come and go, but the numbers have been steadily increasing through the years and if this trend continues... Well, I'm already very happy.
Does the community have any exciting community-projects for GoboLinux?
Code Documentation Project
The goal of this community driven project, is to basically comment as much as possible of the scripts used in GoboLinux.
This way, it should be much easier for users to hack the distribution for their own and possibly others' benefit. With everything documented, everything gets easier for current and future developers of GoboLinux.
A recent one is the Code Documentation Project started by Daniele Maccari from Italy, and Aitor Iturri from Spain.
It's an especially cool initiative because it's focused on lowering the entry barriers for contributing to Gobo and because it was started as a grassroots thing, from discussions on IRC, and not from roadmaps from established developers.
How does the package manager - Compile - work?
Compile is not a package manager per se, but a compilation system. Compile takes care of fetching sources and building them so they end up in a nice /Programs entry. It does this using recipes, which contain the necessary knowledge to fetch and compile a given program.
The main feature of Compile is its minimalism. In our design, we decided to put the knowledge about the intricacies of compilation processes in the tool, and not in the recipes. So, for a typical GNU project, you just need to feed it a recipe with two lines: one informing the URL of the tarball, an another saying that this is an autoconf-style project. Compile does the rest: it knows about 'configure', about '--prefix', about 'make install', it does sandboxing, etc.
Of course, for corner cases, it's always possible to add more knowledge to the recipe itself: the recipe for the Linux kernel, for example, is quite detailed. But for the end user, it makes no difference. They just need to type "Compile bash" or "Compile linux".
Is it possible for anyone to add recipes to the online repository? If not, how can users share their recipes?
Anyone can submit recipes to our recipes mailing list. We have many users with recipe commit access, and they will receive your submissions to the mailing list and commit them, reviewing and commenting on them. From time to time, regular contributors to the recipes mailing list are offered direct commit access.
Whats on the roadmap for Compile?
The package manager in the Linux-distribution Gentoo, uses so-called "use flags" to allow the user to compile the package about to be installed.
For example, "use flags" can be used to enable or disable DVD playback in a video player.
Compile has been evolving a lot lately. Michael Homer from New Zealand and Jonas Karlsson from Sweden have been putting a lot of work on it and the latest addition is support for Gentoo-like "use flags" to allow customization of builds.
Speaking of roadmaps, whats on the roadmap for GoboLinux?
We just released 014.01, which is the stability update for 014 which we released in the beginning of the year. We're planning 015 for some time in the second half of the year, which will be a package update release, probably based around KDE 4.
Does GoboLinux follow a rolling release cycle (like Arch), or do you have to upgrade from one point relase to the next (like Ubuntu)?
It's pretty much up to the user. The modular structure of GoboLinux allows packages to be upgraded piecemeal, but many users find it more convenient to do batch upgrades so that the binary interfaces of their system (library versions, etc.) match that of the latest release.
For example, we're currently at 014.01, but the system I'm typing this from is still a 013 system (released late 2006) upgraded to the latest packages.
Do you use GoboLinux yourself on a daily basis?
Of course! I have since day one.
What kind of users do you recommend GoboLinux for?
I think our main audience right now are Linux users who would like to try something really different, and feel the power of a Linux system back in their hands and not in the hands of the package management software.
While our filesystem structure may seem (and perhaps even be!) newbie-friendly because of the logical names and file locations, our goal when doing this was not to be easy-to-use, but to be, well, logical. We lack the layers of sugar coating that some distros have, so Gobo may not be the best option for someone who is new to Linux.
But then again, most long-term Linux users started with some really unfriendly distros back in the day, so I wouldn't say Gobo is for advanced users only either.
How would you recommend a new user to GoboLinux to learn howto use the distribution?
The best first step is to read our quick overview -- then, just download our CD and give it a spin. It's a live CD, so you don't even need to install it at first. Just play around in the directory structure and have a feel of the system. If you feel like installing it, feel free to join us at IRC ( #gobolinux at irc.freenode.net ) or the mailing lists.
Compared to other Linux-distributions, what is Gobo's greatest weakness, and what is its greatest strength?
Hard to tell. I wouldn't call it a weakness, but I'd say the greatest difficulty we face is the fact that we are sometimes fighting an uphill battle against badly designed so-called standards on some fronts and the lack of standardization on other fronts, which leads many projects to just test their software against one or two major distros and don't follow some basic guidelines such as allowing code to be built relative to any installation prefix (note that this doesn't hurt just us, but any user without root access, for instance).
The main downside is that, given that we are a small distro, you don't have the enormous package libraries that the major distros have. The size issue also reflects on the human factor: there are no forums and lists with thousands and thousands of people.
Our greatest strength is the fact that the organization of the system is totally reflected in our file structure: there are no opaque databases holding the system together, so in case something really bad happens, one can always boot a live CD and get their system back in order by just moving some files and links around, using plain Unix tools. In this sense, we hold the Unix tenet of "everything is a file" to our hearts, moreso than most distros out there.
Do you develop Gobo just for fun, or is there another reason?
Mostly just for fun, but I guess every free software developer has sometimes that feeling that they're making the world a better place.
And we're done, is there anything else you'd like to say which hasn't been asked in previous questions?
I'd like to thank you for the opportunity of this interview, and again, everyone is invited to go to gobolinux.org and check out the project.
We thank Hisham Muhammad for his time and patience, and wish him good luck on future endevours.
So there you have it. GoboLinux is a Linux-distribution with a completely new and rethought filesystem, and though the community and repository isn't as big one would like it to be, it is still a promising distribution to look out for in the future.
If you found GoboLinux interesting, you can find certain links on page 4 - New users - that can help you getting started.
This article is also available in Norwegian.