Beauty Contest between Red5, Wowza and Adobe LiveCycle…

19 August 2007

Beauty contests are a matter of taste. Also take the points below as such. I’m only stating my judgment for my needs. Apropos needs, I assemble a Flex/Air application that draws its data from a server. The format of the data is mostly strings and XML but also video, audio and proprietary file formats such as doc, xls, pdf, etc. So, which server suits my application best?

Adobe LiveCycle Data Services Enterprise Suite

Who ever made up this name, he was stoned – really! Because this contest is about beauty, the name alone would already disqualify the nominee. However, the real killer comes from the price. I suspect that the same person that created the name also set the prices. When you see after a search odyssey these prices, you skip to the next option.

To be fair, I should add that Adobe clearly targets the enterprise world and not small and medium-sized businesses, let alone the geek ‘market’. If you happily spend more than 50′000$ for e.g. a single Oracle database, go for the Adobe Liveblabla.

Wowza Media Server Pro

Functionally spoken, this server is a clone of the Flash Media Server: It’s focused on streaming data. Everything implemented is done in a way I like (this doesn’t imply that it’s best). It starts with a clear and clean file structure. I also appreciate the straight posting of the product prices.

Getting to the server code, documentation and forum is a real pain. The sign up for the free license and the forum is ridiculously tedious. What do you need the address for? Once you’re through, documentation and in particularly the forum are very useful. The support of Charlie in the forum is world class. He is very responsive and knowledgeable what you can verify yourself in the forum. In my opinion, they should point potential customer more to this unique selling point. However, since I’m used to browse the source of Red5, I have missed this many times with the Wowza server. I don’t like to program against a black box. This is 90′. Another point is that phrases in the sense of “it’s like in FMS” should be banned. I don’t learn first FMS when I want to use Wowza.

Basically, Wowza does not support Flex. They also don’t advertise it. This means that RemoteObject or RemoteClass are not supported. Communication is only over AMF0 because AMF3 is not yet implemented. I also miss some details useful in the Flex world, for example there’s no helper method for XML. Another interesting aspect is that Wowza and Red5 leverage both the power of Apache Mina. I think Wowza handles the traffic without an off-the-shelf servlet container.

I few things are still unclear because I did not bump into the answer at first look: I was not able to find out how to create a SharedObject by the server or whether something similar to ISharedObjectSecurity is available. What about the Red5 rooms? The virtual hosts do certainly not replace the room concept of Red5. Keep in mind that all those questions asked on the forum, I would have the answers within a few hours. Again, I love this service and eventually, it might turn me into a paying customer.

Wowza offers a customized Eclipse IDE that helps you getting off the ground. Unfortunately, this is also optimized for the Flash folks. Because I have already an Eclipse installation for Java, Flex, Scala, etc, I’d get a second Eclipse…grumblegrumble.

Red5

Being under the LGPL, Red5 is our only open source candidate what gives the project a bonus. Red5 is wired together with Spring, leverages Mina for low-level network stuff and takes advantage of quite a number of other libraries. Generally, it feels a bit cluttered. Let’s take the spring configuration as an example: You find four packed configuration files for the Red5 part. On top of this, you find in the files the alternative beans for the Tomcat container instead of Jetty.

Talking about Jetty, it’s definitely a project of my gusto. I perceive it as a focused project that simply does its job. Also in another context, it features some nice things. I have not done performance tests but Jetty might be slower than Tomcat. In a different setup, Jetty was not yet up to Tomcat. Does anybody have a solid comparison?

The architecture and the quality in general are fairly well, particularly when considering the number of current contributors to the core features of the server. There are very few and for this year, Joachim Bauch has done the bulk of the load. Even though this is not optimal, keep in mind that it’s open source and the situation might be even worse with Wowza. There are many others that update the samples, configuration or give some answers in the forum. However, the forum is not as useful as the one of Wowza.

Recently, a few examples for Flex have been added to the samples. Also a first implementation of RemoteObject is done but not yet ready for prime time. It seems that they have paid more attention to the Flex crowd recently (everything done for Flash?). Concerning tests, there are 20-30 unit tests what certainly leaves room for improvement.

Bottom line

There are many more solutions to consider: I haven’t looked at WebOrb, OpenAMF, GraniteDS and the other servers that do not support Java. Some of them are  RubyAMF, AMfPHP, PHPObject, SabreAMF, DjangoAMF and more.

For the moment, Wowza fits best my needs for real time stuff and I will try to combine it with my Scala code. For data exchange, I use good old HTTPService. “good old” relates to HTTP not HTTPService as the Flex class is very restricted in features. More about that in another blog.