The need to share software and reintegrate it into new applications presents a difficult but important challenge. Component-based development as an approach to this problem is receiving much attention in professional journals and academic curricula. However, there are many other approaches to collaborative software development that might be more appropriate. This paper reviews a few of these approaches and discusses criteria for the conditions and contexts in which these alternative approaches might be more appropriate. This paper complements the discussion of context-based development team organizations and processes. Examples from a small development team that interacts with a larger professional community are analyzed.