r4 - 07 Jul 2005 - 13:52:44 - LisaDusseaultYou are here: OSAF >  Journal Web  >  MichaelToyWikiHome > MailInvestigation20030922 > MozillaMailStatus20030923 > MozMailStatusOne20030923

Cutting down dependencies on non-mail Mozilla components


We probably want to build w/o MOZ_PROFILESHARING - that will stop the pref service from loading embedded components, so to mozconfig, add ac_add_options --disable-profilesharing
ac_add_options --disable-xul - this will help avoid loading gklayout.dll

The app shell service, which we're using to pump events, loads the window mediator, which loads embedded components. For now, I can try commenting that out, or writing my own code to pump events...commenting out for now. I can't check that in - this is the one change I haven't checked in, but it's not relevant since the event loop stuff needs to be solved in Chandler.

the mail backend loads string properties for status messages, etc. It does this by running a chrome url, which causes rdf/chrome.dll to get loaded and a couple other dlls. That's unfortunate, especially gkfx.dll, but hard to pull out, and the error messages are very useful.

If I don't use any accounts with SSL turned on, then the various SSL dlls are not loaded, and js3250.dll isn't as well (pipnss.dll loads js for some reason). I also had to remove the bayesian filter dll because that loads the profile manager in order to get the current profile directory - I believe that's incorrect, and it can just use   rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, getter_AddRefs(profileDir)); I checked that in, so no the bayesian filter won't load any extra dlls

Here's the list of dlls currently loaded when I run my little test script that gets pop3 mail, updates an imap folder, and fetches an imap message:

xppref32.dll - for loading prefs

xpcom and PyXPCOM? stuff:


xpcom.dll
xpcom_compat.dll
xpcom_compat_c.dll
\python\xpcom\_xpcom_d.dll

NSPR


nspr4.dll
plc4.dll
plds4.dll

Necko and related dlls


necko.dll
docshell.dll - necko uses this to do attachment sniffing/mime type conversions, and it pulls in other dlls
chrome.dll
i18n.dll
gkparser.dll
uconv.dll
gkgfx.dll
jar50.dll
rdf.dll
gkwidget.dll
appshell.dll
mozz.dll (zlib)

Mailnews dlls


msgbase.dll
msgbsutl.dl'
msglocal.dll
msgimap.dll
msgnews.dll
msgdb.dll
mork.dll
txmgr.dll (transaction mgr, for undo)

Wallet and misc stuff


embedcomponents.dll
wlltvwrs.dll
wallet.dll


There's a good potential for reducing the necko and related stuff - of those 12 dlls, we require necko, i18n, uconv, rdf and chrome. I think we should not require gkparser, gkgfx, gkwidget, appshell or mozz. I think jar50 is currently required for loading string properties. Mozilla wants to make necko more stand-alone and OSAF could either just benefit from that work, or more actively drive it.

These dlls could all be linked together to cut down on load time, and reduce footprint.



-- MichaelToy - 23 Sep 2003


Size Issues

The above DLLs take slightly less than 5 MB (du -h == 4.7 MB) on disc on Windows, measured from the Mozilla 1.5 release.

 75008 appshell.dll*
 60160 chrome.dll*
156288 docshell.dll*
120944 embedcomponents.dll*
 85632 gkgfx.dll*
212992 gkparser.dll*
124672 gkwidget.dll*
183296 i18n.dll*
 29440 jar50.dll*
104960 mork.dll*
 39088 mozz.dll*
367360 msgbase.dll*
198992 msgbsutl.dll*
 73152 msgdb.dll*
349584 msgimap.dll*
171088 msglocal.dll*
172256 msgnews.dll*
502848 necko.dll*
173200 nspr4.dll*
 29792 plc4.dll*
 25424 plds4.dll*
100816 rdf.dll*
 15552 txmgr.dll*
721776 uconv.dll*
 76496 wallet.dll*
  8384 wlltvwrs.dll*
467280 xpcom.dll*
123440 xpcom_compat.dll*
 16224 xpcom_compat_c.dll*
 49472 xppref32.dll*

-- HeikkiToivonen - 08 Nov 2003

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r4 < r3 < r2 < r1 | More topic actions
 
Open Source Applications Foundation
Except where otherwise noted, this site and its content are licensed by OSAF under an Creative Commons License, Attribution Only 3.0.
See list of page contributors for attributions.