When I say Free Software I mean it in the FSF terms. Free as in Free Speech, not as in Free Beer.
Why is it a good idea for programmers to use and write Free Software?
There are literally scores of different reasons why someone might choose to distribute Free software: that's why there are scores of different F/OSS licenses. My favorite reason for going Free is from Linus Torvalds on why he chose and sticks with GPLv2:
Me, I just don't care about proprietary software. It's not "evil" or "immoral," it just doesn't matter. I think that Open Source can do better, and I'm willing to put my money where my mouth is by working on Open Source, but it's not a crusade -- it's just a superior way of working together and generating code.
It's superior because it's a lot more fun and because it makes cooperation much easier (no silly NDA's or artificial barriers to innovation like in a proprietary setting), and I think Open Source is the right thing to do the same way I believe science is better than alchemy. Like science, Open Source allows people to build on a solid base of previous knowledge, without some silly hiding.
But I don't think you need to think that alchemy is "evil." It's just pointless because you can obviously never do as well in a closed environment as you can with open scientific methods.
This goes to Eric S. Raymond's Linus's Law:
Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.
Or, less formally, "Given enough eyeballs, all bugs are shallow."
The following is an excerpt from the FSF's free software page:
Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software. More precisely, it means that the program's users have the four essential freedoms:
- The freedom to run the program, for any purpose (freedom 0).
- The freedom to study how the program works, and change it to make it do what you wish (freedom 1). Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor (freedom 2).
- The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
I would have thought that the benefits of the Freedoms to "the programmer" were self-evident. Certainly Freedoms 0 and 1 should be. I guess Freedoms 2 and 3 assume that you might want to help your neighbor ... or have your neighbor help you. But you would need to be pretty short-sighted (or a sociopath) not to recognize the benefits of people helping each other.
The waters get a bit muddy when you start considering corporate interests. But it is pretty clear that companies can and do make money both building and using Free Software, even if your company's management doesn't "get it" yet.
I think that open source is good for programmers.
With open source a programmer can learn from the work of other programmers and have a better debugging session (e.g if the library/framework/API is open source).
The only additional benefit of free software for a programmer is the reuse of existing code, but this benefit is not actually for the programmer, but for the programmers' company.