December 20, 2008

Cydia is a crappy iPhone app

Don't ask me why, but recently I was forced to experiment with Cydia. I should preface this by saying that the iPhone I own is not jailbroken. Frankly, I find the stability and convenience of iPhone SDK apps released through the App Store process more enticing than spending hours jailbreaking each new OS release, debugging jailbreak package installations, solving compatibility issues and so forth, even if it means I am not able to use a few private APIs in the iPhone, and I need to kick down a few bucks to iPhone app developers for their hard work.

Cydia aims to bring the power of Debian APT to the jailbroken iPhones. That in itself would seem to promise an improvement in the user experience for jailbroken iPhones, which is terrible at this time.

However, while Cydia does provide the functional power of apt, it does so inside the worst possible UI. Errors are handled in nonsensical fashion (e.g. network errors provide the user-friendly "bzip2 package returned error" and so on). A single error condition (Source unavailable or bad package format) result in multiple error dialogs with the same error message. The app periodically hangs and is unresponsive for upwards of thirty seconds.

In short, if this app were submitted to the App Store as a free application, even if it weren't a jailbreak app, it would undoubtedly be rejected.

Fortunately, the Cydia sources are already available, so any skilled iPhone UI developer should be able to jump in and fix it, right? Well, no. The code is so poorly factored that it might take longer to refactor it into modules that make sense than to simply start from scratch with the apt sources.

My suggestion is that if Cydia wants to move forward as the jailbreak package installer of choice, it should be refactored into two main pieces: faceless source and package management classes (with a clear interface and error reporting), and the crappy UI. Then, someone who knows how to build an iPhone UI can build a new UI and reuse the apt-based engine.

Posted by todd at 09:05 AM