Saya minta maaf jika pertanyaan ini di luar topik, tetapi secara bersamaan merupakan pertanyaan ekonomi dan pemrograman. Jika harus pergi ke komunitas SE lain, harap tunjukkan saya.
Secara teori, perangkat lunak GNU sepenuhnya dikembangkan oleh sukarelawan selama waktu luang mereka, atau oleh perusahaan yang secara sukarela mendanai pemrogram untuk mengembangkan perangkat lunak GNU (dengan menggunakan pendapatan dari sektor lain dari aktivitas mereka).
Saya mengerti bagaimana itu bisa bekerja dengan baik untuk proyek skala kecil yang dapat dilakukan dalam beberapa akhir pekan hujan oleh satu orang (katakanlah misalnya permainan sudoku), karena bagaimanapun pemrograman komputer adalah hobi yang sangat menyenangkan dan bermanfaat, dan saya tidak punya masalah melihat orang mengembangkan program kecil atau menengah selama waktu luang mereka dan membagikannya kepada dunia.
Masalahnya adalah skala ini sangat buruk untuk program yang lebih besar karena alasan berikut:
- Sama menyenangkannya dengan pemrograman, karena proyek yang harus diimplementasikan menjadi lebih besar, waktu yang diperlukan untuk mengimplementasikan fungsionalitas yang diinginkan tumbuh sangat cepat. Program berskala lebih besar membutuhkan waktu yang luar biasa untuk berkembang, misalnya dengan mudah bisa memakan waktu 15 tahun dan waktu liburan bagi seseorang untuk memprogram sistem operasi, dan pada saat perangkat lunaknya dirilis, ia akan sepenuhnya usang .
- Ketika orang lain menulis program dengan cara lain seperti cara Anda melakukannya, membaca dan memahami kode orang lain membutuhkan banyak waktu, dalam banyak kasus, sama seperti menulis kode Anda sendiri dari awal. Mengubah kode orang lain dan mencoba memperbaikinya, seperti yang didorong oleh filosofi GNU, hampir sama memakan waktu dengan mengembangkan klon Anda sendiri dari program tersebut dengan fungsi yang ingin Anda tambahkan.
- Segera setelah 2 orang atau lebih harus berkolaborasi untuk mengembangkan program yang lebih besar, ini menciptakan banyak masalah pengambilan keputusan yang tidak akan pernah muncul pada proyek pengembang tunggal. Hasilnya adalah, misalnya jika sekelompok 2 programmer berkolaborasi untuk sebuah proyek yang akan memakan waktu 10 tahun untuk seorang pria lajang, mereka tidak akan berhasil dalam 5 tahun tetapi mungkin dalam 8.
- Jika orang-orang yang berkolaborasi untuk proyek yang sama bertemu di internet semata-mata, mudah bagi salah satu anggota proyek untuk menghilang secara tiba-tiba (baik karena dia kehilangan minat atau karena dia secara fisik tidak dapat berada di internet lagi), sehingga membuat kolaborasi bahkan lebih baik lagi. lebih sulit
Jadi, sementara saya mengerti betul bagaimana program sederhana dapat dikembangkan dengan pola pikir GNU, saya sama sekali tidak melihat bagaimana program besar seperti GNU / Linux atau gcc dimungkinkan pada model ini. gcc adalah sekitar 7 juta baris kode. Saya tahu baris kode tidak banyak berarti, karena pada tahap selanjutnya dari proyek, programmer yang lebih produktif adalah yang benar-benar akan menghapus baris kode (menyederhanakan dan / atau mengoptimalkan proyek), tetapi ini memberikan informasi seberapa besar proyek gcc adalah.
Jadi secara teori, siapa pun dapat dengan bebas memodifikasi gcc selama waktu luang mereka, tetapi dalam praktik? Ini dikembangkan oleh orang-orang yang sangat profesional sebagai pekerjaan, bukan sebagai hobi. Siapa pun yang membuat kompiler sebagai hobi pada akhirnya akan menyerah karena biaya / manfaatnya tidak sepadan:
- Mengembangkan program besar adalah proyek besar jangka panjang, mereka lebih suka menggunakan waktu luang mereka untuk melakukan kegiatan lain yang lebih bermanfaat atau lebih menyenangkan dalam jangka pendek
- Jika mereka ingin mengembangkan program besar, mereka lebih suka melakukannya untuk perusahaan yang akan membayar mereka daripada melakukannya secara gratis
Untuk membuat orang tertarik untuk mengembangkan program seperti GNU / Linux, gcc atau Open Office dalam jangka panjang, itu harus bermanfaat. Jadi pertanyaan saya adalah: Mengapa ada orang yang berkontribusi pada proyek GNU besar, jika mereka tidak mendapatkan gaji untuk itu?