![]() |
XPCOM PlansThe latest public version of this document is available at I'll keep this document up to date as we complete old plans, and come up with new ones. Please direct all comments and contributions to news:netscape.public.mozilla.xpcom and/or Scott Collins <scc@netscape.com>. The Primary Goal: Shipping Mozilla and CommunicatorWe want XPCOM to be perfect; but our primary goal has to be shipping a browser. Good Enough?Wherever the cost, with respect to shipping a browser, of fixing or improving some XPCOM facility is greater than the cost of leaving it unchanged, the fix will have to wait. Hopefully, we'll be able to fix the things we think are most important, without negative impact on ongoing browser work. When we do, it will only be because the benefit of the fix excedes the cost. The Secondary Goal: Improving XPCOMThe overall plan to improve XPCOM revolves around making it smaller, simpler, cleaner, more tuned to the facilities we need, and more aligned with applicable standards. The lighter we keep XPCOM, the easier it will be to debug, port, and maintain; and the less the cost to the embedding application. To that end, there should be no facilities in XPCOM that aren't highly leveraged. Things that exist only for a single client's use must be examined and hopefully exterminated. A large fraction of XPCOMs facilities are aimed at C++ clients. We can expect embedding applications to exploit the Standard C++ Library. Where XPCOMs facilities overlap similar services provided by the Standard C++ Library we will want to transition our APIs and functionality to that of the standard. Eventually, clients can get the implementation from the Standard Library and our version can be removed. For those facilities not provided by the Standard Library, we will still want to make their APIs as compatible as reasonable with it, e.g., our containers should work with the standard algorithms. The Role of XPCOMThe XPCOM module roughly parallels the Standard C/C++ Libraries. It overlaps them significantly, but goes beyond them in capabilities. XPCOM sits above the Standard Libraries. It's role is to extend them with facilities tailored to [XP]COM development in general, and specifically the needs of Mozilla and Communicator. Like the Standard Libraries, XPCOM must be a fairly self-contained library, so as not to encumber clients with any unecessary external dependencies. Changes to the Build HierarchyThere are things in XPCOM that don't belong there. There is likely to be code outside of XPCOM that should be in it. There is code above XPCOM that should be below it.
Changes to APIs, Functionality, and ImplementationsThe following items are listed (very) roughly in their order of importance, i.e., fixing observers is the first thing I want to do.
Things we need to EvangelizeWe need to keep up-to-date documentation, samples, and have brown-bags to keep people informed. We've been doing this, but it should be in the plan.
|
|
|
Copyright © 1998-1999 The Mozilla Organization.
Last modified November 16, 1999. |
|