Arista is one of the most useful open source transcoders. It comes with presets for your devices which makes it extremely easy to trancode videos for your devices. We interviewed Daniel G. Taylor, the creator of Arista to understand what drove him to create an open source project.
Muktware: Can you tell use more about you, where are you from and what do you do?
Daniel: I was born in Bremerhaven, Germany to a German mother and an American father who worked in the military. As a boy we moved around every few years, I have lived in both Europe and the United States. After high school I moved back to the U.S. and attended a university aspiring for a bachelor’s degree in computer science. From there I was recruited for a Dutch company working on online video management and streaming as a software developer. I wound up moving to the Netherlands to work locally from the company offices. The company was acquired by a U.S. advertising company based in New York City. I moved back to the United States to be with my girlfriend at the time (now fiancee), and we lived in NYC for about a year. Then we moved out to Pennsylvania to spend some time with her family. I worked remotely for a company doing custom software development. Eventually I was contacted by both Google and Amazon. I decided to take the job with Amazon working in their Instant Video department and my fiancee, daughter, and I now live in Seattle, Washington. At Amazon I do software development on video and related media technologies, working on back-end infrastructure, front-end players and devices, and everything in between.
When not working I usually spend time with my family, I also enjoy brewing my own beer and wine, writing, gardening, and photography.
Muktware: How did you come in contact with Free Software?
Daniel: I first came into contact with Linux a long time ago while working at a computer shop in southern Germany in 2000. Before that time I had used some free software on Windows, but didn’t really understand the entire concept. My introduction to Linux really opened my eyes about what the free software movement was really about. By 2003 my home desktop was using Linux by default, and I had tried Red Hat, Gentoo, Ubuntu and others. I had family using free software and convinced friends to try and switch too. Many went back to Windows, but many also continued using the free software they were introduced to on Linux, in Windows (like GAIM, now Pidgin, and The GIMP).
Muktware: Which distribution do you use and why?
Daniel: I have used Ubuntu at home since it’s first release. While I do not agree with every decision that Mark Shuttleworth (and the Ubuntu team) have made, I like the overall concept of things that just work right out of the box. I like the new Unity interface and I love how easy it is to install. I really benefit from how my friends and family can just jump on and get things done without needing any special training. Ubuntu was the first distribution that I used that seems to have really gotten these things right. Overall Ubuntu is a solid, useful distribution that helps me by making most things work easily and letting me worry about things other than my operating system.
At work we use Ubuntu and Red Hat Enterprise Linux, though I have also done development on Mac OS X and Windows.
Muktware: What inspired you to work on Arista?
Daniel: I began working on Arista as a personal proof of concept- to show that an easy to use, clean-looking media transcoding application can be written on Linux. My goals were fairly simple; I wanted something that ran fast, looked nice, provided live visual user feedback, and required little to no knowledge of video encoding technologies to use. The digital media world is really fascinating to me, but as a developer you must realize that the average person doesn’t care about such things. Most people have a very cursory understanding. They want things to just work, and they want excellent quality as quickly and as easily as possible. I realized very early in my career that a dialog with dozens of options is not very conducive to reaching that goal.
You can see that over it’s lifetime, Arista went through several iterations of user interface improvements. I didn’t feel that I got things right the first time, but I now feel that the interface is very easy to use. The goal has always been to make things lucid without losing useful functionality.
Arista itself is written in Python and uses GStreamer to do the heavy lifting of decoding and encoding files. The use of GStreamer allowed me to focus more on user interface/user experience, an area that I feel is very sorely lacking in many open source projects. I should note that I am by no means an expert on user interface design, but rather a developer trying to take user experience seriously.
Muktware: Why did you choose GNU GPL Licence instead of BSD, Apache or Mozilla licence?
Daniel: I like the idea that a piece of software must remain open. From the perspective of just getting your software used, the BSD is nicer in that it allows people to take your code and integrate it into proprietary solutions, but the idea that any changes they make to your code should stay open to everyone is a powerful one.
Muktware: You also switched to LGPL instead of GPL v3? What was the reason?
Daniel: I was asked by the GStreamer developers to switch to an L-variant of the GPL, and specifically the LGPLv2, because that is also what the GStreamer libraries use. I don’t mind proprietary software being built on top of my libraries so I wasn’t opposed to the idea. I did, however, want changes to my code coming back to benefit everyone, so I chose the LGPLv2 over something like BSD.
Muktware: Do you think GPL offers better protection for individual developers as compared to corporations who don’t much care about getting changes back?
Daniel: From my own personal experiences, the GPL tends to be used by individuals to ensure that changes are given back to the community, while the GPL is used by companies to prevent competitors from using their code to get an edge on them. I think both use cases are valid, and both offer the same level of protection to both individuals and companies. Despite the different initial approach taken, the end result is always the same: we all get free open source products that anyone can use and contribute to.
Muktware: What other projects are you working on?
Daniel: Recently I have been playing with new HTML5 features. I created Curobi.com as a prototype in-browser photo editor that uses the GPU to render to canvas elements. It currently only works in Chrome, but is a playground to try new things in browser for me. Sadly I don’t have a ton of time to work on it; Often times I find myself wanting newer upcoming standards like WebCL to speed up processing code. I have no idea when any of these new features will become common, but it’s fun to play with technologies that will enable real rich applications on the web with tight integration with so many other existing services.
Outside of that, I am exploring a new city and preparing to get married this summer. I am planning new Belgian-style beers to brew, and planning a compact hanging indoor/outdoor garden for our apartment. Our daughter just took her first steps, so I assume I’ll be chasing her around in no time too.
Muktware: What future do you see for Arista as now there are so many mobile devices (more than Linux desktops)? How hard is it to maintain it an application like Arista?
Daniel: Maintaining an application, like Arista, is actually not that difficult. Most of the media formats and features stay the same, and most of these new devices use the same formats (mostly H.264/AAC in MP4). Several new devices are just variants of the same thing, e.g. Android phones, tablets or set-top boxes that support H.264.
Because Arista now supports in-app editing of device presets you can easily create a new preset for whatever device comes out next. For the most part, this just means copying an existing preset and modifying the output resolution. This means that much of the maintenance can actually be pushed off to end users, who can create and submit new presets to the website.
I consider Arista to be near feature complete at this point. Due to my limited time and the fact that I’m the sole developer, I do not see any major user-visible changes in the near future. I do, however, foresee some backend changes; Arista currently uses GTK+ 2.x through PyGTK, and GStreamer 0.10. GTK+ 3.x has been stable for a while now–I am in the process of porting Arista over to use it via GObject introspection. This has been a long and boring process, but expect to see changes landing in git soon. GStreamer is currently working toward a final 1.0 release, at which point I can begin porting to it as well.
My goal is to keep Arista up to date with current technologies and to not let it fade.
Users and other developers contributing to the project are always welcome, and anybody interested in doing so should contact me. Having some background in digital media technologies would be useful, but it isn’t required if you are willing to put in a lot of time and effort to learn such things.
Muktware: There are so many Linux distributions, as a developer what is your opinion about thus diversity? Does it affect the life of a developer as you have to support so many distributions or is it a non issue?
Daniel: The number of distributions, and the differences between each distribution has been a big problem for me. There is no single standard set of versions for various libraries that are included or available on most distributions, and you tend to have to support older releases for people that have not yet upgraded. Because of this, I wound up having to add several checks and alternate components to Arista, such as the component that discovers CD/DVD drives. There are two separate implementations and the Arista library chooses which to use based on what is available on the local system. I also have to check for old versions of GStreamer and code around bugs that have long since been fixed so that older distributions can still use Arista.
Outside of those differences there is another problem to which I have no solution. Each distribution creates its own packages, and usually this means someone that isn’t me has created a package for your distribution. Most of the time they do a great job, but sometimes there can be dependency issues, optional dependency issues, and in the case of digital media software also legal issues involved. For example, in many distributions you must install optional components to make full use of Arista, such as H.264 encoding components for GStreamer. Without that optional dependency Arista behaves poorly, and I see a ton of users ask why H.264 encodes don’t work out of the box. It’s frustrating because I have no control over the packages (and I do not want to maintain dozens of packages).
Muktware: Do you think there some be some unified approach to reduce duplication for developer or make it easy to support many distributions without much effort? Do you have any solution in mind?
Daniel: The obvious approach is to standardize on a set of libraries and versions for higher level development, similar to the Linux Standard Base specification. Another is to standardize on a single packaging format for Linux distributions. I don’t know how feasible those ideas are as this is definitely not an area of expertise for me.