AN OVERVIEW OF FREEDOS, by Jim Hall
(c) 2002 Jim Hall.
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this copyright notice is preserved.
THE ORIGINS OF FREEDOS
I never intended to write a free operating system, but circumstances
dictated otherwise. In 1994, I was a senior in college, attending the
University of Wisconsin-River Falls (USA). My major was physics, but
I had some background with computers and programming. I used the DOS
operating system to do my data analysis for labs, write papers and
physics reports, dial into the University network, and write small
programs to help make my life easier. I like the simplicity that DOS
offers. As a DOS user, you have total control over what happens with
your computer. Anything that you want to do on the PC is possible.
Nothing stops you other than hardware limitations. DOS is also easy
to learn, at least on the technical side. It's not nearly as
complicated as something like UNIX, and even a novice DOS user can
figure out that if you twiddle this thing here, that thing pops out
over there. UNIX isn't as easy to pick up.
Despite this, there were some things that Microsoft did with DOS that
irked me. It occurred to me that MS-DOS just wasn't very well
designed. You just couldn't do the same tasks under DOS that you
could do with, say, a UNIX system. My biggest complaint was that
there weren't very many utilities shipped with MS-DOS, and there
weren't very many command line options to the utilities that were
already part of MS-DOS. With the little bit of experience that I had
(at the time) with the C programming language, I began re-writing from
scratch some of the basic DOS utilities such as MORE, TYPE, and ECHO.
The utilities I was writing were not very complicated, but they
contained extensions that made the programs more useful to me.
For me, DOS was a great operating system. It was stable. There were
lots of programs written for DOS. WordPerfect, Lotus 1-2-3 (or the
shareware AsEasyAs) and DOOM were probably the most popular DOS
programs around at the time, especially in the student community. On
top of this, DOS was extremely flexible. You could replace components
with others you had written to enhance the operating system's
functionality.
So it was a bit of a surprise in 1994 when Microsoft announced that
they would stop supporting MS-DOS. Sure, Microsoft had Windows 3.11,
and many people used that. But plenty of people still used good old
DOS. Everyone was pretty shocked. We didn't want to be forced to use
Windows, which completely removes the command line. (I use the word
"we" because I was a member of several USENET news groups that
discussed DOS.) In DOS, everything is done on the command line, and a
true command line "guru" can do amazing things there. But in Windows,
you are stuck with the mouse, and if the menus don't let you do
something, it pretty much can't be done. We felt as though our
freedom had been taken away as well when Microsoft decided to take
away MS-DOS.
On the newsgroups, people started trying to find ways to preserve
their freedom. As everyone knows by now, in 1991, a Finnish student
named Linus Torvalds announced his Linux operating system emulating
UNIX. By 1994, Linux had become an underground success story in many
Universities, including the University of Wisconsin-River Falls.
People looked to Linux and asked, "if they can create a free version
of UNIX, can we create a free version of DOS?" I had already
installed Linux in a dual-boot configuration (with MS-DOS) on my '386,
so I knew what a great operating system Linux was. Writing a version
of DOS seemed almost trivial next to a multi-tasking, multi-user UNIX
kernel.
After a number of weeks, no one on the DOS newsgroups seemed to be
interested in starting a free DOS project, but people definitely
wanted one. I was afraid that if someone didn't make the attempt to
create a free DOS, the initiative might be lost, so I posted a note to
the newsgroups announcing my intention to create such a project.
Along with the first "free DOS" Manifesto, I posted several DOS
utilities that I had written to reproduce some functionality of
MS-DOS.
first announcement:
001.txt
: A few months ago, I posted articles relating to starting a public
: domain version of DOS. The general support for this at the time was
: strong, and many people agreed with the statement, "start writing!"
: So, I have...
:
: Announcing the first effort to produce a PD-DOS. I have written up a
: "manifest" describing the goals of such a project and an outline of
: the work, as well as a "task list" that shows exactly what needs to be
: written. I'll post those here, and let discussion follow.
original manifesto:
002.txt
current manifesto:
manifesto
People liked the idea! I immediately started to get email from people
who wanted to contribute. Within a few weeks, several software
developers from various parts had contacted me, volunteering to take
on this or that part of the new DOS project. Weeks after that, the
number of developers had doubled. A few DOS programs were
contributed, and we started scanning the ftp sites for free programs
that reproduced MS-DOS functionality and that included source code.
Our quantum leap came months later, when I was contacted by Pat
Villani, who had already written a functional DOS kernel called
DOS/NT. Pat was willing to contribute his kernel under the GNU GPL
for us to use! At about that time, Tim Norman also started work on
his version of the command.com, which is the heart of the DOS command
line interface. I think the fact that we had access to a working DOS
kernel and command.com from the beginning really helped get the
project in motion.
Initially, we called our effort "PD-DOS", since I thought it would be
best if we released code in the public domain, hence "PD". (I didn't
understand the distinction between "public domain" and "free software"
at the time.) However, we soon realized that not everyone was
releasing code in the public domain, and contributors had used several
different free licenses. So we changed the name to "Free-DOS" to
indicate that our software was all free. Soon after that, I began to
distribute my own source code under the GNU GPL.
By the way, if you're interested about the "Free-DOS" vs. "FreeDOS"
thing, Pat Villani published a book about writing his DOS kernel.
It's a good read; go buy it. The way the story goes, it was supposed
to be titled "The Free-DOS Kernel", but his publisher or agent didn't
like the way the dash appeared on the cover title. So it was changed
to "The FreeDOS Kernel", and we adopted the new spelling. We've been
called "FreeDOS" ever since!
WHY THE GNU GPL?
The origins of the FreeDOS Project could just as well apply to any
open source software project. In order for the project to exist,
there must first be a need. A developer fills that need for himself
by writing software, and then turns it into free software when he
gives away the source code for others to share and improve. But how
can you guarantee that the software will remain free?
Free software allows the users freedom to run, copy, distribute,
study, change and improve the software. Of course, this requires that
the source code be made available to the end user. In this usage,
"free" refers to freedom, not price. (This is also the origin of the
much-used motto "free as in speech, not as in beer.") More precisely,
it refers to four fundamental kinds of freedom for the users of the
software:
free-sw.html
* The freedom to run the program, for any purpose.
* The freedom to study how the program works, and adapt it to your
needs. Access to the source code is a precondition for this.
* The freedom to redistribute copies so you can help your neighbor.
* The freedom to improve the program, and release your improvements
to the public, so that the whole community benefits. Access to the
source code is a precondition for this.
The Free Software Foundation guarantees these freedoms through its GNU
General Public License (GPL):
gpl.html
: The licenses for most software are designed to take away your freedom
: to share and change it. By contrast, the GNU GPL is intended to
: guarantee your freedom to share and change free software--to make sure
: the software is free for all its users.
: [...]
: The GNU GPL is designed to make sure that you have the freedom to
: distribute copies of free software (and charge for this service if you
: wish), that you receive source code or can get it if you want it, that
: you can change the software or use pieces of it in new free programs;
: and that you know you can do these things.
: [...]
: The General Public License does not permit incorporating your program
: into proprietary programs.
FreeDOS is free because it is released under the GNU General Public
License. The GNU GPL, created by the Free Software Foundation, is the
same one used by GNU Emacs and Linux. Thus you have access to the
source code for all FreeDOS programs. Since we adopted the GNU GPL
for much of our code, and especially for the FreeDOS kernel and
command.com, other developers and software companies have been willing
to "open up the hood" and provide their own hacks to different areas
of FreeDOS. I have also been pleased to see that companies have not
shied away from us. Several companies use FreeDOS as the DOS on
"rescue" boot floppies for systems. Others use FreeDOS on
configuration floppies for their hardware. Still others distribute a
FreeDOS bootable floppy to update the BIOS on hardware that they sell.
FreeDOS is definitely being used in the industry mainstream.
However, commercial response is not the only measure of FreeDOS'
success. Far more important is our continuing relationship with our
users.
Because free software requires that the source code be open to
inspection, the users of the software are able to view the source code
and make improvements to it. The maintainer can accept those
improvements in the form of patches, and then provide a new release of
the project made that benefits all its users.
Take, for example, the FreeDOS Project's kernel effort: when the
source code to the kernel was made available to the FreeDOS community,
other developers were finally able to inspect the code. Improvements
were rapidly suggested, resulting in increased floppy access speed,
CD-ROM support, network redirection, and LBA. Thus, as a result of
opening the source code to its users, the FreeDOS community was able
to provide rapid code improvement and debugging. Making our kernel
free by using the GNU GPL means the evolution of the FreeDOS kernel
has been fluid and very user-driven. Ideas and prototypes are often
rewritten three or four times before reaching a stable final form in
the kernel.
The worst thing that can happen to an open source project is for it to
become unresponsive to its users. After all, the users are also the
developers. Without their continuing interest and contributions, the
project will stagnate. A sure way to kill interest in a project is
for the maintainer to reply to a developer: "Thanks for the patch, but
I was planning to add that myself anyway in the next release." The
maintainer must recognize that no one person can be the sole developer
on a free software project. Without users and co-developers, there is
no point to releasing the source code! It is the maintainer's
ultimate responsibility to understand that many developers working
together on a project are better than one talented hacker.
Making the source code available to its users allows for the
cooperative development and rapid code improvement that fosters "mind
share." We would never have made it to where we are today if not for
the contribution and support of the many FreeDOS users who had access
to our source code and were able to suggest and contribute
improvements to the software. That, ultimately, is why we chose the
GNU GPL over remaining in the public domain: with the GNU GPL, we can
work together with our users in a way not previously possible.
FreeDOS has evolved from a few re-written utilities to a full-fledged
and popular operating system. Its continued popularity stems from its
commitment to the free software philosophy and the interest and
support of its users. Not bad for a project that I didn't really
intend to start in the first place.
___________________________
Jim Hall lives in St. Paul, Minnesota, with his wife (Sara) and three
cats (Murphy, Vita, and Linus.) Yes, he named the cat after Linus
Torvalds - what a geek! At work, Jim is Web Production Manager for
the University of Minnesota.