From conception, to implementation, to deployment and to retirement,
software development is a knowledge-intensive activity. To address the demands of knowledge acquisition and exchange, various mechanisms, processes and ceremonies have been established. These general knowledge acquisition and exchange challenges are amplified in Open Source Software (OSS) development where software developers are often volunteers, where their commitment to an OSS project may be transient, outside the reach of regular employment contractual arrangements, and in an environment where contributors may be widely geographically distributed. It is therefore the case that OSS projects present with very specific and highly demanding knowledge exchange challenges, and failure to address and manage these challenges can result in the lack of adoption, or worse the total collapse, of an OSS project.
This work is focused on identifying a set of practices that can be adopted in
OSS projects to reduce knowledge exchange challenges, and this is important work for which no substantial earlier contribution exists. To develop a set of OSS Knowledge Retention (KR) practices, a variety of sources are incorporated, including knowledge management in general, software engineering based knowledge creation and adoption, and community feedback. Following a survey of OSS project contributors, a suite of 31 OSS KR practices is identified and ranked, though differences can be seen in terms of practice appreciation depending on OSS project experience level and role. This set of OSS KR practices can be adopted by OSS projects so as to reduce the knowledge exchange challenges in their projects, and to promote longer term OSS project viability and success.