The number one rule for starting an Open Source project. Never, ever, ever start a project without having working code that people can compile, run and play with.
If you don't start with it, you'll never develop anything.
If Linus had posted to the comp.os.minix newsgroup: “I have this neat idea. Let's write a free Unix-like operating system that runs on a 386”, maybe FreeBSD would be a lot more popular these days. Linus didn't, though, he posted working code that could run a variety of Unix applications and could be expanded in lots of different directions.
Having something that works gives you three important things (because all lists must have three parts)
- People can work on the feature that interests them the most, and not worry about all the un-interesting-to-them things that might have to be done to get it to work. And since everybody finds different things interesting, you'll expand in lots of directions.
- The person who wrote the original code is the project's natural leader. You get a natural respect from bootstrapping the project, even when everyone else's code starts to outweigh yours. And small projects need a dictator.
- The base architecture of the project is already laid out, so you don't need to spend six months arguing over interfaces and coding standards.
The code doesn't have to be perfect. If your VM handler sucks, somebody interested in virtual memory will rewrite it. But if you don't have a VM handler at all, the guy who wants to make your scheduler better is going to look for somewhere else to exercise his talents.