This post by Albert is awesome/eery because I have an idea ruminating in my mind that is of the same framework.
First - question every feature. Does this feature support one highly specific use case or is this something that supports many use cases? When in doubt, leave a feature out.
Second - avoid “pollution” from use cases. If someone is using the service in novel ways, their usage shouldn’t pollute the service for others. For instance, services such as Tumblr and Twitter make that easy because if someone uses it in a way you don’t like you simply don’t follow them (or unfollow them).
Third - and this one should not be controversial - launch with an API or make an API available shortly after launch. This lets others add features for supporting specific use cases on top of what you are doing.
stay tuned :)