Instead, over the last few years I have added two entirely new subjects to my repertoire (mathematical statistics and neuropsychology) to a level where I can read, critique and contribute to the latest research in the field. Over the next few years I plan on repeating this process with other subjects. Comparing this with writing more software about things I already know seems to me to be comparing progress with diminishing returns.
If you believe I'm wrong, I'd love to know why. Convince me there's value in opening up the 20+ projects sitting in my source control.
If it's your project and you're the maintainer, you get periodic free testing, enhancements, and bugfixes from your users. If you're a power user of an open source project and need to patch it for some reason, you first of all have the ability to do that, but secondly if you contribute it upstream your patch becomes someone else's problem.
Basically it's a trade between power users, who contribute enhancements, and project maintainers, who take on the burden of maintaining the project. Usually, the project is useful to the maintainer in some way, and the maintainer now has a better piece of software due to having open sourced it.
For example I just created a small script that synchronizes my photos on Flickr, but that also takes care of duplicates (that were tagged with a machine-tag representing an md5 of the file).
I could just keep it on my computer, and even lose it in case my hard-drive breaks, or I could improve it a little and release it on GitHub -- after which I'd have a backup of my script and maybe even some fixes for free.
Then somebody else might want to do this synchronization in reverse and add his own stuff to this little script.
That's how open-source happens, besides companies throwing projects over the fence, or doing it for the free publicity.
The amount of this is miniscule, in my experience; not only that, but the level of testing and quality of bugfixes is usually so low that it's more efficient to not bother reading emails like that at all. I guess it's different for bigger/other projects, although the dozens of mailing lists I've been on over the years haven't shown many differences.
"but secondly if you contribute it upstream your patch becomes someone else's problem"
This, too, is vastly overstated. I have contributed dozens of patches over the years that were just left in bug trackers or tracs, or were ignored on mailing lists - sometimes because nobody cares, sometimes because people just like to hack on their own use cases instead of somebody else's problems, sometimes because its against the (usually unstated) 'philosophy' of the software.
Not to be negative, there are many useful open source projects, and I use many. But they're usually run by one or a few highly committed people.
I too have a bunch of projects in local repositories - I don't see any reason to open them up. A bunch of projects out there with no activity for 3 years looks quite bad too - once you start advertising your public repos, you have to keep up on them. The trade off is usually not worth it for me (for new projects, that is - I keep the ones I've worked on in the past on the web).
A big part of it for me is the social aspect:
I enjoy sharing my code with others, improving other people's code, and of course using code that is already available so that I don't have to write it myself. But also seeing what other people manage to do with my code is fun.
Another thing that I like about open source is that everything is flexible. If something doesn't work the way I want (or can work productively with), I can fork it and and change it.
Also: If you don't intend to sell some program or library, and you think it can be useful to other people, why not make it open source? That doesn't give you the obligation to support it or write extensive documentation.
I'm genuinely interesting in understanding it, if there was anyone who wants to explain rather than just downvote.
Almost all large, successful open source projects are sponsored by a company with money and they are benefiting financially from the work involved (It might be helping their services or support).
Is this bad for software? Not necessarily, it just results in bug-ridden and outdated code. However, when the same principals are applied to an economy, the results are much worse.
Why would a company pay an engineer with a college degree to build something, when they can get it for free and hire a software mechanic to make changes? It also makes it much easier to farm jobs out to countries like India and the Philippines.
It's still all market-driven. 12+ years ago The Ecosystem for the majority of developers was MS-supplied. These days The Ecosystem is the open source web stack (or -- iOS). Back when MS provided "the grooviest platform", that's what coders built on. Now the grooviest platform is built by many indie lib coders, the majority of whom open source. Since it would be too cumbersome to strike individual commercial-licensing deals with them all, the path of least resistance is open-sourcing too. Then figure out commercializing via hosting services, support services, value-adding extra packages ... the whole freemium.
Why do I enjoy it? I dunno. I think that mostly it allows me to feel karmicly balanced. After all, it's open source technologies like Rails and jQuery that have allowed me to quit my job and work from my own sweet office doing as I please for the most part. Now I can give back, and maybe one day, one of my projects will help someone else do the same.
Also, writing open source projects feels kinda like the geek's ultimate networking tool. I came from the business side of things, and had started getting burned out on networking events. Contributing to open source projects helps me meet awesome like-minded developers from around the world and build productive relationships with them.
You tend to get feature requests, bug reports (with a surprising low level of accuracy) and emails of gratitude. But seldom do I receive ‘Here is patch that allows you to d x, y, and z ‘ emails.
This has been my experience exactly, with everything from my jQuery EasyTabs plugin, to the Remotipart gem, to the Rails jQuery UJS adapter. The bug/feature requests always outweigh the patches-with-tests by a factor of 10 to 1. This is usually when I have to start justifying the time in my mind with thoughts like, "it builds clout for the consultancy, just keep at it." The good news, is even the bug reports/feature requests make me feel good that at least people are using it.
Of course, the status and recognition are nice too. Coming from the non-coding side originally, it's nice to feel accepted by the community.