Going Mobile? Now is the Time to Double Down on Flash
Suppose you’re a small startup with a shipping product based on a substantial ActionScript codebase. Suppose your app is not just a bunch of list views with a few graphical assets, but it’s a really rich interactive tool. For example’s sake we’ll say it’s a sailboat designing app with visual water-simulating features: call it BoatWright. And suppose you’re trying to figure out your mobile strategy, which is a fancy way of asking “how do I get BoatWright on at least iPhone and Android, plus Windows Mobile, Symbian, Blackberry, and WebOS for good measure?”
As a startup with a shipping product, you’ve got a lot of constraints. The biggest is that you are already trying to do too much with not enough people, and forward momentum of the product is critical. You have to keep shipping new features to build the product out, so you can’t afford to go dark while you port your ActionScript to Objective C, Java, C++, and so on in order to make native apps. Wasn’t the Flash Player supposed to be a neutral platform?
At the same time, you’re worried about the new guy on the block who is just starting up in your space. Sure, you’re way ahead of him now, but if he starts from scratch maybe he can leapfrog you on the mobile platforms before you can figure out how to get there. Or, put another way, someone’s going to build a great sailboat designing app that runs on the iPhone, and especially on the iPad where it can take advantage of all that extra screen real estate.
What are your options? Well, you could go out and hire a mobile team. Oh, wait, you can’t do that – you’re trying to do less with more, remember? So porting or reimplementing your app on somewhere between two and six additional native platforms is a non-starter. It seems like an exciting prospect – “hey, we’re a cool mobile company now!” – but you’re not a mobile company, you’re a sailboat design software company, and there will be somewhere between two and six steep learning curves, and momentum on the shipping product will fall, and then at the end of it all you’ll have seven separate codebases to maintain, and you’ll grind to a halt. Don’t do this.
Another, more reasonable choice might be to read the tea leaves about which mobile platform is the best choice for your app, and port to just that one. This is really a big decision about what kind of company you’re going to be. Do you want to enter the wild west of Android where the most popular app is a process killer, but at least you can ship whatever you want? Or the safe warm fuzzy confines of the App Store where shipping a new version can be delayed by months while Apple repeatedly rejects your app for minor violations? And are you going to maintain two codebases, ActionScript for your browser app and Objective C or Java for your mobile app? (I’m taking the conservative route and assuming Apple is never going to permit Adobe to ship a version of Flash Player for MobileSafari.) Even maintaining two codebases is going to double the effort for each new feature, so are you going to bet it all on mobile and leave the ActionScript codebase behind? This line of thought seems scary. You want to postpone big decisions like this if you can.
But maybe porting your codebase just once would be acceptable, if the end result could run in desktop browsers and on all mobile platforms. Not to mention that porting the codebase would give you a good opportunity to refactor and generally clean up the code in the process. Suppose you could convince yourself that your app could run well in WebKit using as much of HTML5 as is generally available on both desktop and mobile browsers in the time frame of your port. Now that’s starting to sound like a strategy. You’d end up with just one codebase to maintain, it would run everywhere, and you’d no longer be constrained by the limitations of Flash. ActionScript and JavaScript are similar enough that maybe the port wouldn’t even be terribly hard. This approach seems attractive. It’s not without risk, though: you still have to go dark while you do that port, and more importantly, you have to convince yourself that you can get to the same level of performance in HTML5 with Canvas that you already have in the Flash Player. For some apps this is going to be more challenging than others. For some apps it’s not going to be feasible this year or next.
Then there’s doubling down on Flash: don’t port your code at all. On the mobile platforms where Flash Player 10.1 is coming out, redesign your app for the small screen but leave it in Flash and ActionScript. And on the iPhone and iPad, use the Packager for iPhone technology that’s coming in CS5, again redesigning your app to take advantage of the platform. This approach is not without risk either: the full Flash Player on mobile platforms is a new beast and it’s going to take a while to shake out. The Packager for iPhone is also unproven. In both scenarios it’s going to take a while before everyone is convinced that apps on those platforms will perform adequately while preserving battery life.
But the great thing about doubling down on Flash is that it postpones major life-changing decisions like porting an entire codebase, and the investment of redesigning your app for Player 10.1 on mobile and Packager for iPhone is relatively small by comparison. Even if it doesn’t work out, you’re not much worse off than you are now, and you can still try one of the more expensive and riskier strategies.
What are you waiting for?
P.S. I was a little surprised to come to the above conclusion. I don’t work for Adobe any more and even though this blog is called The Joy of Flex, I’d rather make a good strategic decision than stick blindly with Flash Player forever. So I’m happy to convince myself that with FP 10.1 and Packager for iPhone, Adobe is about to start offering a potentially great choice for developers like me.

I'm working on Noteflight, an online music writing application that lets you create, view, print and hear music notation with professional quality, right in your web browser. Work on a score from any computer on the Internet, share it with other users, and embed it in your own pages. Noteflight is free for individual use. Email me at dcoletta at noteflight dot com.

Recent Comments