GoboLinux

Last updated
GoboLinux
GoboLinux 016.png
GoboLinux desktop
OS family Linux (Unix-like)
Working stateActive [1]
Source model Open source
Initial release2003;20 years ago (2003)
Latest release 017 / May 24, 2020;3 years ago (2020-05-24)
Available in German, English, Hungarian, Portuguese, Spanish
Platforms x86-64
Kernel type Monolithic (Linux)
Default
user interface
Awesome
License GNU General Public License
Official website gobolinux.org

GoboLinux is a Linux distribution whose most prominent feature is a reorganization of the traditional Linux file system. Rather than following the Filesystem Hierarchy Standard like most Unix-like systems, each program in a GoboLinux system has its own subdirectory tree, where all of its files (including settings specific for that program) may be found. Thus, a program "Foo" has all of its specific files and libraries in /Programs/Foo, under the corresponding version of this program at hand. For example, the commonly known GCC compiler suite version 8.1.0, would reside under the directory /Programs/GCC/8.1.0.

Contents

According to the GoboLinux developers, this results in a cleaner system. [2]

Overview

The GoboLinux hierarchy represents a radical departure from the filesystem traditionally employed by most UNIX-like operating systems where specific types of files are stored together in common standard subdirectories (such as /bin for executables and /etc for configuration files) and where package managers are used to keep track of what file belongs to which program. In GoboLinux, files from each program are placed under their respective program's own dedicated subdirectory. The makers of GoboLinux have said that "the filesystem is the package manager", and the GoboLinux package system uses the filesystem itself as a package database. [3] This is said to produce a more straightforward, less cluttered directory tree. GoboLinux uses symlinks and an optional kernel module called GoboHide to achieve all this while maintaining full compatibility with the traditional Linux filesystem hierarchy.

The creators of GoboLinux have stated that their design has other "modernisms", such as the removal of some distinctions between similar traditional directories (such as the locations of executables /bin, /usr/bin, and /usr/local/bin). GoboLinux designers have claimed that this results in shell scripts breaking less often than with other Linux distributions. This change, introduced by GoboLinux in 2003, has only been adopted by other distributions much later: Fedora merged /bin and /usr/bin in 2012; [4] Debian enabled the /usr merge by default in 2018. [5]

GoboLinux also allows the user to have different versions of the same program installed concurrently (and even run them concurrently). Furthermore, it has been claimed that the package management index could never become unsynchronized with the filesystem, because references to nonexistent files simply become broken links, and thus become inactive. GoboLinux's filesystem changes also allow other innovations, such as an entirely new boot system that does not use System V or BSD style init systems.

File hierarchy

Screenshot of the File hierarchy Gobolinux-filesystem-bashdirectory.png
Screenshot of the File hierarchy

The design of GoboLinux was influenced by earlier systems such as NeXTSTEP, AtheOS, and BeOS, all of which adopted original filesystem structures while still maintaining a considerable degree of compatibility with Unix. At the root of the GoboLinux tree, there are six directories: Programs, Users, System, Files, and Mount.

"Compile" program

Compile is a program that downloads, unpacks, compiles source code tarballs, and installs the resulting executable code, all with a single command (such as Compile foo) using simple compilation scripts known as "recipes". [6]

The Compile system is somewhat similar to Gentoo's Portage system, [7] which is based on the FreeBSD Ports collection. However, Portage is made for a traditional filesystem hierarchy, compatible with the Filesystem Hierarchy Standard, while Compile extends the capability of GoboLinux's distinctive filesystem hierarchy into the area of package management. Thus, in GoboLinux, the filesystem itself serves naturally as a kind of package manager database. [8]

The Compile program was introduced in GoboLinux version 011. Before that, there were discussions about porting Gentoo's Portage system to GoboLinux and developing the port as a SourceForge.net project under the name GoboPortage. [9] [10]

Compile's other features included:

The use of each program's own download site
The distribution's repository (or one of its mirrors) is only used for downloading recipes. Recipes may be downloaded on-the-fly or in batch.
Minimalistic and declarative-oriented compilation scripts
Typical "configure; make; make install" software may be scripted in two lines, greatly easing maintenance.
Support of GoboLinux-style dependencies
Software compiled "by hand" by the user is taken into account by a detection mechanism.
Path-agnosticism
It also works in a rootless GoboLinux installation (that is, inside a home directory of any other distribution). [11]

Releases

Releases have been numbered using the octal base system. According to the authors, this scheme was chosen because it keeps the typical leading zero that is present in many free software version numbers (since a leading zero often indicates that a number is octal), and it is a play on the "version numbers race" that happened among Linux distributions around 1999. When read as decimal numbers, using octal numbers causes a deterministic "version bump" each eight releases. Up to version 013, GoboLinux made no "point releases", in order to avoid the implication that some releases were more stable than others. This tradition was broken with version 014.01, an update of 014 focused on bug fixes.

Ports

GoboLinux is currently developed for x86-64. It was officially made for the i686 only until release 015, but at one point an incomplete port to the i386 was made. Ports have also been made to embedded architectures, such as ARM and SuperH; these tasks were achieved with Bootstrap, [12] a tool developed especially to automate making ports.

Reception

LWN.net reviewed GoboLinux 010 in 2004: [13]

It turns out that the GoboLinux project has been doing exactly that - reorganizing the directories and files into a new structure. It all started with one of the developers working on a system where he did not have superuser privileges, but still needed to compile programs. To avoid difficulties when upgrading, he placed individual programs into their own directories and named them according to the relevant program names, e.g. ~/Programs/AfterStep. Other parts of the programs went into similarly identified directories, such as ~/Libraries, ~/Headers, etc. Custom scripts for automated compilation of these programs and correct placing of individual components were also developed.

Linux.com wrote review about GoboLinux 013: [14]

Needless to say, this type of hierarchy aids in package management. Users can install and use multiple versions of the same program or system libraries. In fact, when GoboLinux switched over to the GNU Compiler Collection (GCC) version 3, they still kept older programs running since the filesystem allows for multiple libraries to exist together in peace. Also, uninstallation is just a matter of removing the program directory.

Jesse Smith from DistroWatch Weekly reviewed GoboLinux 015: [15]

Booting from the GoboLinux media brings up a screen with text-based menus. Using these menus we are asked to select our preferred language from a list and choose our keyboard's layout. We are then presented with a text console where we are logged in as the user "gobo". Instructions on the screen tell us how to bring up a graphical user interface and how to launch the system installer. The graphical environment turns out to be the Enlightenment window manager. On the desktop are icons for running the GParted partition manager and the system installer. At the bottom of the screen we find an application menu, task switcher and system tray.

Smith also reviewed GoboLinux 016. [16]

Gobo is a fictional character. Not much is known about him, because those who saw him never survived to tell information about him. He also has a fictional loyal servant named Fibo. GoboLinux's mascot Que is a penguin wearing Fibo's clothes. [17]

Related Research Articles

<span class="mw-page-title-main">Plan 9 from Bell Labs</span> Distributed operating system

Plan 9 from Bell Labs is a distributed operating system which originated from the Computing Science Research Center (CSRC) at Bell Labs in the mid-1980s and built on UNIX concepts first developed there in the late 1960s. Since 2000, Plan 9 has been free and open-source. The final official release was in early 2015.

<span class="mw-page-title-main">Slackware</span> Linux distribution (operating system)

Slackware is a Linux distribution created by Patrick Volkerding in 1993. Originally based on Softlanding Linux System (SLS), Slackware has been the basis for many other Linux distributions, most notably the first versions of SUSE Linux distributions, and is the oldest distribution that is still maintained.

<span class="mw-page-title-main">Gentoo Linux</span> Linux distribution

Gentoo Linux is a Linux distribution built using the Portage package management system. Unlike a binary software distribution, the source code is compiled locally according to the user's preferences and is often optimized for the specific type of computer. Precompiled binaries are available for some packages.

cd (command) Computer command in various operating systems

The cd command, also known as chdir, is a command-line shell command used to change the current working directory in various operating systems. It can be used in shell scripts and batch files.

A home directory is a file system directory on a multi-user operating system containing files for a given user of the system. The specifics of the home directory are defined by the operating system involved; for example, Linux / BSD (FHS) systems use /home/⟨username⟩ or /usr/home/⟨username⟩ and Windows systems between 2000 and Server 2003 keep home directories in a folder named Documents and Settings.

The Filesystem Hierarchy Standard (FHS) is a reference describing the conventions used for the layout of a UNIX system. It has been made popular by its use in Linux distributions, but it is used by other Unix-like systems as well. It is maintained by the Linux Foundation. The latest version is 3.0, released on 3 June 2015.

<span class="mw-page-title-main">Portage (software)</span> Gentoo package management system

Portage is a package management system originally created for and used by Gentoo Linux and also by ChromeOS, Calculate, Sabayon, and Funtoo Linux among others. Portage is based on the concept of ports collections. Gentoo is sometimes referred to as a meta-distribution due to the extreme flexibility of Portage, which makes it operating-system-independent. The Gentoo/Alt project was concerned with using Portage to manage other operating systems, such as BSDs, macOS and Solaris. The most notable of these implementations is the Gentoo/FreeBSD project.

du (Unix) Standard Unix program

du is a standard Unix program used to estimate file space usage—space used under a particular directory or files on a file system. A Windows commandline version of this program is part of Sysinternals suite by Mark Russinovich.

file (command) Standard Unix program

The file command is a standard program of Unix and Unix-like operating systems for recognizing the type of data contained in a computer file.

rm (Unix) Unix command utility

rm is a basic command on Unix and Unix-like operating systems used to remove objects such as computer files, directories and symbolic links from file systems and also special files such as device nodes, pipes and sockets, similar to the del command in MS-DOS, OS/2, and Microsoft Windows. The command is also available in the EFI shell.

The proc filesystem (procfs) is a special filesystem in Unix-like operating systems that presents information about processes and other system information in a hierarchical file-like structure, providing a more convenient and standardized method for dynamically accessing process data held in the kernel than traditional tracing methods or direct access to kernel memory. Typically, it is mapped to a mount point named /proc at boot time. The proc file system acts as an interface to internal data structures about running processes in the kernel. In Linux, it can also be used to obtain information about the kernel and to change certain kernel parameters at runtime (sysctl).

In computing, the sticky bit is a user ownership access right flag that can be assigned to files and directories on Unix-like systems.

BioLinux is a term used in a variety of projects involved in making access to bioinformatics software on a Linux platform easier using one or more of the following methods:

<span class="mw-page-title-main">Sabayon Linux</span> Gentoo-based Linux distribution

Sabayon Linux or Sabayon, was an Italian Gentoo-based Linux distribution created by Fabio Erculiani and the Sabayon development team. Sabayon followed the "out of the box" philosophy, aiming to give the user a wide number of applications ready to use and a self-configured operating system.

<span class="mw-page-title-main">Directory (computing)</span> File system structure for locating files

In computing, a directory is a file system cataloging structure which contains references to other computer files, and possibly other directories. On many computers, directories are known as folders, or drawers, analogous to a workbench or the traditional office filing cabinet. The name derives from books like a telephone directory that lists the phone numbers of all the people living in a certain area.

<span class="mw-page-title-main">Unix</span> Family of computer operating systems

Unix is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others.

<span class="mw-page-title-main">Unix filesystem</span> Directory structure used by a Unix-like operating system

In Unix and operating systems inspired by it, the file system is considered a central component of the operating system. It was also one of the first parts of the system to be designed and implemented by Ken Thompson in the first experimental version of Unix, dated 1969.

<span class="mw-page-title-main">Calculate Linux</span> Linux distribution

Calculate Linux is a Linux distribution optimized for fast deployment in an organization environment. It is based on the Gentoo Linux project and includes many preconfigured functions.

References

  1. Distrowatch (2020-03-27). "Project status listed as Active as of Friday 27 March 2020 02:30 UTC" . Retrieved 2020-03-27.
  2. Hisham Muhammad (May 9, 2003). "The Unix tree rethought: an introduction to GoboLinux". Archived from the original on 2008-05-26. Retrieved 2008-03-17.
  3. Marc Weinem (2008-03-13). "Simplified package management on GoboLinux - an interview with Lucas Villa Real" . Retrieved 2008-03-31.
  4. Fedora Project (2012-03-29). "/Usr Move" . Retrieved 2016-12-30.
  5. Debian (2018-06-13). "debootstrap: enable --merged-usr by default" . Retrieved 2023-04-22.
  6. Mayank Sharma (2007-02-14). "GoboLinux's recipe for delicious package management". Linux.com. Archived from the original on 2008-09-17. Retrieved 2009-07-19.
  7. "GoboLinux Compile -- A Scalable Portage?". Slashdot. 2004-06-05. Retrieved 2009-07-19.
  8. "The Ideas Behind Compile". GoboLinux. Archived from the original on 2010-06-13. Retrieved 2009-07-19.
  9. Gentoo Forums : View topic - GoboGentoo
  10. SourceForge.net: GoboPortage
  11. Mayank Sharma (2007-08-21). "GoboLinux: An Interview with Lucas Villa Real" . Retrieved 2008-03-31.
  12. GoboLinux Embedded
  13. "GoboLinux - Fun with File System Hierarchy [LWN.net]". lwn.net. Retrieved 2022-09-24.
  14. "GoboLinux's recipe for delicious package management". Linux.com. 2007-02-14. Retrieved 2022-09-24.
  15. "DistroWatch.com: Put the fun back into computing. Use Linux, BSD". distrowatch.com. Retrieved 2022-09-24.
  16. "DistroWatch.com: Put the fun back into computing. Use Linux, BSD". distrowatch.com. Retrieved 2022-09-24.
  17. "The GoboLinux FAQ". the official GoboLinux website. Retrieved 20 June 2021. Apart from Fibo, his loyal servant, no one who saw him survived to tell the story. Beyond that, we never risked digging any deeper into the subject." No, the mascot is called Que. He's a penguin wearing Fibo's clothes.