Прошу вибачення, якщо це питання поза темою, але це одночасно економіка та питання програмування. Якщо вона повинна перейти до іншої комунальної громади SE, будь ласка, вкажіть мені.
Теоретично програмне забезпечення GNU повністю розробляється волонтерами у вільний час, або компаніями, які програмують добровільні програми для розробки програмного забезпечення GNU (використовуючи дохід від іншого сектору своєї діяльності).
Я розумію, як це може прекрасно працювати для малого масштабного проекту, який може зробити пару дощових вихідних однією людиною (скажімо, наприклад, гра в судоку), адже адже програмування на комп’ютері - надзвичайно веселе та корисне хобі, і я не маю жодних проблем бачити людей, що розробляють невеликі та середні програми у вільний час, і ділитися ними у світі.
Проблема полягає в тому, що це масштабується вкрай погано для великих програм з наступних причин:
- Настільки ж цікавим, як і програмування, коли проект, який потрібно реалізувати, стає більшим, час, необхідний для реалізації потрібної функціональності, зростає надзвичайно швидко. Програма більш масштабного масштабу займає неймовірну кількість часу, наприклад, для запрограмування операційної системи людині може знадобитися 15 років вільного часу та відпустки, а до моменту випуску його програмне забезпечення буде повністю застарілим. .
- Оскільки інші люди пишуть програми іншим способом, як так, як ви це зробили, читання та розуміння чужого коду займає багато часу, в більшості випадків стільки ж, скільки і написання власного коду з нуля. Змінення коду інших людей та спробу його вдосконалити, оскільки це заохочує філософія GNU - це майже стільки ж часу, як і розробка власного клону вказаної програми з функціоналом, який ви хочете додати.
- Як тільки двом і більше людям доведеться співпрацювати, щоб розробити більшу програму, це створить безліч питань щодо прийняття рішень, які ніколи не виникли б у проекті одного розробника. Результат полягає в тому, що, наприклад, якщо група з 2-х програмістів співпрацює над проектом, який потребує 10 років, щоб створити одного чоловіка, вони не зроблять це через 5 років, але, ймовірно, через 8.
- Якщо люди, які співпрацюють над тим самим проектом, зустрічаються в Інтернеті виключно в Інтернеті, для одного учасника проекту легко зникнути раптово (або через те, що він втратив інтерес, або через те, що фізично більше не може бути в Інтернеті), завдяки чому співпраця навіть важче
Отже, хоча я прекрасно розумію, як прості програми можуть бути розроблені за допомогою мислення GNU, я абсолютно не бачу, як такі величезні програми, як GNU / Linux або gcc, можливі на цій моделі. gcc становить близько 7 мільйонів рядків коду. Я знаю, що рядки коду не значать багато, оскільки на більш пізньому етапі проекту більш продуктивним програмістом буде той, який фактично видалить рядки коду (спрощення та / або оптимізація проекту), але це дає перегляд того, наскільки масивний проект gcc є.
Тож теоретично кожен може вільно змінювати gcc у вільний час, але на практиці? Його розробляли дуже професійні люди як робота, а не як хобі. Кожен, хто робить компілятор як хобі, врешті-решт відмовиться, оскільки вартість / вигода не вартує цього:
- Розробка великої програми - це такий довгостроковий величезний проект, вони скоріше використовувати свій вільний час для проведення інших заходів, які будуть більш корисними або приємнішими за короткий термін
- Якби вони все-таки розробили велику програму, вони краще зробили б це для компанії, яка буде платити їм, ніж робити це безкоштовно
Для того, щоб зацікавити людей у розробці такої програми, як GNU / Linux, gcc або Open Office, в довгостроковій перспективі це повинно бути корисним. Отже, моє питання: Чому люди вносять внесок у великий проект GNU, якщо вони не отримують за це зарплату?