世界を動かす技術を、日本語で。

オープンソースはあなたのためのものではない (2018)

概要

  • オープンソース の運用方針は、 プロジェクト運営者 のみが決定権を持つという主張
  • ユーザーは 権利や要求 を持たず、期待は自己責任であることの強調
  • Clojure開発チームの 実情と姿勢 の説明
  • オープンソースへの 誤解や神話 への警鐘
  • コミュニティ貢献 の多様な方法と、前向きな行動の呼びかけ

オープンソースの本質とユーザーの立場

  • オープンソースの「あるべき姿」を語る資格は、 プロジェクト運営者 に限定される
  • その権限は 自身のプロジェクト の範囲に限られる
  • ソフトウェアをオープンソース化しても、 開発者に役割転換(例:コミュニティマネージャー) を強いるものではない
  • オープンソースのユーザーは、 貢献・機能追加・他者の注意・苦情への価値付与・説明 など、何も「当然の権利」として持たない
  • 期待が満たされない場合、その期待は 自分自身の責任
  • 必要なものがあれば 自分で作る姿勢 の重要性
  • オープンソースは ライセンスと配布の仕組み であり、それ以上でも以下でもない

オープンソース神話と現実

  • 「コミュニティ主導開発」などの 社会的付加価値 は、最近作られた神話であり、実態とは異なる
  • この神話は、多様な運営方法を認めず、 共同体の権利意識 を助長する傾向
  • CognitectやClojureチームが「コミュニティのために何もしていない」との批判は 事実誤認
  • 望む「努力・集中・反応」が得られなくとも、それは 運営者の自由裁量

CognitectとClojure開発の現状

  • Cognitectのメンバーは 生活のために働いている。Clojureからの ロイヤリティ収入はゼロ
  • Clojureユーザーの 1%未満 のみが直接Cognitectの顧客
  • 収入の一部を Clojure開発やコミュニティ活動 に充当し、時には 退職金を削って 投資
  • チームや開発作業への 誇りと情熱
  • Alex Millerは コミュニティ対応 に非常に熱心
  • コアチームは 定期的にコミュニティ課題を議論 し、機能設計やパッチ対応に多くの時間を割いている

コミュニティ貢献とオープンソースの贈り物性

  • Clojureのリリースには 多くの外部貢献 が含まれる
  • 大多数のユーザーは 貢献していないし、その意志もない が、それで問題ない
  • オープンソースは 無条件の贈り物 であり、全参加者がそれを認識すべき
  • Clojureの開発プロセスは「 閉鎖的」ではなく、 保守的 であることが特徴
  • この保守性が、 機能過多や高頻度な変更 を避け、Clojureの品質を保つ要因

意見の相違と行動への提案

  • Clojureの運営方針に 納得できなければ、自身でプロジェクトを立ち上げる選択肢
  • 本チームが「 貢献の妨げ」になっているとの主張は事実と異なり、 多様な貢献機会 が存在
    • ライブラリ開発
    • アウトリーチ活動
    • トレーニング・チュートリアル・ドキュメント作成
    • 講演やツール開発
    • コアへのパッチ提供
  • 多くのパッチやIssueは 問題記述・計画説明・テスト・設計 が不十分な場合が多い
  • コミュニティによる トリアージ活動の重要性 と感謝

オープンソースへの認識転換と創作者の士気

  • オープンソースへの 先入観の見直し の必要性
  • クリエイターの モラル低下 は現実問題
  • 先入観や行動は 各自の責任
  • Clojureのやり方に合わなければ、 無理に従う必要はない
  • コミュニティを 否定的な言動で破壊しない よう呼びかけ

前向きな参加と個人の意見

  • 否定的な態度 よりも、できることに 前向きに取り組む 姿勢の推奨
  • 本メッセージは 個人の意見 であり、Cognitectの他メンバーは関与していない
  • Clojureコミュニティの 大多数は素晴らしく前向き であることへの感謝
  • 本文に 自分が当てはまらない と感じるなら、それで問題なし

Hackerたちの意見

これについてもう少し背景が知りたいな。多分、「Cognitect」っていう団体に関する何かドラマがあったんだろうね。Clojureに関わってない自分には、なんでこの投稿が作られたのか理解するのが難しい。

おそらくこれだね: https://news.ycombinator.com/item?id=46990729

これは2018年のClojureサーベイへの反応だったんだよね(https://danielcompton.net/clojure-survey-2018)。その中で、Clojureがもっとコミュニティ主導の開発プロセスに変わるべきだって議論が起きたんだ。

当時の背景はこれだよ: https://old.reddit.com/r/Clojure/comments/a0pjq9/rich_hickey... MinIOについての議論を読んでいるときに、この内容を思い出した。

最近、期待を明確に書き出すことの重要性を感じるようになった。特に、人々の期待に対する暗黙の前提がずれているときはね。リンク先の内容は、プロジェクトのオーナーとユーザーの期待が合ってないことを主に説明しているみたい。背景は知らないけど、フラストレーションから書かれたように見える。期待のセットを表現しているけど、防御的でイライラしたトーンになってる。もし今日、自分がそんな状況にいたら、プロジェクトのルートにCONTRIBUTING.mdファイルを作って、自分の期待(例えば、PRは歓迎かどうか、プロジェクトの決定はXの方法で行われる、など)を冷静に説明するかな。もしユーザーが自分の意図とずれた期待を表明したら、CONTRIBUTING.mdを指摘して、議論を終わらせると思う。フラストレーションが高まる前に、こういうステップを踏むようにしてる。これをリンク先の投稿を批判するために言ってるわけじゃないよ。最近やっとこの理解に至ったんだ。ただ、フラストレーションや恨みが時間とともに増すのを放置するよりは、こういうアプローチの方が健康的だと思う。

リンク先の投稿を批判するために言ってるわけじゃないよ。 あなたが書いたことは、明らかにリンク先の投稿への批判だよね。

同意するよ、TFAは期待を明確に書く良い例だね。でも、ヒッキーが最終的にストレートに書かなきゃいけなかったことを責めるのはちょっと違うと思う。オープンソースのチームに無料で働いてもらうのが当然だと思ってる人もいるし、どんなに説明してもその考えは変わらないよ。彼らはその主張を理解してるけど、同意はしないんだよね。

さらに、契約を冷静に書き下ろすことは、フラストレーションを抱えながら叩き出す必要がなくなり、悪い印象を残さずに済むよ。

誰かが言ったことがある:虐待と期待は協力の文化を蝕む。今、$workでこれをリアルタイムで見てる。フラッグシップ製品が私たちが構築しているプラットフォームに載せられたけど、営業・マーケティング・プロジェクト文化は全然調整されてない。人々は押しが強くて、虐待的で、コミュニケーションが下手で、すべてをCレベルにエスカレートさせてる。その結果、私たちプラットフォームエンジニアリングは、昔ながらのシステム管理者の心を呼び起こして、サポートプロセス、チケット、ルール、期待を整備して、他のことは全部捨てることにした。今はみんな苦しんでるけど、自分のメンタルを守るためにこれをしなきゃいけない。少なくとも私にとっては、これが多くのOSSインフラプロジェクトで起こっているように感じる。人々はこれらのプロジェクトから必要なものに対して、すごく押しが強くてイライラしてる。私は、必要なもののためにPRを設定するために上司と話したいけど(それはうまくいってる)、他の人たちはOSSプロジェクトが彼らのニッチなニーズを満たさないことにすごく怒ってる。そうすると、怒りやフラストレーションが生まれて、メンテナーにとって有害だけど必要な境界を設定することになる。「CONTRIBUTING.mdに送る」だけでも。職場の数人だけで、ドキュメントや私たちと効果的に働く方法について、毎週何十件もリマインダーを送ってる。これは、自由な時間に一日だけやるようなことじゃないし、痛みを和らげるための給料も今のところ薄い。

自分はオープンソースの代替品と競合する商業製品を作ったんだけど、この緊張感は常にあるね。人々は、オープンソース版を使えるのに、なんで自分にお金を払うべきなのかって聞いてくる。正直な答えはこうだよ:もし自分でオープンソースツールを運用、維持、解釈する時間と専門知識があるなら、絶対にそうすべきだ。リッチが君の貢献を当てにされるのと同じように、君も自分のお金を当てにされるべきじゃない。でも、その質問をするほとんどの人は「誰かがその難しい部分を無料でやってくれない?」って本当に聞いてるだけで、リッチが言ってる特権意識そのものだよ。

確かに面白い世界だね。自分はそこそこ人気のあるパッケージを維持していて、ある時デロイトのコンサルタントからセキュリティに関するフォームを記入するように求められたことがある。 complianceフォームを記入して、パッチのコミットメントを無料でやるつもりはないって言ったら、彼らは本当に困惑してたよ。どれだけのメンテナーが自分を利用されているのか、考えさせられるね。

もう一つのよくある「権利意識」は、自分が提案した改善が実現しないと不満を持つことだね。実現するかもしれないけど優先度が低いからすぐには無理って場合も同じ。よくある反応は「コミュニティのために再考すべき」って言ったり、SNSで文句を言って他の人に圧力をかけようとすること。あるいは「別のものを使うぞ」って脅すこともあって、これには昔からちょっと笑っちゃうよね。セキュリティの問題に対する迅速な対応を期待するのは全然アリだと思うけど、新機能や大きな変更(他のワークフローを壊すかもしれない、特に自分の!)は全然別の話だよ。 --------- [0] 何年も前に自分がf/ossのコードを公開してた時は、「じゃあコミュニティのために自分でやってパッチを送れば?」って言ったこともあったけど、だいたいは不満の反応が返ってきた。でも今後コードを公開することがあったら、「オープンソースだけどオープンな貢献は受け付けない」ってスタンスになると思うから、そんなパッチは受け付けないし、「フォークして自分でやってね」って感じになるかな。

私のもう少し寛大な解釈では、人々は解決策を運営するための作業や努力、複雑さを見ていないんだ。オープンソースは無料だと思っているけど、実際は安い(一般的に)けど無料ではない。ホスティング代を払わなきゃいけないし、インストールして設定してパッチを当てる必要がある。何かが壊れた時には、自分以外に頼れる人はいない。でも、あなたが言うように、もしそれができるなら、オープンソースは素晴らしい価値だよね。

人はいつでも、もっと何かを引き出そうとしてネガティブなことを言うよ。2000年代に、いいツールがあったけど、日常的に使われてなかったから顧客が払いたがらない会社で働いてた。彼らは、どこかに無料の代替品があるはずだと想像してたけど、結局そんなものはなかった。最終的には出口を見つけたけど、誰も金持ちにはならなかった。でも、私はそのツールのために出勤したんだけど、すでにピボットしてたことを知らなかった。結局、少しだけ作業することになったけど、他の製品のバグを直すことで改善できたんだ。振り返ってみると、最初にそれに取り組まなくてよかったと思ってる。コードがめちゃくちゃだったから。

オープンソースの何かのユーザーだからといって、何かを当然に得られるわけではないってことは理解できる。著者の言いたいことは分かるけど、人と人のやり取りでは、少なくとも基本的な礼儀は必要だと思う。例えば、オープンソースプロジェクトに貢献して、ガイドラインに従って礼儀を示せば、相手も礼儀を示してくれるのが普通だと思う。これを実現するのは難しいかもしれないけど(例えば、騒音が多すぎてプロジェクトの著者が礼儀を示せない場合など)、だからといって何も得られないわけではない。これはオープンソースやソフトウェアに関係なく、人との関わりにおいて常識だよね。でも、もし質の悪いものを提供したら(注意を払わなかったり、バグだらけだったり、細部に気を使っていなかったり、最近ではAI生成のコンテンツが詰め込まれて消化が10倍難しくなっている場合でも、意図は良くても)、何も得られないかもしれないね。

初めての貢献者として、初めての貢献者の大きなグループには、行儀の悪い人がたくさんいることを知っておく必要がある。あなたがその中に含まれないことを示すのはあなたの責任だよ。信頼は反復的なやり取りを通じて築かれる。これはベイズの先入観で、デフォルトは平均で、新しい情報が入ることでのみ変わる。これにはたくさんの例があるよ。1950年代の西部劇では、見知らぬ人が小さな町に来ると、デフォルトの扱いは警戒心を持った形のホスピタリティだよね。新しい人とデートする時も、デフォルトでは平均的な初デートの相手として理解されるから、平均的な初デートの相手はあまり良いマッチじゃないことが多い。

著者の言いたいことは分かるけど、人と人のやり取りでは、少なくとも基本的な礼儀はみんなに権利があると思う。そうだね。この記事は君に反対してないよ。

同じ問題に対する無限の解決策を集団意識の中に持つ余地はないよ。これを指摘するといつもダウンボートされるけど、だからこそ人々が君の解決策や態度を批判すると防御的になると、君に対して厳しくなる理由が分かるんだ。合理的な人は、すでに過剰に供給されているニッチでプロジェクトを始めたりしないよ。だから、最低限以上のことをしているかどうかは重要なんだ。それは社会的契約だから、君は酸素を消費してるんだよ。私はそれをパーティーを開くことに例えてる。そう、君のパーティーだけど、ティモシーの誕生日なら行けないよ。でも、君が人気があるなら「ティモシーなんてクソだ」って言われることもあるし、それは良くないよね。君は素晴らしいホストである必要はないし、自分の部屋のドアをロックしてもいいけど、スナックや音楽は必要だよ。そうじゃないと、みんなが君の悪口を言うことになるから。あるいは、ルテフィスクを持ってきて、そこにスカンジナビア人が誰もいないとか。周りの雰囲気を読んでくれ。ソフトウェア業界には「君が私のパーティーに来なくても、私が持ってきたものを食べなくてもいい」っていう批判に対する正当な反応だと思ってる人が多すぎる。それは社会的なことがどう機能するかとは違うし、オープンソースもその一つだよ。

どんな人と人のやり取りでも、少なくとも基本的な礼儀はみんなに権利があると思う。なんで?もし君が私に敵対的だったり、私を嘲笑したり、攻撃したり、あるいは他の方法で私に対して意地悪だったら、私は君を好きなように扱う権利を留保するよ。私の君に対する意見は、尊敬と同じように得られるべきものだからね。私の基本的な礼儀に対する権利はないよ。最初は誰にでも疑いの余地を与えて、礼儀を尽くすつもりだけど、「権利」なんてない。君が私の考えや君に対する感情を決めることはできないよ。

作者の言いたいことは分かるけど、人と人とのやり取りでは、少なくとも基本的な礼儀は必要だと思う。これは、平均的な人が受ける「小さな」数の人間関係にしか当てはまらない。隣人が挨拶に来て、ドアベルを鳴らしたら、僕は応じて話をするし、ちょっとコーヒーでも招待するかも。もし5分ごとに知らない人がドアベルを鳴らしに来たら、立ち上がって応じることはないよ。訪問者の中には、怒ってドアを叩いたり、窓を叩いたりして、僕を睨みつける人もいる。で、「何時間もかけて来たんだから、せめてドアを開けて挨拶してくれ」とか言うんだ。彼らにとっては、その日は初めての人間同士のやり取りで、少しでも尊敬している相手だから、基本的な礼儀を期待しているんだろうね。でも、僕にとっては、今日は42人目のドアベルを鳴らす人に過ぎない。

あなたのことは知らないけど、好きだよ。礼儀って、そんなにコストかからないからね。

私たちは少なくとも基本的な礼儀を受ける権利がある 基本的な礼儀って、メンテナーが礼儀正しくあるべきだってことだと思うし、何か言うべきだよね(無視されるのはあまり良くないから)。たとえそれが貢献をレビューしないって言うことでも。でも、それだけかな。私のメンテナーとしての経験では、あまりにも多くの人がそれ以上のことを当然のように思っていると感じる。

反論: - あなたは人間としての礼儀を受ける権利がある。メンテイナーだからって失礼であっていいわけじゃないよ。これ、たくさんのプロジェクトでよくあることだけど、メンテイナーが権力を持っているから、失礼になっても気にしないってのはダメだよ。 - メンテイナーとして、自分の作品をオープンソースとして公開する時点で、コミュニティや文化、倫理に関わることを認めているんだ。どういうことかみんな知ってるよね。自分の作品にライセンスを付けて、(しばしばだけど、必ずではない)人々が変更を共有する必要があるって書いてある。だから、その人たちは変更をあなたに戻してくれるかもしれないし、あなたがそれを統合したいと思っているかもしれない。だから、これが起こるのは分かっているんだから、準備しておく必要がある。それは学ぶべきスキルだよ。 - メンテイナーは基本的な礼儀を持つべきで、彼らが人と関わることを知っているから、メンテイナーはこの文化に対して自分の意図を伝えるコミュニケーションを持つべきだよ。もし変更を受け入れたくないなら、CONTRIBUTINGにそれを書いてGH PRをオフにすればいい。変更を受け入れたいけどAIの変更は受け入れたくないなら、それもCONTRIBUTINGに書いておくべき。サポートをしたくないなら、GH Issuesをオフにすればいい。PRやIssueを見る前に特定の10ステップの手順が必要なら、それもCONTRIBUTINGに書いておくこと。ユーザーはこのドキュメントを読んで従うのが求められるけど、それを作るのはあなたの責任だから、どうやって接するかを知ってもらうために。礼儀正しくして、CONTRIBUTING(やSUPPORT)で何を受け入れるか受け入れないかを伝えてね。たとえ「貢献は受け付けません」「サポートはしません」でもいいんだ。 (私の個人的な問題: 誰かのプロジェクトを修正するためにIssueやPRを準備するのに何時間もかけたのに、無視されたり、何も言わずに閉じられたりすると、もう何も貢献したくなくなる。これはオープンソースコミュニティにとって良くないことだよ。)

メンテナーも完璧じゃないことがあるけど、彼らは確かな価値を提供してるよね。一方で、君は未知の価値を加えようとしてる。それって、対等な交換には見えないよね。だから、君が言ってる厳しい義務の多くは「これをやるのが賢い」ってレベルに下げちゃっていいと思う。行動に関する観察には同意するよ。人はできるからって意地悪になっちゃダメだよね。これはどこでも誰にでも当てはまることだし、少し力を持ってる人に小さな独裁者にならないように思い出させるのは全然いいと思うよ。

メンテナーはプロジェクトを運営してるからって失礼になっていいわけじゃない。誰でも失礼になれるんだ。君の許可なんて必要ないよ。残りの部分は、君が「人間の礼儀」に基づいて他の人が従うべき基準を勝手に作ってるだけだよ。他人の時間や労力を所有しようとして、彼らがすでに自分の時間や労力を自由に提供したからその義務が生じるって宣言してる。君は、一度食べさせてもらったら永遠に食べさせてもらえる権利を訴える人みたいだね。もし君自身が失礼になりたくないなら、これを「君のような人と交流するために役立つかもしれない提案のリスト」として再構成してみたらどう?

  • メンテナーは基本的な人間の礼儀を守るべきだし、彼らが人とやり取りすることになるのを知ってるから、メンテナーはこの文化に対して自分の意図を伝える何らかのコミュニケーションをする義務がある。もし変更を受け入れたくないなら、CONTRIBUTINGにそれを書いてGH PRをオフにしなよ。変更を受け入れたいけどAIの変更はダメっていうなら、それもCONTRIBUTINGに書いておくべき。サポートをしたくないなら、GH Issuesをオフにしよう。PRやIssueを見る前に特定の10ステップの手順が必要なら、それもCONTRIBUTINGに書いておくべきだよ。ユーザーがこのドキュメントを読んで従うのはユーザーの責任だけど、作るのは君の責任だから、どうやって君とやり取りするかを知ってもらうためにね。一般的にはすでにライセンスに含まれてるよ。たとえ緩やかなライセンスでも、Expatのように(しかも大文字で)「ソフトウェアは「現状のまま」提供され、いかなる種類の保証もない」と書かれてる。CONTRIBUTINGについて何かを示す必要は全くないよ。すでに開発者が何も当たり前にはならないことを示してるからね。もちろん、期待についてオープンでいるのは助けになるけど。例えば、私はCONTRIBUTINGの指示をオンラインに載せてないけど、今のところ私のものはほとんど注目されてないから、無料ソフトウェアについてほとんどフィードバックをもらったことがない。私にとっては、これは全然問題なくて、例えば自分の利益のためにコードをオンラインに置いてるという期待に沿ってるよ。もし他の誰かの役に立てるなら、それはさらに良いけど、無料だからって期待を持ちすぎないでほしいな。

あなたが言っているのは、いい人になる方法であって、ソースコードリポジトリを所有することとは関係ない。幸いなことに、ほとんどの人はいい人だけど、公開リモートリポジトリ(GitHubなど)を設定する時にそうである必要はない。

反論: > - あなたは人間としての礼儀を受ける権利がある。メンテナーがプロジェクトを運営しているからって、失礼に振る舞っていいわけじゃない。これ、いろんなプロジェクトでよくあることだよね。メンテナーには権力があって、それが彼らを無礼にさせてしまうことがある。これは良くない。ここには微妙なラインがあって、両方の立場に同情する部分もある。長い間、そして今でも別の名前で続いているけど、私たちは礼儀と敬意を混同してしまっているから、ちょっと変な感じになる。インターホンを鳴らす人には礼儀を持って接するし、新しい上司には敬意を持って接する。でも、意味不明なことを言っている人には礼儀を持って接するけど、敬意は持たない。自由な発言は何でも言えるけど、それに対して罵倒されることもある。それが礼儀と敬意の違いで、みんなが「礼儀」と言うときにその意味を理解していることが大事だと思う。正直、こういう会話にもっと女性が参加してくれたらいいなと思う。彼女たちは日常的に武器化された礼儀に対処しているから、オープンソースにおける正しいラインは私の定義よりも彼女たちの「礼儀」の定義に近い気がする。

あなたは自分の作品にライセンスを付けて、(しばしば、でも必ずしも)人々が変更を共有する必要があると言っている パーミッシブライセンスはそうは言わないよ。コピーレフトライセンスは、人々が自分の変更をユーザーと共有する必要があると言っている。メンテナーとして、もし私がコピーレフトライセンスを選ぶなら、それはユーザーを守るためだ。誰かが私のコードを使って製品を作ったら、たとえそれが修正されても、ユーザーがそのコードを見ることができるようにしたい。だからといって、私がその変更を自分のリポジトリに取り入れたいわけではない。準備する必要もない。 > メンテナーはこの文化に対して何らかの意図を伝える義務がある 私は違うと思う。私はあなたに無料で自分の作品を提供しているんだから、それだけでも十分だと思う。なぜ私が自分の意図を伝えるためにわざわざ手間をかける必要があるのか理解できない。疑問があれば、自由に連絡して(たとえば、イシューを開く)聞いてくれればいいし、私が答えない自由もある。 > 私の個人的な問題: 誰かのプロジェクトを修正するためにイシューやPRを準備するのに何時間もかけたのに、無視されたり、何も言わずに閉じられたりする。もう何にも貢献したくない。これはオープンソースコミュニティにとって良くない。私も同じ目に遭ったことがあって、本当にイライラする。でも、それは私の責任で、作業を始める前に聞いておくべきだった。私が聞いたとき、メンテナーが何を望んでいるか説明してくれて、その後、自由な時間にPRに数週間かけたのに、レビューされなかったこともある。メンテナーが時間がなかったからだけど。それはイライラするけど、私は何も権利を持っていない。私のPRは私のフォークに残る。もし私のPRが上流でマージされて、上流プロジェクトがそれを引き継いでメンテナンスしてくれる必要があるなら、彼らとの契約関係を考えるべきだ。

オープンソースの何かのユーザーだからといって、何かを当然に得られるわけではない。 ハッカーニュースのユーザーとしても、何かを当然に得られるわけではない。 フォーラムやディスコードチャンネル、フェイスブックグループ、どんなオンラインコミュニティやリアルのコミュニティのメンバーとしても、必ずしも何かを得られるわけではない。 一部の商用ソフトウェアのユーザーとしても、重要なバグ修正やセキュリティアップデートを除いて、何も得られないことが多い。 ソフトウェアはシュリンクラップ方式で販売されている。あなたは買ったものを手に入れた。それは、ハッカーニュースやそのもの、あるいは商用ソフトウェアについて意見を表明すること、たとえそれが否定的なものであっても、必ずしも間違っているわけではない。

「Hackernewsや何かのプロプライエタリソフトについて意見を表明すること、たとえネガティブなものでも、必ずしも間違っているわけではない。」 そうだね。オープンソースのメンテナーがこれに対してカッカする理由、ずっと不思議に思ってた。無視すればいいのに。たぶん、そのメンテナーは、ネガティブなことを言う前に、その人のことを考えた時間なんてゼロ秒だと思うよ。なんで今さら、頭の中に彼らを住まわせる必要があるの?笑って、残りの人生で彼らのことを考えないようにしよう。

FOSSプロジェクトを維持している人たちへ: ユーザーが自分の特定のニーズに合わせてプロジェクトをサポート/修正/強化してほしいと要求したとき、実際にその要求に対して何かを支払ってくれることはどれくらいある?

この態度が私が自分のパッチを他人に見せない理由になったよ。ねえ、君、FOSSのメンテナー、誰でもいいけど: - プロジェクトを公開するなら、人に使ってもらいたいと思ってるってことだよね。せめてドキュメントを書いてくれれば、時間を無駄にして、数日後に自分の必要なことができないとか、使い方が分からないってことにならないから。 - バグトラッカーを設置したなら、少なくともバグ報告には返事をする礼儀を持ってほしい。バグがあると使えないからね。誰かがそのバグ報告を書くために時間をかけたんだ。修正を頼んでるわけじゃない(その希望は数十年前に失ったから)、でもせめて一行の返事か、他の人が修正を試みるための2行のガイダンスをくれればいいのに。「修正する時間がないけど、多分これは...のせいだよ」って。君が書いたものなんだから!君が1分考えるのは、コードを見たことがない誰かにとっては6時間の作業と同じなんだよ。 - プルリクエストを受け入れるなら、人に貢献してほしいってことだよね。ちゃんとレビューしてあげてほしい。誰かが仕事や家族、楽しみの時間を削ってそのPRを書いたんだから。君がその機能が必要ないからとか、バグに影響されてないから、あるいは単にコードの美学のために無視するのは、その人に対する侮辱だよ。追伸: - それと、君のコードのドキュメントを他の誰かに書かせるなんて期待しないでね。バグと同じで、君の1分は他の誰かにとっては6時間の作業なんだから。もしこれらのことができないなら、フロントページに「放棄された」と書いておいて、さっさと終わらせてしまおう。

その態度、私も好きじゃなかった。 > 「オープンソースの何かのユーザーだからって、何かを当然のように期待することはできない。貢献する権利もないし、機能を要求する権利もない。他の人の注意を引く権利もないし、自分の不満に価値を持たせる権利もない。この説明を受ける権利もない。」 確かに、私は何も当然のこととして期待する権利はない。でも、この文章は基本的に「お前は重要じゃない」って言ってるように感じるから、個人的には好きじゃない。

数年前、ホットな新しいLinuxディストリビューションを試してみた。人気のあるパッケージをいくつかインストールしようとしたけど、依存関係が不足してて失敗した。依存関係をインストールしたら、うまくいった。こういう問題に対してバグレポートを出すのは自然なことだと思う。欠けている依存関係を伝えたら、ちょっとした調整をしてバグのあるパッケージを修正してくれるだろうと思ってた。そしたら、正確なエラーメッセージなしにバグレポートを出すのは無駄だって失礼なメッセージでバグを閉じられた。バグのあるパッケージはそのまま放置された。彼らはおそらく、SOのモデレーターになって、関係のない質問の重複だからといって質問を閉じるようになったんだろうけど、それは推測に過ぎない。

「プロジェクトを公開にすると、それは人々に使ってほしい、期待しているということだ。」 これは真実じゃない。多くの人(私も含めて)にとって、プロジェクトをオープンソースにすることは「役に立つと思ったら自由に使ってね、そうじゃなければ気にしないよ」って意味なんだ。私のコードを役に立てる人が一人でもいるかどうか、全然気にしない。これは公共への贈り物であって、社会的義務に同意しているわけじゃない。

プロジェクトを公開するってことは、みんなに使ってほしいってことだよね。 いや、そうじゃないかも。たとえば、GitHubにプロジェクトがあって、友達10人に簡単にシェアしたいだけなんだ。他の人に見られることは特に気にしないから、公開にする。だからって、ランダムな人たちがバグやPRを持ってくることを望んでるわけじゃない。 せめてドキュメントを書いてくれれば、時間を無駄にしなくて済むのに。数日後にドキュメントがないことに気づくと、ソフトウェアの作者に期待しない方がいいっていう明確なサインだよ。コードを読んで、自分にとって役に立つかどうかを判断するのが時間の無駄だと思うなら、役に立たないって思って別のものに移った方がいい。 バグトラッカーを設定したなら、せめてバグ報告には答えるべきだよ。数年前はバグ報告に答える時間とエネルギーがあったかもしれないけど、今はないかもしれない。バグが無視される(すべてのバグが、特定の一つだけじゃなく)ってことは、そのプロジェクトがメンテナンスされてないか、半分放置されてる可能性があるから、移動する時かも。もしそれが自分のバグだけなら、メンテナが気にしてないか、手をかける余裕がないってことだよ(また、移動する時かも)。確かに、もし僕がOSSの作者で、みんなにプロジェクトを使ってもらいたいなら、バグ報告にはちゃんと答えるよ。でも、そんな義務はない(実際、いろんなプロジェクトを持ってて、いろんなカテゴリーにいるし、その間もたくさんある)。 プルリクエストを受け入れるってことは、みんなに貢献してほしいってことだよ。ちゃんとレビューしてあげて。誰かが仕事や家族、遊びの時間を削ってPRを書いてくれたんだから。それを無視するのは、その機能が必要ないからとか、バグに影響されないからとか、単にコードの美的感覚のために無視するのは、書いた人に対する侮辱だよ。 反論として、全く話し合われていない機能や変更のために大きなPRを持ち込む人たちは、すごく失礼で傲慢だよ。だって、彼らは「これを持ってくるために家族を飢えさせた!」っていうあなたの論理を使って、あなたが望んでない方向にプロジェクトを進めさせようとしてるから。さらに、PRはメンテナにとっても、貢献者にとっても同じくらいの労力がかかる。無告知のPRは、ほぼバグ報告に罪悪感を付けたものだと思ってる。いらないよ。GitHubがこの分野での選択肢をもっと提供してくれたらいいのに。 - メンテナ

これがサティアなのかどうか分からない。そうじゃないことを恐れてる。「プロジェクトを公開するってことは、みんなに使ってほしいってことだよ。せめてドキュメントを書いてくれれば、時間を無駄にしなくて済むのに、数日後に自分の必要なことができないことに気づくのは嫌だ。」なんだそれ?公開するのは、他の人が見てくれるかもしれないと思うからだよ。「これは生産準備が整ったプロジェクトで、大きな問題を解決する」とか、「これは役に立たないけど、学ぶ価値のある面白い技術を示している」とか、いろいろある。ドキュメントがないプロジェクトを数日間いじくり回して、自分の必要なことができなかったからって、僕が時間を無駄にしたわけじゃない。それは君だよ。もし高品質なプロジェクトだけを見たいなら、ドキュメントやアクティブなバグトラッカー、PRレビューがあるものに限ってもいいと思う。それは良い選択かもね!でも、ソースファイルをウェブサーバーに置くだけでは、他のことに対する義務は何も示さないよ。

同意する。僕が追加したいのは、もう一つの不満点だ:

  • コードオブコンダクトを公開しておいて、貢献者に対して絶対に失礼な態度を取るな(どっちかに決めて、それを貫け)。 パフォーマンス的なポリシーがたくさん出ているけど、結局は口先だけのことが多いと思う。実際のユーザーや貢献者がそのガイダンスや期待に従っても、敵対的な存在として扱われることが多くて、ここには「それでいい」という奇妙な態度がある。

自分のパッチは自分だけのものにしておくよ。そうだね。誰もあなたのパッチを当然のように思う権利はない。

この態度が私を自分のパッチを自分だけのものにさせた。あなたの選択だね。もしあなたが自分のパッチをオープンソースにしたら(フォークや上流リポジトリへのPRで)、メンテナー以外の誰かがそれから恩恵を受けるかもしれない。だから、まだ役に立つよ。 > プロジェクトを公開するってことは、誰かに使ってもらいたい、期待しているってことだよね。違うよ。私は他の人が自分のコードをオープンソースにすることで恩恵を受けるから、自分のもできるだけオープンソースにする。誰もやらなければ、私も恩恵を受けられないから。でも、誰かが使うかどうかは気にしない。 > せめてドキュメントを書いてくれれば、時間を無駄にしないのに。違うよ。あなたの時間はあなたの責任だよ。私のプロジェクトが何をするのか理解するのに数日かかるのは、あなたの問題だから。私はあなたが何日も無駄にする責任はない。 > バグトラッカーを設定したなら、少なくともバグレポートには答える礼儀を持ってほしい。違うよ。そこでバグを報告すれば、メンテナー以外の誰かにとっても役に立つかもしれないから、価値はあるよ。 > でも、せめてもっと提供できるはずだよね。私はあなたに役立つと思われるプロジェクトを丸ごと提供したのに、あなたが言うのは「せめてもっと提供できるはずだ」って? > PRを受け入れるってことは、誰かに貢献してほしいってことだよね。違う!再度言うけど、PRはパッチを共有する手段だよ。たとえメンテナーがそれを見なくても、他の誰かにとって役に立つかもしれない。 > もしこれらのことができないなら、フロントページに「放棄した」と書いて終わりにすればいい。私はあなたが期待することを説明するライセンスを追加したよ。あなたが持っている期待を設定する人気のあるオープンソースライセンスを一つも知らない。

なんでみんなこれをシェアし続けるのか、全然わからない。めっちゃ失礼だし、炎上させるだけだよ。オープンソースのプロジェクトには、新しい人を歓迎して、ガバナンスを真剣に考えているコミュニティもたくさんあるし、提案や貢献が却下されても、ちゃんと配慮して対応してる。嫌な態度を取るのは、良いメンテナーになるための手本じゃなくて、ただの嫌なやつになる方法だよ。この「専門家対権利を主張するユーザー」って考え方は、文化的に有害だね。

OSSがどうあるべきかについての意見で誰かをジャーク呼ばわりするのは適切じゃない。それは完全に筋違いで、記事で説明されている傲慢さそのものだよ。彼の意見に同意しないなら、自分のプロジェクトを作って、自分の好きなように運営すればいい。文化的な毒?本当に教養のある人は、単一文化が本当の毒だと理解している。OSSにはすべての運営スタイルが存在する余地がある。「ジャーク」がいなければ、Linuxも他の価値のあるものも存在しなかっただろう。手をつないで座っていたいなら、そういうプロジェクトを見つけるか、指で絵を描くことでも始めればいい。

それは非常に攻撃的で扇動的だ。 それは理にかなっていて、事実に基づいている。 多くのオープンソースプロジェクトは、自分たちを新参者を歓迎するコミュニティと考えていて、ガバナンスを真剣に受け止めている。リッチはガバナンスを非常に真剣に考えている。他の人はそうじゃなくて、無名の人に投票権を与えない。いずれにせよ、彼は事実に基づいて正しい。オープンソースには、どんな種類のガバナンスについても何も示唆していない。「オープンソースはライセンスと配信のメカニズムである、以上。」 ジャークのように振る舞うな。 鍋とやかんが出会ったね。

多くのオープンソースプロジェクトは自分たちをそう考えている この記事はそれと矛盾しているとは思わない。オープンソースプロジェクトから恩恵を受けるのは良いことだよ。もっと恩恵を受ける(コミュニティ、ドキュメント、サポートなど)があれば、さらに良い!でも、それに対して権利を持っているわけじゃない。 > そしてこの「私たち専門家対権利を主張するユーザー」という考え方は文化的な毒だ。著者の考え方はわからないけど、オープンソースに関わった経験から言うと、私の意見はこうだ: オープンソースコードのユーザーは、自分たちが何も権利を持っていないことを理解していない傾向がある。悪い意味で言っているわけじゃないよ、ただそうなんだ。ここでの議論を読めば明らかだよね。多くのオープンソースのユーザーは、無料で仕事を共有するだけでは不十分だと本当に信じている。もし誰かが無料で自分の仕事を共有する気があれば、彼らは「もっと無料で仕事を共有する礼儀を持つべきだ」と思っている(ドキュメント、サポート、レビューなど)。でも、それは間違っている!再度言うけど: - 誰かが無料でコードを共有するのは素晴らしい。 - 誰かが無料でコードを共有し、無料でドキュメントを提供し、無料でPRをレビューし、無料でサポートを提供するのはさらに素晴らしい。それだけのことだ。もしかしたら、その誰かは嫌な奴かもしれない。彼らを好きになる必要はないし、彼らのコードを使う必要もないし、彼らと関わる必要もない。嫌な奴でいるのは良くないことだけど、それでもあなたは何も権利を持っていない。提供されているものから好きなものを取って、もっともらしい不満を言わないで。

リッチ・ヒッキーにはあまり反対しないけど、これにはイライラする。 > 「それに伴うすべての社会的強制、特に『コミュニティ主導の開発』の考え方は、実際の運営に基づかない最近発明された神話の一部だ。オープンソースは実質的に贈与経済だ。」 90年代後半や00年代初頭に、私たちはそれについて話してた。贈与経済は人類文明よりも古い。これは最近発明されたものでも神話でもない。どちらの当事者がどれだけ相手に強制できるかについてのルールがある。確かに、贈り物を受け取る側の人が権利を主張することもあるけど、それが礼儀を超えてエスカレートしない限り、他の側の社会契約を否定することにはならない。追記:リッチがこういうことを言う権威は、彼のコードを書く能力から来ているわけじゃなくて、彼がここで否定している贈与経済への実質的な参加から来ている。その権利を感じるのは、贈与経済の仕組みなんだ。多くを与えた人は、次に何が起こるかについてコメントする権限がある。

いや、彼はその点について完全に正しいよ。技術コミュニティには「オープンソース」は「私の貢献を受け入れてくれる」という変な誤解がある。SQLiteが開発者が貢献をプライベートに保っているからオープンソースじゃないと主張する人を見たことがある。どこから「オープンソース」と「コミュニティによって開発される」が混同されているのか分からないけど、それは間違いだし、リッチがそれに反論したのは正しかった。