What is Mozharness?

Summary: Mozharness is a project to refactor internal ReleaseAutomation code. This includes moving code out of buildbot custom libraries and into standalone scripts/programs/Makefiles.

This is important, exciting, work because:

1) upgrading buildbot will be easier:
Today, upgrading buildbot in production is complicated because of all our code in buildbot custom. Every upgrade requires significant testing of these custom libraries, and some recoding if buildbot internals change. Moving this logic out of buildbot custom to external scripts makes it easier for us to upgrade buildbot in production going forward.

2) refactoring is needed for Fennec:
Fennec Release Automation still runs on buildbot 0.7.x, while Firefox Release Automation runs on (incompatible) buildbot 0.8.2. Refactoring and consolidating these gets us improved Fennec automation, and one code base for RelEng to maintain going forward.

3) others can use the *same* scripts as RelEng:
Moving the consolidated logic out of buildbot custom means that others outside of RelEng can run the *exact* same scripts and Makefile targets that RelEng uses. This is a big help to developers debugging build/test differences between something running on their machine vs a RelEng system.

Obviously, anyone using undocumented internal buildbot custom code will have to modify their code as we refactor. Going forward, we recommend that people do not rely on undocumented internals. Instead, we recommend using the JSON feed available and already being used by TBPL. If this “supported API” isn’t sufficient, please file bugs to have us fix the supported API – its much better then using undocumented internals and having to rewrite your code every time we fix something internally.

For anyone who wants LOTS more details, you should start by reading Aki’s posts here and here before joining the discussions in dev.planning.