DUICUO

オープンソースとは何でしょうか?それはどこから来て、どこへ向かうのでしょうか?

国内の多くのソフトウェア企業や研究機関は、オープンソースへの熱意はフリーコードに限られており、オープンソースコミュニティの活動に深く関与することはほとんどありません。私たちはオープンソースへの貢献よりも利用が常に多く、国内で立ち上げられ、大きな影響力を持つオープンソースプロジェクトは極めて稀です。私たちは非常に倹約家で、現在利用しているオープンソースプロジェクトであっても、開発やテストのリソースを簡単に「無駄にする」つもりはありません。私は、フリーソフトウェアの精神的指導者であるリチャード・ストールマン氏の講演を2回聞く機会に恵まれました。彼は「フリーはフリーではない」と強調していました。同様に、オープンソースはフリーであり、フリーではないのです。誰もがオープンソースの自由な饗宴を無制限に享受している一方で、オープンソースの真の力はフリーアクセスではなく、自由であることを完全に忘れてしまっているのかもしれません。

[[130417]]

オープンソースとは何ですか?

簡単に言えば、オープンソースには次の 3 つの側面があります。

まずオープンソースはプロジェクトです。プロジェクトとして、より多くの関心と熱意を持つ技術者や非技術者の参加を促すため、オープンソースは独自の柔軟なプロジェクト組織方法と開発プロセスを採用することが多く、これは企業のそれとは大きく異なります。もちろん、一般的にオープンソースプロジェクトは1社または複数の企業によって主導されることが多いですが、他の組織、企業、または独立系開発者の参加を排除することはありません。オープンソースプロジェクトの管理チームは、ほとんどの場合、民主的に選出されます。

第二にオープンソースはコミュニティです。コミュニティとして、オープンソースは開発者、テスター、寄付者、そしてユーザーに、メーリングリスト、フォーラム、IRC、そして様々なカンファレンスからなるコミュニケーションプラットフォームを提供します。オープンソースの「オープン」とは、オープンコードだけでなく、コミュニケーションのためのオープンプラットフォームも意味します。相互尊重の原則が守られる限り、技術、開発、テスト、利用、管理など、ほぼあらゆる問題について議論することができます。誰もがアイデアや解決策を持ち寄り、様々な方法で協力してオープンソースに貢献しています。

最後にオープンソースは製品です。オープンソース製品は多くの場合、ユーザーのニーズを満たしていません。そのため、関連ライセンスに違反することなく、一部の企業はそれらをカスタマイズし、独自の製品やソリューションに変えています。もちろん、オープンソースの開発に貢献する企業もあります。これはwin-winの好循環です。ほぼすべてのオープンソースプロジェクトには、関連製品のリリースがあります。例は無数にあります。Linuxの製品化はその典型的な例であり、Linuxの製品化がなければ、Linuxオープンソースエコシステムは繁栄しなかったと言えます。他の例としては、Eclipseのさまざまな派生製品が挙げられます。OpenOffice.orgの分裂と衰退は、不十分で不適切な製品化が原因だった可能性があります。私たちの素晴らしい国には、外国のオープンソースプロジェクトの可能性を最大限に引き出し、国家自然科学賞の最優秀賞を受賞した優秀な学者がいると言われています。これは本当に驚くべき業績です。

重要なのは、オープンソースは自由な世界だということです。人々はコミュニティへの参加や離脱、様々な問題について自由に議論し、提案をすることができます。開発者はオープンソースのコードや技術を自由に学び、ユーザーはオープンソース製品を自由に利用できます。オープンコードでは、オープンソースコードと製品のライセンスに違反しない限り、オープンソース製品の機能は自由に書き換え、削除、追加できます。企業や組織もオープンソースコードや技術を自由に活用し、オープンソース製品を自由に販売できます。前述のように、オープンソースは企業の製品化への参加を促します。「みんなは私のために、私はみんなのために」—これはオープンソースの自由の真髄かもしれませんが、あまりにも美しく、信じられないほどです。現実に戻ると、自由のビジョンがどれほど魅力的であっても、オープンソースプロジェクト/コミュニティの成功または失敗は、最終的には社会のモラルにかかっています。もし自由の力が人々の参加意欲を刺激できないのであれば、そのオープンソースコミュニティ/プロジェクトの存在意義と価値は極めて疑わしいものとなります。

一方で、そしてより重要なのは、オープンソース自体は無料のビジネスモデルであると主張する人もいます。これは確かにその通りです。これは、インターネット企業が現在大きな成功を収めている無料のビジネスモデルと似ています。例えば、私たちはGoogle検索のたびに料金を支払っているわけではありませんが、私たちの検索行動はビッグデータの一部であり、最終的にはGoogleの広告収入につながります。十分な規模のユーザーベースを持つことが、このビジネスモデルの成功の鍵となります。同様に、オープンソースプロジェクトのソースコードと最終製品は無料で公開されており、自由に使用できますが、恣意的に使用することはできません。オープンソースのビジネスモデルには、財団を通じた資金調達、ユーザーに技術サポートサービスを課金すること、そして多くの企業がオープンソースプロジェクトの開発・テストリソースを直接提供しながら製品化することなどが含まれます。これもまた資金調達の一形態です。もちろん、前述のように、このオープンソースのビジネスモデルは、多数の無料ユーザーからの支持を得て初めて成功します。
オープンソースへの企業参加のメリット

オープンソースの利点とその自由性のみに焦点を当て、オープンソースに内在する自由の力を無視することは、純粋に功利主義的な観点から見ても、全く近視眼的です。オープンソースを利用する企業にとって、オープンソース・コミュニティの開発に積極的に参加することは、少なくとも2つの点でメリットをもたらします。

まず、オープンソースへの貢献度が高ければ高いほど、その影響力は大きくなり、結果としてポジティブな宣伝効果を生み出します。オープンソースは、あなたの技術、製品、ソリューションをより効果的にアピールし、ユーザーの信頼を獲得することを可能にします。

第二に、企業がオープンソースプロジェクトの開発方向をリードするだけの力を持っている場合、オープンソースコミュニティのリソースをより有効に活用して自社製品を改善でき、そのメリットは明白です。プログラマーにとって、オープンソースに参加する最大のメリットは、貢献することで得られる達成感です。私がIBMに勤務していたとき、私の製品ラインであるSymphonyは、OpenOffice.orgをベースにしたオフィススイートでした。当時、私はロールバックフォント高速マッチングアルゴリズムを開発しました。テキストにユーザーが指定したフォントがシステムに存在しない場合、このアルゴリズムは最適な代替フォントをすばやく見つけることができ、テキストのレンダリング速度と表示品質を大幅に向上させることができました。私はこのアルゴリズムをOpenOffice.orgに提出することに成功しました。ユーザーがOpenOffice.orgを使用してドキュメントを開いて編集するたびに、このアルゴリズムが実行される可能性が高いことを私は明確に認識していたため、この達成感は自然発生的に生まれました。もちろん、OpenOffice.orgが分裂したのは残念です。しかし、libreoffice.orgはまだ存在しています。

実際、中国のプログラマーがオープンソースに参加できない主な理由は、技術力ではなく、英語力の限界です。何年も英語を学び、CET-4やCET-6の資格を取得しても、限られた英語力では実際には役に立たないことに気づきます。言語の壁によるコミュニケーションの難しさは大きな課題ですが、外の世界の未知で制御不能な変化への恐怖から生じる惰性や慢心に比べれば、はるかに小さな問題です。ここで私が強調したいのは、意志があれば道は開けるということです。野心的なプログラマーにとって、心が開かれ、未知への好奇心と向上心に満ちているなら、英語は決して乗り越えられない要塞ではありません。さらに、中国のプログラマーが最も懸念しているのはリスニングとスピーキングのスキルですが、オープンソースコミュニティでは、主にメールでのコミュニケーションが主流です。
オープンソースに参加する方法

最後に、以下の点はオープンソースに興味のある人向けの参考情報です。

まず、ほぼすべてのオープンソース コミュニティでは初心者向けの入門ガイドを提供しており、これを注意深く読むことで不要な回り道を避けることができます。

次に、コミュニティに積極的に参加しましょう。疑問や不安があれば、一人で悩まず、思い切って質問しましょう。どんなに簡単な質問でも、親切な人が必ず答えてくれますし、誰もあなたを笑ったりしません。もちろん、コミュニケーションを取る際は常に相手を尊重しましょう。メールには基本的な礼儀正しさを盛り込み、誰かの助けに感謝の気持ちを伝えましょう。同時に、他の人を助けることも忘れないでください。

第三に、オープンソース開発は、厳格な計画がなく、ある程度自由で構造化されていない傾向があります。そのため、リクエストへの対応が不十分だったり、十分な速さで対応されなかったりすると感じることもあるでしょう。提出したバグやコードのすべてが承認されるわけではないことに留意することが重要です。そのような状況では、理由を明確に説明し、衝動的な行動を避ける必要があります。

第四に、オープンソースプロジェクトのコード品質は本当にひどいものがあります。おそらく、関与するプログラマーの質にばらつきがあり、監視が不十分なためでしょうが、すべてがそうというわけではありません。OpenOffice.org のコードには長すぎて、片側からは反対側が見えないとよく冗談を言っていたのを覚えています。ゲーデルの不完全性定理によれば、ラッセルとホワイトヘッドが『プリンキピア・マテマティカ』で示したような形式的な数論体系は、どれほど強力であっても不完全です。真でも偽でも証明できない、よく構成された G 命題が常に存在します。したがって、数論、さらには数学のすべての特性を完全に記述できる形式体系はありません。これは確かに完璧な結論ではありませんが、一方で、数学の真理の発見は依然として数学者の創意工夫に依存していることを意味します。つまり、あるものを失って別のものを得るようなケースです。人生は、大まかに言って、後悔、苦難、不条理、別れ、悩み、虚栄、悲しみ、ためらい、失恋、報われない恋、凡庸さ、才能のない野心、満たされない可能性、裕福で美しいという幻想、貧しく魅力のない苦しみなどに満ちています。逆に言えば、こうした悪い側面があるからこそ、良い側面がより貴重になるのです。不完全さだけが完璧さに貢献する、これは哲学的なパラドックスです。これは、多くの人々の共同の努力によって開発されたオープンソースのコンピュータプログラムにも当てはまります。だからこそ、私たちは忍耐強く、一瞬一瞬を大切にしなければなりません。

第五に、理論的には、チャーチ=チューリングのテーゼの計算可能範囲内にあるあらゆるソフトウェア機能は、コンピュータプログラミング言語を用いて表現できる。この点において、アルゴリズムやプログラムがどれほど洗練されていても、乗り越えられない技術的ハードルは存在しない。技術は常に単純であり、あなたができることは他の人にもでき、その逆もまた然りである。しかし、芸術には限界がない。絵画でエッシャー、音楽でバッハのレベルに到達したいと思っても、到底無理である。もちろん、ドナルド・アービン・クヌースの古典『コンピュータプログラミングの技法』に示されているように、コンピュータプログラミングも芸術と見なすことができる。したがって、プログラムの品質やアルゴリズムの性能は確かに様々である。つまり、企業も個人も、あらゆるものを貴重な宝物のように扱い、家宝の武術の教本や秘伝の漢方処方のように大切に守り、他人が手に入らないものを手に入れようとは考えるべきではない。それは大きな間違いである。したがって、多くの場合、オープンソースへの貢献は企業の競争力を損なうものではない。それどころか、強化することができます。

6 番目に、ポイント 5 とは逆に、独立したプログラマーとして、会社の知的財産ポリシーを完全に理解する必要があり、会社独自のコードをオープンソース コミュニティに送信してはなりません。