Real Men do Build Engineering (A Real Threat to Thunderbird)

When I was first getting involved in Thunderbird, I recall reading a post from early leader Scott MacGregor that puzzled me. When the project was essentially a two-person project, he said that the next person they needed was a build engineer. I had always thought of that as a backwater for people who couldn’t do real coding.

How my thinking has changed! As we look to the future of the Thunderbird project, it is clear that the main threat at the moment is losing control of the build process. These days, it takes a PhD candidate in computer science (Joshua Cranmer) to understand building Thunderbird, and keep it building. I’m not sure we are winning the battle, though  Joshua assures me that he and Standard8 have a Grand Plan to make it all better.

As for me, I’ve committed myself to improving my record in doing code reviews, which so far has been dismal. I’d like to give 20% of my time back to the core project, and a significant fraction of that should be doing code reviews. But I can’t keep comm-central compiling in 8 hours per week, which makes it very hard to do reviews.

<rant>It seems there is some project over on mozilla-central to replace the build process with some python-based thingy. “Just do mach (insert short command)” is the answer to everything in mozilla-central world. If it works, great. If it does not work (and it never works on comm-central), then you have to call your PhD-candidate build expert to make any sense of the problem. In the old days, where standard unix tools were used, you at least had a hope of googling your problem, and getting some hint of the issue. Now you have to pour over multiple files of python with multiple levels of abstracted variables, none of which I understand.</rant>

Here is today’s typical error:

Reticulating splines...
Traceback (most recent call last):
  File "./config.status", line 881, in <module>
    config_status(**args)
  File "c:\tb\1-central\src\mozilla\build\ConfigStatus.py", line 126, in config_status
    summary = backend.consume(definitions)
  File "c:\tb\1-central\src\mozilla\python\mozbuild\mozbuild\backend\base.py", line 194, in consume
    self.consume_object(obj)
  File "c:\tb\1-central\src\mozilla\python\mozbuild\mozbuild\backend\recursivemake.py", line 333, in consume_object
    CommonBackend.consume_object(self, obj)
  File "c:\tb\1-central\src\mozilla\python\mozbuild\mozbuild\backend\common.py", line 87, in consume_object
    self._test_manager.add(test, flavor=obj.flavor)
  File "c:\tb\1-central\src\mozilla\python\mozbuild\mozbuild\backend\common.py", line 68, in add
    assert path.startswith(self.topsrcdir)
AssertionError
configure: error: c:/tb/1-central/src/mozilla/configure failed for mozilla
*** Fix above errors and then restart with               "c:/mozilla-build/python/python.exe c:/tb/1-central/src/mozilla
/build/pymake/pymake/../make.py -f client.mk build"

So, are there any Real Men out there (or even Real Women) that want to be a hero, and save our project? Or am I going to have to become a Python build expert to do anything at all in Thunderbird?