LAYERED COLLABORATION : A SOCIO-TECHNICAL THEORY OF ORGANIZATION IN FREE AND OPEN SOURCE SOFTWARE DEVELOPMENT