First, I worked on the spreadsheet of the randomly sampled changes and their analyses. It looks great and very organized! Professor Lu spent some time reviewing it and sent me a few clarification questions so I worked on finalizing that in my last couple days in Chicago!
I conducted a final collection of # condition variable routines in head revision vs. # changes per condition variable in development history. Professor Lu and I discussed that despite there being no global condition variables in the project, it will still be helpful to get an idea of how often the more commonly used and less commonly used condition variables are changed in development history. This study ended up yielding pretty predictable results, but it's still good to have!
We also came up with the idea to check how many new condition variable lines are added when large chunks of new functionality are added in development, so I wrote a script to collect this information. It turns out, not a ton of new functionality involving condition variable routines was added, but of the few that I found they yielded pretty consistent data suggesting that well-written new functionality code should not require more than 2 or 3 condition variable routines. However, this might be less applicable to projects with less abstraction and self-defined data structures. Now that I'm wrapping up my work on Apache I'm beginning to wish I had had time to do a similar analysis of a second project to see how many of my findings are unique to Apache (which I imagine is a very uniquely written project) and how many are pretty universal. I will definitely be interested to see what Professor Lu's next paper says in terms of this.
After finalizing and organizing all of those results, I began writing my final paper in the last two days at UChicago. Unfortunately, I will have to complete this at home but hopefully it'll only take another couple days!