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:
- Index non-offline messages. Currently, gloda only indexes messages that are available offline.
- Show indexing status in the activity manager. Is gloda indexing your messages? No way to know*… if only we showed things in the activity manager…
- Do not index junk messages. Gloda currently indexes your junk mail. It should not. Thunderbird knows when a message has been marked as junk, and knows who is a junk folder. Help gloda give up spam cold turkey.
- Implement a memory reporter for gloda. This would help us debug things. The follow-on would be to write something that actually outputs the information.
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!
- Get yourself a copy of the comm-central codebase.
- Build thunderbird! (Actually, that above link covers it, but you might also want to check out the general building info page.)
- Dance a victory jig!
- Leave a note on one of those bugs saying that you are interested. Or just e-mail me at asuth@mozillamessaging.com!
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?
I wonder if any of these would be good for [student-project] or gsoc? Ping me on irc if you want to chat about it.
Dave (humph)
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.
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?
cheers,
Sean
The gloda source code can be found in:
mailnews/db/gloda/modules
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 https://wiki.mozilla.org/Thunderbird:Using_Gloda 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:
https://developer.mozilla.org/en/Writing_xpcshell-based_unit_tests