Re: The DOM is not a model, it is a library!

Christian Roth <> writes:

> I'm sure that all who have voted for reserving value ranges (e.g. for 
> NodeType) for "users"  are aware of the fact that if they use them, they 
> are bound to that specific implementation (as is with using every 
> proprietary extension)...
> Leaving this door explicitly open might help get implementors to adopt 
> the DOM API as the basis of their implementation efforts. Closing it by 
> reserving everything to W3C could (IMHO) lead to the contrary: "Why 
> should I support the DOM API at all, if I have to find clumsy 
> work-arounds to be conforming and reach my goals? Then, I can as well 
> settle on a fully proprietary solution." And there goes _any_ 
> interoperability...

The big problem with this is that the DOM is not designed to be extensible,
it's designed so that implementation libraries can be interchangeable.  

Applications that can be linked with their own document-processing library
SHOULD NOT be using the DOM.  Implementors who do not plan on supporting
every Tom, Dick and Harry's use of every obscure or inconvenient feature of
the DOM, as efficiently as possible, should stay as far away from the DOM as
they can or face the wrath of hundreds users when live nodelists turn out to
be hopelessly inefficient, even though they were told up front that _this_
implementation is specialized and that getElementsByTagName is deprecated.

Implementing part of the DOM, for example just the interfaces, raises the
perfectly justified expectation that eventually you will be implementing the
rest of it, too.  Supporting DOM Level 1 now implies that over the next year
or so you will be re-implementing attribute lists to support ownerElement so
your users (all three of them) can have DOM Level 2.  No thank you. 

Again, I wish there were a minimalist kind of object model that application
designers could write to, simply and efficiently.  There isn't.  I wish the
DOM supported it as a Level 0.  It doesn't.  If it did, my application would
_still_ break running on top of a fully-compliant Level 1 library because I
would be counting on certain things _not_ being present.  I'm better off
starting from something that looks as little like the DOM as possible.

Stephen R. Savitzky  <>  <>
Platform for Information Applications:      <>
Chief Software Scientist, Ricoh Silicon Valley, Inc. Calif. Research Center
 voice: 650.496.5710  front desk: 650.496.5700  fax: 650.854.8740 
  home: <> URL:

Received on Tuesday, 5 October 1999 19:57:14 UTC