We are in the midst of an industry-wide trend towards fragmentation [coverage]. From databases to operating systems to mobile platforms to web servers, we’re seeing a shift towards specialization and away from general purpose. Programming languages and runtimes are no exception to this rule.
Available data suggests [coverage] that runtime fragmentation is in indeed in full swing. The growth of traditionally accepted enterprise platforms like Java and .NET is slowing or reversing, while lightweight dynamic alternatives see accelerating adoption with mainstream acceptance on the horizon. The question is why?
Developer frameworks are one partial answer. Besides the virtues of the dynamic languages themselves – less code, simpler syntax, a lack of compilation, and so on – the frameworks built on top of them are a catalyst for application development. The MVC scaffolding generated by the Rails framework, for example, is generally uninteresting from a developer’s perspective, so less time spent on it and more on application features will in most cases constitute a win.
Which is why it is not surprising that we’re observing a correlation between framework popularity and associated programming language uptake. The data suggests that high growth in a programming language is, in part, a function of framework adoption. Consider the popular languages on GitHub at present:
Dynamic languages occupy the top three spots – JavaScript, Ruby and Python. Each of which counts one or more important frameworks to its credit.
Nor is this an artifact of GitHub’s very progressive developer base. As documented previously [coverage], Black Duck’s repository shows a general decline in the usage of languages such as C and Java; a contrast to gains for the aforementioned JavaScript, Ruby and Python. Each of which, of course, has one or more popular developer frameworks to its credit, such as Django (Python), Node.js (JavaScript), and Rails (Ruby).
Nor has this shift gone unnoticed. Predictably, increased traction for dynamic languages across a range of contexts has produced a commensurate rise in commercial interest around emerging language environments and runtimes. Case in point the stealth startup we spoke with last week which is commercializing an alternative JVM based language stack. By itself, this is non-controversial. With the viability of non-Java languages on the rise but the JVM still the de facto enterprise platform, the demand for paid non-Java JVM runtime support options is likely to create commercial opportunity. What was interesting was the fact that the stack stopped short of including a development framework.
The relevance of development frameworks has not been entirely lost on commercial players, however. VMware’s acquisition of Springsource [coverage] is perhaps the best example of a commercial vendor using one as both an entry point and accelerant. And yet the commercialization of framework opportunities has, to date, been effectively limited to cloud platform providers (e.g. nodeSocket/Joyent with node.js, EngineYard/Heroko with Rails, or Djangy/Google with Django). Traditional middleware, stack and tooling vendors have otherwise been slow to leverage development frameworks to help increase the viability of their product line. With obvious exceptions like ActiveState, appendTo or Sencha, support for dynamic languages and the frameworks that make them more compelling is limited.
This asymmetry can largely be explained by typical workload. Cloud tends to attract new application development, which explains the relative popularity of development frameworks on those platforms. Traditional middleware and tooling vendors, meanwhile, are more commonly serving existing applications which besides being ill suited for frameworks like Rails are likely to be unacceptable options to enterprise IT. The first conversation any new vendor has with customers about replacing (read: rewriting) legacy applications in a new language and development framework will be its last.
And yet the observable growth of developmental frameworks and the resultant fragmentation in runtimes points to more subtantial, long term commercial viability for parties seeking to widen their developer visibility. Just as IBM once saw fit to hedge its Java investments via a dynamic language in PHP, there remains sufficient oxygen in the market to support specialized runtimes. It is imperative that vendors to understand where these languages are successful, however, and why. Which means understanding development frameworks such as Node.js, because they are core to adoption.
Open source development frameworks offer much of the benefits tooling once promised with few of the limitations. Even popular projects like Hadoop can afford to widen their addressable market; while Hive and Pig are not, technically speaking, frameworks, they are functionally similar in that they streamline the development process.
Developer time is precious. Especially to developers. So don’t forget the framework.
Disclosure: ActiveState, Black Duck, GitHub, IBM, Joyent, Salesforce (Heroku) and VMware are RedMonk customers, while appendTo, EngineYard, Google and Sencha are not.