ฉันขอโทษหากคำถามนี้อยู่นอกหัวข้อ แต่เป็นเศรษฐกิจและคำถามการเขียนโปรแกรมพร้อมกัน ถ้าควรไปที่ชุมชน SE อื่นโปรดระบุฉัน
ในทางทฤษฎีซอฟต์แวร์ GNU ได้รับการพัฒนาโดยอาสาสมัครในช่วงเวลาว่างหรือโดย บริษัท ที่โปรแกรมเมอร์กองทุนอาสาสมัครเพื่อพัฒนาซอฟต์แวร์ GNU (โดยใช้รายได้จากกิจกรรมอื่นของภาคส่วน)
ฉันเข้าใจว่ามันสามารถทำงานได้ดีอย่างสมบูรณ์แบบสำหรับโครงการขนาดเล็กที่สามารถทำได้ในช่วงวันหยุดสุดสัปดาห์โดยบุคคลเดียว (เช่นตัวอย่างเกมซูโดกุ) เพราะหลังจากการเขียนโปรแกรมคอมพิวเตอร์ทั้งหมดเป็นงานอดิเรกที่สนุกและคุ้มค่า และฉันไม่มีปัญหาที่จะเห็นคนกำลังพัฒนาโปรแกรมขนาดเล็กหรือขนาดกลางในช่วงเวลาว่างและแบ่งปันให้กับโลก
ปัญหาคือว่าสิ่งนี้มีขนาดเล็กมากสำหรับโปรแกรมขนาดใหญ่ด้วยเหตุผลดังต่อไปนี้:
- สนุกเหมือนการเขียนโปรแกรมเนื่องจากโครงการที่ต้องดำเนินการมีขนาดใหญ่ขึ้นเวลาที่ใช้ในการใช้งานฟังก์ชั่นที่ต้องการจะเติบโตอย่างรวดเร็ว โปรแกรมขนาดใหญ่ใช้เวลาในการพัฒนาอย่างไม่น่าเชื่อตัวอย่างเช่นอาจใช้เวลาว่าง 15 ปีและวันหยุดพักผ่อนสำหรับแต่ละคนในการเขียนโปรแกรมระบบปฏิบัติการและเมื่อซอฟต์แวร์ของเขาถูกปล่อยออกมามันจะล้าสมัยไปอย่างสมบูรณ์ .
- ในขณะที่คนอื่นเขียนโปรแกรมในลักษณะที่คุณทำเสร็จการอ่านและทำความเข้าใจโค้ดของคนอื่นต้องใช้เวลามากในกรณีส่วนใหญ่เท่าที่จะเขียนโค้ดของคุณเองตั้งแต่เริ่มต้น การปรับเปลี่ยนรหัสของผู้อื่นและพยายามปรับปรุงตามที่ได้รับการสนับสนุนโดยปรัชญา GNU นั้นใช้เวลานานพอสมควรในการพัฒนาโคลนของโปรแกรมดังกล่าวด้วยฟังก์ชั่นที่คุณต้องการเพิ่ม
- ทันทีที่มีคน 2 คนหรือมากกว่านั้นจะต้องร่วมมือกันพัฒนาโปรแกรมที่ใหญ่ขึ้นสิ่งนี้จะสร้างปัญหาการตัดสินใจจำนวนมากที่ไม่เคยเกิดขึ้นกับโครงการผู้พัฒนาเดี่ยว ผลลัพธ์คือตัวอย่างเช่นหากกลุ่มของโปรแกรมเมอร์ 2 คนทำงานร่วมกันในโครงการที่ใช้เวลา 10 ปีในการสร้างคนเดียวพวกเขาจะไม่ทำใน 5 ปี แต่อาจเป็น 8 ปี
- หากคนที่ทำงานร่วมกันในโครงการเดียวกันพบบนอินเทอร์เน็ตเพียงอย่างเดียวมันเป็นเรื่องง่ายสำหรับสมาชิกคนหนึ่งของโครงการที่จะหายไปทันที (เพราะเขาหมดความสนใจหรือเพราะเขาไม่สามารถอยู่บนอินเทอร์เน็ตได้อีกต่อไป) จึงทำให้การทำงานร่วมกันได้ ยาก
ดังนั้นในขณะที่ฉันเข้าใจอย่างสมบูรณ์แบบว่าโปรแกรมง่าย ๆ สามารถพัฒนาด้วยแนวคิด GNU ได้อย่างไรฉันไม่เห็นเลยว่าโปรแกรมขนาดใหญ่เช่น GNU / Linux หรือ gcc เป็นไปได้อย่างไรในรุ่นนี้ gcc มีรหัสประมาณ 7 ล้านบรรทัด ฉันรู้ว่าบรรทัดของโค้ดไม่ได้มีความหมายมากนักเนื่องจากในระยะต่อมาของโปรเจ็กต์โปรแกรมเมอร์ที่มีประสิทธิผลมากขึ้นคือผู้ที่จะลบบรรทัดของโค้ดจริง ๆ (ทำให้ง่ายขึ้นและ / หรือปรับโครงการให้เหมาะสม) โครงการ gcc คือ
ดังนั้นในทางทฤษฎีใคร ๆ ก็สามารถดัดแปลง gcc ได้อย่างอิสระในช่วงเวลาว่าง แต่ในทางปฏิบัติ มันได้รับการพัฒนาโดยคนที่มีความเป็นมืออาชีพมากเป็นงานไม่ใช่งานอดิเรก ทุกคนที่สร้างคอมไพเลอร์เป็นงานอดิเรกในที่สุดจะยอมแพ้เพราะค่าใช้จ่าย / ผลประโยชน์ไม่คุ้มค่า:
- การพัฒนาโปรแกรมขนาดใหญ่เป็นโครงการขนาดใหญ่ในระยะยาวพวกเขาต้องการใช้เวลาว่างเพื่อทำกิจกรรมอื่น ๆ ที่ให้ผลตอบแทนมากกว่าหรือสนุกสนานในระยะสั้น
- หากพวกเขาต้องพัฒนาโปรแกรมขนาดใหญ่อยู่ดีพวกเขาต้องการทำเพื่อ บริษัท ที่จะจ่ายเงินให้พวกเขาแทนที่จะทำโปรแกรมฟรี
เพื่อให้ผู้ที่สนใจพัฒนาโปรแกรมเช่น GNU / Linux, gcc หรือ Open Office ในระยะยาวควรได้รับรางวัล ดังนั้นคำถามของฉันคือ: ทำไมมีคนบริจาคให้กับโครงการ GNU ขนาดใหญ่ถ้าพวกเขาไม่ได้รับเงินเดือน?