Styling themselves as the “YouTube of Code”, the new kid on the code-block has some lofty aspirations. Runnable is the latest in a long line of public code repositories. Their stated aim: “to become the central repository for developers to find code”… “to become the default place for developer-oriented projects to store and share code examples.” Clearly, this grand ambition, if achieved, might produce a resource as renowned as the Library of Alexandria (the Stack Overflow of the 2nd century BC). But the road to that pinnacle is littered with the debris from dozens of other websites with similar dreams. How will this site flourish where so many before have floundered? Well, judging by a cursory look at their freshly launched website, I think they’ve got a steep climb ahead of them.
I don’t intend to provide a full review of their site here. Check out TechCrunch or Forbes Tech for that. Instead, I just want to point out a few critiques regarding as-yet missing features that I consider to be critical shortcomings. (I will refrain from mentioning all the little UI quirks and glitches that I encountered; such flaws are to be expected on such a green site…. And big props for launching a full-featured support site to be able to report such bugs.) I understand that this is just their second day live, and many more features may be rolled out soon, but I think it was a mistake to launch without some of these fundamental pieces already in place. IMO, the boys on the dev team better fill these holes quickly if Runnable is ever going to be Viable.
There needs to be a way for the community to bring the best gems to the top. This is probably the most glaring omission, in my opinion. They only have 1000 snippets in their repository so far, but if they actually realize their goal of increasing that number 10x in the first few months, there simply must be a way to distinguish the jewels from the cruft. What social site doesn’t provide a way for users to voice their Likes or Dislikes with a simple ThumbsUp/Down?
One of the main things that the Agile movement has taught us in the last decade is that Peer Review is one of the key essentials to quality code. Currently the Runnable code pages don’t provide any mechanism for peers to add their comments (critiques, suggestions, etc), or for the community to weigh in on issues such as efficiency, readability, elegance, and maintainability. These discussion streams should emulate those at Stack Exchange (or SlashDot before them): allow each comment to be ranked by the community so the best ones rise to the top.
3. Edits (with version control)
I understand that in-page edits are supposed to be available. That functionality didn’t seem to work for me (on Firefox or IE9). But even more important than the ability to edit and run the code on the page itself is the ability for the community to change/refine the code permanently. These code snippets should evolve over time (incorporating new language features or industry-standard design patterns). But of course, in order for such incremental refactoring to be viable, each snippet must be version controlled! Each snippet should be protected with such common safeguards such as version-history, diffing, rollback, and perhaps even merge with conflict resolution. In short, there needs to be a safe way for the community to shape and refine these gems.
If we have learned anything about successful community sites: gamification is critical. Why are people motivated to go out of their way to accumulate meaningless points on a random website? I have no idea. But they are. Give people credit for their code and comments and the upvotes they receive. It would be particularly useful (albeit somewhat cumbersome) to differentiate contributors’ reputation based on language (or at least User Profile pages that clearly display what realm(s) a user’s points were derived in).
I was quite surprised to not find more information about the goals and objectives of the site. This seems to be a glaring omission. The site needs to provide a page clearly stating the rules and standards governing the functionality described above. There ought to be clearly-thought-out policies regarding moderation, edits, etc. I would also like to see a discussion of coding standards (or at least a justification of the lack there-of).
This project is a good idea, and I think it could really go a long ways for providing the interchangable building blocks of the next industrial revolution. But without implementing some of these fundamental changes, I don’t think Runnable will ever differentiate itself from its undistinguished competitors.