Deck.js Post-mortem Quick Hits
20 October 2011
The project has been and will continue to be an absolute blast. Things are still young and changing all the time, but here are a few of my thoughts so far:
- No going back: This was my first full-on TDD/BDD project. (Waypoints tests were written post-launch.) I cannot imagine doing things any other way going forward. The benefits are immense: up-front API thrashing, reducing unnecessary MVP features, catching regressions, promoting modularity… I could go on for days. The biggest perceived “con”, increased development time, is more than erased by the time saved as a result of the pros. A project with any degree of complexity written by authors at all concerned with code quality will benefit.
- Between clients: I developed deck.js off and on over the course of a few months, in lulls between stretches of client work. Yet another advantage to TDD is that it makes picking up development easier after weeks away from a project. Just fire up the tests, see what fails, and get to work. Overall, this proved to be a great way to smooth out the naturally bumpy schedule that comes with freelancing. Plus building a portfolio of decent open-source projects leads to new clients, either directly through those libraries or as part of your overall résumé.
- You and I are not Marco Arment: For months after Marco opened a GitHub account it sat empty, no projects, but he had hundreds of followers. And for good reason. When you create Tumblr and Instapaper geeks are ready to look at anything you release until eternity. But you and I? Nobody is going to so much as peek at the source of our un-marketed projects. For three months deck.js lived on GitHub without any watchers. We can keep our project code out in the open, broken, miles away from anything that could be called an alpha, without worrying that anybody will use it let alone criticize it. So until you garner the gravitas of a Marco or publish public documentation and marketing material, don’t fret over revealing your source.
- The project page is the project: If your open source thing falls anywhere under the umbrella of front-end web development it will be judged by the project page. When deck.js launched I made the mistake of not providing a print stylesheet for the homepage. Internet commenters deemed deck.js unprintable, despite the fact that the actual library included simplified black-and-white print styles similar to S5. This was my bad. Most people will only look at the project page and judge on that alone. It’s better to spend the time sanding the corners of your public-facing pages than try to explain to your users that they got it all wrong.