Your local Dragdealer became more trustworthy
After 3.5 years and two major rewrites abandoned, Dragdealer.js receives a small update
I wrote Dragdealer.js mid 2010. Certainty not one of the most complex programs I’ve written, but by far one of the most successful. In case you missed it, it’s a flexible slider-like UI component with a drag control. After meeting the uninspired client request of replicating the old iPhone slider, I spent a few extra nights to make something reusable of it and put it online.
How it got discovered is still a mystery. I wasn’t active on Twitter back then—nor am I now in fact, didn’t know of Hacker News and had no online presence to take advantage of. That’s how I found out about Hacker News actually, from the referral table column in Google Analytics. Never since could I manage to have a #1 story on HN.
Yet I never got around to release a major update. Surely with the skills acquired in all this time I could write a far better version—I kept thinking, without ever completing the rewrite attempts. One was quite good, it supported infinite levels of drag components inside drag components, with a bubbling mechanism for drag events and sliding transitions to transfer from child margins to parents. But did anybody request this? No. That’s why it would never see the light of day, because solving an imaginary problem takes forever.
But real-world problems did exist. They were just less exciting or revolutionary. Continuing to be a fairly used library, a Dragdealer-related email would land in my inbox every other day. Not many issues, but a few recurring ones. Like the a much needed API method on an incompatibility between desktop and mobile, etc.
Having been the victim of the 2.0 pitfall more than once already, I set myself on a different plan to resurrect this project. One where I don’t find myself at 3 in the AM wondering what am I doing and why.
1. Don’t start coding.
Instead of jumping in to fix the indenting, or even to add helpful comments, just lay out the expected behavior. Pass on the responsibility to a suite of automated tests and forget about the code.
2. Don’t assume, listen.
Instead of fantasizing about life-changing features (that a UI slider can have, of course), just fix the tedious bugs.
3. Enable collaboration.
Move code and demo page (that served half a million views by now) to GitHub (no hard feelings, Google Code.) Most importantly, keep an open list of issues and let good-hearted people keep this project alive.
The plan went through: github.com/skidding/dragdealer. Dragdealer has over 50 tested specs, including the initial behavior and the fixed bugs. The project now has documented code, a relevant CHANGELOG and a helpul README and demo page—a structure ready for collaboration.
Maintaining a small project over the years is hard, and I failed to keep up with it. But seeing how it continues to help people, I realized this project is more about them than about me. This was me trying to give Dragdealer back to its users, and to learn a bit more about open source.
So there you have it, Dragdealer.js went from version 0.9.5 to 0.9.6.