As some of you know, my desktop machine was running Gentoo for a while. It was an island in a see of Debian. However, a few things prompted me to move away: first, I found it a pain to write ebuilds; second, I hate having to jump through hoops to block "free for non-commercial use" software from being installed automatically; third, I found it was taking more and more time to update the system. There are things that Debian could learn, like firing up a merge tool when there's a new version of an edited config file, but apart from being source-compiled, it was similar to Debian but lacking the licence division. Gentoo's official line seems to be that their ebuilds are free software: they just happen to download things that aren't. Grrr.
But this isn't a review of Gentoo. It's a review of GoboLinux. You can find their homepage at http://www.gobolinux.org/ but the big idea is to restructure the filesystem into /Depot (shared space), /Files (add-ons that don't belong to a particular program), /Programs (one subdir per program like the old /opt idea), /System (replacement for /etc, /usr and /var) and /Users (replacement for /home).
Why do this? Well, they take the line that all package managers are doing it the hard way, throwing everything in together and trying to keep track of it. The depot or stow idea is basically right, but tries to accommodate throwing everything in together as well. Not everything in a package needs to be linked into a common area and there are some tricky question: do you tell a program it's going to run under /usr or /usr/stow/program?
Gobo was first developed as a take on the stow idea for use in $HOME on a system that the developers didn't have root access to. Soon, an entire system was built up around the idea and has been put onto CD. Packages are basically a tarball of a subdirectory in /Programs and you install them with InstallPackage packagefile.tar.bz2, which will go off and try to satisfy declared dependencies. Building from source is normally quite easy too, using the sandboxing tool CompileProgram to build it all from a source tarball. Generally the developers have tried to avoid customising the sources too much, so if they didn't enable an option that you need, recompiling from plain sources with CompileProgram should work without trouble.
Both these tools make the symlinks from /Programs/Whatever/Current/bin/* to /System/Links/Executables and so on, so the shell and other tools can find them. When you're sick of a program, you just rm -r /Programs/Whatever and run FixBrokenLinks. If you want to change the default version of a package, you change where the /Programs/Whatever/Current symlink points and rerun SymlinkProgram. It works surprisingly well.
I installed from a CD image of 007alpha, which had some amusing bugs which should be squashed before 007 final ("Bond") is released. Although InstallPackage can download packages to fulfil dependencies, one that was missing from the base install was wget, which is used for the downloading. Development cycle is short enough at the moment that you can use a package from 006 ("Trevelyan") most of the time and sometimes even from 005 ("Thomas"). The developers are now getting to grips with things like that and supporting a variety of shells instead of just their favourite zsh.
It's an interesting distribution and if they can solve the normal growing pains of a distribution, such as security, distributed development and trickier packages, it could be the base for a good multipurpose distribution in a year or so.
Questions? Comments?