国内の多くのソフトウェア企業や研究機関のオープンソースへの情熱は無料のコードに限られ、オープンソースコミュニティの活動に深く参加することはほとんどありません。私たちはオープンソースに対して常に利用が多く、貢献が少なく、国内から発起された一定の影響力を持つオープンソースプロジェクトは、もしあるとすれば、おそらく鳥の跡(非常に少ない)でしょう。私たちはこれほど吝嗇で、現在使用しているオープンソースプロジェクトに対しても、いかなる開発・テストのリソースも軽く「浪費」しようとしません。私は幸運にも自由ソフトウェアの精神的指導者Richard Stallmanの講演を2回聞く機会がありました。彼は特に「Free is not free」、自由は無料ではないことを強調しました。同様に、オープンソースは自由(Free)であり、無料(Free)ではありません。おそらく、みんなは無遠慮にオープンソースの無料ビュッフェを楽しむ時、オープンソースの真の力は自由であり、無料ではないことを完全に忘れています。

オープンソースとは何か?
簡単に言えば、オープンソースには3つの側面の内包があります:
まず、オープンソースはプロジェクト(Project)です。プロジェクトとして、より多くの興味を持ち、熱心な技術的および非技術的な人々の参加を引き付けるため、オープンソースは独自の柔軟なプロジェクト組織方式と開発プロセスを持っています。これは会社とは全く異なります。もちろん、一般的に言えば、オープンソースプロジェクトは1つまたはいくつかの会社が主導しますが、他の組織、会社、および独立した開発者の参加を決して排除しません。オープンソースプロジェクトの管理チームは主に民主的な方法で選出されます。
次に、オープンソースはコミュニティ(Community)です。コミュニティとして、オープンソースは開発者、テスター、寄付者、ユーザーに、メーリングリスト、フォーラム、IRC、各種会議で構成される交流プラットフォームを提供します。Open SourceのOpenは開放されたコードだけでなく、開放された交流のプラットフォームでもあります。相互尊重の原則に基づき、技術、開発、テスト、使用、管理のほぼすべての問題が議論の対象になります。みんなでアイデアを出し、方法を考え、各方面からオープンソースに貢献します。
最後に、オープンソースは製品(Product)です。多くの場合、オープンソースがリリースする製品はユーザーのニーズを満たすことができません。したがって、関連するライセンス(License)に違反しない条件で、一部の会社がカスタマイズし、自分の製品やソリューションに変えます。もちろん、一部の会社はオープンソースの発展に還元します。これはウィンウィンの良性循環です。ほぼすべてのオープンソースプロジェクトに関連する製品リリースがあります。このような例は数え切れません。Linuxの製品化は最も古典的な例です。Linuxの製品化がなければ、Linuxオープンソースの枝繁葉茂もなかったと言えます。他の例にはEclipseの各種派生製品があります。OpenOffice.orgの分裂と衰退は、その製品化が十分でなく、十分に良くなかったことによるかもしれません。私たちのこの不思議な国では、ある絶頂に聡明な院士が、海外のオープンソースプロジェクトを極致のレベルまで発揮し、これで国家自然科学一等賞を受賞したと言われています。人々は感嘆し、服従せざるを得ません。
重要なのは、オープンソースは自由な世界です。人々は自由にコミュニティに参加または退出し、自由に各種問題を議論し、各種提案を発表できます。開発者は自由にオープンソースのコードと技術を学び、ユーザーは自由にオープンソース製品を使用できます。開放されたコードがあれば、オープンソースコードと製品のライセンスに違反しない条件で、自由にオープンソース製品の機能を書き換え、削除、追加できます。会社や組織も自由にオープンソースのコードと技術を利用し、自由にオープンソース製品を販売できます。前述のように、オープンソースは会社が参加する製品化を奨励します。人々は私のために、私は人々のために、これはおそらくオープンソースの自由の真髄ですが、これはあまりにも美しく、美しくて信じがたいほどです。現実に戻ると、自由のビジョンがどれほど魅力的でも、オープンソースプロジェクト/コミュニティの成否は最終的に民心士気にかかっています。自由の力が依然として人々の参加の情熱を呼び起こせないなら、このオープンソースコミュニティ/プロジェクトが存在する理由と価値は大きく疑われます。
一方、より重要なのは、ある論者がオープンソース自体が無料のビジネスモデルであると考えていることです。これは真実です。これはインターネット企業が演じている無料のビジネスモデルと同じです。例えば、私たちはGoogle検索のたびに支払っていませんが、私たちの検索行動はビッグデータの一部として最終的にGoogleの広告収入に変換されます。十分なユーザーを持つことが、このビジネスモデルが成功する鍵です。同様に、オープンソースプロジェクトのソースコードと最終製品は無料で、開放され、自由にではなく勝手に使用できます。オープンソースのビジネスモデルには、財団を通じた寄付募集、ユーザーへの技術サポートサービスの提供による費用徴収が含まれます。また、多くの会社はオープンソースプロジェクトの製品化を行うと同時に、オープンソースに直接開発・テストリソースを貢献しています。これは実際には一種の資助行為です。もちろん、前述のように、大量の無料ユーザーのサポートを得てこそ、このオープンソースビジネスモデルが成功する可能性があります。
企業がオープンソースに参加するメリット
オープンソースの無料のメリットだけを見て、オープンソースの自由の力を無視することは、純粋に功利的な角度から言っても、絶対に近視眼的な行為です。オープンソースを使用している会社にとって、オープンソースコミュニティの建設に積極的に参加することは、少なくとも以下の2つの面でメリットがあります:
第一に、オープンソースへの貢献が多ければ多いほど、影響は大きくなり、良好な広告効果を生みます。オープンソースを通じて、自分の技術、製品、ソリューションをより良く展示し、ユーザーの信頼を勝ち取れます。
第二に、実力が十分に強く、オープンソースプロジェクトの開発方向を主導する能力があれば、オープンソースコミュニティのリソースをより良く集めて自分の製品を完備でき、これが会社にもたらすメリットは言うまでもありません。プログラマーにとって、オープンソースに参加する最大のメリットは、貢献が得る達成感です。IBMで働いていた時、私がいた製品ラインSymphonyはOpenOffice.orgに基づくオフィススイートでした。当時、私はロールバックフォント(rollback font)高速マッチングアルゴリズムを開発しました。ユーザーがテキストに指定したフォントがシステムに存在しない時、このアルゴリズムはシステムから最も適切な代替フォントを迅速に見つけ、テキストのレンダリング速度を大幅に向上させ、テキストの表示品質を改善できます。私はこのアルゴリズムをOpenOffice.orgに正常に提出しました。ユーザーがOpenOffice.orgを使用してドキュメントを開いて編集するたびに、このアルゴリズムが実行される可能性があることを私ははっきりと知っており、この達成感が自然に湧いてきます。もちろん、残念なことにOpenOffice.orgは分裂しました。しかし、libreoffice.orgは依然として存在し続けています。
実は、国内のプログラマーがオープンソースに参加することを妨げる重要な理由は、技術能力の制限ではなく、英語レベルの制限です。何年も英語を学んでも、四六級証書を得ても、学んだその少しの唖の英語は役に立たないことがわかります。言葉が通じないことによる交流の不順調は困難ですが、外部の未知の世界と制御できない変化に対する心の中の恐怖が生む苟且偷安の惰性思想の障害よりはるかに小さいです。私はここで個人の英語レベルをどう向上させるかを議論するつもりはありません。ただ強調したいのは、志ある者は事竟成、出息のあるプログラマーなら、心が十分に開放的で、未知の分野に好奇心と憧れで満ちていれば、英語は決して攻略できない要塞ではありません。さらに、国内のプログラマーが最も心配しているのは聴解と口語ですが、多くの場合、オープンソースコミュニティは書面のメールでコミュニケーションします。
オープンソースにどう参加するか
最後に、以下の点はオープンソースに志す友人の参考に供します:
第一に、ほぼすべてのオープンソースコミュニティは初心者にスタートガイド(Getting Started Guide)を提供しており、注意深く読めば不必要な遠回りを避けられます。
第二に、コミュニティと大胆に交流してください。何か問題がわからない場合、自分で悩まず、大胆に提起してください。どんなに簡単でも、常に熱心な人々が答えてくれ、誰もあなたを笑いません。もちろん、交流する時、必ず相手を尊重してください。メールには基本的な礼儀を含め、他人の助けに感謝の意を表してください。同時に、他人を助けることも忘れないでください。
第三に、オープンソースの開発は多少自由な散漫さがあり、厳格な計画があまりありません。したがって、時には、自分の要求が迅速に対応され、満たされていないと感じることがあります。注意すべきは、自分が提出したバグが必ずしも認められるわけではなく、自分が提出したコードが必ずしも受け入れられるわけではないことです。このような状況に遭遇したら、道理をはっきり説明し、感情的にならないでください。
第四に、一部のオープンソースプロジェクトのコード品質は本当に称賛できません。開発に参加したプログラマーの良し悪しが混在し、監督が厳格でないことによるかもしれませんが、すべてがそうではありません。OpenOffice.orgコードの一部の関数が長すぎて、この端からあの端が見えないとよく冗談を言っていました。ゲーデル不完全定理は、ロッセルとホワイトヘッドが『数学原理』で与えたような数論の形式システムに類似するいかなる形式システムも、どれほど強くても、不完全であり、常に良構のG命題があり、真であることも証明できず、偽であることも証明できません。したがって、いかなる形式システムも数論、さらには数学のすべての性質を完全に記述できません。これはもちろん完全な結論ではありませんが、一方で、これは数学真理の発見が依然として数学者たちの創造的な聡明才知に頼ることを意味し、東隅を失い、桑榆を得ると言えます。大きく言えば、人生には常に多すぎる遺憾、苦難、不条理、別離、悩み、虚栄、憂愁、彷徨、傷心、失恋、平庸、志大才疎、懐才不遇、白富美の空幻、矮矬窮の苦痛などがあります。逆に、まさにこの悪い面が良い面をより一層大切にすべきことを際立たせ、不完全だけが完全を成就し、これが哲学的思弁の怪圈です。衆人の力で開発されたオープンソースのコンピュータプログラムも同様です。したがって、何事も忍耐が必要であり、行いながら大切にしてください。
第五に、理論的には、あるソフトウェア機能を実現するには、チャーチ・チューリングの命題で計算可能な範囲内であれば、コンピュータプログラミング言語で表現できます。この点で、どれほど優れたアルゴリズムとプログラムでも、実際には越えられない技術的溝はありません。技術は常に簡単で、自分ができることは他人もでき、逆もまた然りと言えます。しかし、芸術は無限で、エッシャーのような絵画レベルやバッハのような音楽レベルに達したい場合、できないことはできません。もちろん、コンピュータプログラミングも芸術と見なせます。Donald Ervin Knuthの名著『コンピュータプログラミングの芸術』(The Art of Computer Programming)が提示する技術のように、したがって、プログラムの品質とアルゴリズムの性能には上下高低の区別があります。とにかく、会社と個人にかかわらず、すべてを宝物のように、祖先伝来の武功秘籍や漢方薬の秘方のように厳密に保管保護する必要はなく、これで、自分が持っていて他人が持てないようにできると考えるなら、それは大間違いです。したがって、多くの場合、オープンソースへの貢献は会社の競争力を損なわず、逆に会社の競争力を強化します。
第六に、第五点とは逆に、独立したプログラマーとして、あなたがいる会社の知的財産権に関する政策を十分に理解し、会社の独自の知的財産権のコードをオープンソースコミュニティに提出しないでください。
(注:本稿は段落分割の調整があります)
転載请注明:开发者关系 »