Home
Personal
Unix
FreeBSD
FreeBSD Mailinglist Archive
FreeBSD songbook
OpenSSH Trojan - articles
Apache
General Tools
Funny requests of my webserver
How to create favicon-icons on Unix machines
How to use ftp in combination with .netrc
Tcpdump for mortals
*BSD Multimedia Resources
Australian FreeBSD mirrors
Programming
Networking
Documents
Reporting
Weblog
CityRail
BOM pictures
Other projects
Contact me
               
   

Why I don't usedevelop for Linux (the kernel)

Note: I've got some complaints about this text, that the title "Why I don't use Linux" didn't fit the article. That's right, it doesn't fit it anymore, it did in the past. Anyway, a new title was invented: Why I don't develop for Linux (the kernel).

Why I don't develop for Linux (the kernel)

I've owned a computer since 1990, but in the eight years before that I have been using them. Mostly to program my own games. (First in BASIC on a Philips P2000T (automatic tapedrive and an expandable I/O port), then in GW-Basic, Borlands TurboPascal 3.0 and 4.0 on a Philips :YES, TurboPascal 6.0 on a i286 and i386 machine running MS-DOS, TurboC on a i386 machine running DesqView (that's when I learned to be carefull with pointers because DesqView is more picky about them than plain MS-DOS), emx/gcc under OS/2 on a i386, i486 and Pentium and gcc/PERL/PHP/TCL on a iPentium, iPentium2 and AMD K7 under FreeBSD).

Because of this long history of computer and geekness, people often wonder why I'm not running around with the latests hottest things they read about in the newspapers and see on the news (like the latest release of an OS from Redmond). Well, for a number of reasons.

I want to know how things work

With the old P2000T and :YES computer, there was an enormous amount of information available about it, both hardware and software related. For a little bit of money you could get the design of the boards, the memory layout, what happened when you jumped to a specific location in memory and so on. Not that it was really Open Source, but everything was publicly available.

When I got the i286 computer running MS-DOS I also had Internet-access via the school I was at. Well, not really TCP/IP, but with BitFTP and Trickle I was able to get all the information I needed. For example Ralf Browns Interrupt List, a huge overview of all the assembly interrupts known (and unknown) for MS-DOS. It containted usefull (like everything which had to do with screen I/O, keyboard I/O and Novell Netware calls) and weird entries (like what computer virii use to determine if they're already resident in the memory).

I don't want to do one thing at the time

There were a couple of reasons for using DesqView. One was the ability to run multiple programs at once (well duh), like a text-editor, a C compiler and the program just compiled. If a program bombed because something went wrong memory-wise, DesqView would close that window without having to be closed completly.

A science-group I was active with in the early 90's had been donated a couple of SUN 68020 machines. The GUI was SunView, later X. I found out how the network worked, how I could send packets from one machine to another (not realizing that the telnet to the other machine was actually the same trick).

The network is my computer

Later on I switched to OS/2. There were a couple of reasons for moving to OS/2 instead of MS-Windows.

  • I was spoiled with DesqView and the SUNs ability to multitask and their capability to handle my mistakes.
  • Within the first weeks I found a lot of information on OS/2, how it worked internally and how I could program the Presentation Manager.
  • I liked the GUI.
  • OS/2 Warp had networking capabilities. I could make my program talk TCP/IP to each other. I knew that if I had another computer and linked them together, I could let these programs talk to each other. (I didn't realize yet that these programs didn't have to run on the same kind of OS).
While playing around with OS/2, I discovered that a lot of unix-utilities were available for OS/2, due to the fact that somebody ported gcc to OS/2. When looking through the files of network related files of OS/2, I found one string returning time after time: "Copyright (c) .... The Regents of the University of California.".

Move on, move on

Via work I got more or less free internet access and enjoyed life, because I could do everything people on unix-systems do on my OS/2 machine. Thanks to EMX/GCC. Except recompiling the kernel (whatever that was needed for), or recompiling an OS/2 application (why would you do that?).

One day I couldn't stand the curiousity anymore, bought a new harddisk (never installed more than one OS on a harddisk. Maybe that's a Good Thing(tm)) and installed FreeBSD 2.2.1 on it. Compiled my first kernel, but never did a 'make world'. I even made a couple of changes and send them back to them (hey, they even got processed).

The move from 2.2.1 to 2.2.2, 2.2.4, 2.2.5, 2.2.6 and 2.2.7 went smoothly. I managed to upgrade each time by just following the guidance of the documentation. Moved to 3.1, 3.2, 3.3 and 3.4. Then moved to 4.0, 4.1 and 4.2. That's where I'm now. I have the 4.3 CD laying next to me for months now, but didn't want to upgrade yet.

FreeBSD gave me more of the same and other more things than what I got from DesqView and OS/2. Suddenly my GUI was not stuck to one specific GUI anymore. I could choose from twm, ovwm, fvwm, fvwm95, KDE, Gnome and lots of others. Up to today I've spend most time with fvwm and fvwm95. They're light-weight and non-bloated. I feel sorry for the people who try Linux on an old Pentium with not much RAM and are default coming into KDE.

The FreeBSD development model is pretty straight-forward. There is one group in the middle (the core-team) which make all the decissions regarding what has to be added and what not. Luckely they're all techies, so they know what they're doing. There is a group around them which can make small modifications. And there is a group apart from it which maintains the documentation and the ports-collection.

Installing additional software is easy. FreeBSD has currently more than 5500 applications which are ported to FreeBSD. All you have to do is go to the right sub-directory of /usr/ports and type make install. If there is more to be installed before the program can be ran, it will install these ones also.

FreeBSD 4.0 gave me IPv6. IPv6 is a strange thing. It works, but there is nothing you can do with it yet. Unless you setup an IPv6-over-IPv4 tunnel to freenet6.net. I really hope that ISPs will move to IPv6 soon.

So, why don't I develop for Linux (the kernel)

  • I don't understand the Linux development system. With FreeBSD, you have a group of people who are responsible for the Operating System, the utilities and the additional software (wether ports or packages).
    With Linux, you have a group of people who are responsible for the kernel and the basic operating system. And a group of people who are distribution it. And they all are different people, who have no real contact with each other. How can I be sure things keep on working when somebody makes a change?
  • If I have found a problem and a solution, who should I go to? Should I go to <include distribution name here> or should I go to Linus himself? How can I make sure this problem gets solved in the other distributions?
  • There is (maybe there is these days) no standard for installing additional software. Should it be put in /bin, /usr/bin, /usr/local/bin? How can I be sure it doesn't screw up parts of the operating system when it's not installing in /usr/local?
  • Why does my startup-screen gets spammed with copyright about this and that, in multiple colours? I wouldn't mind if it all was just one colour. Why does one Linux distribution start with a GUI, while the other has a login-prompt?
  • I don't like the GPL. Sorry if it hurts you. The GPL is way too strict with who I allow to use my software. Everybody may use my software which I've released.
  • And last but not least... which distribution should I take? If I choose Red Hat or Debian or Suse, what are the consequences for later? Can I run the program compiled with Debian Linux under Red Hat or Suse. Can I even get it compiled?

These are the topics which have prevent me from the development for Linux or the support of Linux in the last couple of years. Right now I have a couple of Linux distributions running under VMWare, mostly for checking if software I make runs under all of them. After all, Linux is a just another Unix-implementation and I can survive pretty well in the userland :-)

I'm not saying that Linux is bad, evil or something. There are just a lot of things I don't understand or agree with regarding it. Well, the same thing applies to other operating systems. Closed and Open.

       
               
               

$Id: whyIdontuselinux.php,v 1.7 2002/01/05 06:41:36 mavetju Exp $