Libav had been since its start a controversial project, mainly because lots of drama and a huge amount of manure had been thrown against it and even about 4 years after its start there are people spewing this kind of vitriolic comments.
What is Libav
How it started
Libav started when the trademark FFmpeg
had been given by the owner of it Fabrice Bellard to the former FFmpeg leader Michael Niedermayer.
Michael Niedermayer managed to get demoted from his leader position by the topmost 18 people involved in FFmpeg by the time due his tendency of not following even the basic project rules. That after weeks from being voted to stay as leader by 15, 5 explicitly stating their vote was conditioned by his behavior and 1 definitely against him.
His demotion is due to acts in full disregard of the policies in place, even those enforced automatically by the svn hooks.
The fact he bullied and belittled volunteers and contributor can be checked by digging the mailing list during the months and the year before the management change and it also added up to the decision.
What aims to do
Being burnt by the unreliable leadership experience the Libav organization focused on rules both for development and for management.
Ideally having a clear set of rules and making every member and contributor abide to the very same rule would prevent abuses.
Rules in summary
- All the code must use the same coding style
- All the patches require a review.
- Nothing hits the tree before a second pair of eyes read the code.
- No part of the code is a private garden that only selected people modify on their whim.
- Everybody must abide to a quite simple code of conduct.
- rude behavior is not welcome.
- flames are not welcome.
- constructive criticism is needed.
Since FFmpeg was a project famous for horrid code quality and sketchy and irregular API and a good chunk of needed changes were vetoed by the now-demoted leader, Libav focused mainly in cleaning up the code and making the API easy to use. This lead to deep overhauls such as reference-counted frames to make the multi-threading much simpler, reference-counted packets to make extended workflow easy and a good chunk of bugs and ancient issues fixed.
Demotivation and FUD
The people involved in Libav mainly focused on code, ignoring most if not all the kind of wild statements fans of Michael Niedermayer dispersed around internet. The idea is that the code should speak by itself.
Did not work as expected. At all.
Apparently news outlets prefer to repeat whatever they find on a blogpost instead of checking the facts by reading the mailing list and the git. Many misconceptions, to use an euphemism, had been spun around and apparently won’t die that quickly if left unaccounted.
The thief theme
“The people behind Libav stole the FFmpeg infrastructure”, some of the admins even got questioned in their workplace if they really stole something. Pity that most of the people related in keeping the infrastructure functional were doing so on their own hardware and co-location, but obviously checking facts is hard, better go help shoveling manure on people.
Needless to say that gets hard keep spending time and resources and get this kind of treatment. At VDD 2014 there were some agreements on at least clear the air about this by having a strong statement about it. So far it did not happen.
The daily merge
“Libav is a non-functional fork of FFmpeg” is quite often repeated all around, Michael started to merge daily everything Libav does more or less since the beginning, making FFmpeg effectively a strict derivative of Libav.
Initially he even use a quite misleading moniker in his merge naming qatar
the Libav tree. Now things are a little more fair and at least FFmpeg more or less states that is a derivative of Libav with additional features in their download page.
Few people ended up deciding to leave the Libav project since they did not appreciate the fact their hard work done on their spare time would be used by somebody else to disparage them and on top of it to ask for donation with wild claims that the “80% of all is done in FFmpeg is done by Michael”.
You are helping the evil
New people contributing to Libav quite often get some fans contacting them to enlighten the people about how evil is Libav and the people working on it and how much better FFmpeg is and how better would be to contribute to the real project.
This is a form of harassment, so far the people involved kept sort of quiet, but probably would help being more outspoken since most people around do not like to check the facts. Private emails probably should stay private, but blog post comments can be easily found and linked. Since from the beginning such “jokes” had been spun I let the reader imagine how much patience somebody should muster to keep staying quiet and just write code (this post is me getting fed up enough after 3+ years).
Motivation and Demotivation
I like to write code that is functional and doesn’t pokes you eyes when you read it after a while and I like to write code about multimedia among the other things.
I used to consider the split and the following competition had been a bliss, since the original FFmpeg project was pretty much dying due the kind of environment it had. Having a competitor tempers the bad tendencies quite well.
On the other hand I’m not cool at all in having an unfair competition, with a side piggy-backing on the other like it is happening: everything in Libav is merged inf FFmpeg, enjoying the fact the code is polished and cleaned before. Libav has the above mentioned rules so any patch has to be discussed and usually that leads to a fair amount of changes when what is cherry-picked from FFmpeg hits the mailing list for review a good deal of times is faster and simpler to just write fix covering more issues or rewrite from scratch the feature some user deemed interesting to have.
I probably won’t stop contributing to Libav since I like a lot working with the other people involved and the few people thanking me now and then make me think that giving up would just cause more harm than good in the big picture. I can understand those that decide to stop though, sometimes the amount of nonsense thrown at you by those rabid fans not knowing anything is appalling.
Hopefully writing more about it might help defusing this situation.
PS: You might also read the often-ignored initial remark from Kostya
Stay optimistic!
Thank you for writing that. I had been wondering about the difference between the two projects. Because I didn’t hear any defence regarding Libav’s positions, my imagination filled in the spaces and didn’t create a fair representation for your case. Now I know better and I hope that the Libav developers will not expect others to dig through email lists to get to the details, but rather speak up and share their points of view. Because the alternative is that people, like me, will just not know if they’re not told.
Most people just wanted to write nice code without having to constantly argue, foolish, I know =)
The FUD against libav is disappointing. I wish the libav developers hadn’t been subjected to that.
I do disagree with your characterization of ffmpeg as unfair competition. When a project splits it benefits users of both projects if they merge each other changes. Sure it would be nice if ffmpeg had the same code quality that allowed libav to easily merge. We shouldn’t have every open source rewriting code to do the same thing. Maybe ffmpeg should have been more honest and state that it is libav plus additions not yet deemed ready by libav team but I don’t think it should have ignored good contributions maybe by libav.