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.