Recently, I launched my latest app Tomato Soup — simple iOS pomodoro timer and have been fielding a lot of questions from Coder Radio listeners regarding my platform choice; for those who don’t know Code Journal (iOS and OS X) and Tomato Soup (iOS) are both only available on Apple platforms. Many of these listeners seem to think that my selection of a particular platform over another is some sort of indictment of lack of confidence in the alternative platforms, however, that’s not always always true and there perfectly legitimate reasons to go single platform for any particular project.
One of the most obvious ones is familiarity with the platform, development environment, and language. In my particular case, Cocoa and Objective-C are by far my favorite platform / language combination. That doesn’t mean that there is anything wrong or I think badly of C# / .Net or Java — in fact, I often find myself defending Java against folks who spend far too much time reading alarmist Reddit posts. All it means is that I am most efficient in Objective-C. As they say: “Time is money” and sometimes shipping fast is important and the time it would take.
Increasingly, platform vendors are adding features to their platforms that can (generally speaking) only be accessed via the native API — an example of this on OS X is Notification Center. Sure, it is possible to write a wrapper around the Cocoa API for Notification Center, but that’s usually harder than you would hope and adds maintenance to your project that (in most cases) would not be put on the individual developer.
Some projects just market better on specific platforms. A lot has been discussed about the marketability of apps on Linux in particular, but I really don’t think that the conversation needs to center around Linux but should rather be about the tastes and norms of users of each respective platform. For instance, it is usually tough to sell an OS X app to a Mac user that doesn’t “feel native” but that problem doesn’t generally exist for Windows or Linux users.
Developing software for multiple platforms presents its own issues and often takes more financial resources than honing in on a specific platform. The sad fact is that if ISVs (independent software vendors) regularly poured more resources into cross platform development, we would eventually have fewer unique applications released.
I hope this provides a bit of clarification and rest assured that I, like most developers, do not hate your chosen platform and sincerely wish I could easily have my software on as many platforms as possible.