BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News 2nd Generation JavaScript Frameworks & Libraries: beyond Angular, React, and Vue!

2nd Generation JavaScript Frameworks & Libraries: beyond Angular, React, and Vue!

Leia em Português

This item in japanese

Bookmarks

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.

Oracle FOSS Architecture
(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.

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Frameworks

    by Isaque Oliveira,

  • Already done?

    by Matthew Hartstonge,

  • Punctuation!

    by Jinren Church,

  • This is a licensing trap

    by srinivasan balram,

  • boo "Stability"

    by srinivasan balram,

  • Comment for Geertjan

    by Richard Clayton,

    • Re: Comment for Geertjan

      by Geertjan Wielenga,

      • Re: Comment for Geertjan

        by Richard Clayton,

        • Re: Comment for Geertjan

          by Geertjan Wielenga,

          • Frameworks

            by Isaque Oliveira,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            React ( react.org/ ) It's JavaScript library.

          • Already done?

            by Matthew Hartstonge,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            I feel emberjs would fit the description of what you are looking for here...

            Ember's main aim is for stability. They have a very clear release cycle and have just cut a new 'edition' which doesn't break compatibility with older ember apps.

            If there are breaking changes or new best practices, the core team create codemods which can be run when upgrading between versions. Hell, they made ember-cli which has been absorbed and used by every other framework.

          • Punctuation!

            by Jinren Church,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            When using 2 words together as an action (verb), they need to be hyphenated. For example :
            "In recent years, large enterprises have been open-sourcing their internal JavaScript technology stacks".

          • This is a licensing trap

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            This is an elaborate licensing trap for open source from -- Oracle/SAP/Microsoft. And the red herring is Java/.NET devs finding it difficult to figure out Angular/React. A variation of embrace/extend/extinguish -- advocate/appropriate/abolish. Advocate for Java/.NET devs, appropriate open source JS ideas, abolish open source competition. These 3 can be begin to be trusted regarding their motives towards open source only when -- Oracle open sources Oracle db source, SAP open sources ABAP/SAP server source, Microsoft open sources Windows/Office source. Short of that, all these "gestures" towards open source are entertainment. They approach open source as a river of "free labor", which they can "dam" to defray their legacy framework migration costs with baked-in proprietary links.

          • Re: Already done?

            by Daniel Lo Nigro,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Ember's main aim is for stability.


            React is very similar in that regard. React components I created in 2013/2014 still work today with only minor changes that were handled using codemods. Sure, there's new React APIs coming out (such as "hooks"), but you don't have to use them, and the older approaches still work fine.

            Facebook runs the latest unreleased alpha version of React in production, the same version across the entire site, and have tens of thousands of React components. If the React team make any breaking changes, they have to figure out how to automatically update all the existing components, or how to avoid breaking the existing API.

          • boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Oracle JET/ SAP Fiori, UI5/ Microsoft ASP.NET -- all heavily borrow/integrate with jQuery. So, for these Oracle/SAP/Msft , to move to anything newer (React/Angular/Vue), they have to spend retool their frameworks/toolkits periodically which will cost them. So, what would be a way for them to defray those costs? Bring boogeyman "stability" -- howl "who cares about cool or cutting edge or innovative? enterprise needs stability" -- suddenly React/Vue/Angular are all not so stable because they evolve quickly and innovate at a pace at which geezers (Oracle/SAP/Msft) can't keep up with. Blame devs who use React/Vue/Angular -- tell them they are soln specialists who are not JS devs. Now, how can these soln devs absolve themselves? Contribute to frameworks/toolkits put out by 3 wise men of enterprise (Ora/SAP/Msft). Spin those frameworks/toolkits as 2nd gen. Claim those devs will be saved from being "unstable". Net-net, what these 3 co's want is to find opensource labor who'll help their stone age jQuery based frameworks.

          • Re: boo "Stability"

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Nope. Oracle JET does not use JQuery. Everything is Web Components for some time already.

            And did you actually read this article? It’s about a lot more than Oracle, SAP, and Microsoft. It’s also about Paypal, Uber, and more: some of them use React, some of them use Angular, i.e., the point is that these organizations bundle multiple different technologies together and make their bundles available on GitHub — and also contribute to them (e.g., Oracle contributes to Knockout).

            The argument is not against React or Angular at all: it is about how bundling these kinds of technologies together with their dependencies makes for compelling alternatives provided out of the box by several large enterprises.

          • Re: boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            The Oracle JET distribution includes only the jQuery UI modules needed by the Oracle JET framework, but you can add additional modules manually to your application if you use RequireJS.
            docs.oracle.com/middleware/jet320/jet/developer...

          • Re: boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            I did read. I did not dispute Oracle's contribution to open source. I disagree with your broad brushed recommendation that somehow some large enterprises finding some bundling useful to be a great soln for everyone. And it is a heavy handed recommendation that, doing comparisions and developing new frameworks is somehow inferior to meeting the needs of "stability" for legacy enterprises who move slowly. Sitting on jQuery over the last decade is a "stability contribution" from Oracle/SAP/Msft? Really?And quoting Paypal/Uber was a red herring

          • Re: boo "Stability"

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            You are aware that you are referring to Oracle JET 3.2.0 documentation... while Oracle JET 9 has just been released?

          • Re: boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            There are many rich visualization alternatives -- d3, rickshaw, p5 etc. Your article sounds like rich visualization is something only a large enterprise can think of. Trade-off that cutting-edge innovation in open-source should stop for some large legacy enterprises to catchup is crazy.

          • Re: boo "Stability"

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Red herring? Take a look at krakenjs.com, which is Paypal’s enterprise toolkit, based on React. Are you aware of what Uber and AlrBnB are doing in the same way — bundling and open sourcing their technology stacks?

            All I am suggesting is that rather than comparing Angular to React, maybe compare Paypal to Uber. Is that very controversial to you?

          • Re: boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            sapui5.hana.ondemand.com/#/topic/a075ed88ef3242...
            SAP UI5 was based on jQuery as well.

          • Re: boo "Stability"

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            I don’t think you read this article at all. :-)

            All I’m saying is that large enterprises have been bundling technologies, and contributing to them, and making them available on GitHub.

            And so rather than using React, you can use Paypal’s well proven and tested technology stack that includes React, so that you don’t need to create your stack from scratch anymore.

          • Re: boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            :=) that's exactly the disagreement. Every stack has trade-offs. And those trade-offs are never spelled out.

            So, saying that just use some stack, prevents stack innovation :)

          • Re: boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Can you point out to any organization who has put out a stack -- explaining why they did that when there are many other orgs who already have put out a stack?

            Or any comparisons which were done to say -- these set of stacks are "technically"
            superior to these other stacks?

          • Re: boo "Stability"

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            No, I don’t think anyone has ever said “just use some stack”.
            Instead, where some years ago you would simply compare Angular to React to Vue, now you can compare Paypal (see krakenjs.com), for example, to Walmart Labs to the Financial Times.
            All of these are on GitHub. That wasn’t the case some years ago. It is now. And that’s what the presentation I did (when I was at Oracle, now I am in Azul) was about, which is the basis of this article.
            I can’t explain it more than I now have. Maybe watch the recording of the presentation, linked above.

          • Re: boo "Stability"

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Probably all stacks were based on jQuery at some point...

          • Re: boo "Stability"

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            krakenjs.com — that’s Paypal’s stack. But read the article or watch the recording of the presentation again. All the links to the stacks I refer to are referenced. Uber is on GitHub, AirBnB is on GitHub, etc.

          • Re: boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            There are (were) stacks based on riot, dojo, extJS, yui, gwt/vaadin (not pure) -- few others --jQuery is/was big

          • Re: boo "Stability"

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Right. And so it makes sense to learn from those stacks and it’s interesting to see that various enterprises have been open sourcing theirs, which is helpful when chosing your own.

          • Re: boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            www.oracle.com/webfolder/technetwork/jet-320/gl...

            So, is Oracle JET going from version 3.2 in Sep'2017 to version 9.0 in June'20 is proof of enterprise stability?

          • Re: boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            "Is that very controversial to you" -- it's controversial -- because how can we embrace or spend time evaluating stacks, without fully knowing knowing how frameworks/toolkits on which those stacks were built compare?

          • Re: boo "Stability"

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            I don't understand you, to be honest. When evaluating stacks you need to also evaluate the pieces within the stack -- that does seem self-evident.

            Anyway, all the best to you, and have a nice day. :-)

          • Re: boo "Stability"

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Here's Oracle JET's release schedule and, yes, very stable indeed:

            www.oracle.com/webfolder/technetwork/jet/global...

          • Re: boo "Stability"

            by srinivasan balram,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Thank you! You too!

            Thought your point was -- don't compare Angular vs React compare stacks. And then you agree we got to eval pieces in the stack. I did miss your point.

          • Comment for Geertjan

            by Richard Clayton,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Thank you for your contributions to the discussion. I agree with the premise that there is a lot of churn (and not a lot of stability around the frontend). I suspect all of us (including Sri) will be rewriting their React apps in 3 years when the new/fancy JavaScript framework comes around.

            My specific comment was around JET. It's definitely the most comprehensive FE component library/framework I've seen. However, I would actually argue it doesn't go far enough.

            I've been working FE after a long hiatus primarily working backend/streaming analytics. I was shocked to see how custom most React+Redux implementations are (they're all snowflakes!). Developers have to manually build their own permissions systems, feature flags, error handling strategies, etc. I really don't understand why we don't have opinionated frameworks that have these features. This is common in on the backend, particularly in Java.

            What are your thoughts? Do you see the possibility of more highly-opinionated frontend frameworks?

          • Re: Comment for Geertjan

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Agreed. Though the kinds of things you mention are indeed supported by JET.

            But I think the important thing is for these kinds of solutions to remain as separated from the backend as possible and to use standards like REST as the communication protocol.

          • Re: Comment for Geertjan

            by Richard Clayton,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Would you mind pointing me to documentation in JET that discusses error handling and permissions? I haven't been able to find it.

          • Re: Comment for Geertjan

            by Geertjan Wielenga,

            Your message is awaiting moderation. Thank you for participating in the discussion.

            Best to join the forums on oraclejet.org and discuss it there. But here’s some of what you want:

            www.oracle.com/webfolder/technetwork/jet/jetCoo...

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT