Extending the web

Recently a new W3C Community Group was created named Extensible Web Group and it’s lovingly called “nExt Web”. The intention of this group is to find a standard way for web developers to take the current web technologies (HTML, CSS and JavaScript) and extend them in a way that isn’t tied to a particular browser implementation or a particular vendor ecosystem.

There is also now a name for that kind of extension: Prollyfill.

And with that there is going to be an explanation necessary in order to understand what this all means. There are two seemingly competing ideas here but effectively they are completely different. Here is a quick and simple outline to understanding what all this is.

Polyfill

This is a widely accepted name (often these are called shims too) for a JavaScript library that implements a standard feature that does not exist in all browsers. In other words the feature is agreed to be a standard (by W3C or WHATWG), but not all browsers have updated to implement it, and in some smaller cases disagree on how it actually should work. So in order to make use of a feature you can’t rely on all browsers to recognize it and actually work, and must use a JavaScript library that will fill in the difference so that your code will work everywhere.

Prollyfill

This is a very newly accepted name for a JavaScript library that implements a completely new feature that neither exists in browsers or is agreed to be a standard.

Here is a table to visualize the difference between Polyfills and Prollyfills:

Standard Implemented by Browsers
Polyfill Yes Some or Most
Prollyfill No No

The mentality of the two is different. Polyfill is something that is backwards looking and Prollyfill is forwards looking in the sense that with Polyfills you’re achieving browser compatibility for your code and with Prollyfills you’re achieving a complete extension of existing technologies through your code.

So why the group?

There are many people and companies moving in this space. They all have wonderful ideas. In some cases they have excellent Prollyfills. This group wants more of all that. And to make it easier, the group believes there could be a standard way to do it. There should be APIs and tooling that helps authors create these new extensions, implement them and then socialize or popularize their work in order to influence browser implementors and standards bodies.

I still don’t get it … why?

Browsers

It’s impossibly hard to get browsers updated to all of the latest standards and not break the web. Even if they do a great job of continuous improvements, it is equally hard to get users (read: Corporate or Enterprise restricted computers) to let go of their favorite browser even if it’s impacting their experience. Given this it’s extremely slow for browser implementors to be in lock-step with each other and natively cover all the latest and greatest ideas.

Standards

Design by committee is also very hard. There are lots of smart people with smart ideas that don’t always match up. Given this it’s usually a very long time before a really good concept gets articulated into a standard that everyone agrees too. Standards authors and editors have to make very cautious decisions about what goes in and out of a standard. A bad standard can create terrible precedences and good ideas could be lost.

Competition

With both the browsers and standards being slow to progress it’s also important that when they do converge that they converge on the very best ideas. The best ideas are usually the ones that are being used. If there are two choices for a way to do something but one is clearly being used by everyone, that is conceptually a standard. So why not have a framework that allows individuals to create things in a systematic way and drive browsers, standards and authors toward a particular implementation? This goes in the other direction too. What if there is just one implementation? Who says there couldn’t be a different or better one? It would be far better for the competition to happen and provide standards bodies the opportunity to watch the good ideas bubble up.

Waiting on you

So now there is a new group devoted to creating this standard way to extend the web. And there is a clear definition of what this means. What’s missing is your participation. Here are some links to help you get started:

http://prollyfill.org

http://www.w3.org/community/nextweb/

https://github.com/organizations/extensibleweb

http://lists.w3.org/Archives/Public/public-nextweb/

Advertisements

2 comments

  1. Pingback: How to extend the web « Clint Hill

  2. Pingback: Web Reform « Clint Hill

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: