: The traditional notions of developer and user are unable to reflect the fact that many software systems nowadays are developed with the participation of many people of different interests and capabilities. The sharp distinction between users and developers gets blurred. Many researchers have used different concepts such as end-user developer, prosumer, pro-am to describe those new in-between roles. This paper provides a conceptual framework for characterizing varied activities that all people involved in using and developing software systems from a socio-technical perspective. The conceptual framework clarifies the spectrum of different use and development activities by a continuum of participants with different roles. Based on the framework, we analyze how participants change their roles to migrate from users to developers through interactions, and how such interactions co-evolve both the community and software artifacts.