Related topics

Quicker, easier to fly to MOON than change web standards ... OR IS IT?

Snail's pace system might be forced to speed up

You mean we can write HTML elements on the fly? Tell me more

The easiest way to understand the power of Custom Elements is to look at an example. Take Google, which has gone to great lengths to make it pretty easy to embed a map in a webpage and use some JavaScript to control it. Using Custom Elements, though, Google could simplify the process even more by defining a new HTML element, say "<google-maps>".

Herein dwells the intertubes. And you - yes, you - can now tinker with its BONES

Browsers would see the made-up <google-maps> element and register it using the HTMLElement interface. The HTMLElement interface then allows developers to add methods and properties, in effect creating a per-element API. That means you can pass in attributes to control the element. So instead of needing to write a ton of JavaScript to set the centre of our map, we could simple do something like this: <google-maps latitude="0" longitude="0"></google-maps> and the browser would display a map centred in the Atlantic Ocean on a point about 380 miles south of the Ghanaian capital of Accra.

I didn't pick this example at random. Thanks to Polymer, a library of polyfills that includes support for Custom Elements, you can use <google-maps> element exactly as show above in any web browser today. That code element comes to us courtesy of Liferay software engineer and past jQuery contributor Eduardo Lundgren.

Now, while I started off talking about how Google could create a custom element, it’s worth noting Lundgren is independent – he doesn’t work for Google.

The truth is that anyone can create custom elements in HTML with Web Components (technically anyone can create new elements in HTML right now, without Custom Elements but there won't be any element-level API or other features that make Custom Elements actually useful).

Hey – WE'VE got the power now!

In the end, this may be the real power of Web Components - putting developers on a level playing field with web giants like Google and with standards bodies as well.

That's by design. In fact, once you get past the really great encapsulation that Web Components enable, most of what's revolutionary about them comes down to the way they shorten the distance from developer idea to web standard.

Part of the goal behind Web Components is to let web developers iterate on ideas before they become standardized. In other words, see how the web ends up using something new before you bother to start the standards process. When you do start the process, you then start with something that's already fleshed out, real-world tested and much closer to a consensus. This will hopefully create a more productive feedback cycle between web standards bodies and web developers.

Much of the effort behind Web Components has come from developers at Google and Mozilla, who put together a document called the The Extensible Web Manifesto. According to this: "In order for the open web to compete with its walled competitors, there must be a clear path for good ideas by web developers to become part of the infrastructure of the web. We must enable web developers to build the future web."

Never in the short history of the web have web developers had such power given to them. In fact, perhaps what's most remarkable about the web is that developers have created what we have today in spite of very limited input and control over the future of the web.

We take tools like XMLHttpRequest for granted today, but these exist not because a standards body created them, but because web developers used them in creative ways that drove browsers to adopt support.

Now, with Web Component support on the horizon, developers will finally be first-class citizens when it comes to determining the future of the web.

And with the bottleneck on progress open and more people involved through Web Components, maybe we can have our equivalent of more men on the moon more often. ®

Sponsored: How to determine if cloud backup is right for your servers