What would a web application that does one thing well look like? What would it need to be able to do?
Let's say you want to make a social network application. Whatever that means. What would the use cases be? Just so you know I'm not trying to be complete here.
- User creates an account
- User logs in to his account
- User writes a short post
- User reads a post written by another user
- User updates his profile
- User looks at a profile
- User looks at a list of private messages
- User writes a private message to another user
- User reads a private message from another user
- User replies to a private message
- User adds a friend to his friend list
- User removes a friend from his friend list
- User likes a post / photo / comment / link
- User uploads a photo
- User comments on a post from another user
Each of these use cases should be a small service. For some two or more use cases could be combined, because they're complementary. Currently every service needs to write a new version of these use cases.
For the free and open internet to exist there need services and protocols that allow every user to choose his provider from each of these use cases.
Why doesn't it already work like this? Because we suck.