“For many, a free software project is the only context in which they can write a program that expresses their own vision, rather than implementing someone else's design or hacking together something that the marketing department insists on”