Innovations from Athena Design and Mozilla
MozillaZine: David, could you tell our readers a little about your company?
David Pollak: I founded Athena Design in 1991 and we shipped our first spreadsheet product, Mesa for NextStep, in 1992. Mesa quickly became the best selling spreadsheet for NextStep. In 1994, we introduced Mesa for OS/2, the second generation of Mesa. In 1997, we started work on Integer and released it in 1998. Integer is the world's first and only real-time collaborative spreadsheet server. It allows many people to share the same spreadsheet at the same time over the Internet. Integer is in use at many large financial services companies including John Nuveen & Co.
MZ: Could you briefly describe "Dynamic DOM rewriting"?
DP: DDR allows an HTML/XML author to tag certain DOM elements on the page as dynamic. The browser then hooks up to the server that served the page and says, "send me the deltas for these DDR tagged elements" (the method by which this happens degrades from a true server push to a periodic client poll/pull). When the elements change on the server side, the deltas between the currently displayed DOM elements and the new DOM elements are pushed back to the browser. The browser updates the DOM and redraws the changed element in the browser window.
MZ: What benefits does it offer the web development community?
DP: The benefit to web developers is that they can make pages that are dynamic, where dynamic means that data in the world can change and be reflected in the browser in real time. It's not a page refresh. It's a true stateful session where the server changes the stuff in the browser. This enables real-time stock quotes without an applet and through a firewall. It enables monitoring an auction site for bid status. It enables real-time headline updates in your browser as we bomb yet another country. It enables changing flight status information when monitoring when a flight will arrange.
DDR enables a good granularity of updates from the server back to the browser.
MZ: Is this something you would like to see folded into the DOM spec at some point, or developed into an entirely separate spec?
DP: I expect the DDR would be an extension of the DOM spec.
MZ: What initially attracted you to Mozilla?
DP: We were doing a proof-of-concept for a commercial partner. They required a "no download" solution for viewing a real-time spreadsheet. We needed an "over-the-top" killer demo and Mozilla seemed to provide the best bang for the buck. Plus, because the source code was there, it seemed trivial to add a feature or two... it wasn't quite so trivial (see below).
MZ: Could you describe your experience getting up to speed with the Mozilla code? Was it a difficult task?
DP: Mozilla is a huge forest. Lots and lots of beautiful trees, all arranged in a logical form. Until you get the logic, it is confusing. It was kind of like programming with the Mac toolbox the first month or so. Until you knew a substantial portion of it, it was hard to understand how things flowed.
Ultimately, I found where the page was loaded, put printf() statements in and followed the flow of the program through the printf()'s. It's clear from the feedback that we've gotten on the Dynamic DOM Re-writing code, that I'm not totally up to speed on how all of Mozilla works. On the other hand, nobody's died laughing at the stupidity of our approach to solving the problem.
I guess the net-net is that there's no tutorial to modifying the heart of the lizard. There's no water-cooler to stand around and take in knowledge (okay, there are the news groups, but the information on them is very focused at not often on target with the issue I'm trying to tackle today.) If somebody has too big an ego (like me) to stand up on the news group, say, "I'm a smart guy, but I don't get how the pieces play together, please, somebody help me," the learning curve will take some time.
MZ: What are your impressions of the Mozilla code at this point?
DP: The Mozilla code is extremely well done. It's logical. It's well thought-out. The only thing I don't like in Mozilla is XPCOM. I know that COM is the most popular was to do late binding with C++, but it's clumsy and ugly (okay, I'll get off my soap-box now.)
MZ: Internet Explorer has an an ActiveX control that behaves similarly to "Dynamic DOM rewriting". Have you evaluated this aspect of IE?
DP: This grid control is all client side. There's nothing that I can see which relates the data in the control back to the server for automatic push-style updating. The key value proposition for DDR is the ability to tie an DOM object in the browser back to the server so that the server controls and updates the element.
MZ: Your site states that your work with Mozilla is "proof of concept". Do you have any plans to develop this work into an actual commercial application (an extended Mozilla, perhaps)? Or are you hoping to get the changes introduced into the default Mozilla implementation?
DP: We're lobbying pretty strongly to get the DDR (Dynamic DOM Re-writing) code introduced into the default Mozilla implementation. Once the product "ships" we hope to propose DDR as a standard to the W3C. DDR is not useful unless sites can build to it. They won't build to it unless a measurable part of their traffic is DDR enabled.
MZ: Are there currently any coversations going on in the Mozilla newsgroups regarding "Dynamic DOM rewriting"? Where could someone go to contribute to the conversation?
DP: On netscape.public.mozilla.layout, there's a thread titled Adding Dynamic Server-based DOM Re-writing to Mozilla plus people can send us comments at email@example.com.
MZ: Do you have a sample implementation for people to check out? Or any screenshots that would illustrate the concept?
DP: We have a real hack (I mean it's ugly and horrible) of a prototype. We're happy to let anybody see the code. It's all wrong and needs a total re-write and re-conceptualization. Unfortunately, screen-shots wouldn't do justice to the dynamic rewriting capability. However, if you've got Navigator, you can go here to see the Java version of our real-time collaborative spreadsheet server.
Got a response? TalkBack!