Caro desenvolvedor ou qualquer pessoa que se interesse por tecnologia. Hoje em dia, consagrado o amplo sucesso dos softwares livres, com a maturidade destes, nos sentimos confortáveis em utilizá-los em nossas tarefas. Softwares como o próprio Linux, Apache, Asterisk, Openser são exemplos de maturidade, estabilidade, escalabilidade e Customização baseando-se neste tipo de desenvolvimento de Software.
Bem, é bom lembrar que Software Livre não é “Cerveja Grátis” mas sim, Softwares que têm seu código fonte aberto e com isso qualquer pessoa pode adaptá-lo às suas necessidades, o tornando melhor. Por isso, não há um conjunto de programadores em uma determinada empresa pagos para desenvolvê-los, mas sim programadores espalhados por todo o Globo. Deste modo: NÃO há RENDA à estes programadores… eu lhe pergunto: Você, que utiliza Software Livre, já parou pra pensar o que motiva esses caras (programadores) a desenvolver esses softwares para nós utilizarmos? O que leva essas almas a gastarem seu tempo, seus conhecimentos, suas habilidades desenvolvendo estes softwares??
Simplesmente é algo que não têm preço: o Conhecimento.
É o que diz um estudo denominado “Toward an Understanding of the Motivation of Open Source Software Developers”
Para entendermos o estudo, precisamos dividir o tema em dois Posts. O primeiro vai desmistificar a estrutura por dentro do desenvolvimento e o segundo irá tratar o estudo da motivação dessas pessoas.
Comunidades Open Source.
A peça principal para o sucesso de um Desenvolvimento de Software Livre (projeto) é a comunidade envolvida.
O que é esta “Comunidade”?
São Grupo de pessoas que pelos seus interesses em comum se tornam informalmente “parceiros” em um assunto/projeto/busca/ideal específico. São voluntários cuja a motivação os levam a participar e contribuir com o projeto. A comunidade provê ao projeto uma plataforma de compartilhamento de conhecimento com os membros, dessa forma disseminando o conhecimento.
Diferente do desenvolvimento fechado, que há um chefe, que se encarrega de alocar uma equipe designada à programar, onde já está definido quem serão os usuários do sistema em um cenário em que há uma separação clara: usuários e desenvolvedores. No desenvolvimento fechado um usuário não se tornará um desenvolvedor, a menos que quando o chefe achar que ele mereça, ele suba de cargo e venha a tornar-se um programador. No desenvolvimento Open Source não há uma distinção clara de quem é usuário e quem é desenvolvedor, qualquer membro da comunidade pode se tornar um programador em potencial, bastando este ter o conhecimento para tal, sendo que, como membro da comunidade, ele buscou e busca conhecimento e contribua para o software. Esta “transição” de, digamos, “status”, os autores do estudo denominam de “role transformation”.
Dentro da comunidade temos uma espécie de Distinção Social. No começo pessoas envolvidas criam uma comunidade envolta de um projeto particular motivados por um interesse compartilhado em utilizar e/ou desenvolver o Software. Membros da comunidade assumem por si mesmos as “roles” de acordo com seus interesses pessoais no projeto. Estudando quatro projetos Open Source, os autores do estudo puderam classificar oito (8) “roles”:
Project Leader (Lider de Projeto): A pessoa que iniciou o projeto. O Project Leader é o responsável pela visão e os rumos que o projeto seguirá. (Mark Spencer é o criador e assim o Project Leader do Asterisk)
Core Member: São responsáveis por guiar e coordenar o desenvolvimento do projeto. São aquelas pessoas que estão envolvidas com um projeto durante muito, muito tempo, fizeram e fazem contribuições significantes para o desenvolvimento e a evolução do Software.
Active Developer: São os que regularmente contribuem com novas features e bug fixes para o software. São as maiores forças do desenvolvimento do Software Livre.
Peripheral Developer: São pessoas que ocasionalmente contribuem com novas funcionalidades ou features para o sistema. Sua contribuição é irregular e o período de envolvimento é curto e esporádico.
Bug Fixer: São pessoas que corrigem os bugs encontrados por elas mesmas ou reportados por outros membros. Bug Fixer precisam ler e entender algo do código do software.
Bug Reporter: Descobrem e reportam bugs. (Hmm.. Quando o seu Firefox bugou e abriu aquela tela de Bug Report, você se tornou um Bug Reporter? Ou cancelou?). Ele não corrige o bug e não possui conhecimento do código fonte. São como se fossem a área de Quality Assurance do projeto. (Legal não?!) Por isso, para um Software com muita qualidade e com poucos bugs, é essencial vários membros que contribuam como Bug Reporter (Lembre-se disso!).
Reader: São usuários ativos do Software. Não somente usam o Software, mas tentam entender como o software funciona, lendo o código, documentação… Dado a alta qualidade dos Softwares Livres, alguns Readers, para aprender a programar, lêem o código do software ou usam-no como referência à desenvolvimento de softwares similares.
Passive User: Apenas ultilizam o software para alguma determinada necessidade. (A maioria de nós) São atraídos a utilizá-los pela alta qualidade e o potencial de ser alterado quando surgir a necessidade.
Essas oito Roles não são REGRAS em todas as comunidades e a porcentagem de membros em cada uma varia.
Estrutura.
Apesar de não existir uma distinção hierárquica, a estrutura da comunidade não é completamente plana.
Dependendo de qual role o membro participa, mais ou menos influência este terá no Software e na Comunidade.
Considere as camadas da imagem acima como os “roles”. Quanto mais perto do centro, mais influência este terá na comunidade e no Software. Em outras palavras, a atividade do Project Leader influenciará mais membros do que o Core Member, no qual terá mais influencia do que o Active Developer e por aí vai.
Como exemplo, citamos a responsabilidade do RoadMap que é uma atividade do Project Leader que impacta toda a comunidade e, partindo para outra “camada”, uma alteração em um determinado ponto do código pelo Bug Fixer não necessariamente impactará para todos, mas para aqueles que utiliza a feature que for corrigida. Não que uma role seja “mais importante” que a outra. As camadas externas têm sua importância, tanto social dentro da comunidade, como psicológica, atraindo e motivando mais pessoas, podendo esses serem potencialmente membros mais ativos e conseqüentemente, aprofundando seus conhecimentos e contribuindo mais ativamente, alcançando outros roles. Como analogia, imaginemos as camadas do centro como atores de uma peça de teatro, e o restante como a platéia… o que são os atores sem aplausos?? Não serão motivados? O grau de influência dentro da comunidade pode ser considerado mais uma motivação? Gostaria que expressassem suas opiniões para discutirmos, e com o segundo post teremos a visão do estudo sobre a questão.
Um abraço e até lá.
Adelson Junior