Writing the code for a new feature is often the easiest part of the life of a small software developer. Two recent examples tell the story very well. Both involve updates to our reporting tools: Sequence Clip Reporter and Producer’s Best Friend. Part 2 follows tomorrow.
When we first developed Sequence Clip Reporter we wanted to include the option for thumbnails in the spreadsheet, which was implemented. Then we discovered that there was a bug in the underlying OLE framework we needed to use to build an Excel format spreadsheet that prevented embedding more than very few images before the framework crashed and never completed.
Fast forward a couple of years, and it turns out the framework is updated. A little work and an additional update to support the XML version of the Excel format – .xlsx – for wider compatibility, and Sequence Clip Reporter has the option to report thumbnails in the spreadsheet.
Since Producer’s Best Friend is Sequence Clip Reporters’ Final Cut Pro X cousin – and thumbnails had been a long-standing feature request – Greg set out to add that feature to Producer’s Best Friend, because it should be pretty much the same work.
Except Producer’s Best Friend is sold in the Mac App Store which requires it to be sandboxed for security reasons. The first complication is that we now have to access the media files. A sandboxed application must use a thing called Security Scoped Bookmarks that are the approved way to access files referenced. Security Scoped Bookmarks come in the XML file but obviously take a lot more work to use than simple file path URLs.
This is complicated by the fact that Final Cut Pro X does not always include the Security Scoped Bookmarks in the XML file. A bug that all developers hope is fixed soon.
Security Scoped Bookmarks out of the way, it came time to read the files and create thumbnails. Sequence Clip Reporter uses QTKit for that, but a modern, app store application can’t use deprecated (obsolete but still in use) frameworks. That required rewriting all the code for generating thumbnails from QTKit to AVFoundation, learning in the process that it still takes more work to get the same result in AVFoundation than in QTKit.
That lead to compatibility issues as some of the AVFoundation features used, were only added in recent versions of OS X. That meant we have to limit the OS X version compatibility, which really isn’t a problem when Apple give away OS X upgrades and Final Cut Pro X upgrades. There’s little reason not to be on the latest versions of both.
So, a simple enough upgrade to end users, but way more work than I’d like for Greg!