यदि यह प्रश्न विषय से बाहर है, तो मैं माफी चाहता हूं, लेकिन यह एक अर्थव्यवस्था और एक प्रोग्रामिंग प्रश्न है। अगर इसे दूसरे एसई कम्युनिटी में जाना चाहिए, तो कृपया मुझे संकेत दें।
सिद्धांत रूप में, GNU सॉफ्टवेयर पूरी तरह से स्वयंसेवकों द्वारा अपने खाली समय के दौरान, या उन कंपनियों द्वारा विकसित किया जाता है जो GNU सॉफ़्टवेयर (अपनी गतिविधि के दूसरे क्षेत्र से आय का उपयोग करके) विकसित करने के लिए स्वैच्छिक निधि प्रोग्रामर हैं।
मैं समझता हूं कि यह छोटे पैमाने पर परियोजना के लिए पूरी तरह से ठीक कैसे काम कर सकता है जो एक एकल व्यक्ति द्वारा बारिश के सप्ताहांत में किया जा सकता है (उदाहरण के लिए एक सुडोकू खेल के लिए कहते हैं), क्योंकि सभी कंप्यूटर प्रोग्रामिंग एक बहुत ही मजेदार और पुरस्कृत शौक है, और मुझे अपने खाली समय के दौरान छोटे या मध्यम कार्यक्रमों को विकसित करने और दुनिया को साझा करने में लोगों को देखने में कोई समस्या नहीं है।
समस्या यह है कि यह निम्न कारणों से बड़े कार्यक्रमों के लिए बेहद खराब है:
- प्रोग्रामिंग जितना मजेदार है, उतनी ही परियोजना को कार्यान्वित करना बड़ा हो जाता है, लेकिन वांछित कार्यक्षमता को लागू करने में लगने वाला समय बहुत जल्दी बढ़ता है। एक बड़े पैमाने पर कार्यक्रम को विकसित करने के लिए एक अविश्वसनीय मात्रा में समय लगता है, उदाहरण के लिए किसी ऑपरेटिंग सिस्टम को प्रोग्राम करने के लिए किसी व्यक्ति के लिए आसानी से खाली समय और छुट्टी का समय 15 साल लग सकते हैं, और जब तक उसका सॉफ्टवेयर जारी नहीं हो जाता, तब तक वह पूरी तरह से अप्रचलित हो जाएगा। ।
- जैसा कि अन्य लोग दूसरे तरीके से प्रोग्राम लिखते हैं कि जिस तरह से आपने इसे किया होगा, किसी और के कोड को पढ़ने और समझने में बहुत समय लगता है , ज्यादातर मामलों में खरोंच से अपना खुद का कोड लिखना जितना होता है। अन्य लोगों के कोड को संशोधित करना और इसे बेहतर बनाने का प्रयास करना, क्योंकि यह GNU दर्शन द्वारा प्रोत्साहित किया जाता है, लगभग उतनी ही समय लगता है जितना कि आप जिस कार्यक्षमता को जोड़ना चाहते हैं, उसके साथ उक्त कार्यक्रम का अपना क्लोन विकसित करना है।
- जैसे ही 2 या अधिक लोगों को एक बड़े कार्यक्रम को विकसित करने के लिए सहयोग करना होगा, इससे बहुत सारे निर्णय लेने की समस्या पैदा होती है जो कभी भी एक एकल-डेवलपर परियोजना पर नहीं पैदा होती। इसका परिणाम यह है कि, उदाहरण के लिए, यदि 2 प्रोग्रामर का एक समूह एक ऐसी परियोजना के लिए सहयोग करता है जिसे बनाने में 10 साल लगेंगे, तो वे इसे 5 साल में नहीं बनाएंगे, लेकिन शायद 8 में।
- यदि उसी परियोजना के लिए सहयोग करने वाले लोग पूरी तरह से इंटरनेट पर मिलते हैं, तो परियोजना के एक सदस्य के लिए अचानक गायब हो जाना आसान है (या तो क्योंकि वह रुचि खो देता है या क्योंकि वह शारीरिक रूप से इंटरनेट पर अब और नहीं हो सकता है), इस प्रकार से भी सहयोग करना और जोर से
इसलिए, जब मैं पूरी तरह से समझता हूं कि जीएनयू मानसिकता के साथ सरल कार्यक्रमों को कैसे विकसित किया जा सकता है, तो मैं बिल्कुल नहीं देखता कि इस मॉडल पर जीएनयू / लिनक्स या जीसीसी जैसे विशाल कार्यक्रम कैसे संभव हैं। gcc कोड की लगभग 7 मिलियन लाइनें है। मुझे पता है कि कोड की लाइनें ज्यादा मायने नहीं रखती हैं, क्योंकि एक परियोजना के बाद के चरण में अधिक उत्पादक प्रोग्रामर वह होता है जो वास्तव में कोड की लाइनों को हटा देगा (परियोजना को सरल और / या अनुकूलन करना), लेकिन यह एक ओवरव्यू देता है कि कितना भारी एक परियोजना जीसीसी है।
तो सिद्धांत रूप में, कोई भी स्वतंत्र रूप से अपने खाली समय के दौरान जीसीसी को संशोधित कर सकता है, लेकिन व्यवहार में? यह बहुत ही पेशेवर लोगों द्वारा नौकरी के रूप में विकसित किया गया था, शौक के रूप में नहीं। एक शौक के रूप में एक कंपाइलर बनाने वाला आखिरकार हार मान लेगा क्योंकि लागत / लाभ इसके लायक नहीं है:
- एक बड़े कार्यक्रम का विकास इतनी लंबी अवधि की विशाल परियोजना है, वे अपने खाली समय का उपयोग अन्य गतिविधियों के लिए करते हैं जो अल्पावधि में अधिक फायदेमंद या अधिक सुखद होते हैं।
- यदि वे वैसे भी एक बड़े कार्यक्रम को विकसित करने के लिए थे, तो वे इसे एक कंपनी के लिए करेंगे जो उन्हें मुफ्त में करने से भुगतान करेगा
लंबे समय में जीएनयू / लिनक्स, जीसीसी या ओपन ऑफिस जैसे कार्यक्रम को विकसित करने में रुचि रखने वाले लोगों को प्राप्त करने के लिए, इसे पुरस्कृत किया जाना चाहिए। तो मेरा सवाल यह है कि जीएनयू परियोजना में लोगों का योगदान क्यों है, अगर उन्हें इसके लिए वेतन नहीं मिल रहा है?