Software that is better in principle comes with everything you need. Software that is inferior does not, and someone has to fill it in. They do it by building tools.
Every third-party “tool” is actually a weakness: it’s doing something that either didn’t need to have been done at all, or could have been done better in the first place. However, it creates a community. There’s a way for people to contribute. It’s like a game that leaves little bonuses lying around for people to pocket. If even a novice can make a small contribution, so much better. They feel good about themselves, and now they’ve made a commitment to that ecosystem. The switching costs suddenly became significantly higher.
In the realm I know best, programming languages, this is especially true. And in fact, to be “successful” in terms of size, perhaps every language should start out somewhat flawed: it should have bad scope rules, weird modules, funky overloading, floating points as the only numbers, and so on. To a rational observer, this might seem an awful idea. But programmers, as a species, have gotten acculturated to salt mines as a natural habitat. They will think nothing of it.
From this great rant