Since the beginning of the Internet, it is here. What? The HyperText Markup Language, of course. Thanks to it, we can now navigate across the web with hyperlinks, watch images and videos, download files!
It was not always the case.
HTML has several incarnations, each enabling the next.
For example, did you know that before Mosaic, the <img>
tag was unknown? No images then…
Now, the W3C, responsible for the HTML standard, is currently drafting the new HTML 5. What’s in it anyway?
- New elements.
And since you’re now in the semantic web (more later), they have meaning:
<nav>
; for a navigation bar,<footer>
for a footer (how original),<audio>
and<video>
for media elements, … - Dropped elements.
Yes,
<font>
and<center>
, for example, were purely presentational tags. As such, they should have been banned a long time ago in favor of CSS (still more later), - New form elements. How many times did you curse the business analyst who wanted a field that could contain an email and who provided you with a zillion business rules to check the email validity? If the browser is now smart enough, it could validate the input for you,
- An API that should handle offline-status, drag-and-drop, persistent storage and much more: the best part of this spec I think.
Wow, sounds exciting. And yet… Remember three or fours years ago? Everybody was talking about the semantic web. The semantic web was the buzzword at this time. It was (and still is) a nice idea. It means that tags should carry meaning and not presentational informations. This last part should be the reserved domain of Cascading Style Sheets (CSS).
For example, in the semantic web, you should not use the <i>
(for italic) tag but rather the <em>
tag to indicate that the tagged part is emphazised.
Both would render the same by default anyway:
italic
emphasis
After reading this post, I just realized my CSS showed these in bold. It just proves my point since what should be italic is rendered in bold.
Why should you do that, by the way?
The <b>
(for bold) equivalent is <strong>
and is much longer to type.
Because of the semantic web.
Because you want to carry meaning.
But more importantly, to let your page be parsed by robots:
they can then isolate the <author>
tag and attach your name to their database (it is only an example).
Well, at the time, every developer, even junior, fresh from school, would display their personal web page, show you it was HTML 4 compatible and tell proudly it was 100% semantic. Today, I don’t even hear the word. I’m an application developer, not a web developer, but I think the term is gone. According to me, it is because people don’t care about being put into a database. They care about being seen, that’s for sure, but that stops there. Google, Yahoo and peers care of course, but what can they do?
As for myself, I’m an ardent supporter of semantic tags so that I can present my page the exact way I want with CSS (this depends of course of the browser but I’m an optimist).
Yet, when in the rush of a project, you can’t always be a perfectionist.
You put a <b>
tag here, a <style>
tag there, it takes only a couple of seconds and your customer is happy.
Gone is the semantic web and nobody cares! Why so? Because HTML is gone too. Before anyone noticing… Because application are everywhere and everybody wants to develop them: blogs are a perfect example of this. HTML was not thought to support applications. These frameworks are:
- Adobe Air,
- Mozilla XUL,
- Laszlo for the OpenSource JEE world,
- JavaFX for Sun Java,
- Eclipse RIA,
- Silverlight for Microsoft,
- and many more yet to come…
They are Rich Internet Applications (RIA) frameworks. They are fast but more importantly they are beautiful and they have the ergonomy of real (understand fat) applications. They don’t think in term of pages but in term of view.
So, the current draft seems at least to understand the drawbacks of HTML 4 regarding applications development but much, much to late. And in the pure web development part, it amounts to next to nothing. The coming of the final spec (in 2 years at last) is thus a non-event.