A question I often hear, especially since Adobe announced the Flash CS5 cross-compiler for iPhone and we put a cheeky comparison chart on our site, is “are you guys at war with Adobe?”
I can see where this comes from, but it’s funny in two ways. First of all, Ansca is heavily ex-Adobe — even I worked there for awhile in 2008-09 — and we’ve all still got friends inside that company that we see on a regular basis. In “creative/geek” circles around San Francisco, it’s pretty much impossible to toss a rock into a party and not hit Adobe or ex-Adobe people (and the rest are Apple staff being annoyingly tight-lipped about the Tablet). And as a personal confession — hopefully no Adobe marketers ever read this — I’m already committed to paying any random number of thousands of dollars that Adobe may want for Creative Suite 5 next year. Can you imagine life without Photoshop? I can’t.
The other funny part is that we got an immediate and permanent PR boost from the Flash announcement. People learning about Corona for the first time, especially if they hadn’t heard of specialized tools like Unity3D, used to wonder whether compiling iPhone binaries from an alternative language would really work, or whether it was some weird hack that would get them bounced from the App Store. Now we just say, “Adobe’s doing it too”, and that ends the argument. In other words, the entire product sector of “alternative tools for building iPhone apps” has gotten a lot higher-profile, thanks to Adobe.
Here’s a longer, more technical answer:
I’ve been using Flash since 1999, covering versions 4 through 10 and specializing in mobile Flash Lite for a lot of that time, and I honestly think that Flash and Corona have evolved in very different directions.
Adobe decided (correctly, I believe) that to grow Flash beyond a certain point, it needed to reach out to enterprise programmers more familiar with languages like Java. This is more than just a syntax style; Java is designed to solve specific business problems, such as large teams collaborating on long projects. It’s a highly disciplined approach to programming, with layers of protection against coders accidentally stepping on each other, and it also makes Flash compile more efficiently than it used to, but it’s a long way from the quick, casual days of early Flash. If you’re going to develop enterprise desktop software, this makes sense, and Flex/Flash Builder is now a real contender in that space.
But that’s not why I got into Flash.
My opinion, and I’ve discovered this is surprisingly common, especially if you press developers after a couple of drinks, is that Flash hit a “sweet spot” somewhere around Actionscript 2. It had gained a lot of very powerful features, but it still supported a casual, freeform coding style if you just wanted to get something done quickly and easily. I also hold the more controversial view that Objective-C coding on iPhone is actually easier than Actionscript 3 coding, if only because the incrediblyLongAndDescriptiveAppleMethodNames:notKidding (no, really) make unfamiliar code relatively readable.
In a nutshell, that’s why one of our unofficial design goals for Corona is to rediscover the spirit of “classic Flash”. We don’t plan to get in the way of our power users, but for everyone else, our mantra is to look at common mobile development tasks and ask, “how can we make this doable in one line of code?”
The other advantage we have with Corona is the luxury of a “blank slate”. This isn’t because we’re super-geniuses — although of course we are super-geniuses — but simply due to the fact that we started last year with a userbase of zero. We don’t have any technical or language legacy in non-mobile tools to support, and we can target our framework at the only task we care about: cross-platform smartphone authoring on devices with OpenGL-accelerated hardware. If you’ve done software development, you know how incredibly nice it is to be able to freely add features to your product, rather than worry about “will this break code from version 7.x?”
You’ve seen all our marketing language about Turning Dreams Into Reality, but that’s basically what it comes down to: you have an idea in your head, and you want get an application out of it, and all things being equal (performance considerations, etc.), any time you can save between those two events equals more time you can spend playing with your dog, reading to your kids, leveling your Paladin, or any number of other activities that are probably more fun than Computer Programming. (Says the guy who sits in front of a keyboard approximately 12 hours per day.)