オープンソースソフトウェアの開発費を誰が負担するのか

2022/1/26作成

OSS「faker.js」と「colors.js」の開発者、自身でライブラリを意図的に改ざん 「ただ働きはもうしない」

人気のオープンソースソフトウェア faker.js / colos.js の開発者の方が、大企業がフリーライドすることに腹を立ててリポジトリを破壊してしまったそうです。こいういうと語弊がありますが、この手の話は以前からあります。

Babelは何百万もの人々に使われているのに、どうして我々は飢えようとしているのかでも開発者が非常に資金に困っているという話が書かれています。Redis や MongoDB プロジェクトがパブリッククラウド企業に対してフリーライドを批判する声明を出したことがありました。だいぶ前になりますが、インターネットを支えていると言っても過言ではない OpenSSL がたった二人の開発者で開発されていて、資金難で開発が行えなくなりそうというニュースもありました。多分私が知らないだけで、他にも似たような話はたくさんあると思います。つまり、ボランティアの開発者が開発した成果をGAFAを始めとした巨大ネット企業がフリーライドして莫大な利益をあげていながら、開発者やコミュニティに還元していないという話ですね。

この問題は実際にはオープンソースソフトウェアが出始めた頃から言われていた話です。オープンソースソフトウェアは無償ソフトではないのですが、実際にはほとんどが無償で配布されています。無償で配布して開発費はどうやってひねり出すんだと。これに対する一つの解答はRedHatモデルでしょう。ソフトウェア自体は無償で配布するけれど、サポートを有償で行うことで開発費を回収するというモデルです。ただ、この方法ってRedHat以外ではあまり聞きませんので、一般化するのは難しいのかなとも思います。

これ、多分ですがソーシャルビジネス業界の方が先行してモデルを構築できてるんじゃないかと思うんですね。以前はボランティア団体が無償でサービスしていたり、必要な費用は寄付で賄っていたりしました。あとは行政からの補助金ですね。これに対して、ユーザから対価を受け取ってビジネスとして成り立たせる方法ですね。RedHatのビジネスモデルもこの方法に近いのかもしれません。もっとも、ソーシャルビジネスも万能ではないですし、経営的に成り立っている団体はほんの一部だったりもします。大半は寄付と行政の補助金とスタッフの無償労働に頼っていたりするわけなんで。

寄付金というのはもちろん一つの方法ではあるんですが、持続的な収入ではないという点でイマイチなんですよね。また、各コミュニティに寄付金を集めるためのスタッフが居るのも、労力の浪費感があります。この点、GitHub Sponsors のように集金と配布を一手に引き受ける仕組みがあるのが理想的かなと思います。

ということで、なかなかいい方法がないなぁというのが今のところの感想です。現状でいいとも思ってないのですが、一方でオープンソースソフトウェアの理想として自由なソフトウェアが流通する世界は維持して欲しいので、そのための仕組みがなんらかあるといいのになぁとは思います。

(2022/1/31追記)

この問題、一方で企業側の事情もあるんですよね。実際のところとして、オープンソース側が企業の要求に応えられるかというと、そうとは限らないという。

開発組織がNPOなりの法人格を持っていて常任の職員も雇用しているような大きなプロジェクトは別です。数としてはそんなしっかりしたところは圧倒的に少なくて、大半は個人もしくは数人程度がプライベートの時間を使って開発しているのみのプロジェクトになります。企業がこれらの開発コミュニティに寄付金を出すことは出来るでしょう。でも有償保守契約を結ぶことができるでしょうか。難しいですよね。

まず契約の相手の実態が存在しない。コミュニティでは契約主体になれないですよね。実務的にはコミュニティの代表者が個人として保守契約を結ぶことになるけど、そうすると契約当事者の負担だけが一方的に重くなる。だって契約当事者は契約に従って様々な義務を負うのに、他の開発メンバーは相変わらずボランティアでの参加になるわけですから。

義務の一つには問い合わせ対応もありますよね。企業側としては有償サポート契約を結んでるんだから一定期間内に責任ある回答をだすことを期待します。では開発コミュニティはそれが出来るか。常任で対応してるスタッフがいるならできますが、プライベートの時間で対応するとなると簡単なことではないでしょう。

有償保守を行っていなかったとしても、人気のオープンソースソフトウェアの場合、殺到する issue や PR の対応で開発者は疲弊しているという話はあります。ただ、そこで大きな違いがあるのは、有償保守契約を結んでしまうと辞めたくなっても辞めれないってことなんですね。冒頭で紹介した colors.js/faker.js の開発者は義務を負ってなかったからやめるという自由を行使できたとも言える。

オープンソースソフトウェアを開発する動機は人それぞれでしょうが、「やりたいからやる」ってのは大きいと思います。そこには開発者が開発する自由がある。これは裏返せば「やりたくなくなればやめる」という、開発をやめる自由もあるわけですね。それが保守契約を結んでしまうと、その契約期間中はやめたくてもやめればいとなってしまう。となると、果たして開発者にとって幸せなのはどちらなのだろうという疑問も湧いてきます。

ここまで書いてきて思いましたが、この問題はオープンソースソフトウェアとひとくくりにしてしまっているから問題が複雑に見えてしまうってのもあるかもしれません。RedHatのように企業が収益を挙げながらソフトウェア自体はオープンソースで無償で提供するという方法もあります。この場合はオープンソースソフトウェアの開発は営利事業の一部ですよね。Apache財団がいくつものオープンソースプロジェクトを支援していたりもします。企業がオープンソースソフトウェアの開発者を雇用して、業務として OSS 開発を行わせている場合もあります。そして最も多いのが、プライベートの時間を使って趣味的に開発されているオープンソースソフトウェア。規模も体制もそれぞれ全く違いますから、資金調達の方法もそれぞれ個別に考えたほうがいいのかもしれませんね。

(2022/2/6追記)

大筋としてオープンソースソフトウェア開発者が報酬を得られるように支援しましょうという文脈で書いてきましたが、逆にそうではないこともありえるというのも追記しておきます。

いや、オープンソースソフトウェア開発者に報酬を払うこと自体はいいんですよ。ただ、その報酬で生計を立てるようになると、もしも収入が途絶えて生計が維持できなくなると、そのオープンソースソフトウェアの開発そのものが停滞してしまいかねないという問題がありまして。また、報酬を得られる場合にはどうしても世間的に今必要とされているものという軸で開発が行われることになってしまって、需要は少ないけど必要性はあるよねっていうようなソフトウェアの開発は進まないということも起こりえます。

これってオープンソースソフトウェアに限らず、商用ソフトウェアだったりサービスだったりでもよく起こってることなんですよね。役に立ったり人気があったサービスであっても、マネタイズに失敗したり、マネタイズ自体はできても黒字にはもっていけなかったために、開発やサービスが終了してしまうということは、とてもよくあります。そのたびにユーザから残念だという声が挙がりますが、商売としてやっている限りどうしようもないですよね。オープンソースソフトウェアの場合も報酬に頼ってしまうと同様の事が起こる可能性がありますね。

もっとも、オープンソースソフトウェアの場合、ライセンスによって開発継続の可能性を保証していたりもします。実際、上述した faker.js や colors.js は有志の開発者コミュニティがフォークして開発継続しているそうです。フォークする自由、それを公開できる自由というのはオープンソースソフトウェアの根幹をなす重要な理念なんで、もっと周知されるといいと思うんですけどね。世間的には「タダで使えるソフトウェア」という点ばかりが重視されてる感じがします。ちょっと話がわき道にそれた。

話を戻しまして。開発者がそれ自体で生計を維持せず、余暇の時間を使ってボランティアで開発することで、かえって開発の持続性が高まるということはあるだろうなと思うんです。もちろん報酬を得てもいいんですが、あくまでも副業の範囲として。生計は別の本業で立てるということですね。これ、あんまりやりすぎると西陣織の年金問題は他人事ではないかもでのように、本業としてる人の食い扶持を削ってしまいかねないので注意が必要なんですが。とはいえ、本業では食えないような分野のことも副業やボランティアとしてなら成り立つというのは、あり得る選択肢だと思います。オープンソースソフトウェアの開発に限らずですが。伝統芸能とかでも、それを本業にして食べていけてるのって歌舞伎などのごく一部ですよね。本業は別にもって生計を立てながら伝統芸能を維持しているということも多いかと思います。