The draw of a platform is an amazing thing. There are some good reasons Microsoft .NET, Drupal, Wordpress, and many other platforms have had such great success and developer devotion. I've even seen glimmers of this in why I like the Go programming language.
For a long time I didn't understand the draw of the platform. I was content to write my own libraries, craft my own patterns, and build some fun things with duct take and bailing wire. What I ended up creating was my own small platform built around my preferences.
When I realized that maintaining my own platform was too much work I moved on to Drupal. To many it's just a CMS you can extend. A product. But, there was more to it than that. There were add on modules showing the first glimmer of an ecosystem. Since I started using it there have been books written, companies with value added services, development tools, IDE plugins, and so much more. As the platform grew so did the community.
My theory is that decision paralysis and ecosystems lead people to platforms.
Making decisions isn't easy. Studies have shown that making decisions often leads people to fall back to their default behaviors. It's easier that way. If you are building or managing your own platform you have to make a lot of decisions around features, what packages to include, and so on. For those of us who aren't building platforms as a business, it's just easier if someone you trust does that for you. Then you're free of having to make decisions about the platform and can focus on the product you're building on top of it.
Note that open source platforms can enable something between doing it yourself and going with what someone else hands you. Many people can shape an open source platform working together. The concerns you care about are the ones you can contribute to.
A programming language, some libraries, and your base system aren't typically enough to excel, either. There are expectations of more. Build tools, testing setups, deployment methods, IDEs (vim and emacs aren't enough for the masses), and more. And, they all need to work together fairly seamlessly. This is the ecosystem.
Ecosystems make decisions easier. In the ecosystem you pick a tool from one of the go to tools for this ecosystem. There may be a few player that differentiate from each other and you choose the best fit. Then the tool you picked fits in with the rest of your setup.
Choosing something from an ecosystem is far easier than choosing from all the possible solutions and figuring out how to integrate it into your setup.
While we debate programming languages we end up being drawn into platforms. Languages are apart of a platform but not the whole picture.
There are a few reasons I find realizing this to be useful.
- If you're building a product know where it fits in the platform picture and how the ecosystem works. This will help you build, market, and sell the product.
- When you're debating tool chains and programming languages take a step back and look at the whole platform. You'll get a clearer picture of the space.
- I find it useful to know myself and try to understand why and how others operate. Knowing how developers relate to their platforms is useful when working with them.