The unexpected success of PrettyTable

I've been a bit lazy lately with regards to keeping this blog up to date on matters relating to my free software.

PrettyTable, which I released back in February (as blogged here) has been an unexpected smash hit. Not so long after I released it, I thought that since, unlike a lot of my other projects it was of quite general interest and also fairly complete / robust, I'd try something different and put it up on PyPI, the official Python package index and the nearest thing Python has to an equivalent of Perl's venerable CPAN. I figured this would help the project get a little bit of exposure, but I never expected what happened next!

It wasn't even a week before I got an email from someone letting me know how much he liked the project. A little later he wrote a blog entry on it. Motivated by this I released an updated second version, which quickly received a bug report from someone who had been using 0.1 "often"! This user kindly tested a fix for this bug which became 0.2.1. More and more people started emailing me to report problems or suggest problems and eventually even contributing code! Everything that is supposed to happen in the "magic pixie dust" view of open source software was happening and I was amazed, since nothing else I've ever written has received so much as a single "thank you" email. By the time 0.5 was almost readily I was sending regular emails to an impromptu mailing list of 5 or so consistently interested and helpful people announcing changes and asking for feedback. It was starting to become clear that PrettyTable might grow a larger community than I could easily manage by myself with nothing more than a self-hosted webpage and a manually administered mailing list, and on the advice of one of 5 "friends of PrettyTable" I set up a project at Google code. Google code is very similar in spirit to the older and better known Sourceforge project, providing free facilities like file hosting, documentation wikis, mailing lists and version management repositories to free software projects.

The move to Google code, for reasons that still elude me, really thinned out my burgeoning little community. Only two people from the "friends of PrettyTable" mailing list subscribed to any of the new official mailing lists (although other people I'd had no previous contact with have joined them so there's not been much of a net loss). This was a surprise since things had been going so swimmingly previously. The project is by no means in danger of collapsing - in fact, someone from the Debian project, which distributes one of the oldest and most respected GNU/Linux distributions, recently contacted me to let me know he was submitting PrettyTable to Debian's famously large package repositories, which I expect will bring in a ton of interest. I just wish I knew what was so off-putting about the move from a visibly amateur project with hand-manged mailing lists to somewhere with a fairly slick web interface for reporting bugs and other communications. Possibly there exists a misconception that using Google code requires a gmail account or something.

At any rate, I've really enjoyed PrettyTable's rapid growth and the project feels like it is moving in a good direction. I plan to release 0.6 fairly soon, which will be a backward-compatibility breaking release in which the basic API is finalised, in a state which I feel is as clean and Pythonic as it can be. There are a few more features that need to be implemented but I imagine it will be a month or two at most before I have something I am happy to call 1.0, which I am cautiously optimistic will become a somewhat well known and regularly used library.

One question I'd like to have answered is how much of PrettyTable's unprecedented success is due to me putting it on PyPI and how much of it is due to it simply being better or more interesting than other things I've written. I put HTTPeek on PyPI shortly after PrettyTable to try to investigate this, and so far I haven't heard anything about it from anyone. This is probably not enough evidence to make a decision, though, it might be that HTTPeek simply sucks (it turns out a good chunk of its functionality can also be provided by Firefox extensions, so perhaps that's why it gets no love). I'll probably start releasing more stuff on PyPI in future to get a better feel for this. I have quite a few projects under way or at least in my head at the moment, including a web browser with a Tk interface (I've already written this to a pretty complete degree, but I did it in Python 3, to get a feel for the changes, but probably need to backport it to 2.6 before releasing it because the lack of good libraries like BeautifulSoup and the Python Imaging Library on 3.0 is holding me back too much) and a few tools related to the sadly under-appreciated FOAF project.