Coke vs Pepsi

The most well known rivalry between any two parties that is known worldwide irrespective of cultures, etc is that of Coke and Pepsi. Take Football, some might say France and Germany, Middle East, Iran and Iraq, Asia, India and Pakistan and so on. Not everyone is aware of these rivalries unless you have been in that culture or that part of the world to understand it better. So, what about Coke and Pepsi? They are both essentially the same, carbonated sweetened soft drinks. The effects that either has on your body is nearly the same. So why the big fight?

Those that are Coke fans would sneer and scoff at the mere thought of having Pepsi or vice-versa. Similarly in this wonderful age of mobile development, there are die hard fans that would scoff and sneer at the mer thought of even suggesting another development framework. Some might even go to the extent of banning users from the forums, etc because you have a link to your website that has an article on another framework. The irony is, what happens when someone that actually created Coke disbands Coke and starts to support Pepsi? Is it called changing sides? After all the bans, etc and the dramas around it a change of sides. What do you think about the food if the chef does not eat at his own restaurant/his own cooking but goes across the street to have his lunch/dinner.

Anyways that is a decision that we shall leave to the individuals, the point of this article was about the various Lua based frameworks that are present. As it stands today, there are 4 major players in the arena for mobile development with a Lua based framework to help develop for the iOS, three of them are cross platform that work with iOS and Android, while only one of them currently will span across even working on the desktops. and they are CoronaSDK, GiderosStudio, Moai and Codea.

Stability is a very tricky measure, if this would be based on the duration something has been in the market, then Ansca's CoronaSDK wins hands down as being the oldest framework of these 4 offerings. If bug fixes and errors are a measure then once again Ansca's CoronaSDK fails immediately as after a particular point in time, the things that were working perfectly fine are also having issues. Strangely, the focus has actually turned away from a framework to being something that hinges around storyboard, which does not make sense as Ricardo Rauber's Director filled that void quite well and it was open source, which means that if a developer founds bugs and fixed it, it could be re-distributed to the entire community (if they wished to share the fixes) With storyboard, it is almost an obsession and every other build has storyboard as the main feature/fix. All of this at the expense of some required features that would help the developers progress ahead.

While Ansca's Corona sits at one end as a closed commercial offering, Moai and CodeaRuntime sit at the other end OpenSource and redistributable under the CPAN or the MIT license with GiderosStudio in the middle as a closed commercial system with an open architecture to extend the framework using plug-ins. However you can release apps for free using GiderosStudio without purchasing a license as long as you do not mind the Made with Gideros splash screen.

Feature set
The levels of completeness with these frameworks vary, However Moai is perhaps the only framework that is in a way complete right from the start, there are quite a few things that can be added, however the features that developers request and ask for are all present. So in that sense that is amongst these options the complete package. CodeaRuntime is work in progress, if anyone has used the iPad app for Codea, the first thing you will notice is the amazing experience that you get with the Editor and the ability to code and execute on the device. So majority of the efforts that was put into Codea was at first taken up by the editor and the architecture. Also to note is the fact that it is only in version < 1.4 as yet. Similarly Gideros is a popular choice with many developers disillusioned waiting for features from Ansca because GiderosStudio offers a complete experience, an IDE and the Player (simulator). However ti does lack a fair few features but make up for their absence with plug-ins. Micheal Hartlef and Caroline have the UI Kit Plug-in that offers iOS developers to use all of the UIKit features in GiderosStudio including native UIViews, UITableViews, etc.

UPDATE: There is a new Plug-in for Gideros called HotWax which is Corey's Wax app that allows Objective-C to be accessed via Lua. This has opened up a lot of possibilities for Gideros developers.

This is one of the funniest thing, I say funny because this is used as a selling point, which obviously I think is hardly a measure. Majority of the API comes from Lua itself. If you are a developer that creates more logic than just images on the screen, you will agree that you are working more with Lua than with the display objects. So whatever framework you use, the common factor will always be Lua. If your code is 80% framework specific, then there is definitely something that is wrong. This would be mostly common to all the developers that develop with CoronaSDK, while the other frameworks the developers are used to creating classes and have member functions and properties for each object instance, that style of programming is not very common with CoronaSDK. Secondly, if the number of API are quite large, then you will face those many more issues while trying to develop and that will be the learning curve. Lua is easy to learn due to the limited keywords and functions available, and perhaps that is the reason why a lot of developers look at Moai and shy away from it, given the large repository of API and functions.

If there is a watering hole, there will be life around it. Similarly, each of these frameworks have their own communities. There are some developers that are members on all of these forums, like me for instance. That have the same handle so it is easy to identify and then there are some that choose an obscure handle to not be identified and then there are still others that might have a different handle but identify themselves on the forums and talk about their experiences. On the other hand, there were a lot of developers that posted code on the Corona Forums while they were coming to grips with Lua, however now that has reduced to a very large extent. GiderosStudio has been able to attract a new breed of developers that are new to Lua development and mainly come from a Unix or Windows development background, but have some amazing samples and code share. On Codea, surprisingly the community is more Apple developers or those that love the idea to be able to develop on an iPad irrespective of their desktops. Given that initially Codea did not have much in comparison to the other frameworks, the community has in those limited resources been able to really push the framework to it's limits. I am sure that Simeon, the developer of Codea would himself be amazed and wonder how did they do that with some of the samples. Moai has it's own share of developers, granted that while Moai is a complete framework, it is a professional tool, so if you want to just paint a picture, MS Paint or Gimp is good enough, this is like Photoshop. It has that much more so there are a fair few developers and Patrick from Zipline Games does answer a lot of queries the community is still coming to grips with Moai, one of the reasons is that Moai was actually created as an interface to Maya with the ability to script. So it is quite extensive and works on an almost similar complex way. For those that are used to working with high end professional tools, Moai is the best thing, in fact it simplifies development for them. It should also be noted that this category of users are *not* the ones that generally have OpenSource projects or share code, tips and tricks. These are the ones that can write a custom 3D rendering pipeline while watching the latest episode of a popular TV series or re-runs of some excellent ones, eating their pizza and balancing on a unicycle (you know what I mean)

Ease of Use
Easy is again a very relative sentiment. If the point is how much time does it take to type in some code and then be able to run the app on a simulator or device? Then Codea is a hands down winner, since the code and the execution is on a device, you know almost instantly how it works. However the next that comes in is GiderosStudio with their GiderosPlayer app that you can install on an iOS or an Android device or have it run on the desktop. Hit play on the IDE, and the app is almost instantly transferred to the player to run. This is not the final app, this will only run as long as you are running it in the IDE. If you have any experience with Unix or Display Servers, this is similar. If you are looking at the ease of testing on a variety of devices, then Moai is the best, one source but compile it with the iOS stub and run it on the simulator or the device, add the android stub to run on the Android device, on the desktop there is a moai executable that will run your code. No simulator required. CoronaSDK also has a fairly easy to use architecture. However both Moai and Corona suffer from the fact that you need some application that provides IDE like functionality.

While Codea is on the device, it has it's own editor etc. Gideros Mobile (the company) that makes GiderosStudio have spend time on the IDE for both the Mac and Windows (however a few users have confirmed that they are able to run the Windows IDE on Unix/Linux variants using Wine) The IDE functions perfectly well as it has code completion, code folding, a preview for images, etc. CoronaSDK and Moai as mentioned in the above paragraph, lack an IDE or an Editor, so ti is up to the developer to have that application in place. There are many that use TextMate, many that like SublimeText. However for the complete experience, there are two that stand out for CoronaSDK, CoronaComplete from Vladu Bogdan and CoronaCider from MYDevelopers. While the advantage of Cider is that it has both a Windows and a Mac version (build on NetBeans framework, like some other tools that are build on Eclipse) that have a lot of features packed into it. The only one framework that does get left out on this is Moai, there are no IDE's that are specific for Moai.

UPDATE: There are now quite a few external apps that can act as an IDE and also provide the functionality of Live coding. Two notable ones as of January 2013 are Glider (earlier called CoronaCider) and ZeroBraneStudio.

This is where only CoronaSDK have the advantage, It was Alfred from Karnak Games that had a contract with Packt to write a beginners book on CoronaSDK (I had a contract with them for the Advanced Series - I had to cancel it in order not to promote Ansca or CoronaSDK due to some unacceptable behaviour from Ansca management team). Somehow, for some reason when Alfred could not continue with the book, Michelle was contracted. Dr. Brian Burton wrote the second book (though it was released first, it was conceived after the Packt one). Gideros Mobile have an initiative where a couple of developers have worked on creating an online manual for using GiderosStudio, that is the closet to a printed book for the same. Codea and Moai do not have one at the moment. However if you pick up a book on Lua, you would have covered a major portion of developing with any of these frameworks anyways.

UPDATE: Now my book is released and that is one source that can be used by developers that work on more than one framework or intend to move to another framework and are worried about all of the work (code) they might have in another framework. The book is called Learn Lua for iOS Game Development and available from Apress ( )

Code Samples
One of the largest number of samples that come with any framework are with Moai and Codea has the most comprehensive samples. Unfortunately, the sample code that comes with Moai seems repetitive as every sample has the cathead.png graphic and the code looks almost similar in all of the samples, it can be quite confusing for a beginner. GiderosStudio has a fair few samples but they cover all the aspects of the framework and form a good source of reference when stuck. CoronaSDK has a good collection of sample code with the SDK, but it has become too complicated, in the sense that the code works fine, but if you want to extract portions of it, it is not modular.

Definitely, if you had the source code for something, you could extend it as compared to something that you do not have the source code for. So hand down, CoronaSDK fails when you want to extend it any further or add features that you want but the large team of developers choose to ignore the developer community and continue working on StoryBoard. On the other hand, Moai is open source and the entire source code is provided, so if you wish to add any functionality of fix any behaviour, you can. Codea Runtime is also OpenSource and you can modify it accordingly. GiderosStudio though being a closed system, has the functionality to write plug-ins to extend the core system.

2D, 3D, etc
Placing an image on screen is not such a difficult task, you can easily achieve that even with Objective-C or creating an animation using a series of images. However while most of these frameworks are based off OpenGL, it is but strange that most of them do not support 3D. In fact one of the frameworks that is not discussed here, LÖVE also has functionality to get and set a pixel on the screen. Something that developers are asking for desperately but as of today, they have not gotten that in any of the frameworks. Codea may not have the set/get pixel but it ha provided true 3D functions, so one can actually create 3D environments. Unity is not discussed in this article as it is not a Lua based framework, if Unity were to swap C# for Lua, I am sure that the uptake of the same would increase multi-fold. I would have expected that since Moai was modeled on Maya, it would have 3D functionality in-built. In the twitterverse, if you can put a lot of 1's and 2's together, you can start to make head or tail of things. If certain things are related, then Moai might be getting 3D support soon.

Codea leads this with CargoBot, the one app that has been released developed entirely with Codea. Apple would not have allowed any app to generate a compiled version on the device, and this was the plan with Simeon when he launched Codea. Now one can make apps with Codea for the iPad. Next comes in Moai, the two flagship products that one can identify Moai with are WolfToss and Crimson Pirates. Moai has just been chosen as the platform of choice by Double Fine adventures and a couple of apps to be released soon. GiderosStudio has apps that are fast increasing in numbers. Their flagship app was Tim Timber and The Elephant's Bath (a children's book) there have been quite a few apps since then. The largest amount of apps with any of the frameworks is with CoronaSDK. It goes into 3 digits for sure and might even touch 4 digits. However it has had it's own share of Hits and Misses. While Cannon Cat, The Lost City, ZDay, Canyon Country, Chicken Quest, Robot 99 to name a few hits and there are quite a lot of misses. The fact that it has been around for a while and following the massive hype following Bubble Ball, practically every 12-14 year old has wanted to work with CoronaSDK and make a game. In fact on a side note, Ansca flogged the Bubble Ball horse till death, leaving no chance of media exposure to associate with Bubble Ball, that some developers have also tried to cash in on that, "Bubble Ball used our software"... don't have words to describe the feeling towards those kind of devs.

Third Party Libraries
There will always be apparent omissions of features and the community will ask for them as they reach the point where they need it. Without prejudice, every framework needs some additions. However with the architecture of these frameworks, OpenSource Moai and CodeaRuntime can allow for integrating the features either in the Obj-C code as compiled features or include it in Lua source or bytecode format. GiderosStudio allows for plug-ins to extend but also allow for compiled bytecode to be included this allows the developers to distribute 3rd party libraries that users cannot tinker with and break or misuse the code. With Corona, there is no room for expansion, there is no bytecode, no plug-ins and no OpenSource. However there are quite a few 3rd Party libraries for CoronaSDK that extend the functionality or features but using pure Lua. The most notable ones are the Candy series from, MYDevelopers networking libraries and GrahamRanson's Lime. With Apps, the ones that produce output usable with the framework are SpriteLoq, LevelHelper, SpriteHelper, CoronaRemote (from the top of my head). With Moai, there is Rapanui, a Lua wrapper class that provides a higher level API to access and work with Moai low level API's in a way similar to CoronaSDK. GiderosStudio has a couple of libraries from Greg, namely the TNTParticles and TNTVirtualPad, from Bowerhaus an amazing gesture recognition library, a couple of useful code snips from Arturs and a physics body decomposition type tutorial from user ndoss.

This might not be such an important factor, but when looked into from a business perspective, this is a very important factor. I recollect having a chat with a fellow developer a while ago, he was very impressed (as many that I have spoken to are, including myself) with Stencyl. The way it allows for GUI based code building and also generates Java and Objective-C code in the background is simply amazing. This developer was on the IRC chat with the chief developer and he asked a very valid question, he asked the developer that he was just one person that was responsible for Stencyl, what would happen to Stencyl if something was to ever happen to him? Was there a succession or a fall back plan? The chief developer did not like it and I think that was the end of that conversation. You will agree that it is a very valid question. As a developer, you spend time and efforts to evaluate and choose a platform, spend time learning the intricacies of the framework and then the framework just ceases to exist. What would you do? Microsoft killed a whole industry that lived on Visual Basic 6 and is still reeling from the backlash, they had the pockets to survive and many of the developers moved away from Microsoft and adopted the Apple Mac.

I recollect an app for the PocketPC (Microsoft's attempt at something like the iPhone, and they had made something very advanced at the time, but as Microsoft is, they lost the plot somewhere due to dotNet) called WisBar. This would re-skin the dashboard (the front page of PocketPC) and allow for extended functionality. The developer of this was a brilliant Japanese developer that operated under the name of Walker Internet, but at one point of time around mid 2000 because his health was deteriorating or he was very sick, he gave away the source code to developers that asked for the source code and would help maintain the app further and provide it for free.

So with Codea, though there is just one developer (Simeaon) that is responsible for Codea, the CodeaRuntime being OpenSource can be continued by the developers. Moai is created by a team at Zipline Games, in my interactions with them, Patrick is the CTO and the person that is behind the tech that makes Moai run, where as Todd is the CEO that makes Zipline Games productive and profitable. They have a wonderful team and are expanding, most questions that I had were answered by Patrick and Sean. With Gideros, the team is made up of The Cetins, with Atilim being the main developer that manages with superhuman ability to add features, fix bugs and also manage to respond to nearly every question posted on the forums and directed to him. The only closed source framework that sits most comfortable with an extensive team is Ansca's CoronaSDK. Walter is after all the other parent of CoronaSDK and as he used to be called prior to the public releases, the build server. The name might not have stuck but the process definitely did. They also have Eric Wing, a wonderful developer who is responsible for LuaCocoa, a framework that allows to use Cocoa with Lua. It is rumored that they even tried to rope in Corey, the author of Wax, but he declined. They also have other developers like Tom, Joshua, Johathan Bebe. So in that sense they are a full house choc-a-bloc with amazing developers. However despite all of that, frameworks that had a shorter run are nearly at par with Corona. So despite having the best developers that they can afford, they are still not able to provide the functionality that is requested.

UPDATE: The wonderful team lineup at Ansca, now called CoronaLabs had a change in their development team with a new team in place. Eric has left (no idea on his current whereabouts), while many other have left and made a beeline for Lanica with the ex co-founder of Ansca. Lanica is not a Lua based framework and therefore not featured in this list.

On a side note, Ansca retained the Adobe mentality and hence spend majority of their time on the authentication server and system. They continued to create their own version of Director under the name of Storyboard. While others frameworks worked on features that were important for developers, Ansca were busy with their own plans. When the community asked for iAD, they were given something else because it profited Ansca in some way. I believe last it is rumored that the Ansca team, including publicists and forum police, etc is 15. The website states that the number of studios using their software are around 1,200 and at $399 a pro license, you can do the math yourself. it might not even be feasible to sustain. Developers are already unhappy and moving away from CoronaSDK, so that 1,200 number might start to shrink. They have lost a co-founder who openly supports other frameworks in addition to Ansca. So either there is going to be a merger or a takeover, if neither of them them is on the cards then the risk factor associated with CoronaSDK could be considered as very high.

UPDATE: CoronaLabs has a new initiative called the Galeon Project, this would be similar to the Gideros Plug-ins that *could* allow the developers to create and use plug-ins. Though it is not clear on how it would all work as that functionality is available only with the Enterprise edition.

Build process
Consider the scenario, you are being driven to a meeting with a client, you remembered that you had to fix something, you have the code, so you pull out the macbook and fix the code, you now need to update your app to a device and you hit build...
Another scenario, you are traveling interstate or trans-continent and while at the airport, you think of updating your app and fix some of the things that you could between flights or even during the flight. You pull out your macbook and want to build...
There can be several scenarios, but if you had Moai, Codea or GiderosStudio you would use xCode and build it on your macbook or fire up eclipse and build your android app. However, if you are using CoronaSDK, you can only run it in the simulator as it requires internet connectivity to build with Corona. Not only that, if you have spend hours testing on the simulator and pixel perfecting the positions and font sizes, build for the device once you get internet connectivity, ... back to the drawing board, there is a 90% chance that the custom fonts and some items work differently than they would on an actual device.

UPDATE: While subscription based aps are fine (and expensive) it is disappointing that at the end of the subscription, you are left with practically nothing. While most of the subscription models stop or disallow the users any more updates but allow them to continue to use what they have already paid for till then, with CoronaSDK once your subscription expires, you are left with nothing, even the daily build that you were working with ceases to work and you are pushed back to using the last public build and in trial mode.


So back to the title of this post, Coke or Pepsi even if there were a couple of more names, does it really matter to the developer? Because the important bit for any developer is being able to get their application to the market as soon as possible, with as little effort as possible and provide a wonderful experience to the end user. However in this volatile industry, if the co-founder of one framework leaves and start to promote a rival framework (one that they considered rival and created dramas about) what does that mean? Where is the problem? With the framework? the people, where?

We need choices in our lives, I believe from what I read, US has AT&T and Verizon as the main players when it comes to telephones, here in Australia we have Telstra, Optus and Vodafone. Choices are always nice to have, but does that apply to everything? It is nice that we have alternatives to xCode, but do we really want yet another framework? Wouldn't it be nice if we had one framework? Look at Ginga, it is Lua based middleware in South America used for Digital TV.

Look further, Scientific Calculators and industrial machinery have embedded Lua for extending functionality. Lua is all around ...

The Future
It would be nice as mentioned earlier if there was one framework or maybe two if we talk about choice. The funny thing is that companies have raised more money on kickstarter than VC funding for some frameworks. That should be the leading light for any framework, the community of developers are happy to pay for the products, be it open source or commercial. They need something that is easy to use, extensible, and most importantly where they are treated with respect from the management. If I request a show of hands, I am sure there will be many that have stories of how they were not treated right by the top guys at many of the frameworks, not just the ones mentioned in this post, like the Stencyl case. From this list, Ansca is no stranger, it has managed rub their developers the wrong way, more than once and too often.

While Lua is on the rise, there is just one contender for Lua and that is JavaScript, it is competition also because there are more people that have been using JavaScript than those using Lua. All Web developers, PHP developers and those working with Web technologies would immediately find themselves at home with JavaScript based frameworks like MoscrifSDK and Platino (Titanium based from Lanica)



Popular Posts