What happened to FFmpeg

This is my look on what happened but I’ll try to remain objective.

A bit about me (in the very unlikely case you don’t know already and care). I’ve learned about FFmpeg in 2004 or so, just saw it along with other packages in Mandrake release. For several months I downloaded source snapshots at cybercafe (even dial-up was impossible then). I had long interest in general data compression methods and some interest in codecs sparkled by XAnim and desire to play M$ ADPCM files on Linux and FFmpeg got new decoders every week or so (mostly for packed YUV formats but nevertheless quite useful).

One day I tried to reverse-engineer some codec (just for fun), looked at sample produced by TechSmith Camtasia and realized that it’s packed with zlib and after some time guessed correctly they use M$ RLE. In order to test it I wrote a decoder and hacked it into FFmpeg. Eventually it worked and I send my decoder to Mike Melanson. On the 14th of August 2004 it was committed to FFmpeg codebase and it made me proud for my work for a week (those were the times!). After another decoder or two I’ve learned and started to read ffmpeg-devel mailing list (it was on SourceForget then). I think I started submitting my patches there with Indeo2 decoder or so.

After a while I was offered CVS commit access which I refused because of technical limitations. Finally in March 2006 I got display for my MacMini and I was ready for more active development. Google Summers of Code gave me opportunity to dedicate a bit more time for FFmpeg since I could say “hey, I’m payed for it!”. I still try to contribute even if I’m no longer student, have job and too little free time.

And now to the business.

As you may know, most active group of developers had disagreements on how FFmpeg was managed. First that resulted into an attempt to move old-style development elsewhere and reinstating new development under old name. Since Fabrice was in favour of old group and controls ffmpeg.org DNS entry, new model development group was forced out and now is known under a name of Libav.

But what is the root of disagreements? The “legendary” leader, Michael Niedermayer. Legendary in the sence that it’s a legend and not a reality.

At least since 2004 (when I joined the project) FFmpeg was rather a self-organizing community of developers, each with his own goals. Somebody wanted to play movie trailers encoded with QuickTime (hi there, Mike!), somebody wanted to play obscure game formats, somebody just wanted to support anything that he could reverse engineer (that’s me and probably Mike and other people as well). Diego Biurrun tried to bring project in shape by introducing formatting conventions (in early days nobody cared about style much), he and later Måns Rullgård made FFmpeg build system almost perfect, also Måns and Baptiste Coudurier (and many other people) worked on improving or introducing support for common formats.

Later when FFmpeg started participating in GSoCs, at first it was handled by Mike and now by Ronald Bultje. Our test system — FATE started as Mike’s experiment for automated testing regressions for many parts. Later it was completely redesigned and rewritten by Måns who also used a lot of his own hardware to provide test results so FFmpeg was tested on variety of platforms and compilers (most non-x86 things at our FATE are because of his work).

Bug tracking system was set up by Luca and he also found a hosting for it. A lot of services for FFmpeg were run on hardware of Attila Kinali (and even bandwidth and hosting for main server was his achievement). And recent Subversion -> Git transition with merging history from SwScaler is mostly done by Janne Grunau.

So, what’s the role of leader in FFmpeg? None! Almost every significant action was done by somebody else. Were they following some roadmap devised by him? There is no such thing either. Maybe it’s his social skills that kept community together? Wrong again, he caused some people to leave project (and not only the last year, Baptiste would serve good example) and different service maintainers too — by forcing his idiosyncrasies on project (like long-standing DTS guessing issue) or ordering service maintainers around.

And his role as lead developer has been diminishing probably since 2004. I can’t deny he did outstanding work on optimising H.263-based encoders and decoders and writing H.264 decoder, writing and developing some other stuff and providing reviews for patches. But what does he do in recent time? I can’t name anything significant. And from technical point he can’t serve as example: he never cared much about architectures beside x86 nor about his code being easily understandable.

Thus, some developers had had enough and forked. It’s still self-organized community with people contributing to what they seem important and nobody to order around (and not that much stalling on patch reviewing like in times of designated maintainers either).

This fork seems to moved murky waters and some trolls (mostly from MPlayer project that have no relation to FFmpeg at all) reappeared after long time; I cannot directly blame Michael on it but it seems suspicious for me. And the messages I’ve read on ffmpeg-devel between forking and creating Libav made me mostly disgusted, so I’ve unsubscribed from FFmpeg mailing lists and don’t participate in FFmpeg anymore. What goes there is not my concern anymore and I’m happy with Libav.

P.S. Also since most of new things in FFmpeg were introduced despite of him (like Git transition and releases), I can’t forget one historical analogy. In German “the leader” is “der Führer”, but that word is rarely used nowadays because there was another Austrian who completely spoiled its meaning.

9 Responses to “What happened to FFmpeg”

  1. Alex Converse says:

    I pretty much agree with all of that until the PS. (not that I ever agree with PS :))

  2. Luca Barbato says:

    Nice description of the event =)

  3. Reimar says:

    Well, for me the experience in the short time was that patch review times are abysmal as ever and review quality lower.
    If it had been only about having a “leader” or not it wouldn’t have mattered much, but completely throwing away the development model and forcing people to rely on reviews that I felt as reeking of cluelessness and just hindering me made the libav for look like a non-option to me.
    Sorry for being flamish/trollish.

  4. compn says:

    personally i dont care which project is used. i was called a troll and asked to leave, after joining the libav development channel. so i’ll stay away since i’m not wanted.

    moving forward, i hope the bugtrackers dont get too many duplicate bugs.

  5. Michael Niedermayer says:

    I never was, nor wanted to be a legendary leader. What one of my main goals was and is, is not to be in peoples way when they want to work on something.
    And yes ive surely contributed less in the months prior to the fork than i did years before. That was to a some extend due to some people fillibustering my work wherever they could and thus making it quite non-fun. The libmpcodecs case is an example. These people left now to libav with several other people that i would really have preferred if they did not leave, but when they are happier there it cant be a bad thing. i just have my doubts about their long term happyness. But time will tell that.
    And i want to use this opertunity to say, that you kostya are always welcome to return to ffmpeg, if you want with your own tree, branch or fork where you are the final boss.

    About your list of work done by people, its true but one sided, you only list the people who now are on the libav side.
    Luca setup roundup and found hosting for it, i & arpi did the same for trac.
    arpi provided hosting and server for todays ffmpeg.org. i setup the git backed homepage, automatic doxygen and texi->html generation, and we did many other boring administrativ tasks. Carl and many others did insane amounts of patch monkying and there where several people who put quite some effort into keeping the ftp clean.
    Also ffv1, nut & snow can be mentioned as being my work.
    But the main thing i really did and still do in ffmpeg is reviewing patches. I havnt done any statistics but iam pretty sure ive reviewed more patches than all members of libav added together. About gsoc, mike & ronald did great work there but again most (not all) of the final code review work before interation into ffmpeg was done by me. And where i failed to do it, often noone else did either, and that was true for more than just gsoc patches.
    Todays reviews in ffmpeg still are pretty much what they always where, the people who understand a patch and have time and will, do a review.
    In libav, yesterday mxpeg was merged with a arbitrary code execution security bug, and the author even mentioned in the thread the last patch had securits issues. and 3 days ago security issues in dfa.c.
    So at the risk of being branded a troll i think the review quality of libav is not at the same level ffmpegs is.

  6. Michael is just a professional troll. It was unbelievable how hard he pushed to split the community after Mans returned; mission accomplished. Now FFmpeg is dead, libav FTW.

  7. compn says:

    @Felipe
    wodpress? thats a funny blog url :)

  8. […] itself to Libav. Some people is still wondering why we did that, you might read some short and longer summaries, have a look at our git or our mailing lists to see how we are faring and where we are […]

  9. Baptiste Coudurier says:

    @Felipe
    Please stay out of this, in terms of trolling you are very good at it IMHO.
    Just go away.