Thunderbird:Road Map To XULRunner
The purpose of this page is to provide a guide to where various aspects of Thunderbird may proceed to unify it more with the core code base and list the advantages/disadvantages with the various steps.
This is not an agreed roadmap, nor is it a statement of what Thunderbird will definitely do.
Existing Thunderbird+XULRunner tracking bug: bug 306324
Link with libxul
- bug 377319 Convert MailNews to frozen linkages
- Convert mail/ to frozen linkages (linux already done).
- Update build system
- Uses the Frozen API, reduces impact of core changes.
- The rework is touching a lot of old code, and some improvements are being made.
- For TB to link with libxul, it cannot link as (mostly) one static library as it does now. Hence, startup times may be affected as you would now have 2(?) extra libraries.
Current State (20th May 2008):
|Bug||Code Area||Compiles with Frozen Linkage?||Links with Frozen Linkage?|
|mailnews/addrbook||Yes (Mac & Linux)||Yes (Mac, without xpfe autocomplete code)|
|mailnews/base/search||Yes (Mac & Linux)||Unknown (requires mailnews/base/src to compile first)|
|bug 407295||mailnews/base/util||Yes (maybe one error in debug)||Various link errors|
|mailnews/import||Yes on Linux||Yes on Linux|
|bug 410149||mailnews/mime||Yes||2 link errors.|
Move profile to equivalent Firefox location
- bug 424641 Write the "migration" routine, change profile locations and update tinderbox configurations and scripts.
Note: bug 247973 also has various discussion.
- Removal of application specific ifdefs
- Less confusion for new users finding profiles
- Some forward/backward version incompatibility if creating and/or deleting profiles.
- Patches ready, awaiting review from dmose before getting reviews & approvals for core parts.
Migrate from wallet to (toolkit's) Login Manager
- bug 419590 Fix MailNews backend to provide good protocol and URI implementations that will work with Login Manager.
- bug 433316 Change MailNews backend to work with Login Manager.
- bug 239131 Thunderbird should use the new password manager (UI + build patch available).
Note to avoid complicated ifdefs, and because they need to as well, it is intended to switch SeaMonkey at the same time as Thunderbird. SeaMonkey UI bug is bug 390025 - UI already available.
- Move to maintained code
- Code move to nsIAuthPrompt2 following on from this, which would fix some bugs with password prompts not being serial in nature.
- Easier for extensions to work with Thunderbird + Firefox
- Must have protocol implementations for all protocols we implement (extra code).
- Newer versions of TB wouldn't update the passwords file for older versions.
- Much of UI code in place
- Item 1 needs the most investigation
- Item 2 shouldn't be too hard.
- May require some more core (toolkit) changes for password migration
- Concerned about "x" protocols which are used as a crude cache password protection system (Standard8 to investigate more).
Migrate from xpfe autocomplete to toolkit's autocomplete
TB tracking bug bug 360648
- bug 370306 Re-implement Address Book autocomplete backends (normal and LDAP) to implement the toolkit interfaces.
- Ensure toolkit autocomplete has options (attributes) required by MailNews, see dependencies of bug 360648
- Change Build configuration to build toolkit rather than xpfe autocomplete
- Unification of autocomplete interfaces with toolkit
- More code shared with core
- Easier (?) to implement the new search autocomplete
- Autocomplete with "my domain" already working on toolkit interfaces.
- Autocomplete for local address books patch in progress.
- Maybe implement bug 433497 to reduce duplicate code before attempting full autocomplete replacement.
Ensure Thunderbird doesn't override core *.jar files
- toolkit code is toolkit, Thunderbird is Thunderbird, clear separation between the two.
- possibly extra overlays.
- no progress.
Merge Build Configurations (final step)
This part is intended to merge the Thunderbird and xulrunner build configurations.
- Get confvars.sh files to align where differences affect the build.
- Build everything in toolkit/core that we're not currently building (and check affect on TB).
- Change build configuration as required to provide linking with xulrunner etc.
- xulrunner seems to be where Firefox/Gecko is going, so aligning ourselves with that will help future work.
- May be able to share core xulrunner in the future.
- Firefox isn't on xulrunner yet.
- Extra items we're not currently using may cause bloat (amount unknown).
- No progress. Not worth doing until we've got all the other items on this page done.