Thunderbird Mail Directory Structure

When the work for thunderbird moves to the trunk, we will be moving the thunderbird UI into a new top level directory, mozilla/mail. Initially, we will only fork UI files we needed to modify from the mozilla mailnews client. Once we reach that point and have a trunk version of minotaur, our next step is to completely fork the UI from mozilla mailnews, and move to the new toolkit. Here is a proposal for the directory structure of mozilla/mail. Note: it is based on the structure used by Phoenix and the new toolkit (which includes removing extra directory layers, in particular: resources and en-US).

  • app: files necessary to generate minotaur.exe (nsMailApp.cpp)
    • profile: profile defaults for a minotaur profile (all.js, mailnews.js, etc).
  • base: core mailnews files used by all the mail components
    • content: xul, js files (messenger.xul)
    • locale: dtd, property files (messenger.dtd)
  • components: the various components that make up a mail client (address book, imap, news, etc).
    • news
      • content
      • locale
    • addrbook
      • content
      • locale
    • compose
      • content
      • locale
    • imap (if necessary)
      • content
      • locale
    • local (if necessary)
      • content
      • locale
    • prefwindow: minotaur pref files (pref-viewingmessages.xul, pref-mailpreftree.xul)
      • content
      • locale
    • accountmgr: account manager files
      • content
      • locale
  • skin: Files specific to the minotaur skin
    • messenger
    • addressbook
    • msgcompose
  • extensions: components which are not requied to build stand alone mail (smime, bayseian spam filters, mdn)
    • smime
      • content
      • locale
      • skin: skin specific files for this extension
    • bayesian spam filter
      • content
      • locale
      • skin
    • mdn
      • content
      • locale
      • skin
    • mailviews
      • content
      • locale
      • skin

Alternatively, instead of having a global top level skin directory, we could push that down into each module. For instance, base could have a skin directory, components/prefwindow could have a skin directory, components/addrbook, etc. (Note: in fact this is what we ended up doing)