Peço desculpas se esta questão está fora de tópico, mas é simultaneamente uma questão de economia e de programação. Se for para outra comunidade SE, por favor me indique.
Em teoria, o software GNU é inteiramente desenvolvido por voluntários durante seu tempo livre ou por empresas que financiam programadores para desenvolver software GNU (usando a renda de outro setor de sua atividade).
Entendo como ele pode funcionar perfeitamente bem em projetos de pequena escala que podem ser realizados em alguns fins de semana chuvosos por um único indivíduo (digamos, por exemplo, um jogo de sudoku), porque afinal de contas a programação de computadores é um hobby extremamente divertido e gratificante, e não tenho problemas em ver pessoas desenvolvendo programas pequenos ou médios durante seu tempo livre e compartilhá-los com o mundo.
O problema é que isso é extremamente ruim para programas maiores pelos seguintes motivos:
- Por mais divertida que seja a programação, à medida que o projeto que precisa ser implementado se torna maior, o tempo necessário para implementar a funcionalidade desejada cresce extremamente rapidamente. Um programa em larga escala leva uma incrível quantidade de tempo para ser desenvolvido, por exemplo, pode levar 15 anos de tempo livre e férias para um indivíduo programar um sistema operacional e, quando o software for lançado, estará completamente obsoleto .
- À medida que outras pessoas escrevem programas de outra maneira como você faria, ler e entender o código de outra pessoa leva muito tempo, na maioria dos casos, tanto quanto escrever seu próprio código do zero. Modificar o código de outras pessoas e tentar melhorá-lo, como é incentivado pela filosofia GNU, é quase tão demorado quanto o desenvolvimento de seu próprio clone do referido programa com a funcionalidade que você gostaria de adicionar.
- Assim que duas ou mais pessoas tiverem que colaborar para desenvolver um programa maior, isso cria muitos problemas de tomada de decisão que nunca surgiriam em um projeto de desenvolvedor único. O resultado é que, por exemplo, se um grupo de 2 programadores colaborar para um projeto que levaria 10 anos para um único homem fazer, eles não o farão em 5 anos, mas provavelmente em 8.
- Se as pessoas que colaboram para o mesmo projeto se encontrarem apenas na Internet, é fácil que um membro do projeto desapareça repentinamente (ou porque ele perdeu o interesse ou porque ele não pode mais estar fisicamente na Internet), tornando a colaboração ainda mais mais difíceis
Portanto, enquanto eu entendo perfeitamente como programas simples podem ser desenvolvidos com a mentalidade GNU, absolutamente não vejo como programas enormes como o GNU / Linux ou o gcc são possíveis nesse modelo. O gcc tem cerca de 7 milhões de linhas de código. Eu sei que linhas de código não significam muito, pois em um estágio posterior de um projeto, o programador mais produtivo é aquele que removerá as linhas de código (simplificando e / ou otimizando o projeto), mas isso dá uma visão geral da quantidade enorme de um projeto gcc é.
Então, em teoria, qualquer pessoa pode modificar livremente o gcc durante seu tempo livre, mas na prática? Foi desenvolvido por pessoas muito profissionais como um trabalho, não como um hobby. Qualquer um que criar um compilador como hobby passará a desistir, pois o custo / benefício não vale a pena:
- Desenvolver um programa grande é um projeto tão grande a longo prazo, que eles preferem usar seu tempo livre para realizar outras atividades que sejam mais gratificantes ou agradáveis a curto prazo
- Se eles desenvolvessem um programa grande de qualquer maneira, prefeririam fazê-lo por uma empresa que os pagaria do que fazê-lo gratuitamente.
Para atrair as pessoas interessadas em desenvolver um programa como GNU / Linux, gcc ou Open Office a longo prazo, deve ser gratificante. Então, minha pergunta é: Por que há pessoas contribuindo para um grande projeto GNU, se não estão recebendo um salário por isso?