Wednesday, August 20, 2014

How to start a free software project

In the early 1990s, I was studying physics at the University of Wisconsin–River Falls. I did all of my work through MS-DOS: I wrote my papers using WordPerfect, I analyzed data in AsEasyAs (shareware spreadsheet program), and wrote my own DOS utilities to do other work and generally make life easier for myself. I dabbled in other systems, and by 1993, I had installed "Soft Landing" Linux as dual-boot on my '386 computer. That was really my first introduction to free software, although we had GNU Emacs on some of the computers in the campus Unix lab.

In 1994, Microsoft announced that "DOS was dead," that they would soon replace MS-DOS with the next version of Windows. No longer would you first boot your computer from DOS, then launch the Windows shell. Instead, Windows would completely "own" your computer. You can probably imagine how I, as a DOS user, responded to being "pushed" off my platform of choice. Windows 3.1x was not that great. Windows was clumsy and difficult to work with, but DOS was rock solid and did everything I needed. I did not want a future where everything was Windows-only.

So I decided to do something about it. If Linus Torvalds and others could write Linux, a free version of Unix—surely we could write our own version of DOS. After all, DOS was a much simpler operating system than Unix.

I announced my intentions on Usenet, a kind of bulletin board that was popular at the time. I wanted to write my own version of DOS, which we would release for free, with source code available to all. Within days, several developers volunteered to help. Within weeks, we counted our developers by the dozens. And thus FreeDOS was born.

The key to the success of FreeDOS was that we released our source code under a liberal license that allowed anyone to view and improve the programs. We used the GNU GPL for new FreeDOS programs, and found other programs on DOS software archive sites that were available under similarly free licenses. Users were encouraged to become developers, and submit bug fixes and new features to make FreeDOS even better.

If you weren't sure how to contribute to FreeDOS, we provided a list of "hot projects" that new contributors might find interesting. Non-developers were welcome to contribute too, and many did; and especially after I introduced the "Cats" library to support multiple languages within a single program, many non-developers contributed translations of FreeDOS programs into Italian, Spanish, French, and other languages. We collaborated via several mailing lists, supporting the FreeDOS kernel, general FreeDOS development, and FreeDOS users.

I think we did a lot of things "right" in FreeDOS to help our user-developer community to thrive. And reading a recent article by Matt Asay at ReadWrite, "Want To Start An Open Source Project? Here's How," our activities to support FreeDOS match a "best practices" list to support any open source software project. Asay's article suggests these things to make a project successful:
  1. Optimal market timing
  2. A strong, inclusive team of developers and non-developers
  3. An architecture of participation
  4. Modular code to make it easier for new contributors
  5. Code that is broadly applicable
  6. Great initial source code
  7. A permissive license
There's more to an open source software project than that, and Asay's article highlights several things you will want to consider as you start your own project.
image: mine (screenshot of FreeDOS)

No comments:

Post a Comment