FreeDOS is an open source implementation of the DOS operating system. As an open source project, FreeDOS is one of the oldest out there. Started in 1994, FreeDOS will turn 30 years old on June 29, 2024. And as we look ahead to a milestone anniversary, I wanted to take a look back and where things started.
Early personal computers
But first, it’s important to remember what computers were like at the time. I grew up in an era when the “personal computer” was new. We had an Apple II computer at my elementary school, and my brother and I really enjoyed learning how to use it. We had a group of friends who also liked learning about computers, so we all supported each other by talking about the Apple and sharing what we learned about it.
The Apple II computers (and every “personal computer” at that time) came with a built-in programming language called BASIC (“Beginner’s All-purpose Symbolic Instruction code”) that made it really easy to write your own programs. BASIC was not a very complicated language, but you could make some neat programs with it.
My family bought an Apple II computer (actually a clone of the Apple II+ called the Franklin ACE 1000) so my brother and I could keep learning about computers at home. I wrote a lot of programs for myself, mostly games or math puzzles that I thought were fun to play.
The first IBM PC
IBM released the first IBM PC (“Personal Computer”) in 1981, and not long after that, my family replaced our Franklin ACE with an IBM PC. The PC also came with BASIC, but it also had a much more powerful command line operating system called “DOS” that could do a lot more than the Apple did. And over time, lots of companies and lots of people made programs for DOS.
I used DOS throughout the 1980s and into the 1990s. I taught myself how to write programs for DOS in a new programming language called C. I liked to make new programs that would make the DOS command line easier to use, and even replace (and enhance) certain built-in DOS commands. For example, DOS has a built-in command called
TYPE that displays the contents of a text file. I made my own version of
TYPE that would also display the contents in all-lowercase, all-uppercase, and do a few other things that I needed
TYPE to do.
Apple had an all-graphical interface since 1984 when they released the original Macintosh computer. In response, Microsoft also made a graphical interface for the PC called Windows. But the first version of Windows wasn’t very good. Even Windows 2 wasn’t that great. Windows 3 was out by the time I went to university in 1990, but I thought Windows 3 was just ugly and slow. A poorly-behaved Windows application could crash all of Windows, for example. But my DOS programs were solid. And I could do my work faster in DOS than I could on Windows, so I kept using DOS.
Unix was pretty neat too
I discovered Unix in the campus computer lab at university. I wasn’t a computer science student, but I had a Unix account anyway because of some of the things we did in my physics major. And I thought Unix was really cool. It had a command line interface like DOS, but it could do more (like run multiple programs at the same time, called multitasking) and it had a graphical user interface that – while not as pretty as Windows – did about the same thing as Windows. So I saw Unix as being a great “next step” for me. I asked around online, and found a then-new project called Linux that was a free (open source) version of the Unix operating system, but I could run it on my computer at home.
In 1993, Linux didn’t have any desktop applications, so I still “dual-booted” into DOS to run my word processor to write papers for my classes, and to run my spreadsheet program to analyze data for my physics labs. I liked Linux, but I still “lived” in DOS.
In early 1994, I noticed articles in computer magazines that said Microsoft was going to stop making DOS. They said the next version of Windows wouldn’t need DOS to run. Windows versions 1, 2, and 3 all ran “on top” of DOS. But the next version of Windows would run on its own. Effectively, this meant that DOS was on the way out.
I still used DOS, and I didn’t want to stop using DOS. And I looked at what Linux had achieved: people from all over the world shared source code with each other to make this full operating system that worked just like Unix. And I thought “If they can do that with Linux, surely we can do the same thing with DOS.”
I asked around on a discussion board (called Usenet) if anyone had made an “open source” DOS, and people said “No, but that’s a good idea .. and you should do it.” So that’s why I announced on June 29, 1994, that I was starting a new project to make an open source version of DOS that would work just like regular DOS.
People liked that idea – and not long after that, a few people reached out to me with programs they had made that reproduced DOS programs. And I added the programs that I had already written to enhance my own DOS command line. So in a few weeks, we had collected a bunch of programs that reproduced much of what regular DOS could do.
How FreeDOS grew
A student, Tim Norman, at another university started writing a command shell that could replace the DOS COMMAND.COM shell. The command shell is where you type commands to do things. That new command shell became the FreeDOS FreeCOM program, our version of COMMAND.COM.
And I think it was a year or so later that a developer named Pat Villani emailed me to say that he had written a DOS-like kernel, and he was willing to make it the FreeDOS kernel. The kernel is the core of the operating system that actually runs the programs and does a few other important things, so having an open source kernel that could replace the DOS kernel was very important. Pat’s kernel was originally called “DOS-C” (because he wrote it in the C programming language) and that’s what became the FreeDOS Kernel.
Over time, a lot of cool and smart people contributed other things to FreeDOS. Tom Ehlert wrote a lot of FreeDOS programs, and also improved the kernel. John Price and Bart Oldeman and others also worked on the kernel for a while. Steffen Kaiser also wrote several command line programs and contributed several programming libraries that made it easier to write new programs. A “library” is a collection of routines that you can use to do things in a program.
There have been a lot of people who have contributed to FreeDOS since then. FreeDOS is what it is because of a ton of people, like Pat Villani who wrote our first kernel and the long list of people who maintained the kernel and improved it, including Bart Oldeman, Tom Ehlert, John Price, Jeremy Davis. And people like Tim Norman, M. Hannibal Toal, Eric Auer, Aitor Santamaria, Tom, Paul Vojta, Joe Cosentino, Shaun, Till, Martin, Arkady, Bernd, Charles, Eduardo, Rene, Dave, Mike, Imre, Louis, Fritz, Jim Tabor, Jason, Jerome Shidel, Ron, Lucho, ror4, Steffen, Wilhelm, Rugxulo, Mateusz Viste, Gregory Pietsch, Ralf Quint, and the many many others who created programs, fixed bugs, wrote documentation, translated messages, and did a ton of other stuff to keep FreeDOS moving forward.
30 years of FreeDOS
These days, I’m really excited for all the different ways that people are using FreeDOS. For example, there’s a community of enthusiasts who restore classic computers like the IBM PC 5150, PC XT, and PC AT, and put FreeDOS on them. These are great systems that can’t run something like Linux, so running FreeDOS is a great way to make these classic computers useful again.
I like that FreeDOS (like any DOS) is so easy to understand. There aren’t a lot of moving parts in DOS: the computer boots and starts the kernel, the kernel reads FDCONFIG.SYS (or CONFIG.SYS) which defines the shell to run (usually COMMAND.COM), and COMMAND.COM runs a batch file (usually AUTOEXEC.BAT or FDAUTO.BAT) to set up the environment. And then DOS presents you with a friendly command prompt where you can run commands and start programs.
I’m excited to see FreeDOS turn 30 years old this year. There’s a lot to see and learn about FreeDOS. We use email lists to discuss FreeDOS. We have two email lists: freedos-user for questions about running FreeDOS, and freedos-devel for questions about creating new DOS programs. Both are friendly communities, and we welcome you to join us in the conversation.
You can learn more about FreeDOS at The FreeDOS Project website.