オープンソースのマルチメディアツール「FFmpeg」と「Libav」はなぜ分裂したのか?

GIGAZINE



2000年から開発が続いているFFmpegはオープンソースで開発されるコーデックツールで、動画や音声を記録・変換・再生するためのフリーソフトウェアです。FFmepgの開発体制は2011年にFFmpegとLibavという2つのプロジェクトに分裂した過去があり、この経緯についてグラフィックやアート関連のエンジニアであるbµg氏が自身のブログで説明しています。

The FFmpeg/Libav situation
http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html


FFmpegの開発プロジェクトがスタートした時、同時期にオープンソースのメディアプレイヤーであるMPlayerの開発プロジェクトがスタートしました。FFmpegは音声や動画を変換したり再生したりするためのライブラリとツールをまとめたもので、MPlayerもFFmpegのAPIを使ってコードメンテナンスの負担を軽くしていることもあり、両プロジェクトの関係はかなり深いといえます。

さらに、FFmpegとMPlayerは、両方のリポジトリが同じサーバーでホストされていたり、開発者の多くがFFmpegとMPlayerの両方に参加していたりと、開発コミュニティ自体もかなり近い関係にありました。当時、bµg氏はMPlayerの開発コミュニティに属していたそうです。


当時のFFmpegの開発コミュニティで最も大きな存在だったのがMichael Niedermayer氏でした。Niedermayer氏はFFmepgのメンテナーを自称しており、開発者のメーリングリストにレビューを求めたり、リポジトリへプッシュしたり、技術的な最終決定を下したりするのもNiedermayer氏が行っていたとのこと。

しかし、開発者コミュニティからNiedermayer氏への不満の声が少しずつ挙がりだしたとのこと。開発者コミュニティがNiedermayer氏を批判する者とNiedermayer氏を擁護する者の2つに分かれ、お互いに意見を言い始めたり、相手を侮辱したりするなど、内戦状態になったそうです。

2010年には、FFmpegのリーダーの地位をめぐる投票が行われましたが、結果はNiedermayer氏がリーダー残留となりました。こうした対立騒動にうんざりして2011年1月18日に一部の開発者が新しいチームを結成し、「今日をもってFFmpegのメンテナーシップは新しいチームに引き継がれます」と表明しました。bµg氏は「これは古いメンテナーの独裁を排除する目的で、ある種の乗っ取りのようなものでしたが、開発方法の変更や目的の再定義も行われました」と述べています。

Libav側の説明によると、「対立騒動でプロジェクトとレビューが進まなかったため、サーバー管理者を含むアクティブな開発者がリポジトリを別に用意して進めようとしたものの、議論に積極的に参加していなかった多くの人々がNiedermayer氏側についたため、1つのメーリングリストとIRCチャンネル上で対立が続いた」と述べており、開発プロジェクトが全く進まないことと、開発に参加せずに対立騒動にだけ口を出すコミュニティメンバーを見限っての離反だとしています。


Niedermayer氏と旧開発チームは妥協点を見つけようとしましたが、失敗。FFmpegのリポジトリはVLC Playerを開発するVideoLANのサーバーにホストされ、最終的にffmpeg.orgのDNSはVideoLANのサーバーに書き換えられました。その結果、新しいチームは事実上追放されることになり、「Libavの開発プロジェクト」として強制的にffmpegをフォークすることとなりました。Libav側は「FFmpegの開発プロジェクトの創設者は、Niedermayer氏を今も支持していることを知ったため、創設者の意見を尊重してサイトやリポジトリ、メーリングリスト、IRCチャンネルを『Libav』という名前で『適切に』フォークした」と述べています。

こういった経緯から、Libavの開発ポリシーは「プロジェクトリーダーはいない」「すべてのコミットはチームのメンバー全員によってレビューと承認を受ける必要がある」と定められたとのこと。bµg氏は中立的な立場を保ちながら、この開発ポリシーは試してみる価値があると思い、パッチをFFmpegとLibavの両方のメーリングリストに送信したこともあるそうです。

LibavはFFmpegとは完全に別体制で開発が進められました。そんなLibavを後押ししたのがDebianとUbuntuです。Ubuntuの開発者メーリングリストによると、DebianにおけるFFmpegパッケージを担当する開発者が2011年3月にパッケージのバイナリ配布についてNiedermayer氏に相談した際に、Niedermayer氏の態度に不満があったとのこと。特にマルチスレッドで処理を行うffmpeg-mtをマージしてほしいという要望に対して、Niedermayer氏は「私は決してffmpeg-mtをマージしない」と答えたそうです。その結果、複雑で変更の多いFFmpegのAPIの安定版を求めていたDebianの開発チームは、APIのクリーンアップを大きな目標としていたLibavをサポートすると決めたと述べています。

しかし、bµg氏によると、分裂による強制的なフォークとLibavとの競争は、FFmpegの開発プロジェクトに刺激を与えたとのこと。特に独裁的だったと批判を浴びたNiedermayer氏の態度が一変し、ffmpeg-mtも2011年5月21日にマージされました。このことは、FFmpegとLibavの戦争がもたらした最もポジティブな結果の1つだとbµg氏は評価しています。

その後、2015年にリリースされたUbuntu 15.04で、一度削除されたFFmpegが復活し、Ubuntu 15.10でLibavが削除されました。また、Debianも2017年にリリースしたバージョン9.0で、LibavからFFmpegに戻りました。Debianの開発者コミュニティによる議論では、LibavからFFmpegに戻った理由として、Libavの修正対応が遅々として進まない一方で、FFmpegの修正が迅速に行われるというメンテナンス頻度の差、そしてFFmpegのAPIが安定するようになったことが挙げられています。


なお、対立騒動の原因の1つともいえるNiedermayer氏は、「Libavの開発チームがFFmpegの開発に復帰しやすくなることを願い、FFmpeg開発kmUnityのリーダーを辞任する」と2015年7月31日のメーリングリストで表明しました。記事作成時点では、Niedermayer氏はMPlayerの開発者として活躍しています。

この記事のタイトルとURLをコピーする

Source