SEMINAR Best Practice in the Use and Development of Free and Open Source Software 3. Case study: Part 3/Bea: Slides: ------------------------------------------------------------------------------------------------------------------------- 1. Agile development - Need to handle rapid change in commercial software development - How do agile approaches fit distributed, open-source projects? -------------------------------------------------------------------------------------------------------------------------- 2. Core of Agile practises: the people factor - "Agile processes are designed to capitalize on each individual and each teamīs unique strenghts" (Cockburn, Highsmith, 2001) - OSS nature of teams: self-organized, intensely collaborative - fit the agile approach - OSS teams are an unique implementation of agile practices ------------------------------------------------------------------------------------------------------------------------- 3. Agile approaches aim at: * reducing "cost of information",distance from decision-making * by physical location, unorthodox dissemination * resulting in improved sense of community, team "morale" ----------------------------------------------------------------------------------------------------------------------- Notes: - OSS teams fit the criteria very well if you look at the "physical" aspect in a more unorthodox sense. Transparent intense, daily communication via IRC, emails and wiki:s make up for a lot of this. - It is no wonder though that the Python community (Zope Foundation) tailored agile approaches to add one crucial technique, sprints, to make up for the lack of "physical" interaction between programmers. This technique is now widely used within the Python community. ------------------------------------------------------------------------------------------------------------------------- 4. "Agile teams are characterized by self-organization and intense collaboration, within and across organizational boundaries" (Cockburn, Highsmith, 2001) How do one structure an agile OSS community into a consortium of 7 partners? - create developer driven organization - roles and responsibility (management team + tehnical board) - uses IRC channels, version control (SVN)on consortium level -------------------------------------------------------------------------------------------------------------------------- Notes: - In order to stay true to the agile vision as much as possible, the consortium structure and roles/responsibilities are supporting a developer-driven, flat organization. Much of the coordination of work is delegated to the core developers. Regular "sync" meetings (once per week) are done via IRC in which the community of developers (funded - as well as non-funded) coordinate development work, keeping communication as transparent as possible. - Consortium meetings are done once every month via IRC with developers attending as well, physical consortium meetings are done in conjunction with sprints. The tools for automated test driven development and version control are implemented on consortium documentation, reducing the gap between the consortium and the community in ways of working. ------------------------------------------------------------------------------------------------------------------------- 5. Sprints are "two-day or three-day focused development session, in which developers pair off together in a room and focus on building a particular subsystem". ------------------------------------------------------------------------------------------------------------------------- Notes: - In this implementation it fits agile criterias because of the knowledge/learning aspects as well as the incremental approaches. - Sprinting was the key agile technique in the start-up of PyPy, work being non-funded. While working on the proposal (during sprints) the challenge was to tailor a project process based on sprinting that would fit and work within an EU framework. (picture - sprint process) ------------------------------------------------------------------------------------------------------------------------- 6. Sprinting is central to the PyPy project: - funded as well as non-funded work - dissemination (talks, tutorials, pairprogramming) - consortium activities (meetings, planning, coordinating wp work) - contribution from community via "physical persons" structure ------------------------------------------------------------------------------------------------------------------------- 7. ------------------------------------------------------------------------------------------------------------------------- 8. PyPy sprints are evolving - evaluations are done with "external" participants - different forms of sprints with different focus - sprints at conferences are growing into workshops ------------------------------------------------------------------------------------------------------------------------- 9. Sprints have already resulted in: - more people knowing and understanding the vision of PyPy - more people "recruited" into the community - people "recruited" into the consortium (physical persons) - people "recruited" into PyPy companies --------------------------------------------------------------------------------------------------------------------------- Notes: Striking a balance between agile approaches within the OSS community of PyPy and the funded consortium structure of PyPy is a constant challenge but an crucial one. The important results from the first year of the project shows this.