Top Banner
1 Samsung Open Source Group Open Source Group Reynaldo H. Verdejo Pinochet <[email protected]> Open Source Group / Samsung Research America / SV FFmpeg – A Retrospective
51

FFmpeg: A Retrospective

Jan 21, 2018

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: FFmpeg: A Retrospective

1Samsung Open Source Group

Open Source Group

Reynaldo H. Verdejo Pinochet <[email protected]> Open Source Group / Samsung Research America / SV

FFmpeg – A Retrospective

Page 2: FFmpeg: A Retrospective

2Samsung Open Source Group

Open Source Group

Introduction

Page 3: FFmpeg: A Retrospective

3Samsung Open Source Group

Open Source Group

About myself

● Senior Multimedia Software Engineer for the OSG (SRA/SV)

● Long time FOSS developer: MPlayer, FFmpeg, GStreamer, etc

Page 4: FFmpeg: A Retrospective

4Samsung Open Source Group

Open Source Group

Agenda

● What is FFmpeg?● A brief look at 15 years of project history● Current Challenges● Lessons Learned

Page 5: FFmpeg: A Retrospective

5Samsung Open Source Group

Open Source Group

What is FFmpeg?

Page 6: FFmpeg: A Retrospective

6Samsung Open Source Group

Open Source Group

What is FFmpeg?

On the label● Complete cross-platform solution to

record, convert, and stream media

Page 7: FFmpeg: A Retrospective

7Samsung Open Source Group

Open Source Group

What is FFmpeg?

For real● A collection of SW implementations of a

huge number of codecs and de/muxers and a low level API for multimedia processing

● That and tools

“FFmpeg is geared towards traditional use cases but since it is low level, it doesn't limit application scope.”

Page 8: FFmpeg: A Retrospective

8Samsung Open Source Group

Open Source Group

What is FFmpeg?

Licensing

Depending on what modules are enabled (--enable-gpl)● LGPL 2.1+● GPL 2+

Page 9: FFmpeg: A Retrospective

9Samsung Open Source Group

Open Source Group

What is FFmpeg?

Community

Time for a risky statement ...

“It's a large, international free software development community that shouldn't work but — somehow — it does.”

Page 10: FFmpeg: A Retrospective

10Samsung Open Source Group

Open Source Group

What is FFmpeg?

The previous statement might be hard to grasp but we will see later how this seemingly unique characteristic is:● Not really that unique● An interesting subject to discuss and

learn from

Page 11: FFmpeg: A Retrospective

11Samsung Open Source Group

Open Source Group

15 Years of Project History

Page 12: FFmpeg: A Retrospective

12Samsung Open Source Group

Open Source Group

The First Days

● FFmpeg was created 15 years ago by Gerard Lantau (a pseudonym for F.B.)

● First release made December 20, 2000● Pretty much a single community with

MPlayer for a long time. Both communities shared a particularly rude approach to PR

Page 13: FFmpeg: A Retrospective

13Samsung Open Source Group

Open Source Group

The First Days

“"The MPlayer gang seems to relish nothing more than belittling their users and reminding them of just how little they know about Linux and computing in general" (Joe Barr for LinuxWorld, 2001) "Software by Marquis de Sade"”

Page 14: FFmpeg: A Retrospective

14Samsung Open Source Group

Open Source Group

A Few Years In

● 2003 H264 Decoder and Demuxer (Final draft of version 1 of the standard made circa May 2003)

● The team was already working on rolling their own codecs– FFV1 (intra only, lossless), circa 2003

● 2004, Michael Niedermayer gets the leadership from Fabrice Bellard after 〜 3 years as a contributor– No project lead change since then (but some on leadership

style)

Page 15: FFmpeg: A Retrospective

15Samsung Open Source Group

Open Source Group

A Few Years In

● 2004, developers coming from related projects start showing up to stay

● 2005 Vorbis Decoder (Independent implementation)

● Up to 2006 there was a fairly slowly paced development speed (~100 c/m average) with a community of < 30 developers

Page 16: FFmpeg: A Retrospective

16Samsung Open Source Group

Open Source Group

Growing pains

● As codebase matures, so do some egos● Community continued making it to the front page

– "2010, FFmpeg's native VP8 decoder faster than google's libvpx"

● By 2010 there was a general feeling of unrest regarding:– Merging of too-intrusive but otherwise important changes

(MT)

– No well defined set of rules on project managment nor community interaction

– Project lead not communicating properly

Page 17: FFmpeg: A Retrospective

17Samsung Open Source Group

Open Source Group

The Coup

Page 18: FFmpeg: A Retrospective

18Samsung Open Source Group

Open Source Group

The Coup

● A non trivial group of developers (18) attempts to perform a takeover. The idea was to kick out the current Maintainer and proceed from there with a new set of drafted rules

● Jan 18, 2011, "[FFmpeg-devel] [ANNOUNCE] New FFmpeg maintainership"

Page 19: FFmpeg: A Retrospective

19Samsung Open Source Group

Open Source Group

The Coup

● An important detail was missing. They had infrastructure control but lacked domain control

● The situation led to the takeover attempt failing as such and becoming a fork, albeit an important one

Page 20: FFmpeg: A Retrospective

20Samsung Open Source Group

Open Source Group

The Coup

● Libav emerges● FFmpeg wiped out from Debian / Ubuntu

(Package maintainer was part of the take over group)

● Bikeshedding continues: people fighting about the logo!

● Consequences beyond that: FFmpeg out of GSoC

Page 21: FFmpeg: A Retrospective

21Samsung Open Source Group

Open Source Group

Coup Aftermath

● Michael's renaissance● Michael starts merging back Libav

improvements. Trying to maintain compatibility between the two projects– This process will grow to become Michael's

main activity latter on

Page 22: FFmpeg: A Retrospective

22Samsung Open Source Group

Open Source Group

Coup Aftermath

● Libav plays by 'FFmpeg doesn't exists' game terms. FFmpeg-incompatible changes get pushed without any cross-project coordination (Not that anyone was really expecting coordination to happen)

● New reviewing rules on Libav had an impact on its development pace (Moves slower than FFmpeg)

Page 23: FFmpeg: A Retrospective

23Samsung Open Source Group

Open Source Group

Stabilization

Page 24: FFmpeg: A Retrospective

24Samsung Open Source Group

Open Source Group

Stabilization

● It took a while for the teams to start thinking past the coup

● For many it was quite a traumatic event● For the FFmpeg-relying community it

was certainly a loss

Page 25: FFmpeg: A Retrospective

25Samsung Open Source Group

Open Source Group

Stabilization

● FFmpeg development pace keeps thriving. Some examples:– HEVC ratified as a standard April 2013,

committed Oct 12 same year

– Native VP9 decoder, finalized June 2013, committed Sep 2013

Page 26: FFmpeg: A Retrospective

26Samsung Open Source Group

Open Source Group

Scenario in 2014

● Single lead, managed community (Michael Niedermayer since 2004)

● File-level maintainership model still in place● Project lead only resolves on conflict● Informally appointed community-leads

handle interaction with the rest of the world. Michael is active and oversees these aspects too

Page 27: FFmpeg: A Retrospective

27Samsung Open Source Group

Open Source Group

Scenario in 2014

By 2014, most of what the revolution had ruined had been fixed. Pretty much everything but the general feeling of unrest and the split community.

Page 28: FFmpeg: A Retrospective

28Samsung Open Source Group

Open Source Group

Scenario in 2014

● FFmpeg back to GSoC● FFmpeg on OPW / Outreachy● FFmpeg back to Debian (Oct 2014)● FFmpeg as libav provider on GStreamer

1.6 (2015)

Page 29: FFmpeg: A Retrospective

29Samsung Open Source Group

Open Source Group

But Things Were About to Change

yet another time...

Page 30: FFmpeg: A Retrospective

30Samsung Open Source Group

Open Source Group

Today

● Michael submitted his resignation as project lead

● A community of voters was selected to make decisions on conflict

● Initial voter committee was selected purely on development stats

Page 31: FFmpeg: A Retrospective

31Samsung Open Source Group

Open Source Group

Current Challenges

Page 32: FFmpeg: A Retrospective

32Samsung Open Source Group

Open Source Group

Current Challenges

● As for any other FOSS project, the main external issue is staying relevant per se

● The main internal one for FFmpeg: Staying together

Page 33: FFmpeg: A Retrospective

33Samsung Open Source Group

Open Source Group

Current Challenges

FFmpeg faces challenges on several areas● With its users● With the industry● With its internal organization

Page 34: FFmpeg: A Retrospective

34Samsung Open Source Group

Open Source Group

FFmpeg and Its Users

Since it is both a command line tool and a library, its users can be categorized depending on their usage approach● Users● Developers

It is mportant to mention that the above doesn't always hold true (Like most things in life)

Page 35: FFmpeg: A Retrospective

35Samsung Open Source Group

Open Source Group

FFmpeg and Its Users

Users● Shrinking user base● Field progress and HW development

makes tweaking largely irrelevant up to an acceptable quality baseline

● Basically no way around it but focusing on the library side (This is something Libav did seemingly right away)

Page 36: FFmpeg: A Retrospective

36Samsung Open Source Group

Open Source Group

FFmpeg and Its Users

Developers● User base shifting (?) towards service

developers– Light and low level library doesn't save you much

on complex processing use cases but perfectly fits the needs of largely-distributed and scalable single-purpose systems

● Most of the challenges here intersect the industry challenges

Page 37: FFmpeg: A Retrospective

37Samsung Open Source Group

Open Source Group

FFmpeg and the Industry

● Patents have always been an issue with FFmpeg, specially for industries that operate globally

● Huge set of corporate users but few come forward to say "I do"

● This has an immediate consequence:– Corporate support is basically non-existent

Page 38: FFmpeg: A Retrospective

38Samsung Open Source Group

Open Source Group

FFmpeg and the Industry

● Project management style & the lack of a formal release cycle hindered the project / industry relationship right from the start

● But there was no alternative around so FFmpeg started been covertly used quite fast– Projects like GStreamer were not an alternative,

FFmpeg solves a completely different issue. These are complementary pieces of the multimedia processing puzzle

Page 39: FFmpeg: A Retrospective

39Samsung Open Source Group

Open Source Group

FFmpeg and the Industry

● Gained importance while hunting for the Linux desktop

● Circa 2008, user awareness starts to vanish. Platform switch to the smartphone starts making SW codecs less relevant (More constrained resource set, less power consumption allowance, etc)

● Continued importance on server side, non real-time processing– Real life big-company example removed

– Real life big-company example removed

Page 40: FFmpeg: A Retrospective

40Samsung Open Source Group

Open Source Group

FFmpeg and Its Team

● Organize around an stable government system● Implement democratic control without

sacrificing development speed - agility– Libav is a good example. The FFmpeg back to

Debian campaign had a major argument around security-bugfixing speed

● Re-unite with Libav?– This movement might now be accelerated by a

group of developers pushing towards reunion

Page 41: FFmpeg: A Retrospective

41Samsung Open Source Group

Open Source Group

Lessons Learned

Page 42: FFmpeg: A Retrospective

42Samsung Open Source Group

Open Source Group

Lessons Learned

Chance of experience the extremes as a developer for both FFmpeg and GStreamer (and some other projects in between) has taught me a few things on approaching and surviving a harsh development community.

Page 43: FFmpeg: A Retrospective

43Samsung Open Source Group

Open Source Group

Approaching

● Know: Low level software communities are most likely going to be harsh

● Accept: Growing a thicker skin is the ticket price for the fun ride– TS is pretty much the dressing code for this

party

Page 44: FFmpeg: A Retrospective

44Samsung Open Source Group

Open Source Group

Approaching

● Avoid trying to make your code perfect before putting it up for review– Not worthy

– It is not perfect

● Avoid proposing new things — Concentrate on fixing

Page 45: FFmpeg: A Retrospective

45Samsung Open Source Group

Open Source Group

Surviving

● Ignore hostility or you will get beaten up (Don't underestimate trolling and bullying experience)

● Be social, be there

Page 46: FFmpeg: A Retrospective

46Samsung Open Source Group

Open Source Group

Surviving

● Remember: Likely not a democratic setup, with a high tendency for bikeshedding– Avoid feeding locked-up-at-not-agreement

discussions

– There's an obvious, underlaying reason for this. People need the scape it provides

● Assume responsibility: aim at maintaining if you have the time

Page 47: FFmpeg: A Retrospective

47Samsung Open Source Group

Open Source Group

Surviving

Above all: Enjoy it

Page 48: FFmpeg: A Retrospective

48Samsung Open Source Group

Open Source Group

Enjoy It!

Page 49: FFmpeg: A Retrospective

49Samsung Open Source Group

Open Source Group

Credits

[email protected] @Reyverdejo

“"The Coup" image from WikiMedia Commons. Originally by Denoel Paris and other photographers - "1989 Libertate Roumanie" by Denoel Paris (ISBN 2-207-23695-1)”

Page 50: FFmpeg: A Retrospective

50Samsung Open Source Group

Open Source Group

Questions

Page 51: FFmpeg: A Retrospective

Thank you.

51Samsung Open Source Group

Open Source Group