FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As...

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

Transcript of FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As...

Page 1: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

2Samsung Open Source Group

Open Source Group

Introduction

Page 3: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

5Samsung Open Source Group

Open Source Group

What is FFmpeg?

Page 6: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

11Samsung Open Source Group

Open Source Group

15 Years of Project History

Page 12: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

17Samsung Open Source Group

Open Source Group

The Coup

Page 18: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

23Samsung Open Source Group

Open Source Group

Stabilization

Page 24: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

29Samsung Open Source Group

Open Source Group

But Things Were About to Change

yet another time...

Page 30: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

31Samsung Open Source Group

Open Source Group

Current Challenges

Page 32: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

41Samsung Open Source Group

Open Source Group

Lessons Learned

Page 42: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

47Samsung Open Source Group

Open Source Group

Surviving

Above all: Enjoy it

Page 48: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

48Samsung Open Source Group

Open Source Group

Enjoy It!

Page 49: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

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€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

50Samsung Open Source Group

Open Source Group

Questions

Page 51: FFmpeg – A Retrospective€¦ · Samsung Open Source Group 16 Open Source Group Growing pains As codebase matures, so do some egos Community continued making it to the front page

Thank you.

51Samsung Open Source Group

Open Source Group