Skip to the content.

Platform Evolution

Historically the web has seen a common pattern.

We start with proprietary home grown solutions. Some of those solutions may end up in a library that is shared by the community. And finally, the browser platform provides its own solution.

Stage Characteristics

Proprietary Library Browser Platform
Home grown More common Standard
Slower Faster Fastest
Least secure More secure Most secure
More code to deliver Less code to deliver No code to deliver
Write/manage/support Version upgrades Backwards compatible

Examples

This is not an exhaustive list, and there are many libraries and features that could be added.

Why do you need a framework when all of this is built into the browser? There are significant long term benefits to sticking with the platform as the first choice when possible. Standards, backwards compatibility, security, speed.

It does not take any longer to learn how to develop on the browser platform than to learn any other library or framework. And those skills are transferrable.

In many cases there is a strong argument to be made that when using libraries and frameworks, the additional proprietary complexity can add a significant amount of more code and immediate technical debt.

Resistance to change

Each step going from proprietary to library to platform runs up against resistance before adoption. The larger the company backing the library, the higher the resistance due to investment.

But would you still choose to use prototype.js today? Or choose to use require over import on any new project?

In some cases we hold onto the past because it is familiar, or we had prior success doing it that way. Learning something new takes time and our current code base already uses the old thing and we do not want to train devs on the new thing.

And that is part of the beauty of learning and using the platform to its fullest. It integrates with any technology because it is already there. Anyone can start today without downloading anything from NPM.

Summary

Why do we need jQuery when we have querySelectorAll, fetch, and Promise. Why do we need Underscore when we have Array.map, .reduce, .find, etc. Why do we need require when we have import. Why do we need any number of UI component builders when we have Custom Elements?

Keep it simple. Prefer standards and patterns to proprietary libraries and frameworks.

Invest knowledge in the platform, it is here for the long haul.

And still the web moves forward; what will you be using in 5-10 years?

Continue: When the platform is not enough