To be fair to Corona Labs, their SDK has always been primarily geared towards creating 2D graphics (i.e. games) in an OpenGL canvas with only a nod towards business apps with the Widget library. The reality is, I strongly suspect, that very few Corona developers make a living out of developing games apps and most are supported by day jobs doing other things. In fact I’ve never met another Corona developer who makes his living out of just developing apps with Corona.
An indie developer is finding harder and harder to make ends meet doing just indie games development so will be tempted to branch out into business apps as that’s where the money is to be made. Not daydream money when you make your hit game, but regular income solving business problems. If you’ve spent years using Corona as your SDK of choice, with all its intrinsic benefits (ease of use, cross platform, the simplicity and power of Lua etc), then you’ll be reluctant to want to shift to another tool (unless you are a hard core programmer who knows multiple programming languages, frameworks, IDEs etc). You will probably have been attracted, like me, to the simplicity and power of Lua as much as by your distaste for Objective C! I came from a web development background, at least most recently, so first of all did dabble in hybrid platforms, like PhoneGap, to leverage my existing skill set, but was ultimately disappointed by the performance. OK things are improving in that area and so is always worth revisiting. And there are lots of Javascript frameworks that provide cross-platform UI and backend solutions, like Angular, that are geared towards business apps.
My first published app was developed using NimbleKit, a combination of Javascript and native components, but that was iOS only and eventually taken over by Sencha. I then dabbled with Appcelerator, but back then ( 3 or 4 years ago) it was not very stable and poorly documented although the Javascript code, unlike PhoneGap, compiled to native apps. Again a product well worth revisiting, especially now it is open source and free to use, and if you’re primarily interested in business apps (and there’s always Platino for the games stuff…). Now there’s Xamarin which is starting to look like a real contender for cross-platform business apps, as long as you’re happy with coding in C#. I’m leaving aside all the other alternative 2D games toolkits - Marmalade is an attractive proposition, especially with Quick for using Lua - as we’re talking about business apps.
So back to the question; what could Corona Labs do to help developers of business apps? Well there are quite a few relatively minor things - well at least things that don’t require the probable massive investment in creating a cross-platform native UI library. There is always the Enterprise Edition if you want to explore that avenue, but that’s not for the average developer. Corona Cards initially looked like a more attractive proposition, using a Corona canvas for the 2D graphics stuff and overlaying native objects. Main problem, as with Enterprise, is that the native stuff is, by definition, not cross-platform, and you also have to pay separately for each platform. I could see great attraction in using, for example, Appcelerator, for all the cross-platform native UI components and then embedding Corona Cards for your graphics, but the cost of licensing each platform separately makes it less attractive. Its good to see Corona Labs bundling WP8 support into the Pro subscription so something similar (i.e. a bundled price) for the iOS and Android versions would definitely appeal more.
Another feature of Xamarin is that they offer a true monthly Indie plan, that is you pay for it monthly, not annually - why can’t Corona Labs offer genuine monthly plans for their products? Cash flow is much harder to manage for indie developers than companies like Corona Labs with their venture capital funding (OK I know they’re not a big outfit in Silicon Valley terms). Also I note that if you purchase Xamarin annual licences they don’t stop working, or fall back to basic features, if you decide not renew but continue to work, with all features, just without future updates. Food for thought there?
Back to specific Corona features that could do with a bit more love for business apps. Well much has been said about the shortcomings of the Widget Library, and Corona Labs response has been to make it open source. A bit of a cop out to be honest as I don’t think it would take that much to resolve some of the issues, particularly scalability. The developments by the Widget Town guys are to be commended in attacking some of the issues.
Of course, there is always the option with business apps to throw the UI conventions out of the window and just do your own thing but some better support for basic features is still desirable. For example, many business apps require the displaying of quantities of text and the limited formatting options of text fields is a real pain - just think of the basic requirements for multi-line text with variable line spacing, embedded formatting etc. Some developers have tackled this with their own solutions but in my experience they fail too easily with real text data. The alternative is to use HTML text in a web view but that is also fraught with difficulties such as the inability to overlay anything else on top of the native object and the arcane mechanisms you have to use to communicate between Lua and the web view. So some sort of better integration between the HTML, CSS and Javascript of the web view and the native Lua code would be a real boon. Maybe a simple HTML text object would go a long way towards improving the display capabilities needed for business apps?
The other important necessity for business apps is the ability to utilise back-end data sources. This is actually pretty well supported by Corona, as long as there is a REST API to access the required data, and using products like Coronium makes things even easier and more powerful (congratulations and thanks to Chris Byerly for all that he’s done in creating and supporting Coronium). I would suggest that Corona Labs give him some official support, if they don’t already, but maybe that would be the kiss of death given previous experience in that area …
So I hope there are some positive thoughts and ideas in there for both Corona Labs and other developers to consider. I would love to continue to solely use Corona to develop business apps, as that’s where the most potential income is, but I also need to keep one eye on the competition too.
Stefan