Saturday, July 25, 2009

GoboLinux review

GoboLinux is a Linux distribution I heard about from a friend who said that it looked interesting for its flagship property - a simpler file structure. I decided to check it out.

I downloaded the distribution ISO from their website, which was easy enough, and booted up VirtualBox with that ISO mounted as a drive.

Installation

Installation was simple enough for an intermediate user to do. Instead of Ubiquity or another similar installer, the Gobo folks have opted for a custom piece of software.

I booted to the live CD's desktop environment. You must manually run startx to kick on the X server from the live CD. This is a good and bad thing, depending on who you are. I believe that this Linux is designed for mid-to-high levels of Linux experience, so if you have that, this should be no big deal, especially since the first output tells you exactly what to type to get things done. For novices, this would be confusing and unappealing, though not insurmountable. I doubt that newbies are the target audience for Gobo.

I had to boot to the desktop environment because the command line installer will not run without having already partitioned your drive. While I'm sure there was a command line partitioner available, I am not familiar with any of them, so I opted for the desktop install. Even from that environment, ease of install is hindered by the fact that the installer errors out if your drive is not already partitioned. Partitioning must be done separately, then the installer can be run.

The installer itself is easy to understand, if a bit unsightly. Again, this won't be attracting novice users, but anybody who knows a bit about computers will be able to figure it out in no time.

Installation was quick, even for the full package. My VM took care of it in 10 minutes or so on low-grade hardware, once I got through the install configuration sections.

Trying to reboot from the desktop environment was not possible without using the terminal. I exited my session and was spat out into a terminal still executing from the live CD image. I gave the reboot command and finally got to boot into the OS, ready for action.

First Boot

The bootloader allows for three options, as shown here:

So far, I have only booted to the Graphic Desktop option, but it's nice to have those other options available. Yet another sign that this is not for your average Joe the Plumber, this screen requires the user to make a selection before it will boot. I waited for quite some time, and it never timed out.

The boot is noisy until it hits runlevel 2, then it starts a slightly quieter boot process.

Desktop Environment

The default desktop environment for Gobo is KDE 3.5. I've never personally been a fan of KDE, but I could install Gnome on here if I wanted to.

The login process is more or less the same as any other KDE login:

The default desktop wallpaper is pretty lame, but most Linuxes tend to use their own logo by default. Fortunately, a collection of good photographs and textures are available, and you can, of course, add more as desired.

Three icons greet you, Home, Trash, and Manager. Manager is the applications management frontend for Gobo. It's recipe-based, and is supposed to provide users with a list of available versions of various software packages. Software can be enabled, disabled, and linked (more on linking later). The distro's website contains a decent collection of recipes for various products. It's poorly organized, but it's there all the same. The search feature helps to find what you're looking for.

Manager itself executes in a terminal, then creates an additional window for the GUI frontend. Naturally, closing the terminal closes the GUI as well. That's a bit unrefined, but not a killer problem.

The control panel allows you to change your settings well. The standard control panel for KDE is what exists.

As with other KDE-based distros, the default text editor is kate. Text editors are a big thing for me since I develop for the web with hard code like this. If anybody else cares, kate does a decent job with syntax highlighting. It's not as good as gedit in Gnome, but here's a picture of it highlighting most of the JavaScript embedded within HTML fairly well:

The web browser, as you may have guessed, is Konqueror. Again, I've never been too impressed with KDE and its suite of software, but at least it renders basic HTML, CSS, and JavaScript properly, which is more than Microsoft can say for Internet Explorer.

Software Installation

As mentioned before, Manager is the GUI frontend to Gobo's software installation system. That system is a very good one that solves some problems. There are tons of different ways to install software. Gobo looks at the problem from the perspective that compiling from source is the best way to ascertain the most recent version of software, and addresses it by using a custom program called Compile.

Compile combines the functionality of various other compilation programs like compileprogram, makefile, and xmkmf to always compile source code correctly. It also adapts the file paths of those source compilers to match the specialized file structure of Gobo.

Compile uses recipes to know where to get the source code, what version it is, what the checksum is for download verification, and how the compiler should react to the download. This turns the terminal command for installation into something as simple as "Compile foo" or "Compile bar 1.1" for a specific version. If properly managed, this is a great and easy way to get the job done.

The Flagship

So far, Gobo is a pretty mediocre distribution of Linux, but it does one thing extraordinarily well, and the devs flaunt it rightly. The file structure has been completely reworked. This is the root directory:

Seven directories. That's it. All of the POSIX stuff is still there, but only in the sense of symlinks that point to various locations. All the details about how they do it can be found here, but here are the important parts:

"GoboLinux is a modular Linux distribution: it organizes the programs in your system in a new, logical way. Instead of having parts of a program thrown at /usr/bin, other parts at /etc and yet more parts thrown at /usr/share/something/or/another, each program gets its own directory tree, keeping them all neatly separated and allowing you to see everything that's installed in the system and which files belong to which programs in a simple and obvious way."

Here's the breakdown alphabetically:

  • Depot - This is a shared directory for all users. The devs call it a "community area" or an all-users home folder.
  • Files - This is a shared directory for applications. Files that are needed by multiple programs, but are not necessarily owned by those programs are kept here, such as fonts and wallpapers.
  • lost+found - This is your standard ext3 filesystem lost+found directory.
  • Mount - All mountable devices (CD-ROMs, floppies, flash drives) are mounted here.
  • Programs - Each program gets its own directory here wherein it can install all of its files and folders.
  • System - Here are the critical system files, the ones that make Gobo work. These include the Linux kernel, boot software, initialization scripts, settings for various software (/etc content, in other words), and all the symlinks that make the new file structure work (and compatible with other Unix-like file structures).
  • Users - This is the /home replacement, and that's more or less all it is.

Really, the system is quite intuitive. Hisham Muhammad, the ringleader for the GoboLinux development community, makes some very convincing arguments regarding the new file structure on the GoboLinux website. He makes a very good case for change and explains how, despite the deviance from the standard Unix/Linux file architecture, it is still compatible with that old Unix format, if not more so.

"Through a mapping of traditional paths into their GoboLinux counterparts, we transparently retain compatibility with the Unix legacy. There is no rocket science to this: /bin is a link to /System/Links/Executables. And as a matter of fact, so is /usr/bin. And /usr/sbin... all "binaries" directories map to the same place. Amusingly, this makes us even more compatible than some more standard-looking distributions. In GoboLinux, all standard paths work for all files, while other distros may struggle with incompatibilites such as scripts breaking when they refer to /usr/bin/foo when the file is actually in /usr/local/bin/foo."

Conclusion

After many years of Linux use, I have come to find what I like and do not like about Linux-based operating systems. I want a system that I can install quickly and easily, without much hassle. I love the repository-centric installation and updating of software packages, but I could probably adapt to a recipe-based installation system. I much prefer the Gnome desktop environment to KDE, XFCE, Enlightenment, or any other that I have come across. In these respects, GoboLinux fails to meet most of my expectations of a Linux OS.

But don't let that fool you. This is a perfectly stable OS with a lot of benefits. Most importantly, Mr. Muhammad has a really great idea going with this retooling of the file structure. It's user-friendly, system-friendly, and Unix-friendly. It's simple and clean. It goes a long way toward simplifying Linux for average computer users. While many aspects of the OS are more difficult to use and while I believe the new structure could use some further improvement, Gobo makes a great point with this. Many Linux users will disagree, and that's fine. That's why we have communities and a multitude of distributions. I personally wish that Ubuntu or Fedora would adopt a system like this. It could take those other distros a long way.

I won't be using GoboLinux on a regular basis, but I'll be checking back in on it in a year or two to see how far it's come. This is a distro with major potential.

16 comments:

  1. It's been a long time since I've used Gobo. When I was new to Linux, the whole unix file tree seemed like a giant step backwards from Windows with files being inexplicably strewn across it. I wanted the simplicity of DOS where to remove an application you simply deleted its directory. Unfortunately, as you note, the distribution itself is not that polished and I wasn't willing to put that much time into trying to make it work.

    In the end, I got used to the unix file system, but I am still fond of the Gobo file system. It's nice to see a review that recognizes the genius of it. And I'm glad to see it's still out there. Hopefully it will gain some traction.

    ReplyDelete
  2. Okay, when I first saw the directory tree, I freaked out. That's, well, scary. Come on, can we be a little more civilzed? We don't need to type "system", do we? "sys" will do.

    Furthermore, I don't know how Gobo manages, but the idea of "one directory per application" seems to be anti-productive, since in Free and Open Source world, an "application" is built upon many many other packages, which may be languages (Perl, Python, Guile, etc.), libraries, other executable (piping, anyone?), etc. If you try to have "one directory tree per application", you basically have two choices: either do symlinks, which destroy the meanings of "one directory tree per application" anyway, or try to put all dependencies of an application into its tree, which is utterly wasteful.

    I mean, okay, if you are using Linux From Scratch, this seems to be a good idea since you can manage your stuffs easier. But, come on, apt and yum has resolve this problems ages ago! Basically, in modern GNU/Linux systems, you don't even care about where your programs are, until you are a sofisticated enough user, in which case the current Unix tree makes even more sense, since the files are classified by their functions (binary, executable file under */bin configuration file under */etc, library under */lib, etc.) and you can rapidly tweak stuffs (since we normally try to tweak a type of files together). Again, this is in favor of the eco system of FOSS.

    This kind of set up makes sense for Mac OS and Windows OS, since those systems are proprietary, and in that world, it is best to keep your code to yourself, which explains why it is so fucked up (to an extend that I rather not playing latest games than booting into Windows and wait for each programs to update). The amount of duplication of effort is just unreasonable from the user's point of view. Again, this is not just about disk space, it is about updating, keeping thing fresh. And, remember, after all, you DO WANT the applications to share stuffs!

    To me, the issue of managing applications for GNU/Linux is rather a done deal. Yes, there are some possible improvements (for example, some mechanism to allow mutiple version of an application to co-exist on a system, or "functional" management), but the basic system works very reliably.

    ReplyDelete
  3. @Magice: You make some perfectly valid points here.

    If I may reword what you said, I'm pretty sure you meant that when you have no reason to dig through the directory structure, the directory structure is meaningless as long as it works. And if you're toying with the directory structure, chances are you know what you're doing or already have a moderate idea of how things are laid out.

    GoboLinux's directory structure works and actually solves some problems with scripts breaking on different systems. It's not a big enough problem, as you have stated, and so Gobo's restructuring isn't enough to sell me on it, especially since that Linux is really geared toward people who have a fair amount of Linux experience under their belts. If that kind of directory system has a place, it's going to be in things like Ubuntu or its simpler derivatives like Linux Mint where user-friendliness for newbies is the primary focus.

    ReplyDelete
  4. You all miss the point. Yes, big an complex package managers solve the problem somewhat, just like horses solved the problem of transportation. Everything and a kitchen sink solves everything, but is it clean? maintainable? stable? fuck that, i have no idea what files belong to wich package without complex package manager interactions, and more then once have the package database become corrupt and my system was more or less hosed. In gobolinux, the filesystem is the database for a much stabler environment.

    The niceties of gobolinux is that you can use standard unix tools like rm mv cp etc to manage your software installations.
    Another benefit is that you can have several versions of the same programs and libraries installed, even run them concurrently.
    And a thirt one is that alien package managers are first class citicens in gobolinux, no longer will you have to use an outdated luarocks to satisfy a dependancy instead of a much newer better version provided by a third party package manager.

    think before you ink.

    ReplyDelete
  5. @magice
    whats so hard about typing s and pressing tab? yes, zsh, the default shell, does case agnostic completion of commands, paths and even options.

    There are no symlinc in each programs directory, there is a central repository of symlinks in /System/Links if i remember correctly, and $path variable contaions only that directory. It would even be quite easy to do versioning of that directory for very easy system rollbacks in case an update goes wrong, along the lines of nixos.

    oh yeah, saw you wanted different versions coexisting, gobolinux does that.

    try before you cry.

    ReplyDelete
  6. @solenskiner - You're spot on with that description of how it works. The /System/Links directory is the only thing in $PATH. Since /System/Links is full of nothing but symlinks anyway, that means that you can basically edit your $PATH variable through a file manager. It's very simple, but it leverages a lot of power with it.

    Software installation is a little more complicated than it probably needs to be, and while recipes are easy to write, there are not a whole lot of them that are ready to go from the website. Still, it has lots of potential. You've pointed out a lot of the benefits to doing things the way that Gobo does them, and I agree completely. I would like to see that recipe system combined with a sort of community-maintained repository for recipes to get the best of both worlds.

    ReplyDelete
  7. @ryan: i think the repository kinda is community maintained, thru their mailing list, im not sure tho. The problem is that a few of their main devs seem to have left the project and the community is nowhere near the size of say debian or even archlinux.

    They have a few interesting stuff on the way tho, for example that aliens system i described earlier, and a compile-farm infrastructure for more up to date binary packages, and they plan for something called ViewFS, wich will give every program their own virtual private view of the filesystem.

    but i totally agree their install system is a little borked, ive requested a "rosetta stone", but it hasnt been noticed yet. http://bugs.gobolinux.org/view.php?id=411
    And their dependancy system dosnt yet support automatic removal of packages installed as dependancies ala aptitute, nor listing packages wich no other packages depends on.

    if the project seemed to be going places, id definatly get involved. maybe start a security project, a performace project, a fast boot project. so many ideas... :)

    ReplyDelete
  8. I like the idea of this as a long term DOS user but nothing I have tried to udate or instal works and instructions are confusing, contradictory etc. Shame

    ReplyDelete
  9. @anonymous: You are a liar hellbent on spreading FUD. Gobo works out of the box, without reading any instruction beyond how to use Compile and InstallPkg. Why don't you actually install and USE Gobo before spouting obvious non-truths?

    ReplyDelete
  10. "If that kind of directory system has a place, it's going to be in things like Ubuntu"

    I see that you lack experience, if you believe that Ubuntu will EVER switch to
    a filesystem like in GoboLinux. Or Fedora.

    Or any of the big distributions. :)

    They won't.

    I have been following discussions since years, and you can be sure that there
    will be many haters jumping on the train quickly that "this is bad for
    this or that reason". They will hate on alternative filesystems for the
    sake of it being DIFFERENT.

    They dont want to change and never will.

    ReplyDelete
  11. The excellent combination of low cost, supreme productivity and optimum product quality has made the west wake up to the technical strengths of the countries like India and China. These countries are making a distinct mark of their own in the field of software development by providing services like outsource software development. To know more about the services that a software company of these countries provides just check out the URL http://www.infysolutions.com/resources/resources.html.

    ReplyDelete
  12. I've tried linux various times over the years, and never could get into it because of one large reason, the file structure. The thought of taking files related to each other, and spreading them out as far as possible is simply obscene to me.

    The filesystem should be intuitive, someone who has never used the system before should be able look at it and be able to instantly have a basic understanding of what is where.

    GoboLinux is a step in the right direction, but I would prefer a true fix for linux, rather than just a veneer.

    I find it strange that people are trying so hard to make linux into a desktop OS, and then resist as hard as they can any though of changing the innate organizational shortcomings which confuse anyone who doesn't wish to spent the time to memorize its archaic "logic".

    Instead they spent many hours making layer after layer to try and hide these things from the user. All they are doing is painting shit! If you have to hide stuff in a "user friendly" OS, it is not user friendly.

    I refuse to acknowledge that good organization and functionality are mutually exclusive.

    ReplyDelete
  13. Count me as an advanced Windows user who would like to get into Linux, but just can't overcome the archaic file system. One of the reasons I looked to Linux in the first place was the "uncleanliness" of Windows, which has a massive registry and (for the most part) non-modular programs. Well, Linux may not have a registry, but it doesn't need one, the file system itself is just as confusing!

    Linux proponents wax on and on about empowering the user, but how can that be the reality when I need a package manager to install programs and then have no idea where the program has gone? It would be like living in a big house containing all your belongings, but instead of being able to organize them as you see fit, you have a butler who places and fetches every item for you. Some people may like that, but I want to know where stuff is...I want to mentally map the OS.

    For years now, I've been amazed at how incompetently Linux has been handled. People like FOSS (Firefox is a prime example) and people have high opinions of non-Microsoft OS's (see OSX). People would flock to Linux if there weren't so many pointless barriers...and that's what they are, there's nothing "functional" or "logical" about these barriers.

    Stop living in the past or perish.

    ReplyDelete
  14. I'm another long term dos user, and cpm80, 68k and zsystem as well. I do not like windows as its a complex overlay and thought gobo would be good. However, Ive spent many hours with it on a number of machines (mostly 5-8 year old hardware) and it always fails on one part of the compile process or another so sadly I gave up and use puppy for speed or ubuntu for everything else. They work even if I have a hell of a time finding things.
    I sure hope to try gobo again and hope that by then a new issue that compiles for me.

    ReplyDelete
  15. "GoboLinux is a step in the right direction, but I would prefer a true fix for linux, rather than just a veneer."

    Based on the description on the website, I'd hardly call it a 'veneer'.
    It sounds to me like GoboLinux is a very clean re-structuring of the Linux/Unix filesystem, with the 'legacy paths' only present for compatibility.

    Remember, the legacy paths are symlinks to the new file structure, not the other way around.

    (Disclaimer: I'm a Linux newbie, so I can't claim to really know what I'm talking about.)

    ReplyDelete
  16. Some great ideas for Valentine's Day is a committed husband and wife sexy thomas sabo jewellery australia and good things to eat in the evening to kill your day on the right note. For others, you may want to insist on less inappropriate Valentine's ideas, such as thomas sabo australia prices and thomas sabo australia online shop gift. A region can not go wrong, the idea of Valentine's bathing suit, because everyone likes the smell of fresh and clean bathroom and an indulgence that most women are not taken seriously. Similarly, you can also consider personal bathrobe to the bathroom, as well as your other ideas for your loved ones, it makes you feel like you love cheap thomas sabo jewellery time, we hope to frequent basis!

    ReplyDelete