Ich entschuldige mich, wenn diese Frage nicht zum Thema gehört, aber gleichzeitig eine Wirtschafts- und eine Programmierfrage ist. Wenn es zu einer anderen SE-Gemeinde gehen sollte, geben Sie mir bitte an.
Theoretisch wird GNU-Software ausschließlich von Freiwilligen in ihrer Freizeit oder von Unternehmen entwickelt, die freiwillig Programmierer finanzieren, um GNU-Software zu entwickeln (indem sie Einnahmen aus einem anderen Sektor ihrer Tätigkeit verwenden).
Ich verstehe, wie es für kleine Projekte, die an ein paar regnerischen Wochenenden von einer einzelnen Person durchgeführt werden können (sagen wir zum Beispiel ein Sudoku-Spiel), perfekt funktionieren kann, denn schließlich ist Computerprogrammierung ein äußerst lustiges und lohnendes Hobby. und ich habe kein Problem damit, Leute zu sehen, die in ihrer Freizeit kleine oder mittlere Programme entwickeln und sie der Welt mitteilen.
Das Problem ist, dass dies für größere Programme aus folgenden Gründen extrem schlecht skaliert:
- So unterhaltsam das Programmieren auch ist, je größer das zu implementierende Projekt wird, desto schneller wächst die Zeit für die Implementierung der gewünschten Funktionalität. Die Entwicklung eines größeren Programms nimmt unglaublich viel Zeit in Anspruch. Beispielsweise kann es leicht 15 Jahre Freizeit und Urlaubszeit dauern, bis eine Person ein Betriebssystem programmiert, und wenn seine Software veröffentlicht wird, ist es völlig veraltet .
- Da andere Leute Programme auf eine andere Weise schreiben, als Sie es getan hätten, nimmt das Lesen und Verstehen des Codes eines anderen viel Zeit in Anspruch, in den meisten Fällen genauso viel wie das Schreiben Ihres eigenen Codes von Grund auf neu. Das Ändern des Codes einer anderen Person und der Versuch, ihn zu verbessern, wie es durch die GNU-Philosophie gefördert wird, ist fast genauso zeitaufwändig wie das Entwickeln eines eigenen Klons des genannten Programms mit der Funktionalität, die Sie hinzufügen möchten.
- Sobald zwei oder mehr Personen zusammenarbeiten müssen, um ein größeres Programm zu entwickeln, entstehen viele Entscheidungsprobleme, die bei einem Projekt mit nur einem Entwickler niemals auftreten würden. Das Ergebnis ist, dass zum Beispiel, wenn eine Gruppe von 2 Programmierern für ein Projekt zusammenarbeitet, dessen Erstellung für einen einzelnen Mann 10 Jahre dauern würde, sie es in 5 Jahren nicht schaffen, aber wahrscheinlich in 8 Jahren.
- Wenn sich Personen, die für dasselbe Projekt zusammenarbeiten, ausschließlich im Internet treffen, kann ein Mitglied des Projekts leicht plötzlich verschwinden (entweder weil er das Interesse verloren hat oder weil er physisch nicht mehr im Internet sein kann), wodurch die Zusammenarbeit gleichmäßig wird Schwerer
Obwohl ich genau verstehe, wie einfache Programme mit der GNU-Denkweise entwickelt werden können, sehe ich absolut nicht, wie so große Programme wie GNU / Linux oder gcc mit diesem Modell möglich sind. gcc besteht aus rund 7 Millionen Codezeilen. Ich weiß, dass Codezeilen nicht viel bedeuten, da in einer späteren Phase eines Projekts der produktivere Programmierer tatsächlich Codezeilen entfernt (Vereinfachung und / oder Optimierung des Projekts), aber dies gibt einen Überblick darüber, wie umfangreich Code ist ein projekt gcc ist.
Theoretisch kann also jeder in seiner Freizeit gcc frei modifizieren, aber in der Praxis? Es wurde von sehr professionellen Leuten als Job entwickelt, nicht als Hobby. Jeder, der einen Compiler zum Hobby macht, wird irgendwann aufgeben, da sich Kosten / Nutzen nicht lohnen:
- Die Entwicklung eines großen Programms ist ein langfristig so großes Projekt, dass sie ihre Freizeit lieber für andere Aktivitäten nutzen möchten, die kurzfristig lohnender oder angenehmer sind
- Wenn sie sowieso ein großes Programm entwickeln würden, würden sie es lieber für ein Unternehmen tun, das sie bezahlt, als es kostenlos zu tun
Um die Leute langfristig für die Entwicklung eines Programms wie GNU / Linux, gcc oder Open Office zu interessieren, sollte es sich lohnen. Meine Frage lautet also: Warum tragen Menschen zu einem großen GNU-Projekt bei, wenn sie kein Gehalt dafür bekommen?