If you follow my Twitter stream,you know that I feel rather strongly about Apple's recent licensing changes in their iPhone 4.0 SDK. I'm going to do my best to explain why.
History
I used to work at The Coca-Cola Company. While there, I was a part of the Apple Cider Project. It was a project to get rid of the purchase of new Apple Macintoshs due to the fact that they didn't integrate with the computing infrastructure very well. I remember a private meeting at Apple's Atlanta office where we told the Apple representatives about the issues we had. They did not seem that they understood or even cared. It was due to that meeting that we officially started the Apple Cider Project. I've long remembered that meeting when I thought of Apple.They've often thought that everyone should do as they say instead of trying to work with others. At one time, Microsoft used to think this. Thankfully, even their attitude has changed.
Innovate vs. Legal
When Apple has innovated, they have done well. When Apple has attempted to compete with legalese, it has not done well. Apple sued Microsoft in the late 1980s over the look and feel of Windows being a violation of copyright. That started Apple's downturn and they lost anyway. Apple went out in the mid-1990s and licensed their technology in attempt to create a clone marketplace. Then, out of the blue, they killed it. This left a bad taste in the mouth of many people. This was probably Apple at its lowest point ever. Competing with legalese tends to drive the marketplace away. Apple has alienated developers with their recent SDK licensing changes. Some will never come back. Why should they come back to a platform when the company that they are adding value to keeps slapping them across the face?
After watching Apple the past 10 years, I honestly had felt that they had changed. I'm hoping that this recent issue is resolved quickly, though, I am not hopeful.
What's the issue?
Apple recently announced changes in their SDK licensing. The key thing in this is that applications have to be written in ObjectiveC, C, C++, or JavaScript. Why should it matter to Apple what language an application is developed in? They should want quality applications running on their device. Good developers can build good applications using bad tools. Bad developers just create bad applications.
Apple Products:
I've watched Apple switch CPUs from 680x0 to the PowerPC. My thinking back then was that it was technically interesting but not significant due to neither being high volume. When Apple switched to Intel processors, It got my attention and in a positive way. The ability to have a single machine that runs Mac, windows, and other operating systems was interesting. Choice had come to the macs and I was impressed.
The apple iPod was introduced about 10 years ago. It's been successful. The video iPod was interesting. As someone that runs a video podcast, supporting it has been a major pain. Supporting iTunes has been a problem. The video format support is a major pain, but I eventually worked it out. Honestly, video is a pain everywhere.
During this time, apple made a financial recovery. I was impressed by it. These improvements are noticed in corporate America.
Now we get to the iPhone and it's child devices. Originally, Apple initially said that developers should write web apps to target the device. They relented and shipped the ability to run apps natively on the device. I was impressed with their ability to listen to the developer marketplace. Now, let's be honest that writing apps that natively run on the device is in Apple's best interest. Any app running natively on a device results in some form of vendor locking, so it's good business for them. Whatever the reason, it was goodness for everyone.
Development
Like I have said, I'm a developer. There are a facts that you have to be aware of.
- Developers like to write for platforms that have acceptance in the marketplace. Even if a customer is paying for the work, writing applications for platforms that are unpopular is hard due to a lack of documentation. If a developer is writing the application on their own, well, you have to make money somewhere.
- Frameworks. If there are a number of frameworks for a device, it gives developers choices in how to write applications. The more choices a developer has to build applications, the better. It brings more developers to the platform. The more developers, the more some will create frameworks for the device. It makes the platform more valuable.
- Developers do not like to be dictated to. They want to write apps using the languages that they already know and not spend lots of time learning foreign languages. These things take time, and time is money.
Arguments
So far, I've heard several arguments about the SDK licensing issue. Here are my thoughts on them at this point:
- This is a byproduct of the Apple/Adobe Flash issue. I don't care much for Flash based video. I do think its crap. If this is the issue, then go solve this a different way. Have you ever thought of going to Adobe and working with them on resolve the issue?
- Multi-tasking. Apps not written in ObjectiveC won't multi-task properly. WTF?!? I've written a number of multi-threaded apps in Mono/.NET. Why do you think I can't write multi-threaded stuff? Why do you think that .NET/Mono doesn't thread properly?
- Cross-platform frameworks don't expose the features of the underlying device. Ok, there is some truth to this. The problem with a cross-platform framework is that it it can only use the features common to the various platforms. FYI, MonoTouch is not a crossplatform framework. MonoTouch is a .NET/C# layer that runs on top of CocaTouch. It allows developers with a background in .NET/c# to natively target the iPhone. It doesn't somehow allow winforms, wpf, silverlight, or anything else to magically run on the iPhone.
- The iPhone AppStore is full of crap. I've heard the argument that this change is an attempt by Apple to clean up the apps included in the AppStore. Okay, I can buy this reason. How many fart, beer guzzling, and other stupid apps are in the AppStore? But, I'm confused, didn't Apple approve these apps? If the AppStore is full of crap, why is Apple approving these apps to go in the AppStore?
- Cross-platform frameworks result in crappy software. WTF? Bad developers/management result in crappy software.
- Adobe-Apple past history. I read a post about how Adobe/Apple have a negative past history dating back to Adobe's lack of support for Apple's platform and OS X. Well, Adobe has to make money and they have to follow the marketplace. It seems that right now Adobe is attempting to feature their support for OS X with their new CS5 product that launched today. And now Apple is telling them to f*** off. Wow, what a way to support the companies that make products that make your platform more valuable. Now, I am not privy to the specifics of this relationship over the past 15 years. I do know that two wrongs do not make a right. If this is true, it makes me question Apple's support of the development community even more. Heck, I get frustrated all the time, but my suggestion would be that Apple keep its eye on the prize, not on being vindictive.
Me
Now, I'm a .net guy, so I'm interested in how I can leverage that knowledge to run other places, such as the Mac, mobile devices, tablets, and all other kinds of places. I've watched the number of iPhones shipped dramatically increase.
Now
With all of this background, I got really excited when Novell announced Monotouch. I invested significant time, and time is money, in Monotouch. I spent years trying to convince wrox into doing mobile development books to no avail. In the summer of 2009, they agreed that a book on monotouch would be a good idea. And, I was off..............
Now, my first ebook is in limbo. Our second book is completely in limbo.
I've been out trying to convince customers to accept the iPhone. It also means money for Apple in that customers buy more of their product. It means money for my company and me as well. Apple, you are costing a lot of developers a lot of money by making this move. If I switch to another platform, and I am contemplating this, it will cost you money as well.
Thoughts for Apple
There are a few things that Apple needs to be aware of.
- If you chase away developers, they are not likely to come back. Developers have a long memory when they feel screwed. Why should I write an application for your device when you can pull the rug out from under me at any time?
- I really doubt that a change to your licensing rules will effect you in the near term. In the long term, will developers target your platform? Will there be an "App for That" on your platform in a couple of years? How will a lack of new apps effect the growth of the iPhone?
- You do have competition in the marketplace. Google Android is growing. RIM has the #1 marketshare. Microsoft has an interesting story with Windows Phone 7, though admittedly, its largely an unknown at this point in time.
- Why don't you change the AppStore such that crappy applications are removed? Put in a rating system, or something that will allow you to remove crappy apps quickly and easily if they cause problems in the marketplace.
What am I going to do?
I'm not sure. I'm going to continue to look at the marketplace. I'll probably take a look at MonoDroid for the Android as well as Windows Phone 7. I'm not convinced that Apple will relent on this issue. They seem to have dug their heels in based on what they are doing with Adobe Flash. If there is going to be resolution on this issue, it needs to be fairly quick. Developers won't wait and twist in the wind. They will vote with their keyboards, and they will vote on another platform with their favorite tool.
PS. I'm hearing rumors that their might be a solution for this problem coming. Stay tuned.