mozbuild conversion estimates

=============================

Back in June/July time estimates were made for completion of the mozbuild conversions.

Stats were based on elapsed time for wip conversion bugs. Bug dependencies, variables to convert, etc. Some time has elapsed but here is a digest of information that was gathered.

Detail from past/ongoing conversions:

Stats cover

o one person doing conversion work.

o conversions are mostly verbatim/simple passthrough so overhead from code reviews can be ignored.

o elements from different variable conversions may be in play at any given time.

o end-to-end times for past conversion bugs has been a 2 month avg (min=1, max=5).

o 6 days of try jobs submissions for each variable:

build[3]: platforms[subset], bugfix_or_repo, platforms[all].

test[3]: platforms[subset], bugfix_or_report, platforms[all].

Makefile content detail (collection date: August 8th):

o To determine how many variables will need to be converted stats are gathered from Makefile.in and *.mk

o Exclude as needed, /third_party/, /nsprpub/, Android.mk, etc, etc.

o A list of variables to convert ‘valid’ are gathered from beneath config/.

– Variables referenced by rules.mk, makefiles/*.mk (anything except config/Makefile.in) are considered.

– Variable names must be in all uppercase.

– These variable names are considered valid and require conversion.

o Gather Makefile.in and *.mk from the sandbox and parse out a list of variable assignments.

– Only variables in all uppercase are considered.

– If the variable is mentioned beneath config/ it will be considered a conversion variable.

– All other variables (mixed or lower case, not referenced) are considered local variables.

– From data gathering 77 variables were identified as variables to be converted.

– Makefiles which contain a valid variable are included in makefile stats.

Stats as of/between 07/17 and 08/05:

Makefiles found: 1112, *.mk files: 75

Vars to convert: 77 (07/17: 80, 08/05: 77)

Avg conversion time: 2 months

Pending conversion bugs: 49 (deps of 847009)

Serially mozbuild conversions will require a long, long time to complete at this pace.

The conversion process can benefit heavily from threading, one person per variable.

Though threading will introduce a few new issues/bottlenecks to contend with:

– conflicts due to mozbuild changes or competing makefile edits.

– having to re-test patches – testing invalidated due to recent patch landings.

Possible workarounds:

– land all mozbuild logic changes early, before makefile patches are generated.

– submit several smaller conversion patches (a few per directory) to reduce the chance for contention.

– avoid testing altogether and most of these problems will disappear :).