Software ecosystems are vital to a developer's success. It's hard to place a value on the benefit derived from being able to lean on other's experience, as well as easily find and digest content that's relevant to your project. Ecosystems don't just sprout up overnight though. It takes the right timing, the perfect conditions and lots of love and cultivation. Trying to actively create a new ecosystem around a product or platform is a lot like terraforming.
On March 24th, 1961, Astronomer Carl Sagan wrote an article proposing the planetary engineering of Venus. This is the concept that a planet can be altered (made more like earth) to support, sustain and foster life. This is also sometimes referred to as "Terraforming" in science fiction novels and movies. Even though the word is awesome, the concept sounds a little crazy, and frankly - it is.
In his article, Sagan describes possible ways of making Venus a place fit for humans. This included suggested removal of the atmosphere of Venus, and compensating for it's ridiculously slow rotation with a system of satellites and mirrors. It turns out that it takes longer for Venus to rotate than it does for it to make a complete orbit of the sun. This makes days on Venus longer than years.
Terraforming Sounds Hard
Clearly, creating an ecosystem from scratch is hard if not impossible and you need one to survive. You don't even have to be trying to live on an engineered planet to feel the effects of this. You might simply be buying a new car. If you buy that expensive imported car that nobody else is driving, you may have a really hard time finding parts for it when it breaks down. This makes it very expensive to do even minor maintenance.
This is also true for developer tools. Pick one that nobody else is using, and regardless of how good it is, success is going to be very tough. You might as well be on Venus all alone. Conversely, thriving developer ecosystems are "pits of success". You can't lose since the ecosystem itself really won't allow it.
Gauging The Health Of An Ecosystem
When choosing a platform for an application, it's really important to gauge the health of the community that surrounds it. There are many many ways measure this: websites, blog posts, conferences, newsletters, open source projects, arbitrary statistics in blog posts - the list goes on.
While it's very difficult (read impossible) to accurately compare frameworks and tools to say which one has a more vibrant community, one way to establish a baseline is just to look at StackOverflow.
Lies, Damn Lies And These Here Bar Charts
Now before you say, "OMG that's a completely unfair comparison", allow me to recognize up front that you are absolutely right. Not every community is centered around Stackoverflow. Some are more vibrant on IRC or GitHub. This is just a baseline so take it with a grain of salt.
I have broken up the measurement into two categories to make it more "fair".
Core tools would be the lowest level languages that we program in...
Way to go Java! You’re still number one.
Abstractions are tools people have placed on top of these frameworks to make coding more fun and frankly much easier. While coding without a framework does in fact make you a hardcore hipster, most people will be using a framework of some sort at some point in their application. I identified the following when building web and mobile apps, which is by no means a complete list...
- ASP.NET MVC
I then laid these abstractions on top of their corresponding 'core' to get a look at how much activity we're really talking about here.
What you will notice here, is that the Android and Java combo comes out on top. That makes sense when we look at the number of devices being sold and the amount of Android activations per day.
Look at how many more questions there are about Android than JSP. It’s almost as if we’re in a mobile revolution or something.
Another interesting takeaway is that even with the ridiculous popularity of iOS, it is still not enough to tackle PHP. I also thought it was quite odd that the most popular framework (by some standards at least) for PHP - Laravel - makes up a tiny fraction of total PHP questions. You PHP folks are indeed hardcore!
Building on a core is a given. Building on or integrating with a popular core abstraction is even better since you get the full benefit of the entire ecosystem. That’s why choosing a tool or platform is one of the most important decisions that a developer will ever make. In the end, you have to decide - do you join, or do you terraform.
Join Or Terraform
Should you take part in a thriving ecosystem, or do you risk a trip to Venus? Maybe you are the intrepid first settler, paving the way for others. Maybe the atmosphere will be fixed and mirrors will shorten the 5,391.6 hour day. Maybe the masses will come. Maybe they won't.
We've long observed these trends at Telerik. As a maker of developer tools, our success is defined by what you are able to create using our tools. It therefore makes the most sense for us to contribute to massive existing ecosystems instead of trying to engineer new ones.
In the spirit of the impending Valentine’s Day, let me break down the lovin' for you.
When we first built Kendo UI, we had the terraform dilemma. We realized that while we didn't "need" jQuery to build a UI framework, it paid enormous dividends to the developer if we did. Using jQuery as the core of Kendo UI had some immediate benefits for developers:
- You are probably already using it
- The API is immediately familiar to developers
- The errors are going to be fundamentally the same
- Developers can leverage what they and others already know
// if you know how to do this...
// then you already know how to do this...
A side benefit of this was also the fact that we got to give back to the jQuery project! Seriously. We work with jQuery a lot. We love it. When we find what we think may be an issue, we send a pull request.
In order to build responsive sites, you have to have a CSS framework that allows you to build grids and stack grid columns. When we were looking at making all of our widgets responsive, we had the option to implement our own CSS framework. That would have made our job much easier, but it would just be another thing for developers to learn.
Instead, we made our widgets responsive to their respective container (whatever that might be), and built a first-class integration with Bootstrap. The goal is always to accelerate your development. If you are forced to adopt a layout framework that you would really rather not use, then we've essentially asked you to be the first settler in our terraformed colony on Venus. No thanks.
When we created AppBuilder to dramatically accelerate your hybrid development, we had the option to fork the existing Cordova framework or just flat out create our own. Again, while this is convenient for us, it's a burden for you and it doesn't help the community. We can all be much more successful if we work together to cultivate the same ecosystem. Even I'm a Cordova contributor!
Using Cordova as it is means that by using AppBuilder, you can immediately take advantage of the existing Cordova community. You can also use PhoneGap and Cordova plugins just as you would in a standard PhoneGap project. The configuration files are the same. AppBuilder is a powerful tool, but primarily because it is built on a very vibrant ecosystem.
A huge shocker here, but it turns out that most databases are not like Northwind. Most projects are not started with a clean slate. In the real-world, most software is built on years of technical debt. That makes developing solutions incredibly complicated. It also means that you will face issues that others have faced as well. That’s why we embrace Stackoverflow at Telerik.
We encourage developers to post their questions to Stack Overflow. Not only can we answer your questions there, but the poor soul who also had to link together 4 different SQL databases to do a single query is also there. By being on Stack Overflow, you not only benefit from Telerik’s knowledge, but you also get access to the developers who have gone before you and have done the complex, the impossible and even the ridiculous.
Awe. See what I did there?
One of the benefits being an industry leader in UI components for over a decade is that terraforming comes as sort of a side-effect. When you start out, never in your wildest dreams do expect to one day have over 1.3 million community members and 130 thousand customers spread across 94 countries.
The Telerik Forums currently have nearly 1 million posts, with around 2 thousand (give or take depending the date) being read every single week. Even our premium forums where customers get a guaranteed response time are publicly visible and indexed by Google. It does nobody any good to create a walled garden where you first have to be a member to even get an answer to the most basic of questions. Experts Exchange anyone?
Don't Go To Venus
Venus is far away and it's seriously hot. It also has clouds made out of sulfuric acid and days are forever long. Picking tools and frameworks that have or are part of existing ecosystems is a rock solid way to ensure that you won't be wandering the Venus of software development in desperate search of another soul to talk to. It also ensures that when you crack open that all powerful developer tool we like to call “Google”, you are going to find yourself in very very good company.