Background

Apple today announced a new language for developing Mac and iOS apps called Swift. For me, this could be a game-changer.

Objective-C is a language I had learned in the past, and I've even developed Mac and iOS apps in the past. Cocoa and CocoaTouch are APIs I am familiar with. But my Objective-C skills seem to perish very rapidly. I also had a very hard time getting going initially.

I consider Xojo my primary development language. For most tasks, Xojo is my first choice, even if it is a Mac-exclusive app. Xojo of course leaves my desire to write iOS apps unfulfilled, and my last attempt to write one using Objective-C failed miserably.

Xojo's iOS Problems

Xojo has two problems with iOS though. Both technically solvable, but not realistically solvable. The first problem is market size. There are very few jobs available for Xojo developers, especially full time jobs. I have been fortunate, but Xojo being my primary tool leaves me with some uncertainty. I have my web skills to fall back on, and I consider them excellent, but I'd like to be more than just a web developer.

The second problem is feature parity. Xojo's strength has always been in cross-platform development at the cost of feature parity with the vendor tools. This problem has become more pronounced recently, with Apple evolving their APIs at a very rapid pace. Let's say Xojo's iOS support currently had full feature parity with iOS7. With today's announcement, they would need to change plans immediately to deal with iOS8 updates. Speaking from experience, Xojo does not currently have this ability. Even if they did, the release of iOS8 is only a few months away and getting all those new APIs integrated with the framework likely couldn't be done in one or two Xojo release cycles.

Both of these are solvable problems by growing the user base. More users means more job opportunities, and more users also means more income, which means more engineers. Sure, you can't have nine women make a baby in a month, but multiple iOS engineers will likely be necessary to catch up to feature parity. After that, it is possible a single iOS engineer will be able keep up, but that's not an assessment I'm confident about.

Xojo's iOS ace-in-the-hole was making iOS easier and approachable. There are two markets for Xojo iOS: developers who want to share code between platforms, and developers who find development with Apple's tools and languages too difficult. We'll call them the cross-platform and ease-of-development markets, respectively. Some developers will of course fit into both markets.

The Ease of Development Market

Focusing on the ease-of-development market first, Xojo brings important features that Objective-C can't really touch, such as automatic reference counting (ARC) and compile time type checking. Yes, I'm aware that Objective-C 2.0 supports ARC, but it is my understanding that it never really took off. It is beyond the scope of this to explain why. Anyway, it is features such as these that would have made Xojo a candidate for developers who want an easier way to developer iOS apps, but might not care about cross-platform.

This is the market where Swift challenges Xojo. For this market, Xojo just became a tough sell. Although I am confident Xojo development for iOS will be easier than Swift with Apple's tools, Swift still challenges Xojo here. Swift is available to develop with today, and has access to the full iOS8 feature set. Xojo is not available yet in any form, and even when it is shipping, it will not support the full iOS7 feature set, let alone the iOS8 feature set.

And this is really the problem. Xojo will likely never be able to maintain full iOS feature parity with Apple's tools. With Xojo vs Objective-C, the difficulty of Objective-C would make the cost of Xojo's lack of feature parity seem worth it for the ease-of-development market. But with Swift now, Xojo's lack of feature parity becomes a high price comparatively.

The Cross Platform Market

However, this is not to say Xojo is doomed. That is not what I'm saying at all. Because there is still the other market, the cross-platform market. This is still, and always has been, Xojo's bread and butter. For developers who need to target Windows, Linux, OS X, Web, and iOS (in any combination of platforms), vendor tools are barely worth considering.

For many developers, Xojo's lack of feature parity on a particular platform is an acceptable price to pay to share development between 5 platforms. A single developer with Xojo can do what would normally take a team of developers to accomplish. Swift does not change that. I don't see any reason for anybody at Xojo to lose sleep over Swift.

My Future With Swift

I posted a tweet recently that Swift may become my new primary language. Let me elaborate on that. As I mentioned previously, although I've been fortunate, the full time job opportunities for Xojo developers are scarce. If I wanted to move on, finding another full time position using Xojo would be nearly impossible. It is all contract work, and I hate working as a contractor. Swift should allow me to get into the Cocoa and CocoaTouch game, which will open up many more doors for me. There are more companies in my area alone, let alone globally, looking for iOS developers than web developers and a total of zero looking for Xojo developers.

I have no intention of leaving Xojo behind, and I never meant that I would just switch to Swift overnight. It may become my primary language in a few years. It may not. My point with the tweet is that it has the potential to become something very significant in my arsenal.