The power of native
January is the month when fleex player went native. We had been using node-webkit for a while now, together with vlc’s web plugin for video output, but weren’t entirely happy with the result. Performance couldn’t compete with what other players on the market were offering, and stability left much to be desired. For all the help that Videolan was providing us, the VLC web plugin was still a rather low-priority project among the organization and it was hard to get a fixed release date for a stable version on the Mac. As we didn’t like making promises we couldn’t keep, in January we decided to change our approach and write a native, full objective-C player.
What seemed a daunting project at first turned out to be much easier than we thought. Using VLCKit, Videolan’s VLC cocoa bindings for video output, meant we could get the performance and stability of VLC itself with very little effort. All we had to do was adapt our hosted code to the native app, which was just a matter of glue code. Building on preparatory work we had completed in December, in about 2 weeks of a single guy’s work we had the app up and running - on the 9th of January we released a beta version, that we gradually refined on the following days.
One of the big advantages of native apps is in the way they can handle updates: on the Mac, native apps have access to great tools like the Mac app store, or Sparkle, a free software update framework. We went for the latter, also used by popular apps like VLC, or Adium.
Soon after the release of fleex Player for the Mac we realize we could - and had to - use the same approach on Windows. Using vlcDotNet this time, we set ourselves to port our Mac player to Windows and after roughly 2 weeks, on the 22nd of January, a completed port was released into the wild. Here again, thanks to Microsoft’s ClickOnce technology, the app had auto-update built-in, making it super easy to always have the latest version available.
Of course, like with all new products, we had to make a couple of adjustments and fix a few bugs the weeks following the releases. All in all though, the native transition proved to be a great success, paving the way for possible mobile versions… But more on that soon.