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

HNに聞く: オープンソース化したことを後悔したことはありますか?

296日前

概要

  • Open source の利点と課題の両面を考察
  • メンテナンス負担や予期せぬ利用法の問題点
  • コミュニティ やユーザーとの関係性
  • 良い経験と悪い経験の具体例
  • オープンソース活動における後悔の有無

オープンソース公開のメリットと後悔

  • Open source 公開による学習機会の拡大
  • 知名度向上 やポートフォリオ強化への貢献
  • コミュニティ からのフィードバック獲得
    • バグ報告や提案によるプロジェクト改善
    • コードレビューによるスキル向上

メンテナンスの負担と課題

  • 継続的なメンテナンス が予想以上の負担
  • IssueやPull Requestへの対応工数増加
  • ドキュメント整備 やサポート対応の必要性
  • プライベート時間の減少

予期せぬユーザーや利用法

  • 想定外のユーザー層 からの問い合わせ
  • 本来の用途と異なる使い方によるトラブル
  • 悪意ある利用 やライセンス違反の発生
  • 商用利用による利益の還元不足

良い経験と学び

  • 世界中の開発者 との交流
  • 他者の貢献によるプロジェクトの発展
  • 新しい技術 や考え方の吸収
  • オープンソース文化への貢献実感

後悔や反省点

  • メンテナンス負担 を甘く見積もった反省
  • コミュニケーションコストの予想外の増加
  • ライセンス選定 やガイドラインの重要性再認識
  • プロジェクト終了時のユーザー対応の難しさ

まとめ

  • Open source 公開は多くの学びと成長の機会
  • 一方で、 負担やリスク も無視できない現実
  • 事前準備とガイドライン整備の重要性
  • メリットとデメリットを理解した上での活動推奨

Hackerたちの意見

そうそう。ずいぶん前(2016年頃)に、Unreal Engine 4のプラグインをリリースしたんだ。それで、クロミウム埋め込みフレームワークのビューをエンジンにテクスチャ経由で埋め込めるようにしたんだよ。おかげで、かっこいいHUDとか作れた。Epic Gamesがオープンソース化のために開発者助成金をくれて、当時の大学生にはめっちゃ嬉しかった。授業料の足しにもなったしね。でも、無料で全部の問題を解決してほしいって怒ってるゲーム開発者がすごく多くて驚いたよ。それに、別の開発者助成金をもらってた人が「ただのクソプラグイン作っただけなのに、なんでそんなにお金もらってるの?」って嫉妬してたし(要約だけど、実際そんな感じだった)。感謝されることなんて、まずないね、笑。

これについていつも考えてるんだ。オープンソースのソフトウェアは使ってるけど、開発者に感謝の気持ちを伝えるほど近くにいることがないんだよね。近くにいる人たちは、リクエストや不満を持ってる人たちだし。

他のタイプの開発とどれだけ違うかは分からないけど、私の見たところ、ゲームエンジン(Unity、Unreal、Godot?)のプラグイン開発は最悪の部類だと思う。問題は、何百万もの新しい開発者がゲームを作るためにそれを使っていること。彼らは経験がないからね。もし君のプラグインを使っていて、バグにぶつかったら、たとえそれが全く関係ないバグでも、無料サポートを求めてくるんだ。例えば、君がJSONにシリアライズ/デシリアライズするプラグインを作ったとする。彼らはFPSを作っていて、銃が正しい方向に撃たない。サポートエリアで「なんで動かないの?」って聞いてくるんだ、君のプラグインとは全く関係ないのに。

こんにちは!君のプラグイン使ったよ!!実際、いくつかの請求書を支払うのに役立った!よろしくね。

14歳くらいの時に、X11のxrandrを自動設定するスクリプトをオープンソースにしたんだ。正直、あんまり良くなかったし、バグもいくつかあった。KDEのメーリングリストでそれを話題にしたら、KDEのコアコントリビューターから「恥ずかしいコードだし、自殺しろ」って言われたんだ。結構ショックで、それ以来KDEやX11には全然貢献しなくなった。再びコーディングしたい気持ちが戻るまで、約1年かかったかな。他のオープンソースにしたものは、比較的うまくいってるけどね。

それは大変だったね。本当にひどい行動だよ。

うわ、こんなひどい行動は予想外だった。最悪だね。

おお、ティーンエイジャーの頃の古傷が開いたわ。友達がルートからロックアウトされて、シングルユーザーでシステムを復旧させる羽目になってたんだ。リモートハンズが一回50ドルもかかるから、いろんな理由で大変だった。なんでsuがルートでしか動かないのか調べることにしたんだ。理不尽だと思った簡単なチェックを見つけて、初めてのパッチを作ってFreeBSDのメーリングリストに投稿したんだ。世界を変えると思ってたのに、みんなから「友達はFreeBSDを使うにはバカすぎる」とか、現実に根ざしてないことを言われてボコボコにされた。パッチを擁護する気にもなれなかった。ここまでFreeBSDを広めるのに時間をかけてきたから、プロジェクトを支援すること自体を疑問に思うようになった。で、5年後くらいに、同僚にその話をしてたらsuのソースを調べてみたんだ。驚いたことに、誰かが私のパッチを使って適用してた(クレジットなしで)。それ以来、FreeBSDからは完全に離れたし、自分のオープンソースの作品がこんなにネガティブに扱われたことは二度とないよ ¯_(ツ)_/¯

それでみんな、行動規範が人気になった理由を不思議がるんだよね…

おい、君にそんなこと言ったやつはクソだね。忘れちゃいなよ。ああいう行動をする人は、もっと大きな問題を抱えてるから、君の時間や注意を払う価値もないよ。君は14歳の子供で、何かを作ってリリースするために時間をかけたんだから。それは献身と勇気がいることだよ。よくやったね。

これ、Erlangの初心者として彼らのメーリングリストに感想を送ったときのことを思い出すな。私の提案の一つは、レコード(名前付きキーのリンクリスト)に頼るのではなく、ハッシュテーブルを含めることだった。無知だと炎上して、それ以来そのメーリングリストにはメールしてないよ。しばらくして、言語にハッシュテーブルが追加されたんだ。

もちろん、こんな返信を受け取るのは最悪だよね。そんなのをもらって残念だよ。でも、こういう返信の心理は面白いと思う。いろんな要因があって、こんな極端な反応になるんだよね。まず、返信した人の年齢は分からないけど、若いか、少なくとも未熟な人だと思う。人に自殺しろって言うのは、大人が普通しないことだし。だから、他の人と協力するんじゃなくて、自分の立場を証明したいと必死なジュニアがいるってことを示唆してる。大人の中にもこういう反応をする人がいて(他のフォーラムメンバーに対して虐待的だったけど)、彼は明らかにかなり深刻なメンタルヘルスの問題を抱えてた(そのユーザーはバンされた)。若い人たちは、しっかりしたモデレーターの指導でこういうのは消えることが多いけど、大人の反応者はフラストレーションや退屈が影響することもある。個人的には、朝の方が返信に対して優しくなれることが多い。時には、考えてない人や聞いてない人に対して「偽の」忍耐を見せることもあるよ。全体的に見ると、すごく不均衡だよね。質問者は1つの質問をしてるのに、返信する側は1日に何十個、何百個も答えなきゃいけない。だから、どれもオリジナルのように、重要なことのように、何度も聞いたことがないかのように答えるのは難しい。特にFAQに載ってることならなおさら。良い回答をすること、フォーラムの質は、参加者が良い回答をすることにかかってる。たとえ質問がトリビアルでもね。私たちもみんな初心者だったんだから。バカな質問をすることで成長してきたんだし、バカな質問に答えることで恩返ししてるんだよ。

PERLのUsenetグループの初期に、初めて質問をして自分のスキルレベルを「初心者」と表現したら、自動返信で「初心者」という言葉を使うなって叱られたよ。

この人が変わることができたか、KDEが彼らを排除できたことを願ってる。KDEにはもっと良くなってほしい。

はぁ、懐かしいなぁ。

キーボードとマウスの入力をシミュレートするライブラリのメンテナーをやってるんだ。プロジェクトを始めたわけじゃないけど、メンテナンスを引き継いで、ほぼ全てのコードを書き直した。最近、AnthropicがClaude Desktopで未発表の機能のためにそれを使ってるって知ったんだ。実装を担当してるチームにちょうど空きがあったから、応募したんだけど、数ヶ月後に不採用の通知が来た。手紙には「チームがこれ以上の候補者をレビューする時間がない」って書いてあった。コードはMITライセンスだから、全然問題ないんだけどね。Anthropicみたいな会社が自分のコードを使ってくれるのは嬉しいけど、もうちょっと恩恵があればよかったな。詳しくはここに少し長めのブログ記事を書いたよ:https://grell.dev/blog/ai_rejection

enigoには感謝してるよ!小さなプロジェクトでライブラリを使ったときのサポートもありがとう!

興味深いね。AnthropicがAIに倫理チェックを組み込むために多くのリソースを使ってるのに、この採用プロセスも倫理チェックを受けたのかな?

彼らはおそらく、オープンソースだからこそ使ったり、見つけたりしたんだろうね。だから、リリースしなければ別のものを使うし、リリースすれば使ってもらえる。オプション2は、長い目で見ればもっと露出や機会が増える感じがするね。

ウェブサイトや求人広告から応募したの?もう一度試してみることを強く勧めるよ。役割を教えてくれた友達の友達に連絡して、採用マネージャーへの直接の紹介をお願いしてみて。残念ながら、履歴書は簡単に見落とされちゃうし、PDFファイルを拒否することに罪悪感を感じないんだよね。温かい連絡がなくても、採用マネージャーに直接連絡できる方法(特に、リクルーターじゃなくて!)があれば、「私がそのライブラリを書いた!」ってことが目立つようになるよ。応募ポータルよりも、冷たいアプローチや温かいアプローチの方が、成功することが多いって実感してる。実際、オンラインで応募した仕事から一度もコールバックをもらったことがないんだ!ちなみに、AIラボのリクルーターがどうしてこんなにひどいのか知ってる人いる?一つのラボで仕事を得たけど、プロセスについてはまだまだ不満がたくさんあるんだよね。

GNU GPLJライセンスが必要だね。著作権者に仕事を提供するなら、商業目的で使ってもいいよ。

競合に応募する時、このライブラリでのあなたの仕事をアピールした方がいいかも!ここでも専用のストーリーとして投稿してみて!

これがすぐに成功ストーリーになるといいね。

あなたの応募がチームの誰にも届いてないんじゃなくて、何か壊れたプロセスでフィルターにかかっちゃったのかもね。

AGPLのライセンスを取得しておけばよかったね。そうすればAnthropicが商業ライセンスの交渉に来たり、プロジェクトに貢献してくれたりしたかもしれない。AGPLはサーバーサイドのコード開示を強制するからね。それがなければ、彼らは合法的に使ったり、改変したり、利益を得たりできるけど、改善点を共有したり、君に対して報酬を支払ったりする必要はないんだ。

若い頃、すごく頑張って、海外の弁護士と深夜まで電話でやり取りして、誇りに思ってたツールをオープンソースにするよう会社に説得したんだ。やっと承認が下りたけど、機能やアップデートを受け入れたり、カスタマーサービスをしたり、修正に時間をかけたり、プルリクエストを受け入れたりすることは許されなかった。残念ながら、私の名前があちこちに載ってて、これを推進したことが嫌になった。コードが腐っていくのを見守るしかなかったし、会社はOSSを理解できず、時々死んだコードを壁越しに投げるだけだった。辞めた後も、フラストレーションを抱えたユーザーからメールが来たけど、もうアクセスできなかった。フォークすることもできたけど、ちょっと面倒に思えた。いくつか提案をして、彼らの成功を祈ったよ。ここには何か教訓があるけど、主に次の10年間は波風を立てないようにしようと思ったし、小さい会社を探して働くことにしたんだ。

若い頃に学ぶべき教訓だと思うんだけど、誰かを本当にやりたくないことを強制するのは、あまりうまくいかないことが多いよね。いつか「自分が正しかった」って気づいてくれることを願うけど、実際にはほとんどそうならないし(オープンソースプロジェクトをサポートしてほしかったのに)、たとえ自分が正しかったとしても、彼らがそれに気づくことはほとんどないんだよね。

エネルギー、時間、意欲があるなら、匿名のコラボレーターとして開発するよ。例えば yournamescrambled@email みたいな感じで。

個人的にはないけど、キャリアの中で二回、半有名なオープンソースプロジェクトを作った人たちとの面接ループに参加したことがあるよ。HNをよく読む人なら聞いたことがあるプロジェクトだけど、消えても他の代替案を考えられるほど重要ではないもの。彼らはどちらも、商業化しなかったことを後悔してた。面接官としての私にとって変だったのは、もし商業化していたらどれだけ裕福になっていたかを想像しているのを聞いたこと。オープンソースとしてリリースしたからこそ人気が出たって事実を完全に無視してた。こういう思考が、ある時点でクローズドソースに移行しようとするプロジェクトの背後にあるんだろうな。

もしかしたら、彼らの自慢の仕方かもしれないね。「これ、私がやったことなんだけど、すごくてお金持ちになれるかも!」って。でも、実際には「私はとても価値のある仕事をしてるから、雇ってほしい」っていう後悔の気持ちとはあまり関係ないかも。

富裕層に生まれない限り、賃金奴隷から逃れる唯一の方法はビジネスオーナーになって、そのビジネスをスケールさせることだよね。だからこそ、みんながそういう幻想を抱くのも分かる。オープンソースのコードベースで大きなビジネスが築かれてきたし、私たちの多くは雇用主のために長期的な利益をもたらすソフトウェアを書いているけど、報酬は時給だけなんだ。君の意見に反対するのは、商業化とオープンソースの人気は全く相反しないってこと。FSFもそれをはっきり言ってるよ:オープンソースは、何らかのサービスやバイナリの便利さに対してお金を取ることと100%互換性があるんだ。ソフトウェアの自由は、ソースコードの入手可能性と、修正や配布の権利についてのものであって、「ビールの自由」のような無料とは違うんだ。商業化が必ずしも顧客を搾り取ることを意味するわけじゃなくて、大多数の人が一銭も払わずに完全にオープンソースの体験を楽しむこともできる。nginx plusはそのモデルの良い例だと思う。私はnginxにお金を払う人に会ったことがないけど、大きな問題を抱えた大企業がそれを使っているよ。もう一つの例はDiscourseフォーラム。サポートやホスティングにお金を払うことができる。

プロジェクトは広く採用されないとマネタイズできないし、広く採用されるためにはマネタイズを妨げない許可的なライセンスが必要なんだ :(

そういう人たちには本当に腹が立つよ。「オープンソースで無料*」って、*は「 traction や VCマネーを得るまでは」って意味だよね。これは釣りとすり替えで、コミュニティの善意に乗っかってるだけだよ。

超人気のリポジトリは持ってないけど、500から1500スターのリポジトリはいくつかあるよ。後悔はないけど、受け入れられるプルリクエストを一度ももらったことがないな。READMEにはライブテスト(ブラウザのJSライブラリ)へのリンクがあるけど、PRを提出する人はテストを含めることがほとんどないから、それが一つの問題なんだ。もちろん、「テストを追加してくれたら喜んで受け入れるよ」と言うこともできるけど、それが次の問題につながる。PRは質の高いものが少なくて、機能を追加したいときは、彼らが追加しようとしていたものを一から書き直さなきゃいけない。人々がLLMが多くのプロジェクトにとって悪化させると主張しているのは知ってるけど、LLMは少なくともそこにあるものを読んで、慣習に従ったものを作ろうとすることができるんじゃないかな?PRを受け入れる義務はないことも知ってるけど、頼まれる内容によっては、断るのがそんなに簡単じゃないんだ。

もしこれを解決したいなら、PRテンプレートのチェックリストを作って、貢献者にテストを含めるようにお願いするといいよ。例えば、[ ] ユニットテストを追加した [ ] コードが動いているスクリーンショットを含めた(これでレビューが早く進むよ)。

GitHubにはたくさんのくだらない個人的なコードを投稿してるけど、受け取る問題やプルリクエストの大半は完全に無意味で、全然役に立たないことが多い。例えば、「READMEのタイトルに微妙な影を追加しました」とか(最初のPRだと思ったけど、実際はそうじゃなかった)、「あなたが聞いたこともない$obscure_system_youve_never_heard_ofのサポートを追加しました」とか(善意ではあるけど、コードが4倍長くなってif文の迷路になってるから、そのまま自分のブランチに置いといた方がいいかも?)とか、「投票できるくらい古いシステムで試したらエラーが出ました」とか(そりゃエラー出るよ、そこでは何も動かないし、助けられないよ)。でも、数人は私のアプローチに対して根本的な問題を報告してくれたり、デバッグや問題解決にかなりの労力をかけてくれたりして、すごく助かってる。これからもそういう人が増えるといいな。

ちょっと脱線するけど、ttf-parserとGit OxideのおかげでPRの反復作業がめっちゃ楽だったよ。貢献できて本当に楽しかった。

後悔はしてないけど、オープンソースプロジェクトのコミュニティを作るのは思ってたのとは違うって気づいた。人気のあるプロジェクトのツールに2年以上取り組んできて、機能を追加したり、改良したりしてきたんだけど、みんなが現在の主流ツールやその代替品をどう思ってるか、どんな機能を期待してるかをHNやRedditで読んで、みんなが使いたがるものを作ったと思ったんだ。オープンソースにして、いくつかの場所で共有したけど、全然反響がなかった。まあ、ここで話せばもっと目に留まるだろうと思ったけど、自分のツールを宣伝してるからあまり好かれなかったみたい。ツールのウェブサイトである技術についてブログを書いたら、Redditで結構好評だった。数人が「面白い」とか「すごい」とコメントしてくれて、初めて嬉しかったんだけど、誰かが「友達や別アカウントに自分の投稿にコメントさせるのはダサいからやめた方がいい」って書いて、その幸せが消えちゃった。SNSではほとんどずっとロムってたから、自分を出すのは不快な経験に感じる。続けるか、またロムに戻ってツールを自分だけのものにするか、まだ決めかねてる。

まだ続けるか、またロムに戻ってツールを自分だけのものにするか、決めかねてる。 もしできるなら、1%の厄介な人たちに他の人たちを台無しにさせないようにした方がいいよ。ほとんどの人は、そういう厄介な人やその毒舌コメントを見抜いて、良い仕事を評価することができるから。オープンソースとして自分の作品を共有するのは、厄介な少数派がいても素晴らしいことだし、言わなくても感謝している人はたくさんいるよ。もちろん、自分の精神的健康が一番大事だからね。今までオープンソースとして作品を共有してくれてありがとう。これからの選択肢に幸運を祈るよ。それと、自分のためにオープンソースのものを書くこと。共有するのはいいけど、承認を待たないこと。それはボーナスで、モチベーションは自分の内側から来るべきだと思うよ。

オープンソースプロジェクトのコミュニティを作るのは思ってたのとは違う。 > (…) > それから誰かが「友達や別アカウントに自分の投稿にコメントさせるのはダサいからやめた方がいい」って書いて、その幸せが消えちゃった。 失礼だけど、そんなに簡単に落ち込むなら「コミュニティを作る」ことを試みるべきじゃないよ。人気のあるオープンソースプロジェクトを持つことは華やかじゃないし、余計な仕事が増えるだけだから。権利を主張するユーザーが要求を出したり、クソみたいなバグ報告を開いたりする中で、たまに良い貢献者や稀に素晴らしい人が現れるだけ。自分のツールを提供して、放っておけばいいよ。関連する時だけ言及して、それでも二度考えてみて。ツールは自分のためのものであることを明確にして、プロジェクトのビジョンに合う敬意のあるリクエストには応じるかもしれないけど、約束はしないこと。楽しめることをやって、名声や悪名を追いかけない方がいいよ。

こういう人たちを、宇宙背景放射の雑音みたいに扱い始めてる。

一番最悪な経験は、無視された2つのまともなPRを提出したことだね。1ヶ月間それをサポートする負担を背負って、マージコンフリクトを解決したり、テストなしでマージされたメインブランチの新しいバグを解決したり、変更が何かを解決していることを証明するためにテストシステムを適応させたりした。そしたら、そのメンテナーが無視するだけじゃなくて、他のPRをすべて「あなたの貢献はあまりにも無秩序でレビューが難しい。問題に対しては必ずイシューを立てて、コアチームのメンバーや他の貢献者に解決させてください」と言って閉じているのを見た。 [1] 直接メンテナーに少なくとも1つのPRをマージしてくれるように頼んだんだけど、誰かがバックエンド全体をリファクタリングしているのを見て無視された。すべての貢献を怒りで閉じて、ほとんどのプロジェクトをプライベートにした。もう二度とオープンにはしないと思う。 [1]: https://github.com/ziglang/zig/pull/21426#issuecomment-30823... [2]: https://github.com/ziglang/zig/pull/24317

え、何これ?その2つ目のリンクはあんまり良くないね。多分、GitHub以外で何かあったんだろうな、あんな反応が出るなんて。

アンドリュー、ちょっと失礼だったね。誰かがPRをレビューしたくないなら、無視すればいいと思うんだけど。

正直、後悔してるよ。20年間FOSSプロジェクトに関わってきて、ものすごい時間と労力、お金を注いできたんだ。最初は楽しかったけど、知らない人たちからの称賛をもらうのって中毒性があるよね。気持ちいいから続けちゃって、なんか道徳的な優越感も感じるし。でも、何年も経って、近くにいる人たちがいなくなった時に、無関係な人たちにどれだけエネルギーを注いでたのか考えちゃう。もし、FOSSプロジェクトに注いだ時間と労力の1%でも、愛する人たちとの関係に使ってたら、もっと幸せだっただろうな。今は、あの頃何やってたんだろうって思うよ。 https://giis.co.in/foss.html

完全にオープンソースプロジェクトではないけど、Golangのマイクロサービスについて大規模なブログ記事シリーズを書いたことがあるよ。それがしばらくの間、事実上のスタート地点になったんだ。ものすごい量の作業だったけど、アドバイスを求める人たちで受信箱が埋まっちゃって、正直言って、マイクロサービスがどれだけ馬鹿げてるかを実感したよ。アドバイスを求めてくる人の多くは、実際にはそれを必要としていないように感じたし、彼らをそれから遠ざけようとしたんだ。結局、たくさんの仕事が増えたけど、みんなに必要ないって説得するための注意書きだらけになっちゃった。それで、ブログのデータベースをうっかり消しちゃって、コンテンツを全部失って、みんなに書き直してくれって言われたんだ。ほとんどの人は礼儀正しかったけど、押しの強い人や当然のように要求する人も多かったな… それが一番人気のあったことだったから、ちょっと残念だよ。結局、すごく面倒で後悔になっちゃった。