Hiyo, Imprudence fans! I know things have been pretty quiet around here lately, so I wanted to give you guys an update about what’s happening with Imprudence and Kokua.
A Brief Intermission
Unfortunately, McCabe and I are pretty burnt out and exhausted from all the work on Imprudence 1.4, planning Kokua, non-working plugins, and licensing headaches. We badly need a rest, so I’ve decided to put the Experimentals and our in-world developer meetups on pause for December. This will give us a chance to relax and recharge, and enjoy the holidays. We’ll still be around in the forums, IRC, and the mailing list, but we’ll be taking it easy.
We had been aiming to release Imprudence 1.4 by late November/early December, but that schedule isn’t realistic anymore, both because of the burnout, and because of unexpected difficulties with the new media system (the code used to play streaming video and audio). We hope to release a 1.4 beta version in mid-December, then take a break from Imprudence work until January.
Quicktime and VLC
One of our main goals for Imprudence 1.4 has been to replace the flakey old media system with a more stable one based on the media plugins from Snowglobe/Viewer 2. Since the plugins run as separate programs from the viewer, stream problems won’t crash the viewer any more, and it gives us more licensing options in terms of the libraries we can use. For example, it’s now possible to use Quicktime or VLC, neither of which could be used before due to licensing conflicts.
Our initial plan was to use the Quicktime plugin on Mac and Windows, since it has fairly good support for the most popular media formats, and the plugin code already existed. Plus, it would require less packaging/maintenance effort on our part, because we wouldn’t have to prepare or distribute the actual libraries, like we do with the old GStreamer-based system. However, we had erroneously assumed that the Quicktime plugin could handle both streaming video and streaming audio, but it turns out that it only handles video.
Since the Quicktime plugin was going to require a significant amount of work after all, we decided to put that effort into finding a better alternative. In the past, we have considered the idea of using VLC, but we never had the time or energy to devote to that. Thankfully, Robin Cornelius has stepped up and made it happen! (Thank you so much, Robin! Words cannot adequately express how grateful we are for that.)
The VLC plugin is pretty much done, but we ran into a licensing snag that took a while to untangle, and has created some extra work. The details of the snag are both confusing and boring, but I’ll try to summarize. The plugin currently depends on three pieces of software with different licenses: APR, VLC, and part of the viewer code. Because of the terms of the licenses, the viewer code can co-exist with either APR or with VLC, but not both at the same time. Likewise, VLC can co-exist with either APR or the viewer code, but not both at the same time. It’s a bit like a sadistic lawyer’s version of the old puzzle of the farmer carrying a fox, a goose, and a bag of beans across a river.
As you can imagine, it has been a headache even to understand this situation, let alone find a solution that respects all the licenses involved. Speaking for myself, these kinds of software licensing issues are the single most frustrating and demoralizing part of working on an open source project like Imprudence. Not only is it difficult to figure out what we can and cannot do, but often honoring the software licenses puts us at a significant disadvantage in terms of stability and functionality, and often creates a lot of extra work (e.g. finding or creating replacement software).
Why We Care About Licensing
It would be very convenient if we could just ignore the licenses, but we don’t. Why not? Of course, there are the obvious legal issues, but realistically there’s very little risk of any legal action stronger than a cease-and-desist letter. Much more important than the legal issues, are the moral ones. Each library’s license reflects the creator’s wishes about how their work should be used. By using the libraries, we are making a promise to respect those wishes, and we take that promise seriously.
We’re currently working on a solution that involves replacing both the viewer code and APR with code that has a compatible license. It has taken some elbow grease, but Robin is making great progress on it. Hopefully, we will be able to release an Imprudence 1.4 beta in mid-December with the VLC plugin for Windows, and perhaps even for Mac as well.
A Brief Update About Kokua
Finally, a brief update about the status of Kokua. Our focus has been mostly on Imprudence 1.4, but there has been a bit of activity on Kokua over the past month. The main source repository is available on GitHub (although currently the code there is identical to Viewer 2.2), and there are already several forked repositories with some interesting commits popping up (especially in Armin’s repository). And, I’m sure several of us will be playing with the Kokua source for fun while we recharge.
So, happy holidays, and we’ll see you around!