Looking at the development of Foresight Linux and other distributions I got some thoughts about common problems. One thing I think where the BSDs but also Minix and Plan9 are better is the fact that they tend to build their own software, meaning that they are often not such a mess of so many upstream projects. But still there are similar problems like when they use ported software. Lets look at a standard desktop: This includes a kernel and an operating system – and then some base software and some graphical server. BSDs and Linux both use
X11/Xorg here, which means its basicall not a project native to a BSD. Also they present window managers like GNOME, KDE, whatever who also have different development focusses. And then a whole lot of “applications”. What is bad about that? I think the problem is that if a distribution or operating system uses a lot of applications that are not really generated to be used by the distribution but only “ported” it always means that you need to add work to make it work on the special environment. All Unices share some environments, so many things will just work – and also if applications are compiled for a specific platform the configuration scripts change some locations and behavior to fit the environment. But this means that when writing an “application” or “library” or whatever the author must think about and know these environments. Classical Unix commands were traditionally build for a specific Unix – so this also meant that there was going on a lot of extra work for the different Unices. So ported code is something that got more popular with Linux and the GNU tools and also with the idea of Free/Libre Open Source Software. But still this means that portability is a burden – and also it seems questionable if all this diversity of languages, libraries, software is needed or good for a working environment. The ability to share code is a good thing, there is no doubt about that. But I also think portability massively slows down the development of software and although it reduces the need to repeatedly work on similar code on different platforms it also adds the need to have all supported platforms in the mind when adding code. Often the results are not foreseeable. Not being able to foresee the results means that things can not be planned as good as possible and it also means that working on portability and compatibility is becoming a major task. And if you also see all this different programs and know that they all interact wth each other the possible flaws and bugs are growing daily with more software and more features. So in open source software the development often goes into developing abstraction layers like hal/dbus, so that the applications interact only with the abstraction layer, while others work on the interaction of the abstraction layer with the hardware etc.. Thats one solution for the problem, but it also adds another layer of interaction where things can go wrong. I am not sure if we really will end up with systems that are easier because we have abstraction layers that help application programers to interact with the underlaying system. I am not sure if this doesn’t rather add more complexity and really does not make things more simple.
Where I becoming sceptical is at the point where I think nobody really has a big picture on projects like Gstreamer+Xorg+Dbus/Hal, Pulseaudio, etc etc. Everybody has some part of the picture but mostly I think people are focussing ony solving their own problems. So somebody sees one problem and begins working on code that targets this problem. Maybe he will be able to produce some software that accomplishes the targeted goal – but if this project gets a dependency it also means other projects and people depend on this work. Like lets say FreeBSD now also uses hal, but maybe hal is not that well supported as on Linux. Then if software like GNOME has hal as a dependency this also means FreeBSD will have to support a software that might for some reasons not have the quality that they wish it would have. This can have two different outcomes: a) Either a distribution decides that it cant support this software any more or b) it will find a way to invest some time to make it work. I guess Slackware chose the way a) as it decided not to support GNOME any more. There is maybe the third way: proclaiming a focus. OpenBSD says it only supports the core software. Linux distributions nowadays often declare that GNOME desktop is their focus (some still say its KDE for them). This means that you articulate: If you want support use this software – if you use something else do it at your own risk. Fair enough. But many of these decisions are not transparent to the user. So maybe he thinks its nice to to away from Windows and switch to … Linux – but he might end up using a Linux that does not support the software he may want to use as good as he likes. You may now say that this is not a problem as he can switch. But I think switching is not what should be something a user should do often – or always when his distribution switches its politics. So if somebody has used GNOME – if then Slackware has decided to dump supporting GNOME it might be painful to switch.
The older I get the more I admire trustworthyness of software. Meaning: these points:
- If I boot up my computer tomorrow, will it still work as expected?
- If the projects says its going to make a new release on date X, will I really get new software on this date?
- If I have a problem with some old data and the software gets renewed – will i get support tomorrow or in some years from now?
- Is this free software – meaning can I do with it what I want or am I trapped?
These are some basic points that are becoming more and more important to me – maybe this means I am getting old? 😉 Well I still like fresh ideas and new functionality – but I tend to dislike a system that breaks – where I cant update software or cant boot or Xorg crashes or I loose data. If I loose data then please only if I decide to use experimental software.
Open question is which operating system gives me what I want. One thing is for sure: You do not get that from something like Gentoo. Gentoo seems to me more for people who want to either have the possibility to use the latest software or to be able to easily compile software customized to their preferences. The problem is that you also HAVE to compile and do all the work in order to have an acceptable system. You can not ignore all the possibilities but often have to declare what you prefer even if you have no idea of what all these USE flags mean. Debian? From my experience Debian is not all about stability. It may often sound as Debian gives me what I just wrote above but I often have experienced dramatic switches of software behavior and also you are forced to answer so many damn questions on each update – and if you want to ignore you may end up in a state where you cant use your software. I often was at the point where I repeatedly had to try a dpkg-reconfigure in order to not only set the settings the way I like but also in a way that Debian (dpkg) remembers and not just overwrites on next update. What else do we have? Ubuntu and Fedora? Both are sure respectful distributions with a bunch of good software but on the other hand they did make some strange decisions in the past and I would not like to depend on one of them. Now to my current favorite: Foresight: The package manager conary is great – it focuses on GNOME and also has always met its release deadlines. But if you look at some details there are so many flaws which are not targeted as they should be. I still think Foresight maybe is the greates Linux distro around especially because of the mix of the best package manager around, the focus and the ability to package oneself with great ease. But still it suffers from the fact that it needs to support a lot of upstream projects which are not as cooperative sometimes as they should be. And I have found that I can not depend on it like connecting some random scanner or camera and it will work. But this is not due to the fact that those hardware is not supported on Linux in general – its rather because the packages are not as good as they need to be and many hardware not well tested. I hate to say that again, but its the truth. The way out would be to have more people and more testing and more knowledge about all the possible problems. I am quite optimistic that Foresight can and will become the best distribution around because it makes development much easier and if it would have the manpower of Ubuntu it sure would outact it.
But there is still the problem for me that I need a more reliable system as my productive machine – and I tend to believe that I wont get it in the Linux world. The BSDs have some flaws like not as good hardware support and some software wont work there – like you dont get the latest GNOME on OpenBSD. Everything has pros and cons – and everybody has to decide which operating system meets his own interest best. One thing I cant stand any more is that since I had my first computer which was an Amiga 2000 with 8MhZ I experience sometimes or often high load averages and situations where the graphical user interface seems to freeze or working with it becoming extremely slow. I am no longer accepting that. I dont want to wait for stupid tasks to finish. I accept that if I do some actions at once like compiling and watching a video – that this might kind of “freeze” my computer because he needs to do so much – but I am not accepting a high load for my everyday work. The relation needs to fit – so extreme tasks may take up a lot of CPU – but listenng to a stupid OGG file may NOT.
I havent seen any progress on any of the current Linux desktops to really solve that problem. That way also one of the reasons why I started working with wmii partly. I never really understood how people could use Debian with a GNOME from stoneage – and I stll cant really – but what I can understand now is that the latest software does not always have to be the greatest – given that you have the software that you need. I currently do not have all that. I like to be able to print some letters, listen to music, watch videos and edit some photos, the rest is maybe random internet usage. I have yet not worked very much with LaTeX but maybe that could play a role in not depending on OpenOffice.org. I know this would mean to learn some more about it to be able to do some similar things – but it should be achievable. I know that I will not be able to expect random hardware to work – and I am not expecting that any more. But I still like to be able to work with some new hardware like USB sticks etc. without much configuration.
I guess maybe OpenBSD is not as good on desktop – maybe NetBSD. Any suggestions? I think I leave out Plan9 for now. Minix maybe?