作者:quink
来源:Fun With FFmpeg
链接:https://mp.weixin.qq.com/s/InIaM4STV04HAb8JOFNAWQ
写了不少和FFmpeg相关的音视频技术,现在来聊一聊FFmpeg社区。
经过20多年的积累,FFmpeg的作者全部加起来大约是2000人。但多数人提交了几个patch就消失了,patch数量 >= 20的只有250人。有些过去活跃的开发者走了,现在依然活跃的开发者只有几十人,所以FFmpeg社区是个很小很小的圈子。
FFmpeg社区的运行方式,由这份文件来约定:
https://github.com/FFmpeg/FFmpeg/blob/master/doc/community.texi
1. FFmpeg项目的General Assembly(简称GA)是由活跃贡献者组成的最高权力机构。GA成员的门槛是最近36个月贡献patch >= 20。某些没有patch贡献,但过去活跃的开发者,或者做其他维护工作的人员,也可以经提名通过后加入GA。目前GA有46个成员
2. Community Committee(简称CC)社区委员会负责社区纪律,由GA投票选出5个成员组成。主要工作是在有人发表人身攻击之类言论时,对他提出警告,或者禁言一天之类的
3. Technical Committee(简称TC)技术委员会负责解决技术争议,由GA投票选出5个成员组成
除此之外,社区有个特殊角色,前leader Michael Niedermayer。2011年,FFmpeg分裂为FFmpeg和libav。2015年,Michael宣布辞去FFmpeg leader的角色,FFmpeg和libav最终又合并成FFmpeg。上次的分裂事件,Michael是争议的焦点。今天,2025年,Michael又成了争议的焦点,面临再次分裂的风险,甚至更严重的开发停滞。
对于核心争议,Niklas Haas做了精确的总结:
ffmpeg.org/pipermail/ffmpeg-devel/2024-December/337958.html
FFmpeg brands itself
a democratic project, but it effectively runs on a “benevolent dictator for
life” model. The main source of frustration is this disconnect between what
the relevant parties think ought to be, and what is. One side clearly wants to move the needle towrds decentralization of power, and the other side clearly
wants to retain, or even strengthen, a centralized power model.
表面上,FFmpeg社区是按照民主的方式行事,实际上,社区还是按照一套终身仁慈独裁者的方式行事。
Michael虽然辞去了leader角色,但是FFmpeg的服务器、域名等基础设施在他手上。最近,Michael声称撤回他的辞职声明:
https://ffmpeg.org/pipermail/ffmpeg-devel/2024-December/338040.html
As the one basically in control of ffmpeg, it is and always was me who
has to make the final choice. Even if i resign today i make a choice
on who controls ffmpeg.
另一边,社区一些成员反对Michael独断专行:
1. FFmpeg和libav合并的基础是按照民主的方式管理社区。社区的运行规则经过商讨、投票,写在FFmpeg代码仓库里
2. Michael的行事风格,导致许多人不认可他的leader角色
剩下的事就是吵架,吵的鸡飞狗跳。Michael这边说你们只是想夺权,另一边说我们只是要按照约定由GA行使最高决策权,互相猜疑,没法沟通。Michael的追随者Nicolas George说:
Democracy was just a bad idea, for that very reason among others, let us drop it.
Michael自己一方面坚持final decision的权力,一方面说要民主,但认为活跃的开发者不能代表社区,要让所有加入FFmpeg邮件列表的几千人有投票权才算民主。
从我个人角度来说,我不介意用终身仁慈独裁者的方式还是民主的方式管理社区:只不过几十号人,又不是上亿人。有很多开源项目,典型的如Linux,按终身仁慈独裁者的方式运行的很好。但我对Michael是否胜任leader角色存疑。
Michael对FFmpeg的贡献毋庸置疑。他在FFmpeg社区待的时间最长,他负责版本发布,他的patch数最多。当然,部分原因是只有他有权限做一些事。比如最近几年他的patch几乎全部是fuzz测试的安全修复,他有权限获取fuzz测试报告。
没有争议的前提下,Michael也很仁慈。新来的活跃的开发者,最终能成为maintainer,Michael起了不少作用。各个maintainer git服务器的push权限是Michael授予的,也只有他有权限授予。
但遇到非技术问题,或者非底层技术细节的事,他的表现就不太明智了。Vittorio列举了他最近半年的行事:
1. Michael是前CC成员,但是CC会议决策的结果不符合他的预期,他挑战CC的合法性,让CC无法运行
2. 社区想要从FFmpeg里移除libpostproc这个库,因为多少年了没人用。Michael阻止移除它,后来又从STF申请经费来维护libpostproc。从ffmpeg里把libpostproc移除出去作为一个独立的库,多年前已经有人完成了
3. 有人用FFmpeg名义在拉斯维加斯的展会搞了个展台,可能涉及商业行为,社区认为应该先通知到社区,Michael认为搞展台对FFmpeg有利,不需要通知社区。搞展台的人有Michael授权的一些后台服务器权限,所以争论来争论去变成了维护自己人
4. 社区想要获取服务器基础设施信息,有哪些服务器,谁有这些服务器权限,Michael拒绝交出这些信息。然后过了一段时间冒出来一个消失了十多年,只提交过29个patch的Compn有服务器权限,维护Michael,并且对挑战Michael的人禁言
5. 其他人想获取服务器权限,Michael拒绝,认为想获取服务器权限的人身份可疑
6. 阻挠迁移到gitlab或者其他CICD服务,坚持用邮件做开发和patch review。当初从SVN迁移到git,Michael也是阻挠
7. 不承认新一届CC成员,认为选举出来的人都是反对他的人
8. Michael想要把一个软件定义的无线电功能塞到FFmpeg里,TC反对,认为无线电功能不属于FFmpeg,应该是个单独的项目,Michael难以接受这个结果,把无线电的一些测试文件放到了FFmpeg测试文件里。最终又挑战TC的合法性
9. 不愿意让人参与线下聚会如VDD,怕线下聚会的人形成小团体反对他
10. 把别人的反对说成是对他的人身攻击,把自己描述成受害者
所以形成了一个正反馈系统:反对声音越强,Michael越没有安全感,越是做出一些出格的事;出格的事越多,反对声音越强。
比如,他认为GA可以被收买,或者已经被收买了,同时攻击以公司身份参与社区的开发者:
+You can hire a developer (for example on fiver) to submit 20 patches within each 3 years,
+and vote as you ask her to.
+In the last votes (as of begin 2025) about 30 votes where cast, so hiring about 20-30 developers
+allows controlling any decision. These developers also can pass KYC and travel to conferences (which has
+been always paid). They also have a strong incentive not to reveal their nature as that would end
+this lucrative income stream for them.
+
+ Why is the GA more corporate than community-oriented?
+
+In recent years, a significant number of developers contributing to the project are employed by companies,
+unlike in the past. These employees are often compensated for specific tasks, and the voting rights,
+much like the copyrights, can typically be controlled by their employers.
我提出了反对意见,这是把每个GA成员当成了犯罪嫌疑人,给每个有工作的人定罪了。
社区是基于信任,不管是终身仁慈独裁者的运行模式还是民主的运行模式。猜疑来猜疑去,迫害妄想症的行事风格没法让社区运行下去。
Anton一怒之下离开了社区,不知道还会不会回来,离开之前他说:
To that I say:
* you are delusional, as you are the source or enabler of all the
toxicity
* Libav had NONE of these problems (not saying it was perfect – it did
have other problems, but not these)
* there is no hope for this project as long as you continue to hold the
reins and I’ve wasted enough of my life on it.
另外还有两个开发者离开,Derek Buitenhuis和Paul B Mahol。Paul B Mahol走的原因不明,Michael说是Paul因为CC走的,因为Paul经常骂人被CC警告。Paul现在还经常出没于FFmpeg IRC,昵称都是SincereLeader,BestLeader之类的,调戏FFmpeg的leader。
很多开发者,只想埋头做事,不想管社区如何运作,但像CICD这种和开发工作密切相关的基础设施建设,核心开发者不得不关心。用邮件列表做开发,挡住了多少想入门的开发者,丢失了多少无人过问的patch。Michael的意见决定了这些问题何时能解决,还是再拖十年。
目前看不到社区恢复正常的希望。Michael对项目拥有绝对控制权,吵到最后大概是更多开发者出走,FFmpeg失去活力,只做bugfix。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。