Good luck, and see you at OSCON '06!
Every generation of browsers has its boat anchor: that browser which is so painful to develop for that there's nothing professionals would love more than to see it instantly disappear from the desks of users. This is different than simply being old. Old browsers will eventually cycle oh-so-slowly out of circulation. Webdevs understand this and live with it. We're used to pain.
What really rankles is when there's no light at the end of the tunnel. No year we can wistfully mark on the calendar as the date when we can use feature X of the latest CSS spec ("position: fixed;" anyone?). In the last 3 years, the title of the Web's Boat Anchor has been handed off from Netscape 4 to IE 6. Like the dreary days of NN 4.7.x, IE 6 is patched and patched again, but never to fix bugs we care about. With Firefox ascendant, MS had no choice but to restart development on IE in order to prevent it from being relegated to displaying help files in Office via an ActiveX control. The IE 7 team has shown a willingness to be candid about what they will and won't fix, and that much is commendable. Unfortunately, developers of dynamic applications (cough Ajax) have been entirely left in the cold. If Microsoft doesn't commit to fixing the following issues in the near future, no number of CSS rendering updates are going to stem the tide. The problems on the list are by no means simple to address. In some cases, they may require re-architecting large tracts of IE internally. Here's a little hint to whoever is the PM in charge of the renewed IE 7 effort: we don't care. We don't care how much it costs you. We've been cleaning up your messes for years. Those of us tasked with "just making it work" have spent so many sleepless days and nights routing around IE brokenness that our empathy and sympathy are entirely tapped out. All that's left is a combination of despair and loathing. You want us to give a (expletive) that you blog and are "engaging with the community"? Fine. Fix your (expletive) browser. That's the bar the IE 7 team needs to hurdle. I hope they've internalized that.
At a minimum, dynamic web apps need the following out of IE and JScript in the very near future:
- Memory leaks need to simply disappear
- Fix the cache+gzip bugs
- Give us getters/setters in JScript or give back watch()
- Fix the event object. Pass it in to DOM handlers by default. Also, offsetLeft and offsetTop are so ambiguious as to be useless. Give us currentTarget.
- Bump the limit on the number of concurrent HTTP connections if those connections are initiated after onload (either via XMLHTTP or other methods)
- Today, allocating more than 5K objects or so brings JScript to its knees. Object allocation cost needs to be O(1)
- Either revive (and start to fix) VML or give it an SVG-Tiny+DOM facade
- Give us a persistent, string-keyed, local cache in the MB range (5-10MB/domain seems a good start)
- Fast DOM queries. CSS selectors or XPath, we don't care. Just give us a way to say "get us all DOM node objects matching this"
- A way to toggle the box model on a per-element basis without switching doctypes. The CSS 3 box model spec seems a good starting point
If Microsoft is to re-build any credibility around their browser, they need to show us the goods. CSS fixes won't suffice this time around.
- Every object is always mutable
- The dot operator is equivalent to de-referencing by hash (e.g.,
foo.bar === foo["bar"])
new keyword creates an object that class constructors run inside of, thereby imprinting them
- Functions are always closures (combine w/ previous rule to create OOP)
this keyword is relative to the execution context, not the declaration context
prototype property is mutable
Yesterday I had a chance to attend MashPit. After much deliberation over what should be tackled, a "self organizing" team that included Cal Henderson, Matt Mullenweg, and myself decided to wrestle collaborative localization. It's one of those problems that doesn't get much love because when a team (open source or not) has to tackle it, they do whatever minimum is necessary to make the pain go away. Larger companies just pay bucket-loads to make it disappear.
Clearly, we need something better. Something shared, something in-situ...something usable by real, live people.
In just shy of 4 hours, we went from a bunch of drawings to a working, demo-able system that will let people quickly post translations to a central location, (eventually) import from and export to other localization formats like gettext, and provide developers with a straightforward way to generate pages that let anyone donate translations.
We don't have a name for the project yet, so suggestions are welcome, and public (anonymous) SVN is available from:
We've got a lot of work left to do, but a translation-commons is something that everyone needs. Time to make it happen.
My work on Dojo isn't solely the product of a gigantic sleep deficit. Were it not for the generous support of JotSpot, the application platform cleverly disguised as a wiki, I think Dojo might not be a reality today.
Jot's support has been massive and prolonged, and over the past year we've built multiple features and products on top of the wiki platform that use Dojo in some way. This past monday we took the wraps off of our most heavily Dojo-based product yet: Tracker, a tool for doing lightweight list-like collaboration on the web. Think of each line in a Tracker "spreadsheet" as a wiki page which you can allow anyone to edit and attach things like images and files to. Spreadsheet++, if you will.
As the word "Beta" implies, we know there are a lot of the sharp edges and are working hard on getting them rounded off for you, but please do give it a try. If it doesn't keep you from firing up another instance of Excel for tracking a small list of things, we'd love to know why.