|
info@athena.com
Copyright © 1998-1999
All trademarks herein
|
Why the Integer Spreadsheet loves MozillaInteger is the worlds first real-time collaborative spreadsheet server. Integer allows many people to collaborate on the same spreadsheet in real-time over any IP network. Integer also allows users to publish very large spreadsheets. Viewers need only load the data needed to render the part of the spreadsheet that they are viewing and any updates made to the spreadsheet are reflected on all users displays in real-time. Integer is written in Java and works well in Java 1.1 browsers.So, who cares and what does this have to do with Mozilla?Sharing numbers and business logic over the net is good. Downloading the large (800K) applet needed to view an Integer spreadsheet is a lose. Java in browsers is less than optimal. It seems that if a browser has all the capability to load information over the net, generate a model of the information, translate that to a display list, and render the display list, that there should be little or no code that should be required on the browser side to display and update a real-time spreadsheet (read table) view.Athena Design (makers of Integer) love Mozilla because it's open source. We were able to download the source and modify Mozilla so that a table on an HTML page is actually a real-time view into the Integer spreadsheet (more on how we did this in a minute.) This allowed us to build a real-time stock portfolio monitoring site where a Mozilla viewer was refreshed with up-to-the-second stock prices as the prices changed in the Integer spreadsheet server. We also put together (due to the gratuitous value of auction sites) a real-time auction monitoring page. These pages are plain HTML (with one additional attribute in the TABLE and TD tags) and can be viewed with any browser. When viewed with Mozilla, they are live and dynamic. We love Mozilla because we were able to develop (well, hack together is a more apt description) a proof of concept and learn how a browser works both at the same time. We would be in total rapture mode if the Mozilla community accepted our changes to Mozilla and included our Dynamic DOM Re-writing code into the lizard. How Dynamic DOM Re-writing worksWe added the MODELID attribute to the TABLE tag and the CELLID attribute to the TD tag. We updated nsHTMLContentSink.cpp to look for these attributes. When a TABLE with the MODELID attribute is loaded, our code puts the TABLE's node into a list. A separate thread periodically (right now it's once a second, but it should be a user-settable rate) sends a request back to the originating server for deltas to the TABLE. The CELLID of the cells that changed in the TABLE along with the new HTML for the cells (TD's) are returned. The DOM is updated with the new HTML and the display updates. It's a very basic concept that results in HTML being dynamic with the rest of the world rather than just as a result of a locally executing script.Why Dynamic DOM Re-writing would make a good addition to MozillaThere are numerous applications for Dynamic DOM Re-writing. They include the spreadsheet applications (stock portfolios, auction sites, etc.), updating schedules in a group scheduling app, re-writing my start page only when things change (thus lower network bandwidth than the refresh of the whole page with the META refresh), and generally adding dynamic, real-time statefulness to a web page without breaking the current web paradigm. Put another way, my brain is way too small to see the myriad of applications that dynamically updated web pages would yield, but I know they're there... really.Dynamic DOM Re-writing would yield a much more fluid experience on the web. Browsing would become a richer and more interactive experience just as it did when client-side scripting was added. How do we move ahead?My guess is that we're seeing an incomplete solution to the problem. I'd like to get feedback on how to improve the concept of Dynamic DOM Re-writing. Once we get to a stable state in terms of design, it would be a win to code up the design and integrate it to Mozilla. So, give me feedback, ask questions, make bold and assertive statements, etc. Let's work together to make browsing a more dynamic experience. |