Interview With Jim Hall, Founder of FreeDOS

TechRound recently caught up with Jim Hall – founder of an open source version of the 1980s/90s DOS operating system – discussing how the project started, why it’s remained so popular, future plans and more…

freedos-logo

 

What Is FreeDOS?

 

FreeDOS is an open source version of the DOS operating system from the 1980s and 1990s. “Open Source” means all of the source code for FreeDOS is available for anyone to examine, so they can learn from it, or make changes to it, or even use it to make another program. Our programs are available under the GNU General Public License, BSD License, MIT License, or another open source software license.

FreeDOS is very compatible with MS-DOS. Pretty much any program that ran on MS-DOS will run on FreeDOS.

 

How Did FreeDOS Start up? What Was the Inspiration Behind It?

 

We started FreeDOS in 1994. A little history helps here. I grew up with computers. We had an Apple II in our classroom at school, and my brother and I became interested in computers that way. I taught myself BASIC programming by reading books and making my own experiments. I liked to write little games and math puzzles.

Later, we upgraded to an IBM PC, and that was where I first learned DOS. I thought DOS was a much more powerful environment. Even though the command line was still primitive, I learned how to use the different commands on the system to get around and manage files.

Over time, I learned about C programming on DOS, and wrote my own DOS programs. I created more powerful and flexible DOS utilities that replaced the standard DOS commands, and wrote other DOS utilities that enhanced my DOS command line experience.

I used DOS as my primary operating system until I went to university. I was a physics student, but I spent a lot of time in the university computer lab, where I learned about Unix. I thought Unix was a pretty neat idea. It had a command line that was familiar to me, yet more powerful than DOS. Later in 1993, I decided to upgrade my computer, and I chose a free version of Unix called Linux. My first Linux distribution was SLS Softlanding Linux System.

But in 1993, Linux didn’t have a lot of applications. I still needed to boot back into DOS to write papers with a DOS word processor, and to analyze my physics lab data with a DOS spreadsheet. So even though I was using Linux, I still ran DOS much of the time.

In 1994, I started seeing a lot of articles in tech magazines that Microsoft planned to do away with MS-DOS. The next version of Windows would “kill” MS-DOS. I had used Microsoft Windows 3.1, and I didn’t like it very much. It was slow and seemed to crash a lot. If Windows 3.2 or 4.0 (I didn’t know the next version would be called Windows95) was going to replace MS-DOS, then I decided the only path was to create my own version of DOS. And that’s what I did.

I reasoned that if others could create an open source version of Unix (as Linux) by sharing source code and working together over the Internet, then surely we could do the same with DOS. After all, DOS is a much simpler operating system than Unix.

So I announced on June 29, 1994, that I was starting a new project to create an open source version of DOS. I bundled the DOS utilities I’d written, the ones that replaced standard MS-DOS commands, and shared it on an FTP site. Back in the 1990s, “File Transfer Protocol” or FTP was the standard way to share things. Then others joined in, and shared programs they had written to replace and enhance other parts of DOS. And I looked on popular FTP sites and found other programs that replaced parts of DOS. And everything was open source. We all used the GNU General Public License or a similar open source license.

We continued working together to create our own version of DOS. Because everything was open source, others could see our source code and contribute new features or fix bugs. The “FreeDOS” project came together very quickly. A developer named Tim Norman contributed a replacement for the DOS command interpreter, and Pat Villani contributed his DOS-compatible kernel. And the rest is history.

 

 

Why Work on DOS in 2021? 

 

We still work on DOS in 2021 for a few reasons. I guess the first reason is that DOS is still interesting. We’ve added a lot to FreeDOS over the years. Where the original MS-DOS had a limited set of commands, FreeDOS includes dozens of useful utilities and tools, including editors, compilers, assemblers, games, and other neat programs.

But it has to be more than just an interesting hobby. I find that working on FreeDOS makes for a very interesting programming challenge. In modern systems like Linux, you can take advantage of a lot of memory at once, and you can address it all in one big block. As a result, many programmers will load a lot of libraries and other code to create their project. This is a very easy way to build a complicated project. You can build a very complex system in a very short time this way. And for many systems, time to market is the most important factor.

Loading a bunch of libraries and other code blocks is very inefficient, however. You may have the same basic functionality implemented half a dozen ways across the different libraries, because each library implements something their own way. So your code grows and requires more memory.

Maybe that’s not a problem on a desktop PC. I run Linux, and my modern desktop PC has 32GB of memory. Loading a bunch of stuff into memory isn’t a problem. But on a shared server, where you might have multiple instances of that project running, you’ll quickly run into memory limitations. How many instances can you run at the same time on a server? That 32GB of memory starts to look pretty slim.

You can’t load all of that into memory on a DOS machine. To remain compatible with original DOS, FreeDOS has all the limitations of DOS. When MS-DOS was popular, a powerful PC might have had 4MB, 8MB or even 16MB of extended memory. But the computer only had 640kb of “main” memory, due to how DOS addressed memory. And that’s megabytes and kilobytes, not gigabytes. A kilobyte is a thousand bytes (the basic unit of memory). A megabyte is a thousand kilobytes. And a gigabyte is a thousand megabytes. So today’s computers have memory that is about 1,000,000 more than a DOS computer.

By programming on a limited system like FreeDOS, you constantly have to think about the tradeoffs. How much memory does my program really need to do its job? Is it faster to read a file into memory to work on it, or process the file one bit at a time? And you’re always keeping in mind what libraries and other code you use in your program. A DOS program can only be so big, so you need to be careful about how you write a DOS program.

When you write DOS programs all the time, you get really good at optimizing a program. You think about programming in a different way, because you’re always considering how to do something more efficiently. That’s a challenge, but an interesting one.

 

FreeDOS Turned 25 a Couple Years Back, Why Do You Think It’s Remained So Popular for So Long?

 

For any open source project to go this long, you have to have a healthy community. And I think the people who participate in FreeDOS are a great community!

We communicate with each other via an email list. And it’s rare that we have “flame wars” on the email list – that’s where people argue about something, usually resulting in hurt feelings. That just doesn’t happen very often in the FreeDOS email list. We have a code of conduct for our email lists, but I think folks just aren’t into starting fights on the email list. We get along really well most of the time.

But I think for a lot of people, FreeDOS is an interesting hobby. Long ago, we decided that FreeDOS shouldn’t just be a one-to-one replacement of MS-DOS, but should aim to be a modern DOS. And I think the current FreeDOS 1.2 (and the upcoming FreeDOS 1.3) are representative of a more modern DOS – within the limitations of a 16-bit single-tasking command-line operating system. FreeDOS can do more than MS-DOS could at its peak, and includes tons of more utilities. Where MS-DOS only ever provided a BASIC interpreter to write small programs, we include a collection of compilers and assemblers for different programming languages. We include games so you can play classic-era DOS games “out of the box,” and we provide utilities that extend the functionality of “DOS” to feel more like a modern computer operating system.

 

Are There Any Future Plans for FreeDOS You’d Like to Share?

 

We are always working on the “next thing” in FreeDOS. Right now, we’re planning the upcoming release of our next distribution, FreeDOS 1.3. Much of the “core assumptions” about FreeDOS remain the same in the new release: Compatibility is key, FreeDOS 1.3 will remain 16-bit, FreeDOS 1.3 will retain focus on a single-user command-line environment, FreeDOS 1.3 will continue to run on old PCs (XT, ‘286, ‘386, etc) but will support new hardware with expanded driver support (where possible), and the “Base” package group will contain everything that replicates the functionality from MS-DOS.

But we’re also adding a number of neat features. The biggest new feature is that the install CD-ROM is now a live image. That means that you can boot and run FreeDOS without actually installing it – you can run it right from the CD-ROM. It’s a little slower that way, but works quite well.

Like previous versions of the FreeDOS distribution, we’re doing several rounds of “release candidates” before we make the final distribution. We’re planning to release the FreeDOS 1.3 Release Candidate 4 in a few weeks, and hope to go for the final version after that.

You can learn more about FreeDOS at www.freedos.org

Also check out our YouTube channel at www.youtube.com/freedosproject