In recent years, large enterprises have been open-sourcing their internal JavaScript technology stacks, with an emphasis on reliability, stability, and maintainability. Geertjan Wielenga explained at FOSDEM’20 the drivers behind that move and how that benefits developers.
Geertjan Wielenga, author of the book Developer, Advocate!, and Oracle developer focusing on NetBeans and Oracle JET recalled the evolution of JavaScript frameworks and libraries in the past decades. Dojo (1.x), Mootools, Extjs, jQuery, and YUI were among the first libraries to get traction and help developers build web applications. Backbone, Knockout, Ember, Angularjs (not to be confused with Angular) then appeared, to solve common problems that developers were facing when building ever more interactive web applications. Grunt, Gulp, Brunch, and other build tools also came to life to manage the developing complexity of building, bundling and packaging rich web applications.
Fast forward to today, three major front-end frameworks, Angular, Vue, and React aggregate the lion share of discussions among developers. Each of these frameworks has gone through their own cycle of deprecation and dreaded breaking changes, as they add new features and increase in complexity.
Wielenga gathered the aforementioned frameworks and libraries into what he calls a first generation and posited that they suffer from three serious issues. First of all, most of these frameworks are characterized by a high level of technological churn that developers have to keep up with. As the frameworks change, the ecosystem around them also evolves, further compounding the issue. Then, Wielenga described incompatible custom stacks as a second major issue that is developing:
If you use Vue, you use seven things plus Vue. […] If you want a component library, […] you go somewhere else for the component library and you go somewhere else for the build system. And as soon as you have a problem and you go online on Stack Overflow and find a solution, it turns out there is a great solution, however, you are not using the two or three things that are specific to the solution.
The specialization of developers is the third issue decried by Wielenga. Wielenga deplored that people are no longer "JavaScript developers", but instead tightly couple themselves to a specific solution:
For the first time in history, we have people identifying by framework instead of language. […] People identifying themselves with a framework is a tragedy.
Concurrently, in the past years, large enterprises have started to use JavaScript in earnest for front-end development. This trend is driven by the ubiquity of the browser as a distribution platform, JavaScript being the standard programming language for browsers, the possibilities offered by mobile devices, and the large pool of young developers fresh out of university with JavaScript skills.
The move of large enterprises to JavaScript however surfaced some tensions:
Large vendors are adopting JavaScript […] to create real, serious applications. […] But in the enterprise space, it is not about what is cool and what is new, it is about what is stable and reliable […] and maintainable in a few years time.
The high demand for developers resulted in a situation where to attract developers, enterprises had an incentive to open-source their stack. Wielenga explained:
As a developer, are you going to go somewhere where there is a free open source technology stack, where your skills that you pick up can transfer somewhere else, or are you going to spend time learning something that is very proprietary and specific to what that particular vendor is doing. […] Simply to attract developers, vendors are forced to move into the open source world to create the kind of stack that would attract developers.
This brings us to what Wielenga calls the second generation of JavaScript frameworks and libraries. That generation addresses the requirements of the enterprise segment first and foremost. Among those requirements figure a stable and proven toolset, responsive design, accessibility and internationalization, data visualization capabilities (key for the logistics, healthcare and finance industries), security, performance optimization, conformance to emerging standards (such as web components), empowering of business users, and documentation and support.
This may mean stacks that do not include the latest, coolest cutting edge technologies, but are stable. These are stacks that: shy away from frameworks, instead revolving around toolkits; emphasize flexibility, modularity and the ease of changing the software; and adhere to standards that will foreseeably still be in place in the next decades. As a lot of developers in the enterprise segment are coming from other technologies such as Java or .NET, and are using JavaScript for the first time, there has to be a low-threshold entry point and out-of-the-box solutions to problems. Wielenga said:
You don’t want everyone in your organization all figuring out on their own what stack they should be using.
Large technological companies, such as Oracle, SAP, or Microsoft, as large employers of developers, naturally participate in the development of the second generation of libraries. Wielenga however mentioned that any large-enough company is becoming an IT company. Paypal, Walmart, Uber, AirbnB, The Financial Times, and more, have also open-sourced parts of their technological stack.
(Source: FOSDEM’20 talk)
Wielenga concluded with encouraging developers to move from the comparison between Angular, React, and Vue to investigating the solutions put in place by enterprises, pick up the one that fits best their requirements, and actively contribute to it.
The full video is available online and contains additional visuals and comments. FOSDEM’20 took place in Brussels, Belgium, the 1st and 2nd of February 2020. FOSDEM is a free, yearly event where thousands of software developers meet to share ideas and collaborate.