Porting Zoho Apps to Google App Engine
Porting Zoho Apps to Google App Engine
It was bound to happen: As more and more Web technologies are released, some will grow and mature, while some will disappear. And some will start to come together.
Take the case of Zoho Creator and Google App Engine. For those of you who haven't yet tried out Zoho Creator (which has been out for about three years now and is up to Version 3.0), you're missing out. I've been playing around with Zoho Creator for quite some time, and what strikes me is the ease with which you can get a fully functional online Web application up and running, without sacrificing power. If you want quick-and-not-very-dirty, you can do it. But if you want to roll up your sleeves and start to really customize your application (such as by writing your own HTML and scripts), you can do that, too.
Zoho Creator is part of a bigger project, simply called Zoho, which was released in 2005. Zoho is an entire online suite of office applications, including (as of this writing) e-mail, word processing, spreadsheets, presentations, notebooks, wiki, organizers and planners, chat software, project management, invoicing, and even CRM.
However, while the company called AdventNet was busy creating Zoho, Google was building its own online spreadsheet, and would later acquire a company that created an online word processor. The end result is what we know today as Google Docs.
These two office suites are clearly competitors, and the Web is rich with blogs and articles comparing the two as people try to determine which is best for their own purposes. For this article, I'm not going to take part in that particular discussion (or dispute, as the case may be). Instead, I'm going to focus on an interesting item that has grown out of the two. Google, while offering its own competing suite of office tools, also-as of mid-2008-has its own cloud-based application engine, Google App Engine, or GAE.
That's where this gets interesting. In late December, Zoho announced that applications created with Zoho Creator could be deployed on GAE.
Porting to Google App Engine
As I said, I've been using Zoho Creator for a while, so I decided to try porting an application to GAE. I'm happy to report that the process worked just as it was supposed to. For this test, I started out with one of the basic skeleton applications that Zoho Creator makes, a simple customer support form.
The process of deploying to Google App Engine is quite simple. There's a drop-down menu labeled "Deploy in Google App Engine." When you click that, Zoho Creator asks for your Google ID and reminds you to register the application with GAE. You then click the Generate button, which brings up a page from which you can download your application.
What you get is a .zip file containing all the files you'll upload to GAE. If you've developed for GAE, you'll see all the usual files you'd expect (such as app.yaml, and some .py files containing Python code; these Python files are a bit cluttered, but they're filled with some solid-looking code).
The next step is to upload the files to your own area on GAE. The official Zoho Creator blog calls this process "a bit geeky at this time," but it's really not that big of a deal. True, you have to upload the files, and I hope in the future Zoho will have an interface right on its Web site that will transfer the files for you automatically. But even for now, it's really not that bad.
In addition, in the end, the applications work just as you would hope they do. Along with trying out my own simple applications, I tried the two sample applications that run on both Zoho Creator and GAE linked to by the official blog. They look slightly different in layout, but the functionality is the same.
But is that all there is? Let's analyze this a bit further.
The Big Python Wall
Zoho's announcement of its integration with GAE was welcomed by a lot of people, and I noticed there was a common theme among many of the comments. Indeed, when I have reviewed Google App Engine, the same complaint comes up again and again: To program for GAE, you need to use Python.
I've been using Python for more than a decade, so for me, this isn't a problem. However, many people simply don't want to learn a new language, ad that's where the Zoho announcement is welcome news. Now people can effectively use Zoho Creator as a development environment for Google App Engine-without having to learn Python.
The relevant post on the official Zoho Creator blog even has this quote in it:
The process of deploying a Zoho Creator application on to App Engine doesn't require knowledge of Python. You don't even have to write a single line of code to create and deploy an application either on Zoho or Google App Engine.
But as a seasoned developer, this also gives me trouble. If targeting a platform, it's wise for a developer to know everything he or she can about that particular platform. When you port an application from Zoho Creator to GAE, Zoho emits Python code. From there you can install the Python code on your own local development server or upload to the real GAE servers.
But how can you debug your code if something goes wrong? If you don't know Python, you're going to be in a bit of a bind. You've had to assume that the Python code emitted by Zoho is, in fact, 100 percent correct. But if the application runs correctly on Zoho but not correctly on GAE, then you have no choice but to roll up your sleeves and do some debugging in Python.
From a business perspective, this could be a bad idea indeed. A company doesn't want its developers spinning their wheels fighting with a language they're not familiar with.
However, there's another factor here: Python is not terribly difficult to learn. A good, strong developer should be able to learn Python rather quickly. If a company is going to make the business decision to use Zoho Creator as the development environment for Google App Engine, it would be wise to either make sure its developers are already skilled in Python, or to get them the training needed to learn Python.
Forward and Reverse Engineering
While learning Python might not be a major stumbling block, another problem with using Zoho Creator as a development environment for GAE involves the development cycle itself. Any time you deal with emitted code, where an IDE (integrated development environment) instead of compiling code emits a high-level language, you end up with a problem if you want to make changes to the software. In the case of Zoho Creator with GAE, you can make changes to your software either from within Zoho or by modifying the emitted Python code itself.
Modifying the emitted Python code would certainly make sound coding sense, as you would want your code to be optimized for Google App Engine. But then you'll have yet another problem on your hands: Zoho Creator can't read your modified Python code back in. Changing the Python code is a one-way, downhill street. One you've changed it, you're stuck making all future changes and modifications to the Python code without the help of Zoho Creator.
If you want to avoid this problem, you'll have to make all your changes inside Zoho Creator itself. Then you'll remain at the pre-Python level, without making any changes to the Python code and, again, probably not needing to know Python at all.
Does it sound like this is getting messy? It does to me.
Conclusion: Our place in this world
This is where we get to the issue of knowing our place in this world. From working with the GAE emitter on Zoho Creator, while you can move your applications from Zoho Creator to Google App Engine, I seriously question whether it makes sound business sense. A software development organization must have total control over its software, from start of development to finish. Bugs are a fact of life, a reality, and if there's a certain area of your cycle where you don't have total control (such as debugging the emitted Python code), you're in for a lot of headaches.
I can't help but wonder, then, if the feature of deploying to Google App Engine was less a business decision by Zoho itself and more just something the developers came up with to see if they could make it work. While it might certainly work with some simple, small applications, I could not recommend using this approach to develop mission-critical applications that are targeted for Google App Engine.
Senior Editor Jeff Cogswell can be reached at jeffrey.cogswell@ZiffDavisEnterprise.com.