The Opera web browser is made in Norway (.. with headquarters in Oslo, the nation's capital). Before reading today's entry you should download & install a copy (currently at v11.x) .. as a way of thanking them. For what? Keep reading.
HTML 5 is coming. Sooner than many had expected. That's good news. (The Standards-creation process » aqui.)
The W3C, which is headed by Tim Berners-Lee -- the guy who invented the Web and was subsequently knighted -- operates on a consensus basis.
This might be why changes to Web standards (called Recommendations) such as HTML & CSS are made at such a frustratingly glacial pace.
Getting people from Microsoft & Apple (and others who make browsers) to agree on anything is no mean feat.
In '98, the W3C decreed that HTML was done (toast) and that XML represented the way forward.
The current spec/standard (that I use) is called » XHTML 1.0, which is simply an XML version of HTML. It uses HTML elements wrapped in (stricter) XML syntax. This is the standard used by most web pages being written today.
» <!doctype html>
HTML5 was not always called HTML5. Rather it started out as something called » Web Applications 1.0, which began in 2004 when folks from Mozilla & Apple joined forces with a group from Opera, who was not convinced that XML represented the best way for the Web to proceed.
They called themselves the » WHATWG .. the Web Hypertext Application Technology Working Group. (You must admit, WHATWG is a funny name .. especially for a group of über-geeks.)
» The Philosophical Battle Line » Backwards-Compatibility
But let's back up a bit. What's known today as HTML5 actually began as a philosophical battle. (Everybody loves a good philosophical battle, and a good story.)
The battle was over » backwards-compatibility. Sorta. It was definitely a prime consideraton in the battle that ensued.
The problem was » XHTML 2.0. It was a revolutionary design-concept .. that broke backward compatibility with HTML. Something that had never happened before. Moreover XHTML 2.0 came with draconian error-handling, which would cause browsers to stop rendering a page if errors were detected.
This draconian path of XHTML 2.0 that broke backward-compatibility with HTML, and where errors would not be tolerated, was the course the W3C had chosen for the Web's future.
In 2004, the W3C's futuristic purity-of-design philosophy (embodied by XML-based » XHTML 2.0) was challenged by a small group from Opera, who claimed that a pragmatic approach (that didnt break backward compatibility) would be a better solution. A better idea.
» Pragmatism vs Purity of Design
Pragmatism vs purity of design .. that's a good match up for any geek. Normally (without knowing the details) I would side with P-o-D.
But, we're talking about the Web .. which we want to be EASY for people to use.
I mean, ease-of-use is one of the main things that makes the Web so cool. Right? Anybody and their grandma can use it.
But I can feel it becoming more difficult. Of course, the more power you bring to any software or technology .. the greater the learning curve to wield that power.
Before I learned CSS, webmaster-life was tough sledding. Before I learned my way around the Linux shell, web admin-life was also tough. When you learn how to use it (.. becoming a student) .. technology can be pretty cool.
Anyway, the gang at Opera developed a proof-of-concept spec called » Web Forms 2.0 - that extended the functionality of HTML forms withOUT breaking backward-compatibilty. "See!" they exclaimed. "It can be done. In your face, Timmy-boy. I mean, Sir Tim."
Nevertheless, the W3C rejected their proposal, claiming it conflicted with the course they had already laid out and had already committed to.
••• today's entry continues here below •••
» About Face
In 2006 however, the W3C had second thoughts about going the XML route, and the revolutionary approach represented by XHTML 2.0 .. which many claimed would "break the Web".
So the W3C resurrected the HTML Working Group (headed by studly guys from IBM, Microsoft, & later Apple), which agreed to used the WHATWG's spec (called » Web Applications 1.0) as the basis for future development and gave it the name » HTML5.
So you can see how the this rebel group from Opera (techno-mercenaries) is where the idea for HTML5 got its start, and how they are responsible for the direction the Web is taking.
Impressive .. given the numerous obstacles (and egos) they had to contend with and overcome.
But the W3C is to be commended. For having the courage to change course when confronted with evidence that conflicted with previous decisions. Almost unbelievable, no? I mean, wouldnt you love it if our gov'ment could do something like that?
» The Way Forward .. with Two Rival Groups
Both groups (W3C & WHATWG) are currently working on developing the HTML5 spec .. along parallel (tho not identical) paths.
As you might imagine, this situation has not been without conflict. The W3C operates on a consensus basis, while the WHATWG is led by a guy named Ian Hickson, who helped form the group while working at Mozilla, and has since moved to Google.
Hickson operates more as a dictator, with strong ideas about the direction the language should take.
These are very intelligent people who are working on HTML5. Brilliant geeks. For example, as part of the WHATWG core group, you have:
- Brendan Eich - the guy who invented Javascript
- Hakon Wium Lie - the guy who invented CSS
- David Hyatt - the architect of the Safari web browser & the Webkit engine that powers it.
Heavyweights all. Luminaries. Geekdom's best & brightest flexing their collective muscle.
I'm sure they all have egos. Some perhaps bigger than others. So I'm not surprised there has been tension and conflict.
» The L in <HTML> » Language
The 'L' in HTML stands for » language. So HTML is a language. (A Mark-Up language.)
HTML5 will bring many badly needed changes to the Web .. the biggest of which will be INTEROPERABILITY, which means all browsers will render the same page the same way .. even when that page has errors caused by invalid markup.
Before HTML5, different browsers rendered web pages with errors as they saw fit. Never before has error-handling been part of the HTML spec.
The HTML5 spec consists of some 900 pages. (Double the size of the HTML4 spec.) Most of that (~600 pages) deals with telling browser vendors how to render pages .. under conditions of both valid (no errors) & invalid mark-up.
Specifyng that amount of detail seems like it would be very difficult .. to ensure you've thought of EVERY scenario that could possibly go wrong .. with a web page. And developing algorithms to address each scenario.
I have many old pages that contain some of the ugliest mark-up you've ever seen. Some Ive gone back & fixed. But not all. Cuz it's a lot of tedious work. And you only get back to where you started. In other words, no new content gets generated in the process. Not worth it unless the page(s) see serious traffic.
» The Bruce & Remy Show (Book)
Last month, I requested my library purchase this book, by Remy & Bruce. Which they did! When the library purchases a book you recommend, they give you first crack at it.
That's where I've gotten most of my HTML5 info here. (Tho I did Radify it somewhat.)
It's very good. Surprisingly well written for a tech book. Slim. Slightly more than 200 pages .. with generous amounts of white space. Well laid out.
Love the casual tone. (They use conversational terms such as 'groovily' and 'WTF'.) A pleasure to read. Easy to see why it got such positive reviews. Easy to recommend, too.
These guys are all about USING the language .. not about giving you an academic analysis. Geeks after my own heart. This means they have already encountered many of the same problems & questions you & I are likely to encounter.
[ I also requested a book written by Jeremy, titled HTML5 for Web Designers .. but they said it was not in their supplier's supply chain (.. or something like that). They will only consider new titles. ]
» Javascript, the DOM & Web Apps
Learning about HTML5 has made it clear that I need to learn Javascript. I know "about" Javascript, and have a feel for its (general-to-specific) syntax, but I've never learned how to actually program with it.
Regarding that idea, Nigel (my programming guru from NZ) had this to say:
"Cuz it's a Lisp, and you've been looking at PHP, there's also a lot of things you might need to unlearn. In studying PHP you've formed a mental model; trying to map that PHP model onto Javascript (directly) won't work. It's different. The differences may grind at you." </nigel>
JavaScript uses the DOM to bring web pages to life. The DOM turns your web page into a bunch of "objects". Javascript is an object-oriented language. See the connection?"
This passage from the book got my attention (paraphrasing):
Different browsers can causes web pages with invalid markup to produce different DOMs. Different DOMs can cause the same CSS to render differently. A consistent DOM is so important to HTML5 that the language itself is defined in terms of the DOM.
» HTML 5 Design Principles
HTML5 is really about three things:
- Interoperability (.. having different browsers render the same page the same way), which includes
- Standardizing error-handling (.. so pages with errors due to invalid markup will also be rendered the same)
- Web applications (.. making it easier to author them via new APIs)
Another tidbit that struck me is that .. the HTML5 parsing engine (when it arrives) will render ALL web pages.
Right now, there are different parsing modes, depending on whether (or not) you are viewing a document with valid markup (standards mode vs quirks mode), and which browser you happen to use.
Uniformity like this will be truly remarkable. The cross-brower compatibility issues were maddening.
XHTML 2.0 was officially killed in 2009. The advent of HTML5 is yet another reason why NOW would be a good time to learn how to design, create & style web pages.
» API's & the New Semantic Elements in HTML 5
The vast majority of web pages consist of text, images & links. HTML5 will make it easier for developers to create web pages that function more like desktop applications. That's really what HTML5 is about. Web apps .. via new API's. (I count 23.)
It would seem that these API's is where HTML5 is hiding its true power. So learning how to wield them is high on my list.
An API is an interface. An electrical outlet would be an example of an interface. Makes things easy by standardizing your access to electricity. Otherwise you would need to rewire you home every time you wanted to 'plug-in' an appliance.
On the static side, HTML5 has 28 new elements. New semantics. (I have already memorized most of them.) No more using the generic <div> element to layout your entire page.
If there are any losers to HTML5, it will be Flash video. But that's another story. More here. Update .. this is new.
You can use parts of HTML5 right now. Soon as Internet Explorer 9 is officially released, HTML5 will take off in a big way (.. cuz the Microsoft browser has so much market share).
That's seems like a good time to upgrade .. to make the move. While early-adopters are already leading the way. Feels like a big thing.
In the end, I feel HTML5 was a compromise between a more powerful design and maintaining a lower cost of entrance, technically speaking.
[ Note that Mark Pilgrim prefers to focus on the tension created with specs vs implementation .. when he quotes a Mozilla developer. ]
» Update .. from the Twilight Zone
Update - It's kinda trippy not having to "quote" attribute values, and not having to use lowercase letters for elements, nor <selfclose /> empty elements like you do with XHTML.
That's when it hit me .. that HTML5 really is not an XML language. (Tho you can if you prefer.)
Ive already been playing with my HTML5 Test page. Blows my mind that it validates with no <html> tag, no <head> tag and no <body> tag. Can you hear that Twightlight Zone music playing?
Feel like I'll wake at any minute and find this was all a very strange dream.
[ If I recall correctly, Julie was a fan of the Twilight Zone. ]
For more along these lines, here's a Google search preconfigured for the query » html5 history api whatwg w3c book
Here's another for » html5 new semantic elements