Which Phone To Develop For?
Rob MacKenzie writes "I have to decide on a mobile phone to develop for. We're building a house with some automation built in, and we want the mobile phone to be able to control certain aspects of it, and retrieve information on what's going on in the house. Our choices are the usual suspects: Apple's IPhone, RIM's Blackberry, Nokia's line (Symbian), any Android phone we can get in Canada, J2ME generic app, or a Web-based UI we would interact with in the phone's browser. What would you choose if you had to go with one? Which exact model? We will be buying a few to develop for, so price is a bit of an issue."
You can target the iPod touch as well as the iPhone, and can develop on the iPod touch as well as the iPhone ($220 development platforms with no per-month cost).
You have some very interesting features (accelerometer, GPS, camera) which make for some particularly interesting ideas
You have a large installed base thats still growing rapidly.
And apple takes only a 30% cut of revenue, in exchange for a nice distribution mechanism.
Test your net with Netalyzr
That way you can control things with or without the phone. Give it a simple interface and then you can use any phone or device with the web page.
Technology is becoming agnostic.
Build a 'phone' ready web page and stop worrying which device will connect to it.
The Kruger Dunning explains most post on
Id be hesitant to lock you into a platform before you even get started. That said, developing for the iPhone is pretty darn easy, if you are ready to get going, you can get off to a real quick start on it.
Prediction: The real iPhone killer is going to be sex robots from Japan. Think about it.
Seriously consider using either J2ME or Web-based content. You can never rely on any one thing, but standards like these should allow you to change target platforms more easily in the future when the company you've chosen to follow either busts or, more likely, drops one of the features you've relied upon and you have a large amount of rework ahead of you.
(My fantasies always revolved around the Palm, but that was the standard when those dreams began).
Leela: "Is all the work done by children?" Alien: "No, not the whipping."
The cool thing about developing for the iPhone is that you are *essentially* also developing for OS X. So its almost a twofer.
Visit Jonesblog and say hello.
I'd go web-based or Java, since many phones support it.
Think of the problems if you develop for a specific platform and it becomes obsolete. I imagine your home will be around for many years, but I doubt any interation of Android or the iPhone will be. Unless you plan to change around your programming when you get a new phone.
Anything that has strong ties to legacy software or hardware will be supported for a longer period of time. Look at user-base, ease of installation and repair, and of course, the track-record of the company...Apple would be a bad choice, I can see them switching things up without notice and all of a sudden you can't dim your lights.
...but how long will any mobile phone technology last? Will you find yourself having to re-do it all every 5 years as phone/carrier makers obsolete what you developed for?
Web based makes sense since you could possibly transition to some other technology, or, more likely, a mobile device's web access will only get better making it in-place upgradable for a long time.
Building your software to target a specific phone technology just seems terribly shortsighted for something like a house.
(IMHO, the real answer is "none" -- home automation is of limited value past a programmable thermostat and ultimately an albatross of shit that doesn't work and is expensive and time-consuming to fix. Its frightfully expensive to maintain ordinary systems like windows, gutters, and roofs, let alone a whole complex automation system).
>
You have a large installed base thats still growing rapidly.
A good fraction of said installed base has money to spend. All of them have a track record of being separated from their money with only moderate effort.
And separating other people from their money is the primary motivation for going into any business.
Those who can make you believe absurdities can make you commit atrocities. - Voltaire
Except with many smartphones you aren't locked into a single point of sale. There are plenty of very good Windows Mobile applications that vendors sell directly to the consumer, for example.
I would chose a phone that I can develop for, without having to get on my hands and knees to beg permission to use their precious SDK. Self-respect, ya know.
Thank you! I was reading retarded reply after reply, and was wondering why no one was mentioning the obvious.
The openmoko is clearly the best choice here, since you need to be able to have full control over your application if you want to do stuff like opening doors. Who knows what backdoors are hidden in the closed phones.
c++;
If you write it in J2ME, and stick to a relatively commonly used subset of J2ME, you'll be able to run it on any phone you might have that supports java. iPhone is a nice flavour of the month, but will you ALWAYS have an iPhone? If there's any chance of ever switching phones, suddenly all your objective C is useless. If you target J2ME, you'll be able to run it on any Blackberry or Nokia phone at least, and possibly Android as well (though admittedly I'm not too familiar with Android).
Write it once, run it anywhere. Makes sense, no?
You gave the answer yourself: use a web interface and any phone with a browser.
Well, the now Nokia-owned former-Trolltech Qt Software's Qt toolkit is being ported to symbian as we speak (with a pre-release out already). The OpenMoko project is also switching to Qt, and since Qt 4 is a superb multi-platform toolkit, it might get ported to other mobile platforms as well. So in the future, perhaps using only Qt would suffice. That were great, because I think Qt 4 is really amazing! :)
Develop for the the Open Moko phone.
You will have control over the entire operation of the phone, and have the interface do exactly as you would like.
Nokia N800/N810 are Linux-based. They run a lite-gui called Maemo which is cross platform and GTK-compatible (i think).
Or just develop a web-app optimized for a few different screen sizes.
The issue that most folks miss is the "sometimes connected" nature that your app needs to deal with. If you are writing apps for businesses, much of the data should be cached local and uploads can wait until you have connectivity. Being out of service shouldn't stop the worker from moving on to the next task. Push the data later when you're back in coverage. The BlackBerry API knows about this stuff. I was responsible for deploying 20k blackberries with custom apps on them. The corp architects said to do a web interface so it could be reused inside the company too. They missed that about 10K of those users were in rural locations with spotty data coverage. The app was worthless for them. We had to implement a blackberry specific app that grabbed data for future jobs and cached data captured while on the job for later transmission.
Don't design around a any phone that is on the market today. design around some standard interface. the you program whatever phone is popular this month to use that interface.
Depends a bit on how compilicated the software will be. If it's very simple and a slow interface is not a problem, WAP + server-side PHP would be nice and the customers could choose any phone that supports WAP and GPRS (or whatever 3rd generation tech is used in the US) - which is practicaly any new phone in the market.
If you want to write the bulk software to run on the phone, I'd say Nokia's Symbian S60 line on Java, C/C++ or Python is a very good choice. It seems the C++ they use is a bit non-standard, but they also support Java ME which is much easier to learn. And Python.
Nokia has a pretty clean company portfolio, their SDK is based on Eclipse and all the relevant APIs are open, seem to be well-documented and full with developers manuals and code examples. forum.nokia.com is their the developer's site. Personally I have never developed mobile software, but I know some people who do mobile game development, and at least their employers seem to prefer Nokia S60. S60 has a very extensive range of phones, including touch-screen phones, and there's also a free emulator available. Sounds good, but I have no first-hands experience what so ever.
Problem with Windows Mobile: the software market is dysfunctional: no central app store like Apple for at least another year, sites like Handango take 40-70% of your revenues, and WiMo market share is dying. Dropped from 24% in 2004 to 12% this year. Look at apps that are available: ugly, expensive, and lame-o. Consumers aren't attracted to that, and the installed base is falling apart. Microsoft sold 18 million in the last year, not even twice as many as the iPhone, except that the iPhone is one platform; all the WiMo devices are slightly different, with different features and capabilities, from non-touch tiny Smartphone screens to larger Palm-style Pocket PC form factors.
Look at RIM: Apple just passed them in sales this quarter. RIM sells replacement phones to a relatively slow growing base (19 million subscribers total, again less than double Apple's sales this year). Its installed base is also spread across a variety of different models.
Palm is dead.
Symbian is big but struggling. Difficult to develop for, has the same problems with marketing apps as WiMo. Nokia sells a lot of phones, but most don't run Symbian but only the feature phone Nokia OS. It's Symbian products are split between different hardware types, and the overall Symbian market is currently split between three platforms.
Flash Lite and Java struggle to run on hundreds of slightly different phones, which all have the same software marketing problems. Android is basically just a semi-consistent version of Java ME, the hardware will still be all over the place. Installed base is currently very small, and the G1 isn't going to help in that regard.
Apple's iPhone has a single installed base of over ten million units, and growing dramatically. It has a wildly profitable marketing system for software, good development tools that share a lot in common with Mac development, and a customer base that spends money. There is no real variation in hardware to deal with, nor problems between the software/hardware vendor.
So if you want to do mobile software to make a political statement, or because you like a certain technology, or just want to keep yourself busy, you have several options. If you want to make money, you write iPhone software and sell it to the ten million iPhone users and several million other iPod touch users.
Five More iPhone Myths
Myth 6: iPhone Developers will Flock to Android
Myth 7: iPhone Buyers will Flock to Android
Myth 8: iPhone will lose out to Steve Ballmer's Windows Mobile 7 in 2010
Myth 9: iPhone Unable to Penetrate Europe Due to Symbian Dominance
Myth 10: RIM's BlackBerry Will Contain iPhone Expansion