[DCI] Multiple inheritance of interfaces

I notice that the DCIProperty interface defined in [1] uses multiple
inheritance.

None of the DOM WG specs use multiple inheritance of interfaces because,
as I understand it, the DOM WG decided that avoiding multiple
inheritance was a valuable invariant to maintain.  Invariants, including
this one, are useful in keeping implementations simple.  This break with
the convention can also make your interface impossible to implement
correctly in some bindings, such as those that depend on COM or XPCOM,
which was probably an important use case when the DOM WG decided not to
use multiple inheritance of interfaces.  (Those bindings, in turn, may
rely on single inheritance to simplify function calls between
languages.)

Working groups should not break the invariants established by other
groups:  doing so leads the Web down a path towards higher
implementation complexity and thus lower reliability.  It also often
leads to the worst of both worlds (many interfaces give up the
advantages of multiple inheritance, while implementations still have to
deal with the extra complexity for the handful that broke the rules).

-David

[1] http://www.w3.org/TR/2005/WD-DPF-20051111/#sec-appendix-a

-- 
L. David Baron                                <URL: http://dbaron.org/ >
           Technical Lead, Layout & CSS, Mozilla Corporation

Received on Sunday, 20 November 2005 20:32:42 UTC