Open Source Pet Peeve No. 1: We don’t do formal releases

This is hardly a problem specific to the open source community. This happens to webapps whenever developers have access to the production database. However, I am picking on open source productions here, because as a user I am shielded from a web apps release process unless I catch a maintance screen. For closed source products that run on my desktop or my server, you have to at least give me a zip file with compiled binaries so your forced to do a formal release of some sort.

A specific example of where this occurs is ffmpeg. Apparently they do the occasional formal release, but highly recommend that you grab the latest svn repo and build that. Having used ffmpeg to process video files uploaded to a website, and of course transform them to flv files in a manner much like youtube, I have some experience dealing with this issue.

Basically, ffmpeg is the netcat of  digital A/V. If you want to take a stream of A/V data from one source and tranform it, this is the program to use. Generally this means converting video from one format to another, but so is video capture, changing resolution, and separating audio and video streams.

The only small issue is as their download page says:

FFmpeg has always been a very experimental and developer-driven project. It is a key component in many multimedia projects and has new features added constantly. New, official “releases” are few and far between. In short, if you want to work with FFmpeg, you are advised to go along with SVN development rather than relying on formal releases. SVN snapshots work really well 99% of the time so people are not afraid to use them.

Basically, they don’t have time to do formal releases but generally speakin, the code from their svn repo will build and run. I must say that after getting the code to run the first time, that statement is generally true.

Lets deal with my personal  experiences before I pontificate on potential problem for other people. Generally speaking, updating svn to the head revision and doing the usual unix ./configure –a-bunch-of-configure-arguments && make && make install gave me working binaries. Sometimes I had to twiddle with configure options as some features, including support for specific file formats, would break. Being my goal was to convert from any possibly format to flv, I reasonably expected support for certain esoteric formats to wax and wane, even if formal releases were performed. So other than the problem of having to pick specific svn revisions to move from the test sever to production, this posed no practical issues to me at first glance.

Now had I been a unix admin that did not program myself, I might have been unfamiliar with svn.  This is alleviated by nightly snapshots of the repo. Their is plenty of documentation on building ffmpeg, and the distro’s use older formal releases. So, the average user will be able to easily get a ffmpeg binary that will convert from video in a common format to flv to display on their website if they want to host video without involving youtube.

However, in all of these tasks are hidden wastes. If ffmpeg had formal releases that just worked, I’d probably never attempted to recompile it, or join the mailing list. I would probably not document the process on the ConchShell wiki, or a more detailed document in my companies internal wiki dealing with the specific intricacies of ffmpeg on our setup.

Also, I believe if the developers invested time in formal releases, they would spend less time on support issues.  The mailing list was very high traffic. Many people asked questions and few people got answers. I felt I asked “proper” questions on the list, yet I rarely got answers. If the developers did formal releases, and managed to reduce the number of support requests as a result, they might be able to spend more time actively listening to their users instead of actively ignoring them. This might have led to a better product. They also might be able to tap into the talents of their power users and centralize some of the documentation scattered across various peoples personal home pages.

Now I was starting a website where encoding videos to flv and playing them back was a primary function of the site. So it is very likely I would have become involved in the mailing lists eventually. However, if I could have afforded more time to non ffmpeg tasks initially, the business venture might have afforded me the success to have the need, and resources to sponsor ffmpeg development.

I’m not blaming ffmpeg for the failure of that project, just illustrating the point that I spent much more time dealing with ffmpeg then i really needed to. When I got down to encoding the video I was basically having ffmpeg autodetect the codec of the file that was uploaded and convert it to a flv. I was happy enough that ffmpeg supported many codecs including ones most people haven’t heard of. Had the CentOS rpm been anywhere near up to date, I would have been happy with using that initially. Had the mailing list been useful to me, I would probably spend more time on it, but wouldn’t complain about it.