I'm completely floored how our friends at Shopify have just lapped Amazon and eBay by providing an open API and sticking to their principles. On their 3rd anniversary, original Rails core team member Tobias Luetke explains the rationale behind the new Shopify Application Store in this post:
However, there are a lot of common elements to every e-commerce store. There is this small nucleus of core functionality that all software has to provide (and most do). These are things like inventory management, order processing, payment processing, shipping support and so on. Shopify excels at all these things—our customer satisfaction rate is north of 90%. However after you are done with all those features something funny happens. The next feature everyone wants is different for each store. Some people want live auctions, some people want a wholesale area, some people want community forums, license key generation, digital delivery, integrations with MS Commerce Server, Oracle Inventory, international tax form printers, etc.
None of these features is particularly hard to implement. The problem is that they fail our basic test which we use to determine whether we should implement a feature or not: Do most of the people need it most of the time?
Tobi makes it sound so simple; in reality he’s fought off demanding customers and the advice of everyone from VCs to old-world European grandmothers who demand Important Things. These are people who are not used to being told that their benign but ultimately selfish wants are not in the greater good. His team knows that the moment you say yes to one person’s pet feature, everyone else wants to know why you can’t add this “simple” idea and that “obvious” module.
Today they are launching with 7 plug-in modules that you can use to customize your Shopify store; I predict that there will be a few dozen by the time FutureRuby rolls around.
This move towards opening up your platform’s core functionality for enhancement is a very literal and exciting interpretation of the PDI (please do investigate) culture that runs deep in Rails; instead of saying no to a feature request, point out that if it’s important to someone then they can do the work to see it implemented. Only now, you can get people to pay you for it, too.
Which “basic assumption” of the web do you think will get turned inside-out next?