I suppose this post could apply to any project, but since I like to dig into open source projects quite a bit that’s what I’m focusing on.
How hard is it to bring a new developer into your open source project? Outside of the core IDE of choice for the language, what else needs to be installed on the developer’s machine in order to get it to build? If you have to tell them to install a few versions of .NET, Ruby, Python, and then a slew of other tools, why not just put it in a README file at the root of the project instead of relaying that information to every developer who has to ask you directly? If I can pull the source down from the repository of choice, I should be able to get up and running with the code base without having to spend even an hour trying to figure out how to build the project. If it’s a .NET application, I would expect to open it up in Visual Studio and press Cntl+Shift+B and have a successful build. Even better is if there’s a build script and some batch/shell script that will run the build. That way the developer can find out if the way they’re compiling the code is the same as what’s available as an official release. There’s been a number of projects that work 99.999% of the way I need it to, but there’s one small feature I need to add or comment out and recompile the rest to fit my need. If your official releases are strictly Visual Studio builds, then mention it. Yes that means *gasp* documenting your project. Heaven forbid. A little 1-2 line README file that’s not likely to get out of sync of the code isn’t going to kill you.
Even worse is if a 3rd party library needs to be installed for the code to compile correctly. Include it in the repository if possible (when licensing doesn’t prevent it), or at least have a README or REQUIREMENTS type document that lets me (as a new developer project) know what else I need to install. Say you’re developing a WPF project, and you’re using a Codeplex project full of controls, then let me know to install it. Don’t let there be a missing reference in Visual Studio for me to spend extra time figuring out what it’s supposed to be.
All in all, I suppose this really boils down to asking “Can you build your project on another machine in one simple step?” or “Does your project pass #2 on The Joel Test?” It really shouldn’t be that hard?