Mi scuso se questa domanda è fuori tema, ma è contemporaneamente un'economia e una domanda di programmazione. Se dovesse andare in un'altra comunità SE, per favore indicami.
In teoria, il software GNU è interamente sviluppato da volontari durante il loro tempo libero o da società che finanziano volontariamente i programmatori per sviluppare software GNU (utilizzando le entrate provenienti da un altro settore della loro attività).
Capisco come possa funzionare perfettamente per un progetto su piccola scala che può essere svolto in un paio di weekend di pioggia da un singolo individuo (diciamo ad esempio un gioco di sudoku), perché dopo tutto la programmazione per computer è un hobby estremamente divertente e gratificante, e non ho problemi a vedere le persone sviluppare programmi di piccole o medie dimensioni durante il loro tempo libero e condividerli con il mondo.
Il problema è che questo si riduce in modo estremamente scarso per programmi più grandi per i seguenti motivi:
- Per quanto la programmazione sia divertente, poiché il progetto che deve essere implementato diventa più grande, il tempo necessario per implementare la funzionalità desiderata aumenta molto rapidamente. Lo sviluppo di un programma su larga scala richiede un'incredibile quantità di tempo, ad esempio potrebbero essere necessari 15 anni di tempo libero e ferie per la programmazione di un sistema operativo da parte di un individuo e, al momento del rilascio del suo software, sarà completamente obsoleto .
- Dato che altre persone scrivono programmi in un modo diverso da quello che avresti fatto tu, leggere e comprendere il codice di qualcun altro richiede molto tempo, nella maggior parte dei casi quanto scriverebbe il tuo codice da zero. Modificare il codice di un'altra gente e cercare di migliorarlo, come è incoraggiato dalla filosofia GNU, richiede quasi altrettanto tempo quanto sviluppare il proprio clone di detto programma con le funzionalità che si desidera aggiungere.
- Non appena 2 o più persone dovranno collaborare per sviluppare un programma più ampio, questo crea un sacco di problemi decisionali che non sorgerebbero mai in un progetto a singolo sviluppatore. Il risultato è che, ad esempio, se un gruppo di 2 programmatori collaborasse per un progetto che richiederebbe 10 anni per un singolo uomo, non ce la farebbero in 5 anni ma probabilmente in 8.
- Se le persone che collaborano per lo stesso progetto si incontrano solo su Internet, è facile che un membro del progetto svanisca improvvisamente (o perché ha perso interesse o perché fisicamente non può più essere su Internet), rendendo così anche la collaborazione Più forte
Quindi, mentre capisco perfettamente come programmi semplici possono essere sviluppati con la mentalità GNU, non vedo assolutamente come programmi così grandi come GNU / Linux o gcc siano possibili su questo modello. gcc ha circa 7 milioni di righe di codice. So che le righe di codice non significano molto, poiché in una fase successiva di un progetto il programmatore più produttivo è quello che rimuoverà effettivamente le righe di codice (semplificando e / o ottimizzando il progetto), ma questo dà una visione d'insieme di quanto un progetto gcc è.
Quindi, in teoria, chiunque può modificare liberamente gcc durante il tempo libero, ma in pratica? È stato sviluppato da persone molto professionali come lavoro, non come hobby. Chiunque realizzi un compilatore come hobby alla fine si arrenderà poiché il costo / beneficio non ne vale la pena:
- Lo sviluppo di un programma di grandi dimensioni è un progetto così lungo a lungo termine, che preferirebbero usare il loro tempo libero per avere altre attività più gratificanti o più divertenti a breve termine
- Se dovessero comunque sviluppare un programma di grandi dimensioni, preferirebbero farlo per un'azienda che li pagherà piuttosto che farlo gratuitamente
Al fine di attirare le persone interessate allo sviluppo di un programma come GNU / Linux, gcc o Open Office a lungo termine, dovrebbe essere gratificante. Quindi la mia domanda è: perché ci sono persone che contribuiscono al grande progetto GNU, se non ricevono uno stipendio per questo?