Desenvolvendo Software no Modelo Open Source

1 view
Skip to first unread message

Gustavo Caixeta

unread,
Nov 27, 2007, 7:45:14 AM11/27/07
to gustavo...@gmail.com

Desenvolvendo Software no Modelo Open Source

Há poucas semanas levantei um post abordando o processo de desenvolvimento de softwares no modelo Open Source. Recebi diversos emails, que geraram boas conversas sobre o assunto. Bem, acho que vale a pena voltar ao tema. Os princípios e as práticas adotadas pelo Open Source diferem em muito dos adotados pela engenharia de software tradicional. Mas, não impedem que excelentes softwares sejam produzidos, muitos deles extremamente complexos e sofisticados, como o próprio kernel do Linux, que em sua versão 2.6.22 tem mais de 8,5 milhões de linhas de código.

Mas, curiosamente, este assunto praticamente não foi abordado nos inúmeros eventos de Open Source (ou Software Livre) que aconteceram durante o ano. E, na minha opinião, é o principal diferenciador do Open Source. Acredito, inclusive que o desenvolvimento de software colaborativo e participativo, será o modelo das relações de trabalho a ser adotado no futuro. Aliás, antes do trabalho no campo (típico da sociedade agrícola) ser substituído pelo trabalho nas fábricas, símbolo da sociedade industrial, não havia o emprego, como o concebemos hoje, na sua formalidade de trabalhar em troca de um pagamento estipulado e definido anteriormente.

Mas, pensemos "out-of-the-box": o emprego é apenas uma das formas de viabilizar e definir o trabalho. À medida que a sociedade do conhecimento se dissemina, é provável que cada vez mais "trabalhemos" mas sem "empregos" como o conhecemos hoje. As relações de trabalho, as áreas de RH e a legislação trabalhista terão de mudar de forma drástica. E pessoalmente, vejo o modelo de trabalho adotado pelas comunidades de Open Source como precursora desta nova forma de "emprego". Daí que insisto em voltar ao assunto, explorando um pouco mais a sua dinâmica e organização.

Uma das mais marcantes diferenças no Open Source é que o software é desenvolvido por pessoas distribuídas globalmente, que na maioria das vezes não se conhecem pessoalmente. E coordenadas, não por estruturas hierárquicas com gerentes formais, mas por processos de governança baseados na meritocracia, conquistados e não impostos. Os desenvolvedores engajados nos projetos Open Source provêm seus próprios recursos, pois usam seus próprios computadores, provêm o acesso à Internet e escolhem suas próprias ferramentas de desenvolvimento. Não estão subordinados a um gerente que cobra presença ou horário, engajam-se nas partes do software que mais lhes interessam, usam suas próprias ferramentas e seus desktops e notebooks...E mesmo assim, geram projetos que muitas vezes são bem superiores aos projetos executados por equipes formais, subordinadas a processos padronizados, com gerentes profissionais... Esta é uma liberdade que temos dado pouca atenção...Não vale a pena entender um pouco mais este fenômeno?

OK, primeiro insight. O fato do modelo Open Source não seguir as regras tradicionais da engenharia de software não significa que seus processos sejam deficientes, mas apenas que são simplesmente diferentes. Um exemplo simples: no modelo tradicional adota-se o critério de aprovar e então implementar, isto é, após a aprovação das especificações, é que as alterações são efetuadas. No modelo Open Source, o critério é outro: implementa-se e depois aprova-se. Ou seja, implementa-se as alterações, muitas vezes são várias alternativas, e escolhe-se a melhor.

O modelo Open Source substitui o formalismo e a rigidez hierárquica, aliás, típicas da sociedade industrial, por uma rede social, altamente interativa e colaborativa. Não será um novo paradigma da forma de se trabalhar? Afinal, se estamos desenvolvendo artefatos da sociedade do conhecimento (software) por que adotar meios e práticas da sociedade industrial?

Participar de uma rede social e conquistar respeito e reconhecimento dos pares é uma forma de valorização que complementa a tradicional forma de remuneração monetária. Claro que não se vive sem dinheiro, mas começamos também a valorizar o capital social. Talvez esteja aí um dos principais motivadores que fazem as pessoas investirem tempo e conhecimento para escreverem software sem remuneração direta. Algumas pesquisas mostram que é comum desenvolvedores trabalharem em mais de um projeto Open Source. E, claro, os membros da elite dos projetos Open Source (os core team) não apenas conquistam respeito da comunidade, mas conseguem recompensas financeiras substanciais, muitas vezes contratados por empresas de software para continuarem liderando seus próprios projetos.

Explorando mais a questão da rede social, vemos que os membros dos projetos Open Source tem que conquistar seu espaço pelos próprios méritos. Começam como usuários, fazendo downloads e usando o software, passam para "add-on developers", colaborando de forma pontual, resolvendo bugs e submetendo patches. Neste estágio ainda estão na periferia dos projetos...Posteriormente, de acordo com a qualidade e intensidade das colaborações, podem assumir papéis mais importantes, e escalar a rede social, atuando inclusive como moderadores de fóruns de discussão.

De maneira geral, para ascender de posição, devem ser convidados e aprovados pela comunidade. Não existe um plano de carreira pré-definido ou avaliações formais. O ápice do prestígio na rede social é fazer parte do core team, onde são responsáveis pela orientação dos projetos. São a elite dos projetos Open Source. Existe dinamismo no processo, com aos papéis e ascendência social dependendo basicamente do esforço, motivação e comprometimento (leia-se contribuição) do indivíduo. Vejam que é uma organização bem diferente das que vemos nas empresas, onde as alocações das pessoas aos papéis são definidas pela empresa.

Outro insight...Não existem formalismos ou especificações prévias em projetos Open Source. Mas o "informalismo" do Open Source (na forma de emails, fóruns de discussão, blogs, wikis, etc) tomam o lugar de definições e documentações formais e não impede a geração de softwares de alta qualidade. Será que não é uma disrupção no processo de gerar conteúdo? O Open Source é "implementation-centric", o que significa que as ações ocorrem em torno do próprio desenvolvimento, com a inteligência coletiva da comunidade direcionando o projeto. Sem passar por esta fase de especificação, tão celebrada e exigida pelos modelos tradicionais de engenharia de software, tivemos o Linux, o Apache, o Eclipse, o Wikipedia e centenas de outros casos de sucesso... E fica uma pergunta...Será que é realmente necessário ter uma especificação formal e prévia do software?

Outro aspecto para pensarmos...Um projeto Open Source cria uma organização virtual, aglutinando indivíduos com conhecimentos diversos, mas correlatos ao escopo do projeto. Por exemplo, para um projeto de sistema operacional, os indivíduos tem que conhecer as características internas à sistemas deste tipo, como schedulers de processador, file management, etc. Como o processo é livre (cada um escolhe onde vai colaborar) e não existe uma metodologia ou padrão de desenvolvimento a seguir, as regras são mínimas. Mas apesar de mínimas, elas orientam o processo e a própria comunidade se auto-ajusta para colocar as pessoas que mais conhecem determinados aspectos do software aos respectivos componentes. Um subproduto da organização virtual, globalizada e sem barreiras hierárquicas é um maior impulso à inovação. Não existem os tradicionais limitadores impostos pelo padrão de pensamento vigente em uma determinada empresa.

Portanto, analisando com mais detalhes as comunidades Open Source vemos os embriões de uma nova forma de trabalho. É uma organização virtual, aglutinada por interesses comuns, desenvolvendo suas atividades de forma aberta, participativa e colaborativa. Criam suas regras sociais e modelos de governança, criam seus próprios métodos de trabalho e tudo isso com a liberdade que não vemos nos modelos tradicionais de engenharia de software. Querem um exemplo? Vejam as regras de etiqueta de uso do Bugziila, em https://bugzilla.mozilla.org/page.cgi?id=etiquette.html. Aliás, eu imagino que para se ter liberdade no uso do produto (usar, distribuir, etc), deve-se ter liberdade no seu processo de criação.

Bem, a idéia deste post é instigar...Será que não estamos gastamos muito tempo debatendo o resultado final do modelo Open Source (acesso ao código fonte, modelos de licenciamento, etc...) e estamos deixando de lado as mudanças mais profundas que ele traz? Acho que temos aí um bom assunto para discussões!




Fonte: http://www.ibm.com/developerworks/blogs/page/ctaurion?entry=desenvolvendo_software_no_modelo_open1
Reply all
Reply to author
Forward
0 new messages