Let's ship libxpcom10.so with Mozilla 1.0.  And people who want to use 
plugins that need the nsServiceManager:: and other APIs can install 
libxpcom.so[*] for compatibility.  This way we get to build clean APIs, 
and not break anyone that the distributor doesn't want to break.  We'd 
need to make libxpcom.so speak "XPCOM 1.0" to libxpcom10.so for some 
things, so that they could share singleton services and whatnot, but it 
really puts the binary compatibility bar as high as we're willing to 
make it.

I've half-thought of the mechanics of mapping contract IDs and 
interfaces around so that everyone sees the things they want to see on 
both sides of the API divide, but I'm too tired to really get into the 
details now.  (And it's too large to fit in the margin.)  But I think 
the idea at least bears discussing.

[*] On systems with rich enough DSO support, we could probably call the 
real library libxpcom.so and the compatibility library libxpcom_obs.so, 
with appropriate sonames for each.

Mike


Reply via email to