Monthly Archives: November 2010

End of an Era

From http://basieproject.org:

We have decided to wind down the Basie project and put our effort into Pinax, a collection of reusable Django components designed to simplify the construction of social networking sites. We made this decision because many of the things we want in Basie are actually common to groupware of all kinds, not just software project management tools, and because students working on the project will have a better learning experience if they are embedded in an active non-academic open source community.

Our first contribution to Pinax is a repository browser component with back-ends for Subversion and Mercurial. We are now working on a mailing list component, which we hope to release in December 2010.

DrProject and Basie were a lot of fun, but now that I’ve left U of T, they’re simply not sustainable. I’m grateful to everyone who supported the project: the University of Toronto, the Jonah Group, Idée, Rypple, Rogers Communications, First Media Group, Red Hat, TUCOWS, Yahoo!, and Google Summer of Code. Thanks even more to everyone who turned that support into working code:

  • Botond Ballo (University of Toronto)
  • Jeff Balogh (University of Central Florida / Mozilla)
  • Liz Blankenship (University of Michigan)
  • Chad Cogar (University of Toronto)
  • David Cooper (University of Toronto)
  • François Fournier (Université Laval)
  • Heather Grant (University of Alberta)
  • Russell Haering (Oregon State University)
  • Eran Henig (University of Toronto)
  • Jackie Huynh (University of British Columbia)
  • Bill Konrad (University of Toronto)
  • Maciej Kozlowski (University of Toronto)
  • Derek Kwok (University of Toronto)
  • Pierre Lafayette (Qualcomm)
  • Alex Le (University of British Columbia)
  • Phyliss Lee (University of Toronto)
  • James Leung (University of Alberta)
  • Ian Lienert (University of Toronto)
  • Josh McCarthy (Memorial University)
  • Christian Muise (University of Toronto)
  • Nikita Pchelin (University of Toronto)
  • John Peters (University of Alberta)
  • Andrew Schurman (Simon Fraser University)
  • Dan Servos (Lakehead University)
  • Florian Shkurti (University of Toronto)
  • Guillaume Simard (Université Laval)
  • Noam Sutskever (high school, Toronto)
  • Tony Targonski (University of Waterloo)
  • Edward Tate (Simon Fraser University)
  • Chris Van Wiemeersch (Michigan State University)
  • Zuzel Vera Pacheco (University of Havana / University of Toronto)
  • Jason Whyne (University of Waterloo)
  • Greg Wilson (University of Toronto)
  • Blake Winton (Mozilla)
  • David Wolever (University of Toronto)
  • Veronica Wong (University of Toronto)
  • Kosta Zabashta (University of Toronto)

Michael Feathers on “Making Software”

Michael Feathers (author of Working Effectively with Legacy Code) has posted a 5-star review of Making Software at Amazon.com.  He says:

I’m going to go on record and say that this is one of the most important books about software development that has been published in the last few years. It’s easy for many of us in the industry to complain that software engineering research is years behind practice and that it is hard to construct experiments or perform studies which produce information that is relevant for practitioners, but fact is, there are many things we can learn from published studies.
The editors of this book do a great job of explaining what we can and can not expect from research. They also adopt a very pragmatic mindset, taking the point of view that appropriate practice is highly contextual. Research can provide us with evidence, but not necessarily conclusions.

Beyond the philosophical underpinnings, ‘Making Software’ outlines research results in a variety of areas. It gives you plenty to think about when considering various approaches on your team. The chapter ‘How Effective is Modularization?’ is worth the price of the book alone.

I recommend this book for anyone who wants to learn how to think rigorously about practice.

More Good Science

We’re starting to get feedback on Making Software, most of it positive (but some of it grumpy: “how dare your evidence contradict my cherished belief!”). Here are two recent papers that aren’t in the book, but will give you a taste of what is:

Rossbach, Hofmann, and Witchel: “Is Transactional Programming Actually Easier?” In Proc. 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. The question they set out to answer is, does software transactional memory (STM) make parallel programming easier or not? From their abstract:

In this paper, we describe a user-study in which 147 undergraduate students in an operating systems course implemented the same programs using coarse and fine-grain locks, monitors, and transactions. We surveyed the students after the assignment, and examined their code to determine the types and frequency of programming errors for each synchronization technique. Inexperienced programmers found baroque syntax a barrier to entry for transactional programming. On average, subjective evaluation showed that students found transactions harder to use than coarse-grain locks, but slightly easier to use than fine-grained locks. Detailed examination of synchronization errors in the students’ code tells a rather different story. Overwhelmingly, the number and types of programming errors the students made was much lower for transactions than for locks. On a similar programming problem, over 70% of students made errors with fine-grained locking, while less than 10% made errors with transactions.

In other words, students did better, but thought they did worse. This is interesting for a whole bunch of reasons (not least that for highlighting how flaky subjective self-assessment is).

Bird, Nagappan, Murphy, Gall, and Devanbu: “An Analysis of the E ffect of Code Ownership on Software Quality across Windows, Eclipse, and Firefox.”

From their abstract:

We examine the relationship between di erent ownership measures and software faults/failures in three large software projects drawn from di fferent process domains: Windows Vista, the Eclipse Java IDE, and the Firefox Web Browser. We find that in all cases, measures of ownership such as the number of low-expertise developers, and the proportion of ownership for the top owner have a relationship with both pre-release faults and post-release failures. However, we find that the strength of the eff ects is related to the development process used. Vista shows the strongest relationship with ownership level, followed by Eclipse, and then Firefox, suggesting that the more that a project uses an open source style process, the more that team sizes rather than ownership levels aff ect failures. We also find reasons that low-expertise developers make changes to components and show that the removal of low-expertise contributions dramatically decreases the performance of contribution-based defect prediction.

They are painstaking in defining what they mean by “ownership”, and how they measure it, so that other people can (and should!) replicate their work. Drilling down, their conclusions are:

  • Vista:
    1. The number of minor contributors has a strong positive relationship with both pre- and post-release failures even when controlling for metrics such as size, churn, and complexity.
    2. Higher levels of ownership for the top contributor to a component results in fewer failures when controlling for the same metrics, but the effect is smaller than the number of minor contributors.
    3. Ownership has a stronger relationship with pre-release failures than post-release failures.
  • Eclipse:
    1. Both MINOR and TOTAL (defined in the paper) have a positive relationship with pre- and post-release defects. However, neither is consistently a better indicator, and the effect is weaker than in Vista.
    2. Higher levels of Ownership sometimes have a positive relationship with pre- and post-release quality, but the effect is small when it is statistically significant.
    3. Ownership measures have a slightly larger effect on pre-release failures than post-release failures.
  • Firefox:
    1. Team size has a stronger relationship with defects than ownership levels.
    2. Team size and ownership metrics have a much stronger relationship with pre-release defects than post-release defects.

This is cool: we can measure important things, we can see how they relate to other important things, and (crucially) we can act on what we see. I’m looking forward to seeing what both groups do next.

On My Way Home

I’m on my way home after two and a half weeks on the road. I have missed Sadie and Maddie more each day—Skype video calls are a lot better than just phoning, but that’s like saying that starving to death is better than dying of thirst. But the trip was worthwhile: I met lots of interesting people, and have many ideas to follow up on once I’m home.

So, with seven weeks to go ’til the end of another year, here are my goals:

  1. Spend lots of time with family.
  2. Help Mike Conley and Zuzel Vera finish their Master’s degrees on time.
  3. The gym, the gym, the gym…
  4. Prepare three more lectures for Software Carpentry, and start chasing more funding (the current money runs out in April; it’s clear we’ll need until August to get everything done).
  5. Revitalize the online run of the course, and organize another one to start in January.
  6. Wrap up work on my dad’s book.
  7. Publicize Making Software.
  8. Start editing The Architecture of Open Source Applications.
  9. Finish one or the other of the two children’s books I’m working on (for some definition of “finish”).
  10. Wrap up the two undergrad projects I’m supervising.

It’s a shorter list than usual: let’s see if that means a higher completion percentage :-)