Je m'excuse si cette question est hors sujet, mais c'est à la fois une question d'économie et de programmation. Si cela devait aller dans une autre communauté SE, veuillez me l'indiquer.
En théorie, les logiciels GNU sont entièrement développés par des bénévoles pendant leur temps libre, ou par des entreprises qui financent volontairement des programmeurs pour développer des logiciels GNU (en utilisant les revenus d'un autre secteur de leur activité).
Je comprends comment cela peut parfaitement fonctionner pour un projet à petite échelle qui peut être fait en quelques week-ends pluvieux par une seule personne (disons par exemple un jeu de sudoku), car après tout, la programmation informatique est un passe-temps extrêmement amusant et gratifiant, et je n'ai aucun problème à voir des gens développer des programmes petits ou moyens pendant leur temps libre et les partager avec le monde.
Le problème est que cela évolue extrêmement mal pour les programmes plus importants pour les raisons suivantes:
- Aussi amusant que soit la programmation, au fur et à mesure que le projet à implémenter devient plus grand, le temps nécessaire pour implémenter les fonctionnalités souhaitées augmente extrêmement rapidement. Un programme à plus grande échelle prend un temps incroyable à développer, par exemple cela pourrait facilement prendre 15 ans de temps libre et de vacances pour qu'un individu programme un système d'exploitation, et au moment où son logiciel sera publié, il sera complètement obsolète .
- Comme d'autres personnes écrivent des programmes d'une autre manière que vous l'auriez fait, lire et comprendre le code de quelqu'un d'autre prend beaucoup de temps, dans la plupart des cas autant que d'écrire votre propre code à partir de zéro. Modifier le code d'une autre personne et essayer de l'améliorer, comme cela est encouragé par la philosophie GNU, prend presque autant de temps que de développer votre propre clone dudit programme avec les fonctionnalités que vous souhaitez ajouter.
- Dès que 2 personnes ou plus devront collaborer pour développer un programme plus important, cela crée de nombreux problèmes de prise de décision qui ne se poseraient jamais sur un projet à développeur unique. Le résultat est que, par exemple, si un groupe de 2 programmeurs collabore pour un projet qui prendrait 10 ans à un seul homme, il ne le fera pas en 5 ans mais probablement en 8.
- Si les personnes qui collaborent pour le même projet se rencontrent uniquement sur Internet, il est facile pour un membre du projet de disparaître soudainement (soit parce qu'il a perdu tout intérêt, soit parce qu'il ne peut plus physiquement être sur Internet), rendant ainsi la collaboration encore Plus fort
Donc, même si je comprends parfaitement comment des programmes simples peuvent être développés avec la mentalité GNU, je ne vois absolument pas comment de tels programmes énormes tels que GNU / Linux ou gcc sont possibles sur ce modèle. gcc représente environ 7 millions de lignes de code. Je sais que les lignes de code ne signifient pas grand-chose, car à un stade ultérieur d'un projet, le programmeur le plus productif est celui qui supprimera les lignes de code (simplifiant et / ou optimisant le projet), mais cela donne un aperçu de la masse de un projet gcc est.
Donc en théorie, n'importe qui peut modifier librement gcc pendant son temps libre, mais en pratique? Il a été développé par des gens très professionnels comme un travail, pas comme un hobby. Quiconque fait un compilateur comme passe-temps finira par abandonner car le coût / avantage n'en vaut pas la peine:
- Développer un grand programme est un projet énorme à long terme, ils préfèrent utiliser leur temps libre pour avoir d'autres activités plus gratifiantes ou plus agréables à court terme
- S'ils devaient de toute façon développer un grand programme, ils préfèrent le faire pour une entreprise qui les paiera plutôt que de le faire gratuitement
Pour que les gens s'intéressent au développement d'un programme tel que GNU / Linux, gcc ou Open Office à long terme, cela devrait être gratifiant. Alors ma question est: pourquoi y a-t-il des gens qui contribuent à un grand projet GNU, s'ils ne reçoivent pas de salaire pour cela?