Diaspora’s Open-Source Development Mantra
We have never explicitly communicated the important mantra by which the core team lives and dies. That is the following: “When building a new feature, first create the simplest thing that works.”
Why? There are many reasons why creating the simplest thing that works is better than making the perfect feature right out of the gate. These are the following:
One, it allows you to fail faster. All new features seem like great ideas at first. But if people don’t use them, you should kill them quickly to keep your technical debt as low as possible. Having less code to maintain means faster development of new features that you may <3 more.
Second, it allows us to see how you will actually use such a feature. We may have a hunch, an idea, or a good feeling about it, but we never know how it will be received until you actually experiment with it. The ideal is to build the simplest experiment that we can so we can see you actually using the new feature, get real-world metrics on how you use it, and how well the new feature works for you, and if you like it, we can then invest more time and energy into making it perfect.
Third, it allows us to optimize our limited attention spans. We work on Diaspora every day, all day, and we <3 it very much. But there are so many touch points for us (e.g., front end, back end, pod federation, open-source development, grassroots community, fun tangents, and so on) that the less “needy” a feature is, from both an upfront development and maintenance cost, the better.
Finally, it enables us to make sure that we keep Diaspora as clean and user-friendly as possible for you, while avoiding the feature creep that often undermines great technological ideas from improving people’s lives.
As such, whenever you think of a new Diaspora feature you’d like to see, ask yourself the following: What is the most basic, specific thing I could ask for that would work? Then, submit it for community consideration at http://getsatisfaction.com/diaspora/. (If you don’t feel comfortable with GetSatisfaction, then submit it to email@example.com.) The benefit of GetSatisfaction is that it allows the entire community to vote on the features you want, and then the open-source development team can focus on creating the simplest thing that works for you to bring popular features into fruition quickly. Once implemented, if we all hate the new feature, we can kill it, and do something else. Or we can iterate a new version, and try again.