Please Rescue My Stagnant Software

In the 2.5 years since I left Google, stopped working and moved away from Silicon Valley, my motivation to write code has waned and reached an all-time low ebb.

There are many reasons for this. For example, I’m father to a busy toddler these days, I’m no longer surrounded by brilliant geeks who fire my imagination and make me research new technology, and I rarely happen upon a need for a piece of code that hasn’t yet been written.

Indeed, with very few computer systems to set up at home and no professional programming assignments to send me off on weird and wonderful coding tangents at home, the only piece of code that has seen regular development over the last year has been my TV guide data grabber for the Dutch cable TV network, UPC. Unless you were a Dutch MythTV user whose cable company was UPC, you wouldn’t have noticed this. It’s not exactly been my top download.

Even maintenance of my old projects has pretty much ground to a halt. You see, most open source software is born of a personal need. Necessity is the mother of invention, as they say. If code to solve a certain problem didn’t exist, I had to invent it, assuming it was within my capability; which it fortunately sometimes was.

Ruby/LDAP is a good case in point. Although I didn’t start Ruby/LDAP from scratch, it amply illustrates what I’m talking about.

After submitting a series of patches to Ruby/LDAP in 2003 and becoming frustrated at their slow rate of inclusion, the then maintainer tired of my e-mails and offered me the role of maintainer of the software. He had lost interest in the project, because he had long since stopped working with LDAP. See what I mean?

Anyway, I jumped at the chance. In the next year, development was rapid. I added a lot of features and fixed a legion of bugs. The development roadmap was easy. The use of LDAP at Google was exploding at the time, much of which was happening under my guidance and supervision. Every time a new need was found that logic dictated should be solved at the library level, it went on the Ruby/LDAP to-do list and was implemented by me not long after. I didn’t need to spend much time thinking about which new features should be added, because they simply presented themselves to me in the course of doing my work.

These days, things are a little different. Not only do I no longer have a need to manipulate vast quantities of data in LDAP directories, I no longer even have ready access to working LDAP servers full of real, live data. Granted, I could set up a server at home, populate it with junk, and use that to test my library against, but without real-world problems occurring to me, it’s not obvious which course development should take. In this scenario, the only real work that happens is the fixing of bugs.

It’s the same with most of the software I have produced in recent years. The conclusion is simple. Once I cease to use a particular technology, my interest in it eventually drops below the level required to continue maintaining software. Sometimes the technology is no longer used because I am no longer in a professional environment (Ruby/LDAP, Ruby/CorporateTime), but it can also be because I have ceased to use it at home (bash completion.

Another reason software development can grind to a halt is because it reaches the point that it satisfies all of my personal needs (Ruby/Password, Ruby/DICT, Ruby/Finance, acoc, the very ancient signature.

The upshot of all of this is that most of the software that is under my wing for maintenance has badly stagnated.

In spite of promises to the contributors and enthusiasts of my various projects, I have languished and failed to make available public source repositories, mailing lists and the like. Such resources would have allowed the development of the software to continue, in spite of my current apathy.

Part of the problem has been in not wanting to let my babies go. bash completion, in particular, was started by me from scratch and has been very successful. Whilst I haven’t made a cent from it, it features in many Linux distributions, has been in the Freshmeat most highly rated projects top 10 for many years and has featured in several magazine articles. Not bad for a piece of code that I started just to keep myself busy in the evenings, whilst killing time for a month in Canada, waiting to re-enter the US (it’s a long story).

Rightly or wrongly, I’m quite proud of that software, but that pride has got squarely in the way of its continued development. In not wanting to relinquish the reins of control and any vague geek recognition that might have afforded me, I have instead allowed it to stagnate. Its last release was over 18 months ago.

Well, I have seen the error of my ways and am now prepared to act. As of this moment, I am declaring all of my software eligible for adoption by new parents, with the exceptions of my MythTV data grabber and Ruby/Amazon. This latter project has, in spite of everything I’ve said above, seen some recent work and I still intend to release a new version within the foreseeable future (but please don’t hold your breath).

In particular, bash completion and Ruby/LDAP urgently need loving new homes. If you are reading this and would like to become the new maintainer of either project, please get in touch. Be forewarned, however, that you will need a fairly convincing argument to become the new owner of bash completion, as it needs a skilled and dedicated developer (yes, yes, even though I haven’t been that myself recently). Ideally, you will have been a reasonably prolific past contributor to the project, thereby having already proven your candidature.

If I don’t find new homes for these waifs and strays soon, I will scour my old e-mail for likely candidates and approach those myself. In fact, I may do this anyway.

So, it’s open season on my old software. Let me know if you’re interested, explain why and where you plan to take future development, and you could find yourself the owner of a mouldering CVS repository.

This entry was posted in Hacking. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *