support your neighborhood Thunderbird global database

Do you know JavaScript?  Would you like to help improve Thunderbird and its exciting global database, gloda?  Now is your chance!  Check out these exciting bugs that are reasonably sized and independent tasks:

Exciting? Exciting!

I don’t know much about psychology, but I have heard that people on the internet see a call-to-arms like this and say “I’m sure someone else better qualified will step up, maybe even hundreds of them… I’ll just let them take care of it.”  I have news for you, people on the internet are lazy!  Oh, so lazy!  (I am reasonably confident that won’t happen.  If it does happen, I will find enough work for everyone to do while I retire to a life of luxury funded by my ability to inexplicably motivate large swathes of the internet to do my bidding.)

Important steps!

  1. Get yourself a copy of the comm-central codebase.
  2. Build thunderbird! (Actually, that above link covers it, but you might also want to check out the general building info page.)
  3. Dance a victory jig!
  4. Leave a note on one of those bugs saying that you are interested.  Or just e-mail me at!

5 thoughts on “support your neighborhood Thunderbird global database

  1. You left out a couple of important steps:
    5. Magic happens here
    6. Profit

    But seriously, what are the steps between contacting you and writing / fixing Javascript?

  2. Sean, I think the steps would mainly be me helping to fill in gaps and providing an overview of the first steps required to make such a change happen.

    These are good and meaningful tasks for people to sink their teeth into, partially because they are tasks that need to be implemented in the next month, one way or the other. (Which is why they would not make good gsoc tasks…). Unfortunately, it also means that work I put into these to make easier is, in some ways, wasted if I end up being the one to implement them. I realize that creates a bit of a self-fulfilling prophecy (of people not helping out), and I will try and do my best to avoid that now and in the future. I do understand someone is more likely to appear out of the woodwork with a fully formed fix if they have all the ingredients available to them without having to solicit information from me.

    It would be easier if we had more of our documentation ducks in a row (and we are working on that), and if I was pointing at a set of tasks that aren’t going to get fixed if no one steps up.

  3. Andrew, what are the steps for incorporating my JS code into my local build of Thunderbird? Would I need to recompile Tbird each time? Or can I edit in place and just restart Tbird? Is there a debugging console? Is there test data? Where?


  4. The gloda source code can be found in:

    At least on linux, by default, these files are symlinked from your-objdir/mozilla/dist/bin/modules/gloda.

    You will need to ‘make’ in your-objdir/mailnews/db/gloda in order to get new symlinks created when you create new files.

    Thanks to the symlinking, it is sufficient to restart thunderbird to have your changes take effect. If you place “ac_add_options –enable-chrome-format=symlink” in your .mozconfig file, you can encourage the build system to try and symlink the actual chrome files (.xul files, .js files included from .xul files) when possible. The ‘when possible’ is because some files are preprocessed (frequently for silly reasons like stripping out the licensing block for download size) and they accordingly cannot be symlinked. If you modify chrome files that are not symlinked, you will need to re-make to cause the files to be updated. In most cases, cd-ing to your-objdir/mail and running a make should be sufficient (and then restarting thunderbird).

    Gloda uses Log4Moz for logging. See for info on how to enable output to stdout (and the error console window). Once you have enabled the “browser.dom.window.dump.enabled” preference, you can also use dump(“some string that has a newline\n”) for one-off debugging help (and those should be removed before submitting patches).

    Gloda has a number of unit tests which synthesize test data as they need it. These can be run by cd-ing to your-objdir/mailnews/db/gloda/test and running “make check”. If you just want to run a single test, you can do “make SOLO_FILE=filename.js check-one” to just run that test.

    More info on the unit test harness and running unit tests can be found here:

Comments are closed.