Miro 2.5 released!

We released Miro 2.5 today. It's a great release and a big step for Miro. My favorite features are:

  • audio playback that doesn't suck

  • handling for torrents that have folders and multiple files in them

  • video/audio tabs instead of new/single

  • totally redone database layer

The last feature is a big deal--we rewrote the entire storage layer for Miro to do it. Miro went from a pickled Python object database to a relational database. With the new database system, you can do things like this:

willg@mercury:~/.miro$ sqlite3 sqlitedb
SQLite version 3.6.10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select count(*) from feed;
23
sqlite> select origUrl from feed;
dtv:manualFeed
dtv:singleFeed
dtv:search
dtv:searchDownloads
dtv:directoryfeed
http://www.fileden.com/files/2008/5/14/1911312/timostrailers.rss
http://feeds.feedburner.com/Gitcasts
http://www.youtube.com/rss/user/googletechtalks/videos.rss
http://feeds.feedburner.com/Screencastersheathenxorg
http://www.whitehouse.gov/rss/speeches.xml
http://www.hd-trailers.net/blog/feed/
http://pycon.blip.tv/rss
http://feeds.feedburner.com/CSS-Tricks-Screencasts
http://www.g4tv.com/xplay/podcasts/6/XPlay_Daily_Video_Podcast.xml
http://feeds.theonion.com/OnionNewsNetwork
http://www.npr.org/rss/podcast.php?id=35
http://feeds2.feedburner.com/YourWorldIn5-itunes
http://g4tv.com/cinematech/podcasts/8/G4_TV_Cinematech_Video_Podcast.xml
https://fedorahosted.org/releases/f/e/fedoratv/fedora-tv.xml
http://openmeetings.org/archives/ovc2009-sessions-mirofeed.rss
http://ubuntudevelopers.blip.tv/rss
http://makezine.com/blog/archive/make_podcast/index.xml
http://www.podshow.com/feeds/gbtv.xml
sqlite>

This is the first big step in making Miro more hackable and more accessible to projects like Coherence, Elisa, and others. It'll also make it a lot easier to debug database problems in the future.

Note: After you've upgraded to Miro 2.5, Miro will upgrade your database to the new structure on the first startup. This takes a long time depending on how big your database is. Just let Miro hang out and do its thing. The epic fail here is that there's no ui indication that Miro has started and is upgrading the database. I'm hoping we'll fix that soon.

I hope you're happy with the improvements in Miro 2.5. We're not resting there--work has already begun on Miro 2.6.

Last chance to adopt-a-line for 2.5!

When you Adopt-a-Line at the Miro Adoption Center, you're contributing to the continued development and maintenance of Miro and the MiroGuide in addition to helping us work on our mission to ensure that video is healthy and accessible to everyone and that Open Video flourishes. This is something that's really important to me and I can't thank people enough for their contributions that enable me to do the work that I'm doing.

We're getting really close to a Miro 2.5 release. If you adopt a line before Monday, July 20th, then we'll make sure your name shows up in the "About Miro" credits for Miro 2.5. If you adopt after that, we'll make sure your name shows up in the next version, but that'll be a few months down the road.

If contributing is as important to you as it is to me, take the time now to adopt! It only took me a few minutes, and I've got a cute baby Zowwee Kahn-Greene!

VLC Renderer for Miro on gtk-x11

I threw together a VLC renderer for Miro on gtk-x11 based on the VLC renderer code we use for Miro on Windows. It took an hour or so to get it working.

I'd love to toss it in into Miro, but it's got one major problem and one minor one.

The major problem is that VLC handles mouse events rather than letting them bubble up to Miro. When you double-click on the a video, VLC handles the double-click and switches the video to fullscreen (or out of fullscreen). It'd be better if Miro handled this--then it could show the media item details bar. Also, VLC handles mouse movement. Miro needs to handle this, too, so then it can show the item details bar.

The minor problem is that VLC doesn't have libvlc_video_track_count in versions prior to 1.0. I'm not sure how else to figure out if a media file has video tracks in it. Because of this, the sniffer code is pretty ham-fisted if you have earlier versions of VLC.

The code is at https://bluesock.org/~willkg/download/vlcrenderer.py if you're interested in fiddling with it. There's documentation at the top of the file that walks through installing and using it.

I'd love to get some help fixing it. Adding support for VLC and dropping support for xine on gtk-x11 would make things a lot easier for us Miro devs.

Need translation help for 2.5

Ben checked in a fix for database problems that occur when a user's disk is full. This fix required the addition of 4 new strings. I really apologize for making strings changes this late in the development cycle, but we decided the fix was really important and that outweighed the imperatives of the strings freeze.

We're on the brink of releasing Miro 2.5. It's something we're hoping to do early next week--possibly Monday or Tuesday pending how Ben's changes bake out.

Because of this, we really need help with translations. If you're a translator, have done Miro translation work before, and/or know someone who has, now's the time to spend some time with translations to ensure that they're rock-solid for a Miro 2.5 release.

Bought a house; ramifications

For the last month, I've been going through the house-buying process. Today we found out we were approved for a mortgage and so now we're all set.

Thus, it's official: PCF-Boston will be moving and will become PCF-Near-Boston.

I plan to continue co-working [1].

There are a few ramifications. The first is that it'll be harder to take me out for a cup of coffee if you're in the Boston area. The second is that I probably won't be going into the FSF offices to help with mailings anymore. The third is that there will likely be a period of a few days in the middle of August when the build boxes will be down and there won't be any nightlies.

One of the big boons is that my office will double in space which should make it easier to get more things done since I'll have room for additional equipment, monitors, and such. And I'll have more space to produce podcasts and screencasts and such.

As a sidenote, the house-buying process is fricking nuts. And not in a good way. Thank goodness for gscan2pdf, Gimp, Thunderbird, Postfix, Debian, Ubuntu, and the dozen smaller bits that made my side of the paper-pushing much much easier.

Better developer documentation for Miro

During the Miro 2.5 development cycle, I've been working on getting better developer documentation cobbled together. It's a huge task that'll take us a while to do.

The initial focus of this developer documentation is two-fold:

  1. provide web-based documentation for architecture, modules, classes, methods, functions, ...

  2. codify project standard practices

This is important because it makes development easier for core developers, but it's even more important because it'll make it easier for casual contributors to figure out where everything is and how it works.

This is in addition to the documentation found at the Miro Development Center (aka our Trac wiki). Some content will move from the Miro Development Center to the developer docs, but we'll have both for a long time to come.

The first pass for developer documentation for Miro 2.5 is at http://pculture.org/wguaraldi/miro/2.5/developer/. It answers such questions as:

  • how do I add support for a new search engine? (see here)

  • how do I help translate Miro? (see here)

  • where's all the database code? (see here)

There's a lot more to do, but it'll get better over time if people spend time on it.

For those interested, I'm making heavy use of Sphinx. You can see the source from the developer documentation by clicking on the "Show source" link on the left hand side. The source for the documentation is in our svn tree at https://develop.participatoryculture.org/trac/democracy/browser/trunk/docs/developer.

Miro 2.5 schedule, translations, and Launchpad griping

Miro is nearing a 2.5 release candidate. There are only a couple of things we're waiting on now like a VLC 1.0 release. I'm hoping for a release candidate as late as next week and a final a week or two after that depending on how well the release candidate works for people.

If you're a Miro translator, the strings are frozen and we sure could use your help getting up-to-date accurate translations for Miro 2.5. If you know someone who's done Miro translations in the past, let them know that we're rapidly approaching the 2.5 release.

As a reminder, Miro 2.5 is the "trunk series" on Launchpad. Don't translate the Miro 2.0 series--changes there won't be carried over to trunk unless you do it yourself. The Miro trunk series translations page is here.

Now for the gripe. In the last week, Launchpad did an update which changes the translations pages and they no longer tell you the last updated date for individual translations. That's a real drag. I used that field to figure out whether or not to export translations from Launchpad and import them into Miro and to watch translation activity. Grumble grumble grumble.

Thoughts after commenting on someone's frustrations in Fedora bug 494505

I'm subscribed to all downstream Miro bugs in the Fedora bug-tracker. I'm also subscribed to all downstream Miro bugs in the Debian bug tracking system. It helps a lot to triangulate issues with external component versions and the myriad of other problems that come with developing an application that runs on Linux distributions.

Today, Rudd-O, who I've never met, ranted on the state of the Miro codebase in bug 494505 in the Fedora bug-tracker. I responded with this https://bugzilla.redhat.com/show_bug.cgi?id=494505#c13.

I thought I should blog about that since I really don't blog enough about the whos and the whys and the hows of Miro development.

After Miro 1.2, we decided to embark on some serious rewrites to fix big problems with the way Miro was structured. Thus each major version since Miro 1.2 has involved signficant overhaul.

Miro 2.0 saw a re-write of the ui. In doing so, we rewrote the Windows platform code which used to be a XULRunner application but is now a Python application using GTK. The ui rewrite fixed a lot of internal codebase problems, but the primary use case was to fix performance problems when displaying feeds with lots of items in them. Display isn't perfect, but it scales a lot better now. As a side note, it's not that we didn't like XULRunner, it's that we wanted to merge the windows and gtk-x11 platforms to make it easier to develop going forward.

Miro 2.5 (not quite out yet, but hopefully soon!) involved a re-write of the data storage code. It is a good thing to do in general, but the primary use case here was to fix performance problems with startup. No longer does Miro need to load the whole database to load the ui; now it can do it in parts. This speeds up Miro startup for a lot of people especially those with large databases. As an added bonus, the database is a regular relational database which other programs can access to see Miro managed media and metadata.

We don't have plans for the next version yet, but there's still a lot of stuff to re-write and make better. The downloading code needs refactoring. The feedparsing code needs good regression tests and once we have good regression tests, it should get refactored. There's a lot of code that needs to be documented and cleaned up. We need to add support for new standards and specifications. We need to add support for really important features like subtitles. We want to build a plugin framework allowing people to extend Miro in their own ways to meet their needs.

That's what we're working on, but there's no way we can do it all at once. We could use your help. If you can't contribute code, contribute funding for someone else to dedicate the time to work on code.

We are all Miro users. We are all Miro evangelists. We are all Miro testers. We are all Miro developers. Miro was made by you and me for you and me. Long live Free Software and Open Video!

Open Video Conference was awesome!

I just got back from the Open Video conference and it was really inpsiring and really awesome. From when I arrived in NYC late Thursday night to when I left this morning, the time flew by. I met a variety of people who have a stake in the Open Video game: producers, directors, creators, distributors, publishers, companies, representatives, individuals, codec hackers, renderer hackers, player hackers, site builders, community builders, independent journalists, movers, shakers, etc.

I met a co-worker I've worked closely with for some months, but never met (and didn't realize who he was until after he was introduced). 7 out of 10 (or so) PCF staff were all there--the largest number of PCF staff in one place I've been a part of. Ben, Paul and I were able to do some Miro work and talk about issues we're having pushing 2.5 out the door. I met with Jean-Baptiste from VideoLAN (they make VLC) and talked about their impending 1.0 release (I scored a pre-release tarball and already started working on upgrading Miro on Windows to use VLC 1.0). I talked about metadata with a few people and I talked about problems with torrents in RSS enclosures with Kevin and [STRIKEOUT:Nathan (I'm pretty sure that's his name)] Michael from LimeWire on things they're working on that have a lot of synergy with things we're working on. I talked with Joe Born from Neuros Technology about work I did in March on the Neuros Link and how we should go forward working out issues that Miro has when running on the Link (it runs well, but could use some ui tlc). Seeing what people are thinking about and doing with HTML 5 video tag was great.

It was a really productive conference for me. It's really clear what role Miro plays in the future of Open Video on the web. It'll be exciting to be a part of the future unfolding.

Updates:

6/23/2009: I met Michael from LimeWire--not Nathan.