Before talking about people in history of FFmpeg and libav it’s worth making an outline of the whole history. After all, personal histories are related to the global events in the project.
As you know, FFmpeg was started by Fabrice Bellard under a pseudonym Gerard Lantau exactly twenty two years ago. Why a pseudonym? Probably because back in the day it was too easy to get sued by patent holders but I may be wrong.
Initially it was hosted on SourceForge (which had an affectionate nickname SourceForget thanks for the various outages and failures it had) but after several years it moved to a different hosting (somebody said that after the move the traffic to SourceForge dropped by third).
And thus the era of FFmpeg in MPlayer began (it ended for good rather recently when after different perturbations Árpi could not provide hosting and some Bulgarian provider stepped in). And it was not just hosting, there were some MPlayer-specific code hacks inside (starting from fastmemcpy to libpostproc). More importantly, MPlayer has provided a lot of developers that have been playing a very important role since—like Carl Eugen Hoyos or Michael Niedermayer. The latter became the project leader as FFabrice stopped contributing actively in 2005 or so, he had other awesome projects to work at.
于是,FFmpeg在MPlayer中的时代开始了(这个时代在最近结束了,因为在经历了各种扰动后,Árpi无法提供托管,一些保加利亚提供商介入了)。而且,这不仅仅是托管,里面还有一些特定于MPlayer的代码hack(从fastmemcpy到libpostproc)。更重要的是,从MPlayer项目来了很多开发者,他们一直以来都在发挥着非常重要的作用——比如Carl Eugen Hoyos和Michael Niedermayer。后者在2005年左右成为了项目负责人,因为FFabrice不再活跃的贡献代码了,他有其他了不起的项目要做。
I consider the time of about 2003-2009 the golden age of FFmpeg: new developers, new features, fast growth and so on. Some people drifted in because they wanted to fix some encoding or decoding problem Summer of Code program participation started in 2006, so various students came in and usually left (very few stayed).
我认为2003-2009年间是FFmpeg的黄金时代:新的开发者,新的功能,快速的增长等等。有些人因为想要修复一些编码或解码问题而加入进来。FFmpeg 2006年开始参加Google的Summer of Code,所以许多学生也加入进来,但多数最终又离开了(留下来的很少)。
Then the consequences of fame started to sink in: FFmpeg became a recognized solution used in the enterprise so more developers were coming with patches to support various enterprise stuff (like broadcasting-specific containers) and disagreements with the project management style were rising (like migrating to Git, having regular releases instead of sticking at 0.4.9pre1 and—the unthinkable—throwing out some outdated features). So the split happened and after the period of initial confusion libav was born.
The following period was a war of FFmpeg against libav, no points for guessing which project won it (I think mostly to the efforts of Carl Eugen, hence I call the project of this period CEmpeg). But in the course of it changed a lot in order to win more popularity with the Linux distributions (and to be able to merge changes from libav).
Yet this was the beginning of its end. As I said before, now the development is mostly bugfixes and updates for various wrappers (both for hardware and software codecs) plus filters (do we really need another gstreamer?).
A certain Jean-Baptiste from VideoLAN project undertook a valiant effort to reform FFmpeg by introducing a clearer structure for resolving technical arguments and tried to finally get proper funding from those large companies using the software but so far jbmpeg seems like a mostly failed effort to me, both from the financial and the organisational point of view.
Now with all this context it should be easier for me to talk about the roles of individual developers and other people whose work was important for the project (like compn or Piotr Bandurski) as they would fit somewhere on the timeline and not act in vacuum.
Fabrice BellardThe first time I encountered his work was (then unknowingly to me) when I found out that INSTALL.EXE from Sierra quest was packed with LZEXE. And a couple of years later while looking at all the packages some Mandrake Linux distribution I’d encountered a package called ffmpeg that could transcode various newer formats (it was also the time when I got a first DiXV 3 movie rip and the only players I had could play MPEG-1 at best). And I’d kept encountering his name in random places…
I think there are enough articles written about his work in general as they give enough material to prove that he’s a rare genius whose works changed different fields of computing.But before I go to describing his role in FFmpeg I want to mention that it seems that he mostly follows some path and most of his projects are related to each other (mostly compression and emulation) and smaller projects turn out to be parts of something bigger that may change the industry (e.g. in 2001 he won International Obfuscated C Code Content with a small C compiler, which gave way to TCC, which gave way to QEMU, which along with KQEMU essentially created the modern opensource hypervisor landscape).
Now let’s move to a project of his that takes place somewhere between 2000 IOCCC winning entry that calculates FFT and image compression experiments (BPG and that 2018 IOCCC winning entry).
As the repository history says, Fabrice created FFmpeg in late 2000 but the actual work on it started in the second half 2001. Even if it was spotted and adopted by MPlayer almost immediately, Fabrice remained the principal developer until October 2001 when other developers took over (we’ll talk about them in the upcoming posts). I also suspect that Juanjo (or pulento) who was active until 2002 may be yet another pseudonym of his (remember, he started the project as Gerard Lantau probably in order not to get sued). He distanced himself from the project in 2003, having some commits introducing DVD subtitles in 2005 and a single random patch in 2007.
This project of his has changed the multimedia landscape by both making a bold move to create something that supported state of the art (at the time) video formats and creating a common place for opensource developers to share their work. Before that each player had implemented (or copied) own decoders for various formats (also is there anybody not named Mike who remembers xine-codec-devel mailing list?), afterwards most of them started to rely on libavcodec for their decoding needs.
Having said that, I should move to discussing the less stellar aspects of his work and style. As mentioned above, Fabrice won International Obfuscated C Code Contest three times and you need a certain mindset to create code like that—which creeps into your other work. So despite his implementation of FFmpeg was fast-working, it was not very nice to debug or refactor, especially if you’re not Fabrice (and MPlayer developers made it ever worse).
The other thing is that he’s not good at selecting successors to run his projects. You may think that FFmpeg–libav split was an exception but TCC community seems to underwent the same route (it’s just fewer people care about it) so I wonder more how QEMU escaped this fate (Update: apparently it did not but it went without such drama). In either case, the good he’s done to the world outweighs the deficiencies and I mention them mostly to remind people that no person is perfect.