I started Magithub a little over a year ago. Since then, I've had the wonderful pleasure of seeing it grow from a few lines of hacked-together Elisp to a (mostly) organized, self-sustaining product that seems to add real value to folks' workflows (though there remains much work to be done). Over its lifetime thus-far, members of the community have asked for features, for support, and have let me know about tricky bugs that I've overlooked (whether it's for GHE, which I don't use, or for massively popular projects which give real meaning to the phrase 'limit testing'). It's spawned entirely new generalized technologies, pushed the limits of existing technologies (perhaps prematurely), and has altered my perspective of Magit itself, the project on which it's is based (and into which it's integrated).
Sometimes I ask myself how this has come to be. Why do some projects fail and others succeed? What's responsible for the growth of the communities that surround these projects? There are many projects that would seem to satisfy a few base traits:
- Applicability – fill an existing need, conscious or not
- Availability – relatively easy to get/install/setup
- Accessibility – relatively easy to use
Another quality could be timing, but this still doesn't account for the disparity. Of 57 repositories originating from my profile, I'd say about two-thirds are for general audience (i.e., neither purely personal nor limited in usefulness to a small (<10) group of people). There are only two projects I'd say were successful (perhaps three) – one being Magithub and the other being a StackExchange client. Now, I don't want to sound indignant or arrogant – I'm immeasurably proud and fulfilled to be a part of work that impacts other folks' lives in some small way – but, why only these two? What made them special?
My best guess to date: luck. I've published 57 projects. 55 of them were useful to me, maybe 40 of them could be useful to other people. I published them in the hopes that they could be useful, and perhaps someone's been able to glean some purpose or enjoyment from them. The truly successful ones though are only successful because, for some reason, they sparked an interest from the community that fed back into the project as added effort and dedicated time.
If you want to create something useful, be happy with 'useful for me'. Don't be discouraged if it doesn't take off. Create for yourself and share with others often – you might just chance upon a common need. Happy hacking!
Have you noticed any trends in projects that 'go viral'? I'd love to hear your thoughts in the comments.