Thoughts on Crux and other GNU/Linux distributions -------------------------------------------------- markus schnalke , 2014-12-01 Hikaru (from debianforum.de) asked me about my expericences with Crux (http://crux.nu), the GNU/Linux distribution I use. This was the motivation to this writing. I use Crux on my main computer, which is a Thinkpad X41. (I have Debian on most other machines (I haven't decided how I want to react on systemd ... maybe I simply install `file-rc'.) and there's still Cubian on my Cubietruck.) Of course, a lot of my experiences with Crux can be found this way: http://marmaro.de/lue/SEARCH.cgi?word=crux And here some short answer on the question, why I use Crux: Q: Why did you decide to use your particular operating system(s) of choice? A: I used to choose Debian GNU/Linux for philosophical, social and technical reasons. Whereas I’m still convinced of the former two, my technical view differs now. In consequence, I switched to Crux, one year ago. Crux is simple. There’s nothing in my way. I have the controls right in my hands. Yes, I do need to adjust manually here and there, but that’s okay. I just don’t want to be put in a sandbox anymore. I don’t want to be kept from “messing up” the (package) system. I am bored building castles in the sand. I want to change the world now. I want to have all the power and I want to be *encouraged* to put my hands on. That’s what Crux offers to me currently. http://www.ioexception.de/2012/05/07/interview-meillo/ But now, some original thoughts: Crux is very small and understandable. This is what I like. What are distributions, actually? They are a readily installed base system (i.e. something similar to the result of Linux From Scratch) and a package manager and a large set of packages (i.e. installations scripts that follow a common style plus packages dependencies). Eventually, you end up with the thought, that GNU/Linux distributions are essentially a package manager plus an homogenic abstraction layer to the heterogenic free software world outside. Crux keeps this abstraction layer low and small. The base system is quite raw (i.e. you first need to bake the kernel). The package manager covers the basis tasks but requires (and encourages!) the understanding of what lies beneath (i.e. creating Crux ports is not much more than recording what you did to compile and install the programm manually. And regarding systemd: Crux has an rc-init, like the BSDs have. I.e. there is one shell script, namely /etc/rc, which does everything. The rationale is that in Crux the user is the admin is someone who is capable of building and maintaining and repairing the distribution itself on his own. Many of the abstration layers in Debian, for instance, are existing for the package manager's sake. Debian is fully centered around and fully focused on the package manager. To ensure that there is no possibility to ever break the system, dozens of abstraction layers are set up. They are necessary and worth it in order to provide system for users that cannot control computers (i.e. the package manager needs to babysit them) and for systems with tons of software on them (i.e. package manager helps to control the chaos). This is like these modern cars that weigh two tons, have safety stuff and all sorts of gadgets everywhere, and they beep when you don't close the door or don't fasten your seat-belt. This might be the right kind of car or the right kind of operating system for others, it's not for me on my main machine. I want to have the controlls in my hands, not filtered through several computers that decide if my wish for direction change is appropriate. I don't want the machine to beep when I drive with the door open, because I usually know *why* I left it open. Of course, I could damage something this way; of course, this is more dangerous; but this is a risk that I take, in order to be in control. I rather drive a motorbike than a van. Yes, it's more dangerous, but danger is not the only motivation in driving. The motorbike is faster, it consumes much less gas, it can drive on underground where the van cannot, I can repair it myself, and not at least, it is much more fun. I really don't want to say, that there should be no vans. Some people want vans or need vans, and I do recommend them to those people, but I don't want to usually drive in a van, not on my main machine. My main computer runs with Crux, because Crux is like a motorbike. For my servers, my priorities are different. Security and organization is much more important there, hence it would be a bad choice to use motorbikes there. Back to Crux. I like that it is so small -- the system and the community. Despite its smallness, the community is quite responsive. None the less, there are things that I don't like: Crux is reluctant in installing documentation, sometimes not even manpages. In my eyes, manpages are one of the greatest documentation concepts in computer history, and as I'm not always online, I like offline documentation as well. (In terms of documentation, I like Debian very much. Debian's /usr/share/doc is great.) Regading the package mananager: There is a set of low-level package manager tools, called pkgutils (pkgmk, pkgadd, pkginfo and Co.). This is what I usually use. (These tools seems to correspond to dpkg in Debian.) On top of them is prt-get, which resolves dependencies (like apt-get does on Debian). Unfortunately, prt-get is not purely a front-end to the pkgutils, but implements logic as well. As I don't like this, I wrote tree small scripts (about 25 lines of sh or awk, each) to cover some of the printing tasks prt-get covers. These and similar ones could be provided a toolset in addition to pkgutils. Prt-get could be a pure front-end then ... well! (Let's say it this way: I do understand the pkgutils, but I don't understand prt-get. The point is not what I *could* understand but what I *do* understand. (Pkgmk is a 700-line shell script, for instance.)) As most of the software I use is small and has few dependencies, and I can compile it manually without problems, the pkgutils are exactly what I want: I write a 15-line port the first time, and do `pkgmk -d && sudo pkgadd' from then on. (I don't like to have complex software on my main machine anyway. Multimedia editing, for instance, is something I do on a Debian machine, where `apt-get install gimp' doesn't bother me much.) Another disadvantage of Crux: It's a rolling release. I.e. you either keep regularily upgrading or you have to care for yourself. Debian's security updates to stable (and even oldstable) are true paradise! To summarize it: I like Crux a lot. I like the small community. I like the simplicity that is visible in so many places in Crux. I like Crux not standing between me and the machine. I like that I am in charge: I can make and I can break. It's like having a sharp knife in my hand ... that's how Unix should be, in my eyes. But I don't like everything of Crux. This means, it's not the end of my operating system journey (like dwm was the end of my window manager journey). Concerning GNU/Linux, I like to give Dragora a try, not only does it care for being completely Free Software and being simple (like Crux), it's also developed in a small city in Argentina where I've live three months of my life. Besides Dragora, I really love to go beyond the GNU/Linux world to give a real Unix, i.e. BSD, a longer try. Although I don't like their centralized approach, I'd like to have used them on my main machine for some time, to understand them better. Dragora and some BSD (possibly MirOS) are the most interesting new options for my main computer, currently. Crux still is a good choice.