You’re right, of course. But I think that if your goal is to build a robust system, protocols win.
If you want to monetize your users, then you absolutely need that walled garden and ease of use that a program provides. If you have a protocol based application, then you can only really monetize the service, not your users. For example, only a few email providers have enough users to sell ads (Gmail). There are far more providers that sell the service as opposed to advertising to users.
Although, I will admit building a robust protocol is difficult. It is much easier to iterate a feature set if you only have to worry about one implementation.
But this is a trade off between short term gains at the expense of the long term.
Email for all its warts will still be around in 10 years. Can we say the same for Slack?
If you want to monetize your users, then you absolutely need that walled garden and ease of use that a program provides. If you have a protocol based application, then you can only really monetize the service, not your users. For example, only a few email providers have enough users to sell ads (Gmail). There are far more providers that sell the service as opposed to advertising to users.
Although, I will admit building a robust protocol is difficult. It is much easier to iterate a feature set if you only have to worry about one implementation.
But this is a trade off between short term gains at the expense of the long term.
Email for all its warts will still be around in 10 years. Can we say the same for Slack?