Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Sep 1996 13:14:05 -0700 (PDT)
From:      Jake Hamby <jehamby@lightside.com>
To:        "Jordan K. Hubbard" <jkh@time.cdrom.com>
Subject:   FreeBSD vs. Linux 96 (my impressions)
Message-ID:  <Pine.AUX.3.94.960902112450.20153A-100000@covina.lightside.com>
Resent-Message-ID: <5924.841702645@time.cdrom.com>
In-Reply-To: <2893.841647826@time.cdrom.com>

next in thread | previous in thread | raw e-mail | index | archive | help
The other day I received my subscription copies of FreeBSD 2.1.5 and
Slackware Linux 96.  After looking at the CD-ROM backs, and upgrading a
friend's Linux install (using him as a guinea pig :-) I decided to migrate
my primary development OS to Linux.  I'm going to reinstall FreeBSD on the
other hard drive, probably after the next 2.2-SNAP (once GCC 2.7.2.1 gets
integrated into it).

Since I've talked to you before on occasion, esp. regarding Solaris x86
(which I still have installed), I thought I'd type up a quick summary of
the differences (as I see them) between the latest Linux and FreeBSD, and
why Linux seems to be better for my uses.  First, my uses for this box:

1) Software development for work and school:  Requires X11R6, Motif, and
C++, which both OS's do fine (still waiting for "official" GCC 2.7.2.1 on
FreeBSD though).  However, for school, I also need GNAT (for Ada) and
Common LISP (for my AI class), which Linux seems to support a bit better,
esp. GNAT (which is itself written in Ada, and the new version requires
threads, so I have not had time to attempt a port to FreeBSD).  And of
course the JDK isn't available for FreeBSD, though Kaffe should make this
less significant.

2) Internet access: PPP, Netscape, pine, telnet, and so on.  Both OS's do
this well (FreeBSD a bit better), but for some reason I haven't been able
to get Java to work on either BSDI or Linux Netscape 3.0 under
FreeBSD-current, but it works out of the box on Linux, even though it's
"unsupported".  I've installed it exactly the same as under Linux and
Solaris (copied java_30 to /usr/local/lib/netscape) but Java programs
just don't start!  Does Java work for you with Netscape 3.0?  Another side
effect is that my BeBox has some nasty interactions with 4.4BSD telnetd
(BeBox's fault) and user-mode ppp, so I'm curious to see how Linux will
work as a BeBox PPP server (will set it up later today).

Anyway, I guess it was the better software support (esp. GNAT, Netscape,
JDK, and so forth) which pushed me towards Linux.  After using both, I
must conclude they are both great OS's, definitely the competition has
made them both better.  For your interest, however, I've typed up my quick
impressions of advantages/disadvantages of Linux vs. FreeBSD.  Should give
you a hopefully objective view of where FreeBSD needs to improve:

Linux advantages:
-----------------
1) Better software support (both GNU and commercial).  Not much we can do,
other than get the latest versions of the GNU software supported (GCC and
so forth), and make sure our Linux emulator stays in top shape.

2) DOSEMU.  Recent work on the FreeBSD emulation front is promising,
though, however DOSEMU has several years head start and works quite well.
Linux also supports VFAT (Win95 names) quite well.

3) _Very_ modular kernel.  Unlike FreeBSD, you can install most every
driver (for example Ethernet, SCSI and sound support) as modules, and
there is a kerneld which automagically loads/unloads modules as programs
request them.  For example, whenever I play a .au file, the sound module
instantly loads, then after a minute of unuse, it unloads, saving me 96k! 
FreeBSD already has the infrastructure for this, but Linux just pushes it
a little more to its logical conclusion. 

4) Supports arbitrary PC hardware better.  As of FreeBSD 2.1.5, the boot
floppy _still_ doesn't recognize my IDE CD-ROM (which I've reinstalled
after moving the SCSI CD-ROM to my BeBox), but Linux recognizes that kind
of hardware out of the box.  Having more users means it supports a wider
range of hardware, for example the parallel-port Zip drive.  The big
problem for FreeBSD is EIDE/ATAPI support, since nearly all PC's are being
sold with IDE CD-ROMs these days, and our support is currently buggy,
mostly because it's a crappy standard to support properly, and all the
core people use SCSI.  Unfortunate...

5) Supports more architectures.  For example, I'll probably install Linux
for BeBox after it's a little better tested.  Too bad FreeBSD and NetBSD
have diverged so far, because FreeBSD could benefit from NetBSD's hardware
support, and NetBSD could use the improved VM system and package system of
FreeBSD..  :-(

6) Heavy usage of /proc means getting a new kernel doesn't require
recompiling ps, vmstat, and so on.  FreeBSD has /proc, we just need to
make better use of it, esp. for debugging (its original purpose, even
though our GDB totally ignores it!).

7) Easy kernel setup.  The old "make config" prompting setup is still
there, but now there's also a nice curses-based menu for setting options,
and a nifty Tk version.  This is something I'd like to work on for
FreeBSD, since I have some ideas of my own on this, as well.

8) Easier for new users to install.  The Slackware verbose setup menus,
while annoying for expert users, actually serve a good purpose by
introducing novices (such as myself when I first installed Linux) to the
wide variety of programs available.  You can also install to a UMSDOS
partition (eliminating the need to partition the drive) and mount the live
CD-ROM on /usr for a quick taste, which only needs about 10MB disk space!

9) I've always liked Linux FDISK better than what FreeBSD had to offer,
esp. when adding partitions later on (after the original install).  I know
the relative parts of sysinstall have be broken into separate programs,
and the full-screen interface of FreeBSD is nice, but if we're going to do
a major rewrite after 2.2.0, this could use a big overhaul.

10) Uses less disk space.  Right now I have a full development system
(C/C++/Objective C/GNU Lisp), TCP/IP (pine, tin, apache, arena, Netscape),
TCL/Tk, X11R6 (fvwm95, etc.), and kernel source in a single 166MB root
partition with 40MB free.  Admittedly, I didn't install Emacs (preferring
to use jove or vi for quick edits), but it just seems smaller than FreeBSD
for all the goodies I've installed.  I can attribute this to three
reasons:  EVERYTHING is linked with shared libs, ELF binaries are smaller
(they aren't padded to a multiple of 8k like BSD), and more components are
optional (i.e. not bundled into "bin"). 

Linux disadvantages:
--------------------

1) Can't boot arbitrary kernels from the root partition.  LILO sucks.

2) Many boot/root disks to choose from, vs. a single configurable GENERIC.

3) Can't install over PPP.

4) TCP/IP is still not as good (but it's improved noticably).

5) Doesn't support "slice" scheme, although it does support extended DOS
partitions if you need more than the four FDISK partitions.

6) Not as well integrated.  While this means you can upgrade pieces and
parts at your leisure, there is no master CVS tree, no core team, and no
regression testing to make sure all the parts work together.  Also, try
mailing the author of Slackware with a bug report, vs. posting it to
hackers@freebsd.org.  _Big_ difference!

Summary:
--------

Linux has improved significantly since my last Walnut Creek Slackware CD.
A lot of rough edges have been fixed, and the 2.0 kernel is definitely a
milestone release for them.  I decided to switch over because the software
support is a bit better, and the upgrade cycle I got stuck in (upgrade
libc, upgrade kernel, upgrade ppp, upgrade programs which got screwed by
the new libc, upgrade kernel again, agh!) by the last Linux has been fixed
by a new CD with the latest versions of everything tested against each
other (still it's not as well integrated as "make world", alas!).

In summary, Linux does seem the better OS for people just getting into
UNIX.  It was my first UNIX experience, after all.  It does seem to offer
compelling advantages as a desktop UNIX, in terms of tuning, and software
support.  FreeBSD will remain the industrial strength Internet server OS,
of course, and I don't think I would trust Linux as a server in terms of
performance, scalability, or security just yet.

So what does FreeBSD need to work on?  The areas I would like to work on: 
Easier kernel config (hopefully a nice curses interface, plus some
automatic tuning based on the results of "dmesg" to see what hardware was
actually detected), porting GNAT (now that we have a pthreads lib), and of
course the FreeBSD counter I had volunteered so long ago.  I'm going to be
working on CGI hacking for work next week using WebObjects (unfortunately
there's only Solaris, NT, and NextStep versions) and perl, so I should be
able to finish something up next week. 

The areas I'm not competent to help with, but which _desperately_ need
improvement:  Hardware support (esp. IDE CDROM!), DOS emulation and VFAT
support, maybe even a UMSDOS filesystem like Linux, usage of /proc
throughout our utilities (no more "proc size mismatch" please?), a more
modular kernel (ideally with a "kerneld" rather than simply a module-aware
mount command), and of course we can always improve our installation and
packaging scheme (which I would be glad to assist with and help beta test
anything you come up with).

Hope these comments have been helpful to you.  Feel free to forward them
to whatever FreeBSD mailing lists you think would find it interesting.

-- Jake




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.AUX.3.94.960902112450.20153A-100000>