| |
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.
|
|
|