It is now thirty-three years since I wrote my first 'open-source' public-domain application. It wasn't very good, though it became quite popular because it filled a need, and it started a habit with me, as it has with many other people; and thanks goodness, because we all benefit. Occasionally though, I do wonder, given the countless hours of our lives that it consumes: why do we do it?
Some do it for noble reasons; they learned how to program by obsessively studying the public domain code of some of the masters and wish to repay the debt. My particular guru was Jonathan Sachs, who is most famous as the developer of Lotus 123, but who also contributed to the Public Domain. Some do it to publicize their portfolio of creative work; nowadays it is often said that a healthy Github is almost an essential adjunct to a CV or resumé.
I'd like to say that I started public domain coding to repay a debt to Jonathan, but in truth I suspect that I do it merely through an affliction of cacoëthes scribendi, the itch to write. And, for me, this is perhaps the one downside of open source code; I am by instinct a writer of software, not a maintainer of it, and the snails-trail of software developed over the years can haunt you for a long time. One can't "pass on" open source code in the same way as commercial code. When leaving a software company, there is that wonderful feeling of lightness, as though one had shed several layers of skin. No more support calls, or lazy developers who'd rather pester you than read your documentation. It is different with public-domain code. Unless you change your name, or manage to successfully disappear, there will always be one more maintenance task that needs doing, or at least the feeling of guilt that you're not doing it.
Of course, the upsides are many. For a start, it is a most effective School of Hard Knocks. It kills stone dead any lingering sense, in a hotshot developer, that he or she is proof against failure. A feeling persists among many that if only one could break through the inertia, the general passive foolishness of one's colleagues, and the interference of management, surely it would be possible to create an application that would change the industry, just as Jonathan Sachs did with Lotus 123?! There is no better cure for this delusion than spending weeks and months of one's spare time lovingly hand-crafting an application of impeccable coding-standards and ingenuity, of industry-standard resilience, and then finding that one can't even give it away. Several times, this has saved me from financial disaster.
The biggest upside though, of writing Open Source software, is that it gives you the chance of communicating, via your code, with an audience other than just your fellow team members. Sometimes that audience will be just a couple of geeks, but just occasionally, you might create that wonderful application that everyone needs. In the mid-eighties, I wrote an application for doing invoices and accounts for small businesses on very cheap computers. It is still being used in MSDOS and Linux, as an essential part of some systems for testing line quality in telecommunications, and I still get people writing to me about it!
You never quite know what is going to happen with something that you write and put out into the wild; the odd occasion where that software becomes truly appreciated is such a pleasure, and is what keeps me, and doubtless many other sufferers of cacoëthes scribendi, going.