I’ve been working in the web development for, what, 8-10 years now. I’ve seen it transition from Netscape to Internet Explorer standards, I’ve seen it done in tables and I was there when everything suddenly went into div soup. I’ve seen some nasty CSS cheats I was there on the advent of JavaScript frameworks – prototype, scriptaculous and jQuery. The last one I use today, and it’s a life savour, because JS ain’t the prettiest b**ch in the hood. 🙂
Problem No.1:
The browsers. Oh man, there are plenty of rants to tell about browsers. Don’t think that I’m a Google fanboy (I have an iPhone :D), but for now Chrome is the only browser that has gotten it’s s**t together – it’s fast, it’s standards compliant as hell (not 100%, but still sitting at the top of the charts). Firefox ain’t far from that, but it clearly can’t get it’s s**t together, as it’s consuming more RAM than Photoshop occasionally. And then there’s a little bastard named Internet Explorer – more like Internet Exploder (as it makes every developer a time-bomb, waiting to exploded in anger), as it’s slow, weakly complies with standards and it’s ugly as hell (which is not important in this article).
And what’s common in these browsers – they do not fully comply with the standards, they tend to do stuff their way. Oh wait, where have I seen this – oh right – C compilers – there’s a standard, but at the end everybody does stuff their way, missing some features, adding some features by them selves, and so on. Who’s the biggest mess in that field – Microsoft, as it still does not fully implement C99 standard (it’s like CSS2.1 and JavaScript 1.8 all over again).
Problem No.2:
CSS. Yes it’s cool, yes you can do cool s**t with it, and yes it’s a nightmare. No actually CSS itself isn’t, but the implementation in the browsers is – dear browser developers, stop being so lazy and fix those bugs and stop breaking the web.
But yes, the biggest problem of CSS still lays in the standard itself – box model. I’d like to introduce the guys who made this brilliant invention, with my baseball club. No really, once you implement something like that – you can throw width:100% out of the window and any floating/fluid layout with it. Why couldn’t you implement that the width of an element also includes the border and the padding? Why, what was the reason? What were the main points of doing so? I understand that setting width:auto and display:block does the trick, but what about height? Screwed here we are, as Yoda would say!
Problem No.3:
I’ve talked about this one for a while – JavaScript ain’t that friendly for the developer. I understand that it’s First-class Function language and it’s weakly/dynamically typed, etc. It also has a big flaw – there are two quiet different implementations of the language – the IE one and the other one (Mozilla, Google, etc.). Only thank’s to jQuery and alike I can do things quite easily, otherwise – it’s a nightmare. My proposal still stands – if any browser vendor is going to implement a new client-side language – be it ActionScript. I’m not afraid to call it JavaScript-done-properly or JavaScript 3.0. Standardized OOP approach – inheritance anyone can understand. Kinda strictly typed – weakly typed stuff is only for noobs, sorry to say that, but you have to get your s**t together by yourself – it will run faster, it will consume less memory, it will be much cleaner to read, it’s just the way to make everything more usable and easier to refactor. And yet you could still write a framework as jQuery to make things easier, only this time you could also check weather it’s a jQuery object or not 🙂
Conclusion
There are thing’s that are too late to change – box model, for example, as many of the sites nowdays rely on this standard feature, and the change could really break the web. But anyway there are things you can implement as a parallel solution, like a new client-side language or do the standards properly.