Here Be Dragons: A FileMaker Developer's Quest for Another Development Environment
Earlier this week, I wrote about my plan to pull back from providing custom software development services, and to shift my focus to developing vertical market solutions and commercial apps. It's a bold, frightening move for a number of reasons, but primarily because this will force me to move outside of my comfort zone. It will require implementing a different business model, and very likely having to retool as well.
By "retool," I mean that while I could use the FileMaker platform to develop these solutions, it's not necessarilly the best tool for this job. So I'll have to find another tool (or tools) instead. FileMaker is a database platform, and while the vertical market solutions that I plan to develop will require a database at their core, the applications themselves will need to be real, compiled, native applications. With the FileMaker platform, I could provide the applications using FileMaker Go on iOS devices, or runtime solutions on the desktop. But, when you really think about it, that's not what they are intended for.
What I'm Looking For
So earlier this week, I started looking at development environments. I'm hoping to find a single environment that can meet all of my non-FileMaker-related needs. Here's the wish list:
• Supports multiple targets (OS X and Windows on the desktop, iOS, and possible Android on mobile)
• Powerful and robust programming language
• Provides a comfortable IDE
• Supports rapid application
• Extensible, with a range of extensions already in place
Here are some thoughts and observations on three candidates that I'm considering.
Candidate 1: Xojo
At the encouragement of Hal Gumbert of Camp Software, I first looked at Xojo. Hal's been using Xojo for several years now, and has had a lot of good experiences using it to develop commercial solutions. Xojo (the company) used to be called Real Software, and Xojo (the development environment) used to be known as REALBasic (and later Real Studio).
Xojo supports targets that include OS X, Windows, and Linux. It also takes a somewhat unique approach to how it supports development of Web applications. It actually generates Web applications as what can best be described as stand-alone Web servers. In other words, Xojo-based Web solutions do not generate something along the lines of PHP. Instead, it creates compiled server applications that you would then run on Web servers. (I find that to be both compelling and fascinating.) In addition, earlier this week Xojo released Xojo 2014r3, which adds support for iOS as a target.
The Xojo programming language is proprietary and object-oriented. But more importantly, it is extremely powerful and robust. The maturity of the Xojo language is immediately apparent. I found it to be consistent in its implementation, well documented, and in my testing, there wasn't anything missing from it. It includes support for regular expressions, XML parsing and generation, strong support for sockets and Web standards. It's a true pleasure to code in.
The Xojo IDE is equally nice to work with. You can easily organize, locate, and work with a project's various components. The editor itself is extremely efficient, and it provides code completion (which proved to be extremely convenient for this newcomer).
In terms of rapid appliction, Xojo is amazing. In a single day, by using one of the sample apps as a starting point, and help from Hal, I was able to develop my first iOS app, complete with a nice iOS interface, and a relately large SQLite database at the core. Best of all, you can test and debug Xojo-based iOS apps using XCode's iOS simulator. It doesn't get much better than that.
Xojo is extremely extensible. There are third party plugins, including several from MonkeyBread Software (the same MonkeyBread that we know and love as the developers of the popular FileMaker "MBS" plugin). In addition, sharing Xojo code is easy, and finding sample code (in both the sample apps and online) is no problem at all.
In addition, the Xojo community is impressive. There's a well organized online forum, several prominent blogs, and even a Developer Evangelist. That strong sense of community is important to me, especially because I'm used to FileMaker's community.
Ok, so far so good. You could say that I fell head over heals for Xojo, and was ready to commit to it... Until I hit a few walls.
As I mentioned, Xojo's support for iOS is brand new. It uses a new Xojo framework that, while easy to use, lacks some of the functionality that I'm going to need in order to develop the commercial apps that I have schemed up. For example, it does not support scrollable views (at least not without a workaround), nor is there is a Picker control (similar to a pop menu field in FileMaker). But more importantly, Xojo lacks support for taking full advantage of iOS devices (accessing the camera, signature capture, and so on). And while you can use Xojo "declares" to add these missing controls, doing so is not straightforward (especially for someone new to Xojo). Efforts are already underway from the community to add third part support for the missing controls, and to provide examples on how to tap into the full power of iOS devices.
All in all, I was extremely impressed by Xojo, and I can see why Hal feels so strongly about it. However, I think I need more mature and thorough support for iOS - something that we'll likely see from Xojo in the future.
Candidate 2: LiveCode
Next up is LiveCode, which also has quite a bit of history behind it. LiveCode is developed by RunRev, and is based on HyperCard.
In terms of targets, LiveCode has things covered. It supports Windows, Mac OS X, Linux, iOS, and even Android. And, due to a recent successful KickStarter campaign, you will soon be able to generate HTML5-based solutions, making it possible to deliver LiveCode applications to the Web without the need for plugins.
LiveCode's language is based on HyperTalk. It's a high-level, English-like scripting language, and from my early testing, it is very thorough. I will admit that the language takes some getting used to. "English-like" is just that - like English, but not entirely. Here's an example:
ask "Hi. What's your name?" titled "Your Name"
put it into name
answer "Hello, " & name & "."
Reading that code, it makes perfect sense - especially to those new to programming. But as an experienced developer, it's unlike anything I've used before (except for HyperTalk, which I haven't used in years). Again, it would take some getting used to. But I think I could get used to it, and fairly quickly.
LiveCode's language support for iOS and Android is extremely thorough. It provides access to the accelerometer, notifications, orientation, iOS's native date and list pickers, the photo picker, and more. With LiveCode, it seems that you can take full advantage of a mobile device's capabilities.
The LiveCode IDE is quite nice. All of the tools and controls that you would expect it to provide are available, and the environment is well organized. As a FileMaker developer, I found LiveCode's "Inspector" windows to be both familiar and easy to use. I also enjoyed LiveCode's "compile-free" workflow, which allows you to test and debug your applications (regardless of the targets that you are shooting for) without ever leaving the IDE.
It was LiveCode's compile-free workflow and wonderfully organized documentation that allowed me to develop a basic solution in a single day. The time involved included getting familiar with the LiveCode "stack" metaphor, the IDE, and the language. In that short amount of time, I was able to create a solution that can post data back to a hosted FileMaker database. So, just like Xojo, LiveCode's support for rapid application development is impressive.
LiveCode supports third-party extensions, and you'll find a list of some of the more popular extensions on the LiveCode Web site. I'm particularly interested in the MobGUI extension, which includes controls oriented to mobile solutions.
As I mentioned earlier, LiveCode has been around for quite some time. As a result, the community seems to be quite large, and there are several good online resources available. LiveCode provides several resources for learning LiveCode, including LiveCode University (a comprehensive course for those who are not only new to LiveCode, but to programming as well).
So, what's the catch with LiveCode? I have yet to find one. However, as someone who is used to developing business-oriented solutions, I have a feeling that creating those types of solutions in LiveCode might take a bit more time than it did using Xojo. And yet there is something about LiveCode that resonates with me. I like that it is based on HyperCard, and the stack metaphor makes a lot of sense. Also, its support for such a wide range of targets (including Android, which might become important to me at some point) is impressive.
Candidate 3: PencilCase
One last candidate that I've been keeping an eye on is PencilCase, which is being developed by a company called Robots & Pencils. PencilCase is described as "an iPhone and iPad app maker and private publishing platform." Like LiveCode, PencilCase is based on HyperCard.
PencilCase was previewed at this year's MacWorld Expo, and it generated quite a buzz. ZDNet's David Morgenstern called it the "most interesting program at Expo." Delivery of PencilCase is set for late 2014.
Even though PencilCase isn't shipping yet, for whatever reason I'm intrigued by it. And while it will only support iOS as a target, I'm anxious to give it a try. Until then, however, it's really not an option for me.
Closing Thoughts & Next Steps
Both Xojo and LiveCode are strong candidates for the development environment that I want to work with. However, if I had to pick one right now, I'd choose LiveCode.
My next step is to put LiveCode through some more thorough testing. I'm planning to use LiveCode to develop the same app that I had developed using Xojo, and see how things go.
I'll continue to post here about my experiences and research. In the meantime, I'd love to hear your thoughts on Xojo, LiveCode, and PencilCase - especially from other developers who have also looked at (or are also looking at) these environments. Please leave your comments below.