The biggest issue right now with web related specifications is browser adoption. The specs clearly state that at least two mainstream browsers must implement the standard to be considered complete. In most cases that tends to be Firefox, Opera, Safari, and Internet Explorer. The first of these three has always been adapt to adopting standards. The latter is only just beginning to catch up. This results in most of the web authors in the community from not utilizing new features as it results in having to maintain different sites for different browser capabilities. So, how do we change this?
Imagine the advancement for authors if an emulation layer existed. For example, rather than having to use the APIs within existing libraries to create a calendar control, you could simply drop a date input onto the page via HTML5’s <input type=”date” />. The emulator would pick up that tag and properly utilize the libraries to build the control. This simplifies author development, starts to show the promise of HTML 5, and helps the end user by providing the new features of HTML5. Similar to how browsers adapt pieces of the spec at a time, this emulation layer could provide the same result. However, rather than having to rely on browser developers to find time to build the feature, the emulation layer can use the open source community and the already existent libraries to more quickly adapt features. The features would be smart in that they would fall back to the native browser support, if provided. It would only emulate when non-compliant browsers are used. The end result of all of this is that we build HTML5 pages today and can easily drop the emulation libraries once full support is provided.
I plan to eventually create an open source project and host it to the open source community in order to drive this into existence. Over the next month I will be analyzing the HTML 5 spec and the already existent libraries to determine some various paths to proceed under. If anyone is interested in joining, shoot me an email or a comment. You can follow all of my progress on this blog.