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

オープンソースの抵抗:企業の時間内にOSSを維持する

概要

  • OSS(オープンソースソフトウェア) は企業に不可欠なインフラ
  • OSS保守は業務時間中に行うべき で、許可を求める必要はない
  • 雇用契約やIP管理の注意点 を押さえることが重要
  • バランス感覚を持って行動 し、無理は禁物
  • 法的リスクや職場状況 によって判断を変える柔軟性が必要

許可を求めず必要なことをやる宣言

  • OSSは「趣味」ではなく企業の基盤インフラ
    • すべての企業がOSSに依存
    • 企業はOSSから利益を得ている
  • OSSメンテナンスは業務の一部
    • 追加の申請や上司の許可は不要
    • 技術的負債やインフラ保守と同じ扱い
  • 従来から行われてきたやり方の明文化
    • OSSメンテナーは自律的に作業
    • ミーティングや承認を待たずにインターネットを支える

実践方法と注意点

  • やるべきこと
    • PRレビュー、依存関係の更新、バグ修正など、担当OSSの保守作業
  • 自分を守る方法
    • 契約内容の確認
    • 機密情報は公開しない
    • 公開OSSのIP(知的財産)権の帰属を確認
  • やりすぎ注意
    • 業務時間の100%をOSSに使わない
    • バランス重視、自己責任

代替案と進化

  • 他のアプローチ
    • Open Source Pledge(開発者1人あたり年2000ドル支払い)
    • Open Source Friday(毎週金曜2時間をOSSに)
    • 雇用主への事前相談も推奨
  • Open Source Resistance
    • 依存OSSの保守は既に業務の一部
    • 自分の裁量で作業時間を使う
    • 予算管理は会社側の問題、時間配分は自分でコントロール

よくある反論とその回答

  • 「これは窃盗だ」
    • 企業は日常的にOSSから価値を得ている
    • OSS保守は共通インフラの維持であり窃盗ではない
  • 「許可を取るべき」
    • 許可を求めるのは力関係の固定化
    • インフラ保守に許可は不要
  • 「サボり(quiet quitting)だ」
    • これは生産性の低下ではなく、OSSインフラの維持
    • 企業が作業を業務と認めないのが問題
  • 「良い雇用主も巻き込まれる」
    • 良い企業は既にOSS保守を認めたり支援している
    • それでも自分のプロジェクトは自分で守る必要

Mike McQuaidの実践例

  • Homebrew、GitHub Sponsors、Open Source Fridayの立ち上げ
  • 自身のOSS活動の大半を業務時間内で実施
  • IP契約の交渉経験多数
  • プライベートの時間を搾取される義務はない
    • 持続可能なOSS活動の重要性を強調

注意事項・法的な観点

  • これは法的助言ではなく倫理・政治的主張
  • リスクが高い場合は専門家に相談
  • 雇用契約・IP規定・社内ポリシーの確認必須
    • 雇用中の成果物は会社のものになる可能性
    • 個人時間・個人機材での作業ルールは州や契約で異なる
  • IP契約の交渉方法
    • 入社前にOSS活動の例外を明記
    • GitHubのBalanced Employee IP Agreementを参考に交渉
  • 機密保持とセキュリティ遵守
    • 機密情報や社内リソースの公開厳禁
    • 公私の区別を明確に
  • 静かに、しかし慎重に
    • リスクを見極めて自己判断
    • パフォーマンス評価が下がる可能性も許容
    • 持続可能な働き方の重視

適用範囲と限界

  • クライアントワーク、政府案件、規制環境では弱い主張
  • ジュニアや不安定な立場のエンジニアにはリスクが高い
  • シニアで既存OSS依存の保守なら強い主張
  • 「何でも業務時間で」ではなく「既存OSSの保守を業務の一部に」
    • 担当プロジェクトや業務関連ツールの改善に限定
    • 関連性のない作業やプロプライエタリなものは避ける

Hackerたちの意見

いいアイデアだと思うけど、「抵抗」として位置づけるのはどうかな。多分、君の仕事は何か目標を達成することだよね。君がその目標をどうやって達成するかを決める専門家なんだから。オープンソースソフトウェアがその決定の一部なら、維持管理もその一環だよ。これは過激なことじゃなくて、君の仕事を支えるための未来の安定性や維持管理を守るためにやるべきことなんだ。

同意する。そういう表現だと、誰かがSNSで注目を集めようとしてるみたいに見える。すべてが誇張されなきゃいけないなんて、悲しいよね。

それに、ビジネス的にも理にかなってるよね。オープンソースを通じてコラボレーションを促進する企業は、自分たちのビジネスを支えるエコシステムを育ててるんだ。

君の言うことには賛成だけど、最近のほとんどのテック企業の現実(私の経験に基づいて)では、強制されない限り、自分たちのインフラやライブラリの維持に時間を投資しないんだよね。ましてやオープンソースなんて。ゲームのメトリクスのために無駄な機能を作ったり、エンシチフィケーションやダークパターン、ボーダーラインのマルウェア/ハイプ統合なんかが、基盤のインフラやライブラリへの投資よりも優先されるんだ。

この考えには全面的に賛成だけど、実際にやるのは難しいと思う。私の知る限りでは、一般的に雇用主が知的財産を所有しているから、OSSとして公開するには明示的な許可が必要なんだ。その許可を得るのはしばしば難しくて、無限の手続きや法務部門を通さなきゃいけないこともある。> アメリカ、イギリス、その他いくつかの法域では、従業員が職務の一環として作成した作品は、雇用主が法的著作者または著作権の最初の所有者と見なされる。 https://en.wikipedia.org/wiki/Work_for_hire とはいえ、オープンソースの作業(維持管理や開発)は、寄付をお願いするボランティアではなく、給料をもらっている専門家によって行われるべきだと思う。大きな問題は、それをどう実現するか、企業がOSSへの貢献を特別な交渉が必要なものではなく、標準的な実践として受け入れるようにするにはどうすればいいかだね。

完全なオープンソースを推進する必要はないよ。会社の知的財産が依存しているOSSパッケージの維持管理を手伝う時間を交渉したり、後でコミュニティにリリースできるような中立的なモジュールを作るために自分の知的財産を設計したりできる。

これはすべての州に当てはまるわけじゃないよ。カリフォルニア州には、労働者の知的財産を雇用主が盗むことを禁止するカリフォルニア労働法第2870条がある。

個人的には、特定の契約の例外を設けて、例えば会社の機器での勤務時間中だけ適用されるようにしてるよ(もっと緩やかでもいいかも)。GitHubの緩いIP契約は、ここでさらにリラックスした例だね。

一般的な概念としては全面的に同意するけど、実際に実現するのは難しいと思う。君が言ってる問題は、実際には「実践の中の問題」じゃなくて、理論的な問題だよ。実際には、ただやりたいことをやればいいんだ。コンピュータ上でgit pushを止めるサブルーチンなんてないし。実際には、雇用主は雇用契約にいろいろ書くだけだよ。可能な限りすべてを書いて、あらゆる方向からのリスクをカバーしようとする。もし彼らが自由に書けるなら、君も自由にやっていいんじゃない?何も問題じゃない。実際には、ほとんどのオープンソースプロジェクトはこの技術的な理由でIPが挑戦されたことなんてないよ。

オランダでは、法律がかなり明確で、これは悪いアイデアだね。> 「雇用の性質」ルール:ソフトウェア開発者として雇われた場合、あなたが作成したほとんどのソフトウェア(自分の時間に作ったものでも)を雇用主が主張できる。私たちは常に従業員に例外を求めるようにアドバイスしてる。私たちはかなりリラックスしてるけど、全体的な例外は出さないよ。

私は法律の専門家ではないけど、一般的には雇用主が知的財産を所有していて、OSSとして公開するには明示的な許可が必要だよ。もしその作業が仕事に関連しているなら、これは本当だよ。仕事に関連していない場合は州によるけど、多くの州では雇用主が自分の知的財産として主張できることに制限がある。一般的な契約書は、言葉を広く使うからすべてを主張しようとするけど、法律では、雇用主があなたの自由時間にやった仕事を主張できないって言ってることが多い。もし勤務時間中に作業をしたり、会社のノートパソコンを使ったりしたら、雇用主はそれに対して権利を主張できる。ほとんどの会社は気にしないだろうけど、もし争いが起きたときのために、きちんとした状態を保つことは大事だよ。自分の時間で、自分のハードウェアで作業して、雇われている仕事や職場で触れたものと重ならないようにしよう。

現在のプログラミングの状況が示していることは、知的財産権や著作権法はもう存在しないってことだね。

投稿は、抵抗の少ない道を選ぶように提案してるんだと思う。会社の時間で働いて、大きな波を立てないようにする感じ。もし捕まったら、許しを請う。会社にとっては、許してくれるのが楽な道だし、弁護士を巻き込むとすごく高くつくし、PRの悪夢になる可能性もあるからね。

一般的な概念としては全く同意するけど、実際にそれを達成するのは難しいと思う。法律の専門家じゃないけど、一般的には雇い主が知的財産を所有しているから、OSSとして公開するには明示的な許可が必要だよね。法律の専門家じゃないけど、同僚にコピーを渡して実行させたら、OSSライセンスを使ってそれができるってことだよね?同僚はそのライセンスによって法的権利を持つことになるよね?変更を再配布する権利も含めて?上流に変更をプッシュするのが、変更が維持される確実な方法なのに、これって本当に馬鹿げてるよね。内部の独自フォークを維持することに関する法的な不確実性も言うまでもないし。

これ、めちゃくちゃだね。企業はOSSから利益を得てるんだから、支払うべきじゃないの?おいおい。企業がOSSから利益を得るのは、ほとんどのライセンスの核心的な考えが「誰でも貢献しなくても利益を得られる」ってことだから。気に入らない?不公平だと思う?じゃあOSSをやめるか、もっと制限のあるライセンスを選べばいい。もし企業が君の作業時間に対して支払っているのなら(多くの契約はこういう形)、その時間内に彼らが明示的に指示した仕事をすることを期待する権利があるんだ。それは法律だけじゃなくて、常識でもあるよ。

残念ながら、責任の問題がよく出てくるんだよね。もしコードをコミットして、それが後で訴訟の対象になったらどうするの?「やりたくない」ってだけじゃ済まないよ。(私は全面的に支持してるけど、法律が絡むとリスクを正当化できる必要があるんだ。)

すべてのビジネスに当てはまるわけじゃないけど、私は研究や自分が作るスクリプト、ラボのためのカスタムソフトウェアでこれをよくやってる。オンラインに公開できる幸運に恵まれたよ。これはすごくニッチなソフトウェア(パワーメーターや、今後開発中のフォトニックチップの整列)で、既存のWindowsベースのソフトウェアのLinux/Haiku版に過ぎないことが多いけど、研究所がやってることを考えると、少しでもお返ししたいと思ってる。

私の雇用主は、特定のオープンソースプロジェクトに貢献するための包括的な許可をくれることが多かった。フレーミングが大事だよ。「気持ちがいいからボランティア活動をしてもいいですか?」なんて言わないで、「自分の分野の専門家から厳密なレビューを無料で受けて、会社の将来の維持管理コストをゼロにするために、上流のオープンソースプロジェクトに自分の修正を貢献する許可をもらえますか?」って言うんだ。実際、そういうことなんだ。私の雇用主は、これに対して「ノー」と言ったことは一度もないよ。君がこれをするのは彼らの利益に完全に合致してるから、彼らにそれを理解させる手助けをすればいいんだ。

“もちろん、これをコンプライアンスチームに通してみるね。知的財産の侵害がないか確認するために。どのリポジトリと問題なの?”

いろんな理由で前の仕事をクビになったのはちょっと悲しいけど、その中でも大きな理由の一つは、私がKafka Streamsライブラリに対して行った大きな変更をオープンソースにする話が出ていたことだね。APIをほぼ互換性を保ちながら、多くの部分を書き直して、必要に応じてバックプレッシャーセマンティクスを強調する非ブロッキングIOに焦点を当てたんだ。すごく面白いことができて、状態ストアやブロッキングと非ブロッキングIOを組み合わせて、比較的パフォーマンスが良い形で実現できたのが本当にクールだった。これがすごく良いプロジェクトで、自分が誇りに思っている理由の一つだよ。パフォーマンスを引き出すのが難しいところで、たくさんの場所でそれを実現できたからね。Githubにリリースしたり、上流のKafka StreamsプロジェクトにPRを出すことを推進していたけど、残念ながらその前にレイオフがあって、その後は本当にそれを推進する「チャンピオン」がいなくなっちゃったから、プロプライエタリな状態に留まってしまった。もしかしたら、ゼロからやり直してFOSSにするかもしれない。もう十分な時間が経ったから、書き直してリリースしても問題ないと思うし(特許とかはついてなかったし)、いくつか変更したい点もある(例えば、Vert.xの依存関係をなくすとか)。もし1週間の休みが取れたら、やってみるかもね。

こういうことができる職場で働いていたのが懐かしいな。雇い主によっては、法的なレビューにばかりこだわってしまうことがあるよね。以前、プロジェクトにパッチを提出する許可を求めたことがあって、面白いメールのやり取りがあったんだ。結局、こんな質問に行き着いた。「そのパッチが顧客に請求する時間内に書かれたもので、バグ修正のためのもので、パッチを当てるライブラリを再コンパイルしてソースコードと一緒に納品しなければならず、契約書には製品に関連するすべての作業と知的財産が顧客に譲渡されると書かれている場合、私たちはそのパッチをパブリックドメインで公開する権限があるのか?」法務はその質問に答えたくなかったみたい。

一般的にはいいアプローチだと思うし、プロフェッショナルに物事を考える素晴らしい例だけど、問題の核心を解決してないのが気になる。エンジニアリングに特化した会社のリーダーがすぐに理解しないのは問題だと思う。運もこのアプローチには大きく影響するよね。

「そして、出荷するオープンソースのIPを所有していることを確認してね。」私が働いてきたすべての法域では、勤務時間中に出荷するコードは私のものじゃなくて雇用主のものだよ。自分の判断で勤務時間中にオープンソースに貢献することはできない。オープンソースコードに取り組むためには正式な合意が必要で、毎回それを求めると法務部を通すのにすごく時間がかかって(数ヶ月)、結局諦めるか、他の貢献者がその間にPRを出してしまうから、もう聞くのをやめちゃった。

生産部分以外で、雇用主が許可されたライセンスのコードを公開していない仕事は受けないな。それは私にとって士気を下げるし、精神的にギリギリになる。むしろ貧乏の方がマシだよ。

彼らが言いたかったのは、自分のものでない作業を勝手に公開しようとしない方がいいってことだと思う。下の方にもそのことについてのセクションがあるけど、最初の箇条書きがちょっと混乱を招いたね。この点は経験豊富な開発者には明らかだけど、うちの会社の若手開発者には本当に問題になってることがある。社内プロジェクトで面白いことをやってるのを見て、それをオープンソースプロジェクトに貢献できると思ってしまうんだ。でも、クローズドソースのコードを使って似たようなコードを提出することの問題を考えないんだよね(場合によってはコピー&ペーストすることも)。

ちゃんと調べたことはないけど、ドイツでは基本的に勤務時間中に作成されたソースコードは雇用主が所有するって印象がある。ITに特化してないほとんどの雇用主は、オープンソースが何か、どう機能するかも理解してないだろうから、許可を得るのは無理だと思う。リンク先のサイトは、オープンソースの利点を説明することと、雇用主向けの法的ガイドラインを提唱することに重点を置くべきだね。

私はそこそこ大きな会社で働いてる。オープンソースポリシーは、まずマネージャーに聞いて、会社の名義でやらず、機密情報は公開しないって感じだ。これまで問題になったことはないし、全体的に見ても合理的だと思う。

これ、めっちゃ好き!

僕が働いた大企業では、会社のコードベースに直接コードを書く以外のリクエストは、直属のマネージャーから「自由時間にやってください」と返されることが多かったよ。たとえ理由を説明してもね。利益重視の環境では、即座に価値があるものだけが追求される。効率や指標のための常に競争があるから、かなり寄生的な態度になってる。

上級職になると、面接の過程で「何か質問はありますか?」って聞かれたときに、こう聞くんだ。「この会社が依存しているOSSプロジェクトに貢献するために、私の時間を使うことについてどう思いますか?」その答えを基に、残るかどうかを決める感じ。