GNUソフトウェア開発はどのように経済的に持続しますか?
この質問がトピックから外れていることをお詫び申し上げますが、それは同時に経済とプログラミングの問題です。それが別のSEコミュニティに行くべきである場合は、私に教えてください。 理論的には、GNUソフトウェアは自由な時間にボランティアによって完全に開発されるか、またはプログラマーに自発的に資金提供してGNUソフトウェアの開発に(彼らの活動の別のセクターからの収入を使用して)企業によって開発されます。 数週間の雨の週末に1人の個人(たとえば、数独ゲームなど)で実行できる小規模なプロジェクトで、これが完全にうまく機能する方法を理解しています。そして、私が自由時間中に中小規模のプログラムを開発し、それらを世界に共有するのを見るのに問題はありません。 問題は、次の理由により、これが大規模なプログラムに対して非常にうまく機能しないことです。 プログラミングと同じくらい楽しいですが、実装する必要があるプロジェクトが大きくなるにつれて、必要な機能を実装するのにかかる時間が非常に速くなります。大規模なプログラムの開発には信じられないほどの時間がかかります。たとえば、個人がオペレーティングシステムをプログラムするには、15年の自由時間と休暇が簡単にかかり、ソフトウェアがリリースされるまでに完全に時代遅れになります。 。 他の人があなたがそうした方法とは異なる方法でプログラムを書くので、他の誰かのコードを読んで理解することは、多くの場合、あなた自身のコードを一から書くのと同じくらい多くの時間がかかります。他の人のコードを修正してそれを改善しようとすることは、GNUの哲学によって奨励されているため、追加したい機能を備えた上記のプログラムの独自のクローンを開発するのとほとんど同じくらい時間がかかります。 2人以上の人が協力してより大きなプログラムを開発する必要があるとすぐに、これは単一の開発者プロジェクトでは決して発生しなかった多くの意思決定上の問題を引き起こします。その結果、たとえば、2人のプログラマーのグループが、1人の男性が作るのに10年かかるプロジェクトで共同作業を行った場合、5年ではなく、おそらく8年になるでしょう。 同じプロジェクトで共同作業をしている人々がインターネットでのみ会うと、プロジェクトの1人のメンバーが突然消える(彼が興味を失ったか、物理的にインターネットに接続できなくなったため)ため、簡単に共同作業を行うことができます。もっと強く したがって、GNUの考え方で単純なプログラムを開発する方法は完全に理解していますが、このモデルでGNU / Linuxやgccなどの巨大なプログラムがどのように可能になるかはまったくわかりません。gccは約700万行のコードです。私はコードの行があまり意味がないことを知っています。プロジェクトの後の段階で、より生産的なプログラマーが実際にコードの行を削除する(プロジェクトを単純化および/または最適化する)ためですが、これにより、プロジェクトgccです。 理論的には、誰もが自由時間にgccを自由に変更できますが、実際には?それは趣味ではなく仕事として非常に専門的な人々によって開発されました。コンパイラーを趣味として作成する人はだれでも、コスト/利益に価値がないので、結局あきらめます。 大規模なプログラムの開発は非常に長期的な巨大プロジェクトであり、彼らは自由時間を利用して、短期的にやりがいのある、またはより楽しい他の活動をしたいと考えています。 とにかく大規模なプログラムを開発する場合、彼らは無料で行うよりも、彼らにお金を払う会社のためにそれをしたいのです。 長期的にGNU / Linux、gcc、Open Officeなどのプログラムの開発に興味を持ってもらうには、やりがいがあります。だから私の質問は、大規模なGNUプロジェクトに給料がもらえないのに、なぜ貢献しているのですか?