Notes from Software Engineering Working Group

shissam's picture

Research Questions: What is the framework of practices that are actually employed by FOSS projects?

Is there a pattern of practices that are known to work well or otherwise?

What are the business/mission goals of the projects that influence (implicitly or explicitly) the selection of those practices? In addition, are their other (possibly nascent) quality attributes in the mind of the FOSS project (project's owner(s)) that influenced the choice of one practice over another or the way those processes were/are chained together to execute the software development and delivery process?

(once case that is interesting--Mozilla's selection of "lorentz"--what happened to combine agile and waterfall)

How do these same influences *and* the practices employed effect the architecture of the software itself (i.e., perhaps Conway's law).

Consider some of the projects we readily know and the quality attributes that come immediately to mind:

* apache (reliable, scalable)
* SELinux (secure-ness)
* RTLinux (real-time performance)
* Eclipse (modularity, extensibility)
* Ubuntu (timeliness to market and commitment to users)

In addition, there are also "development-time" quality attributes that also influence the selection of practices *as well as* the "run-time" quality attributes. Herbsleb/Fielding's foundational paper on the apache project that underwent a fundemental reachitecting to a modular architecture so that geo-distributed development could occur without compromising the integrity of the core code base.

Is it possible to distinguish between these practices and practices that may come into play at the "foundational" level (that board of stakeholders, Gnome foundation, etc.)