These days, I’m gloomier and gloomier about the prospects for the mobile Internet; you know, the one you access through the sexy gizmo in your pocket, not the klunky old general-purpose computer on your desk.
We’ve all heard about the glowing future; Jonathan is particularly good at telling it; “There are more mobile phones sold every day than computers sold every year, etc.” (OK, I’m exaggerating, but that’s the thrust). And indeed there are big parts of the world where a networked computer is in the economic reach of very few, but a cellphone is attainable to many.
The Legacy Problem · We all know that cellphones have been able to access the Net for years and years. In theory. I’m a heavy Internet user and have carried a phone for a decade or more, and have never seriously used the one on the other. The browsers suck, the programming models suck, and lots of things are intentionally crippled, like my current pretty-good Samsung whose JVM won’t run anything that didn’t come with the phone.
And anyhow, I remember the first time I got a phone advertised as “having Java”. So I went and got whichever flavor of Mobile Java was current at the time. Quickly discovered that I couldn’t use it to make a phone call on the phone, or pretty much anything except write pretty-but-vapid games. Couldn’t see the point.
“But wait,” you say, “the iPhone has changed all that!”
The iPhone Problem · Yep, iPhone owners do actually use them as general-purpose Net clients. And, for the first time ever, they’re decently programmable in a somewhat-uncrippled way.
But there’s a little problem and a big problem. The little problem is that I don’t wanna learn Objective-C and I don’t wanna learn a whole new UI framework. I acknowledge that lots of smart people think Objective-C and Cocoa are both wonderful, and quite likely they’re right. I don’t care. I’m lazy; I know enough languages and enough frameworks. You’re free to disapprove, but there are a whole lot of people like me out there.
The big problem is this: I don’t wanna be a sharecropper on Massa Steve’s plantation. I don’t want to write code for a platform where there’s someone else who gets to decide whether I get to play and what I’m allowed to sell, and who can flip my you’re-out-of-business-switch any time it furthers their business goals. PragDave’s experience is hardly a confidence-builder. Call me paranoid if you will, but I just ain’t going there. No way, nohow.
Granted, the device is slick and has massive consumer pull, and maybe we’ll end up with a situation where the only way to be relevant in the mobile-apps space is as an Apple sharecropper. That’s not the future I want, but maybe it’s the one we’ll get.
The Android Problem · I guess it’s a little impolitic for a Sun person to say this, but I really like Android, at the conceptual level. It seems more modern in its feel than the other mobile SDKs I’ve looked at, and the amount of new stuff I’m going to have to learn is much less, and the platform has no intrinsic lock-in that I can spot.
On the other hand, it seems like there’s not much there there; haven’t seen much in the way of updates or hardware or movement, and there seems little transparency about what’s happening behind the scenes. And Android doesn’t address the dysfunctional business model that has crippled mainstream as Net clients, to date. More on that below.
The JavaFX Mobile Problem · It’s easy to like the JavaFX Mobile idea. It’s just Java SE only with access to the whole device, so you can use the phone as a phone, and with a layer on top to make it easier to program. In principle there’s no reason I couldn’t actually write my app in JRuby or Jython or some such. It’s probably got the least lock-in potential of any of the mobile-future options.
The problem is that it isn’t here yet. A year ago, my feeling was that maybe they’d started too late. Given the whole industry’s lack of progress since then, and the generally dismal outlook, I think there’s still a window of opportunity if FX Mobile ships before too long and turns out well.
The Business Problem · I’m on the record here and here and here; many of my commenters disagree with me, but they’re wrong. Until we get network operators who are willing to open their networks, and a business model that makes access affordable while incenting operators to encourage its use, all the shiny SDKs and glitzy pocket-jewels in the world aren’t going to come close to realizing the true potential of the mobile Net.
Comment feed for ongoing:
From: Martin Heller (Jul 18 2008, at 14:19)
Amen, brother.
[link]
From: Justin Rudd (Jul 18 2008, at 15:22)
You forgot Windows Mobile 7. Or maybe you didn't :)
Anyway, I agree and disagree. From a computer user for the past 10 years, I agree. I hate using my phone as an internet device compared to a light weight Asus Eee (assuming you can find free WiFi).
But when I watch my sister who hardly ever turns on her computer because her phone is good enough for what she wants and needs (especially Opera Mini), I have a feeling that we'll get there eventually. But it won't be one unified platform. I think there will be 3 - iPhone and Android and whatever Microsoft comes up with. And what kind of apps you want to run will be dictated by which network operator you can tolerate.
[link]
From: Duke Fetish (Jul 18 2008, at 15:24)
I'm sure the first week of iPhone app sales has made more than all of the mobile java sales combined..
Don't your mobile java developers complain that they can't get the phone companies to buy/sell their apps?
[link]
From: Sam Penrose (Jul 18 2008, at 15:38)
I'm sympathetic to the overall thrust of your argument, but I think you overlook how important the UI paradigm is to the device's value. Apple can make a strong (not undebatable, but strong) case that the new UI paradigm is what makes the device useful and therefore popular. If they're right, then learning the framework is the price of writing outstanding apps for a general audience. That the framework is in Objective-C you might call arbitrary, but surely that's the smaller part of the curve for many of us.
The business-level control is still there, of course, and I share your concerns about it.
Finally you can bypass both tyhe SDK and the App Store by writing web apps for iPhone. On balance I think the glass is about 7/8 full.
[link]
From: Norman Walsh (Jul 18 2008, at 15:50)
Thanks, Tim. That said everything I could have said, probably more. And better.
I'm on the fence about an iPhone; I've been almost buying one (well, assuming I could find one out here in the boonies) for most of the week.
I think in the end, I'll take a two year lease on the farm in the hopes that two years from now there are reasonable open alternatives.
I won't feel good about it on many levels, but it is a nice device.
[link]
From: Assaf (Jul 18 2008, at 15:59)
You're right that the whole mobile market is held back, years behind what it could have been.
You're forgetting proprietary connectors, limited carriers, undisclosed specs of future products, and other things that keep the iPhone ecosystem at Apple's whims. It's not just the software, even if we only care for that part.
But I'm going to bet Apple is exactly where it wants to be, one step ahead of the market, and when the market inches forward, Apple will already be one step ahead, and just sustain that lead as they did with the iPod.
I don't feel optimistic for any technology or vendor that's looking at where Apple is right now and planning to be there next year.
On the contrary. Carriers can choose to go crazy and open up their platform. They can also look at this widely successful closed platform and decide to emulate it verbatim. Which do you think they'll choose?
(And no cheating by looking at what Nokia is doing around Symbian and music distribution)
So far Apple is in three markets where its lead it based on the backwards business thinking of its competitors. Unless that's going to change, might be time to pick up Objective-C in 24 Hours.
[link]
From: Mark Allerton (Jul 18 2008, at 16:03)
What I see here is a complete failure to connect cause with effect. It's a bit like watching someone say they want Great Abs Now, but are only prepared to contemplate a method that doesn't involve exercise, would prefer one that involves eating cheesecake.
[link]
From: Scott (Jul 18 2008, at 16:17)
Someone pointed out you missed Windows Mobile, you also missed Blackberry/RIM,Symbian, BREW, and OpenMoko.
Which hi-lights an even bigger problem with mobile development, serious fragmentation of the market place. Trying to educate a user about what software is compatible with what is a nightmare. Each platform has it's own business requirements and carrier level agreements. Then start considering how you are going to connect with carriers in other countries.
Small shops simply can't handle it. Larger shops are generally working directly for a carrier, or international brand to do some market tie-in.
[link]
From: Jake (Jul 18 2008, at 16:58)
An older person complaining about learning new things--there's something new.
Having looked at both the Android and Apple SDKs, I'm very unimpressed with the Android way of doing things, and very impressed with Cocoa.
Sharecropping? How is writing for google's api not sharecropping? You going to go out and build your own phone and OS? You are still at the mercy of the handset manufacturers and carriers for which bits of the api they will support. See J2ME for how ugly this turned out.
There are many less questions you have to answer before you start to diagram your application: What type of device are you going to write for with Android? What are the screen dimensions? Touch screen or not? Does your app need a camera?
Also, Apple's distribution mechanism puts *everyone* at the same level. This is incredibly compelling. And it's here now, not something they're "thinking about".
[link]
From: Mark Armendariz (Jul 18 2008, at 17:04)
I could not agree more. Being tied to Apple's world is not my idea of mobile programming. Apple device programming, sure, but not mobile programming.
And after making an attempt at an android app, I've found they didn't have a simple feature I needed (control over the incoming call dialog) and it doesn't look like they plan on updating the SDK any time in the near future.
Until we get a mobile OS with the ubiquity of Windows (love it or hate it), writing mobile apps is going to be painful. Android seems to be the right idea / direction for this, but it seems we've quite some time to wait before we can even find out.
[link]
From: Geoff Arnold (Jul 18 2008, at 17:27)
I use my iPhone, and I use Internet-based applications all the time, and Massa Steve doesn't have anything to say about it. 90% of the blog material that I read comes to me through Google Reader, a pure Javascript application that will work on any decent browser. (Don't blame Apple for showing up the deficiencies of Windows Mobile and Blackberry in this area.) And I routinely browse Amazon.com through their iPhone-adapted client, which is actually easier to navigate than the regular website. And so on.
Apple's App Store is for the games. The real web-based applications just need a decent browser, and developers who care. The Android demos that I've seen suggest that Google may have got this right.
In this context, JavaFX and Ruby-on-a-phone are simply irrelevant.
[link]
From: Matt (Jul 18 2008, at 21:38)
Shocking things I learned:
- A Sun employee thinks Apple should use Java.
- A Sun employee thinks Java is the future of mobile development.
- Tim Bray will imitate stupid, racist stereotypes to make a facile point about phones.
Wait, only the last one is shocking.
[link]
From: JulesLt (Jul 19 2008, at 02:08)
You want portable - stick to web apps. After all, you've already stated no one develops desktop apps anymore.
You want performance - you're going to be stuck going native in some way for at least another 5-6 years until hardware improves.
Language - I read rumours of someone developing a Java-to-Obj-C convertor for lazy people. Similar should be possible with Ruby or Python, given the core similarity to Smalltalk.
But of course, it's not language, it's frameworks and APIs - developers want a 'Windows for Phones' yet we all acknowledge the problems that Windows for PCs has caused (lack of innovation, baking in of bad decisions).
Now again, you could have a higher level language that mapped down (at compilation time) to device specific frameworks - like a pre-compiled version of Java - but it's also worth considering all the other problems of cross-platform client develop that Java - desktop and J2ME - never satisfyingly solved.
[link]
From: Matt (Jul 19 2008, at 09:23)
I agree that the network access issue is one of the biggest stumbling blocks towards the mobile internet industry really flourishing in to what it could become. These locked down networks don't allow the potential that could exist.
In Canada with the recent iPhone controversy it's even worse. It becomes painfully obvious the lack of competition when one looks at the offerings buy the big 3.
"More competition!" is the cry from the business lobby and right on how to solve the problem. However it's very expensive to build a new national cellular network, impractical, it's not going to happen. That simplistic solution just causes the big 3 to laugh all the way to the bank.
I'm a little more radical (practical?) in my solutions. I would like to see the physical network separated from the carriers on the network. Just like with power and gas distribution, you don't have 5 sets of power lines running down every street. Yet in some jurisdictions (not the one you and I are in, but I'm ok with that since it's a non-evil Crown Corporation) you can pick one of multiple companies to get your power or gas from, they just all share the same infrastructure.
I'd like to see the same with mobile, allow anyone to use the physical network, any new player. Have unbiased access and rates to this network to really open up competition.
And this was starting to happen on both sides of the border. And when it became too successful and threatened the incumbents, moves were taken to shut down all these innovative little startups.
Of course I'd like to see the same with the phone and cable networks as well.
We don't have multiple sets of roads and restrict which companies can use each road, why do we set up barriers on what should be common public infrastructure? Let's bring down the gates and encourage real competition by having carrier and physical wire as two completely separate entities.
[link]
From: Michel S. (Jul 19 2008, at 09:50)
Justin, you forgot Symbian - now that it's getting open-sourced by Nokia, and Nokia, through its acquisition of Trolltech, owns the Qt toolkit as well, it will be interesting to see if they can pull an Apple and provide a way to use the same API on desktops, Linux tablets and Symbian smartphones.
[link]
From: Tim (but not THE Tim) (Jul 19 2008, at 20:39)
Several points:
The carriers and their lock-down are definitely a problem (I use a prepaid phone, and am not allowed to download contacts to my phone, even though a cable and app are available for the manufacturer's phone).
I'd like to be able to customize my own phone, with any tools I want but the carriers are locked into the revenue from ringtones, wallpaper, etcetera. How do we get them to open up without the fear that everyone will rip off their ringtones and give them to their friends?
The US is worse than other places because we haven't standardized on GSM, meaning some phones won't work on some networks.
I think we should consider the browser as the "UI", perhaps.. although
To me, "widgets"/"gadgets" made of javascript and XML/XHTML seem to me to be the better application form for the phone -- not every screen is large enough for a full browser experience, but a widget doesn't have to have all that screen space.
[link]
From: Mark Armendariz (Jul 20 2008, at 23:30)
Web apps are fine well and good. As a matter of fact, that's my primary source of eating (as a web developer first and foremost), but web apps on the phone have a LONG way to go. The mobile web is shamefully bad.
As for "Windows for the phone" and the problems it's expected to cause in innovation and whatnot. I'd say the finest innovation we've seen in our time is that which put a PC in front of everyone who has posted to this comment board.
I'm by no means an MS fan, but to deny their part in putting computers in our laps and on our desks is to deny our recent history. We need a platform to make the mobile Personal Computer just as ubiquitous. Apple has made it apparent that it is far too self-interested in the short-term sense to do this. They have huge iron walls around their little world and it's hardly worth knocking if you want to innovate on a large scale.
I don't care if it's google or sun or the stay puft marshmallow man. In order to have an actual "platform" on which we can truly innovate we need a way to develop something once and have it work on virtually every mobile device (80% is just fine). Even if that just means true web support and a constant data connection on all mobile OS'.
[link]
From: PJ (Jul 21 2008, at 05:23)
Got your FreeRunner (OpenMoko phone) yet? I got mine. Yeah, the software's a little rough around the edges... but so was the linux desktop in 1995. But my conscience is clean - I'm doing my bit to help the market decided that closed phones are NOT The wave of the future.
[link]
From: Kendall (Jul 21 2008, at 10:03)
Web apps are not painfully bad on the iPhone. And eventually, other phone makers will catch up - so that is a viable road for mobile development.
But I don't think making "real" apps for the iPhone is any less a sharecopping situation than it ever has been with other mobile development. In theory Apple could "shut you down" as you say, but why would they when they are making money as well? And the ability to stop you has never been out of the hands of any company, which through simple changes in device configuration or OS or licensing terms or newly announced products have just as effective a means to put the skids on your business, even if unintentionally.
Mobile development on the iPhone is far more a symbiotic relationship than feudal arrangement. Apple needs developers as much as developers have to lean on Apple for support in distribution and collecting sales revenue. For the percentage Apple takes you get a good deal in return, from not having to host the website your app is bought, from being able to sell apps in scores of countries you'd probably never have a presence in otherwise.
You can avoid iPhone development as a mobile developer but such a choice seems more like a fear of the unknown than a rational business choice.
[link]
From: ceejayoz (Jul 21 2008, at 10:23)
@PJ - you must be kidding? OpenMoko?
http://www.vimeo.com/1366042?pg=embed&sec=1366042
[link]
From: Anthony (Jul 21 2008, at 10:36)
"I don’t want to write code for a..."
So don't.
[link]
From: Anon (Jul 21 2008, at 11:04)
Interesting. So if I'm to understand your position you've learned some languages on one platform and you would like it to be portable all over? Write a Windows app and it works on Linux, Palm, Moble Windows, Linux, HP-UX, Mac and iPhone??
Sorry for the wake up call, but each one of those is different.
Even when writting a java app I had to make changes for different Operating Systems. Granted they were minimal and not the same.
I guess I don't understand.
[link]
From: Mark (Jul 21 2008, at 11:52)
"The little problem is that I don’t wanna learn Objective-C and I don’t wanna learn a whole new UI framework. I acknowledge that lots of smart people think Objective-C and Cocoa are both wonderful, and quite likely they’re right. I don’t care. I’m lazy; I know enough languages and enough frameworks. You’re free to disapprove, but there are a whole lot of people like me out there."
Then don't learn it. There are plenty of us who aren't lazy, and are willing to learn new things to do new things. There are plenty of lazy people who will make no effort, and will fail because of it. Don't care. They deserve their failure. There are also plenty of smart, hard-working people who will succeed because they're not like you.
"The big problem is this: I don’t wanna be a sharecropper on Massa Steve’s plantation."
"Massa" Steve hasn't enslaved, whipped, raped, or shackled anyone, and you owe everyone, especially Mr. Steve Jobs, an apology for that insult. Hey, why not use a Nazi metaphor while you're at it?
You're an offensive creep, Mr. Bray.
[link]
From: len (Jul 21 2008, at 12:02)
"Tim Bray will imitate stupid, racist stereotypes to make a facile point about phones."
And yet another commenter who wasn't there when sharecropping was widespread will make another stereotyping insult without facts.
Fact: a lot of sharecroppers were poor white people. I was there. You weren't. Get over it. I did.
It's about the watermelon economy. Some land owners allowed sharecroppers to keep the proceeds from any melons grown in their own patch, but little else. That was why the roads were covered with families selling produce from their pick ups. It bought the school books and other niceties for their kids.
Apple is the most closed platform in the industry.
[link]
From: Andrew (Jul 21 2008, at 13:53)
Mobile phones are stunningly constrained computing environments across just about every dimension including, critically, battery life. It makes zero sense to burn CPU cycles, and therefore battery, with unnecessary layers of abstraction, like a JVM.
Apple, like Sun, are a systems company. They understand that these days real innovation and value is coming from companies that provide an integrated solution that considers the whole user experience. It's this type of systems-level thinking that drove them to not allow background user tasks that will eat CPU cycles (and therefore battery) but to provide a notification service instead.
Google are a systems company as well and they are starting to find out about all the unpleasant things that happen when you give up control of a key element of a system, in their case the mobile hardware platform. Not only will Android have the background task problem (where your battery life and network usage bandwidth will be affected by what apps you have loaded) but application writers will tend to write for the lowest common denominator due to the endless hardware variations (is there an accelerometer in the device, is non-ascii character input supported, what's the screen resolution, blah blah blah). Learning Objective-C is a one time deal but with Android, and Windows Mobile devices for that matter, there will always be something new to figure out.
BTW, as for getting rid of flat rate plans because there is no incentive for the operator to improve their service I say phooey. There are always other operators to switch to.
Finally, "Massa Steve", really?
[link]
From: Folletto Malefico (Jul 21 2008, at 16:11)
You say:
"I don’t want to write code for a platform where there’s someone else who gets to decide whether I get to play and what I’m allowed to sell, and who can flip my you’re-out-of-business-switch any time it furthers their business goals"
Could you tell me at least one platform out there that doesn't have "someone else who gets to decide"? :)
I don't think that one exists. Maybe you can include some form of Linux ignoring some lock-ins... but it's still not there.
The iPhone ecosystem is the first step in that direction: some form of standardization on a closed platform. Exacly like Windows or Mac OSX.
It's a bit utopic to think that we could go from completely closed to completely open in one step, don't you think? :)
[link]
From: Marcus (Jul 22 2008, at 01:09)
Damn, you got Daring Fireballed good this time.
[link]
From: Robin (Jul 22 2008, at 02:03)
Andrew: you don't need a JVM to run Java bytecode. You can easily build your device around a physical Java CPU; for example this ARM (http://www.arm.com/products/CPUs/ARM926EJ-S.html) which runs Java bytecode natively and is plenty fast enough for a high-end phone.
[link]
From: Andrew (Jul 22 2008, at 11:12)
@Robin, I agree, the hardware based JVMs are an interesting idea. ARM CPUs are hugely popular with mobile phone designers (including Apple) because of their superior power utilization so it's a definite possibility.
However the technology still feels like it's not quite ready for prime time yet. The ARM implementation, Jazelle, still essentially does a translation from the Java bytecode to the native ARM instruction. It's a hardware translation so it's fast but it's still a translation nonetheless. Plus, not all bytecodes are supported in hardware, some have to be implemented in software. Therefore the same app compiled down to native ARM code will likely consume less power and run faster than the exact same functionality compiled to JVM bytecode. And that's before you consider all the performance problems introduced by programmers using expensive high level constructs that Java encourages.
The primary benefit of using Java is that it should be quicker to implement a given app than using a lower level language like C or Objective-C. Most apps on the iPhone aren't particularly complex however, they are constrained by screen size, input methods, data storage capability etc. Maybe this will change over time but today I'd bet that Java just wouldn't have much of an implementation speed advantage over Objective-C for the current class of iPhone apps.
[link]
From: Eddie (Jul 22 2008, at 20:49)
The comments are just as interesting as Tim's original post. Some food for thought:
Paul Graham of Y Combinator has an essay titled "Mind the Gap" in which he says in the context of creating wealth (I love this sentence):
------------------------
http://www.paulgraham.com/gap.html
When people care enough about something to do it well, those who do it best tend to be far better than everyone else.
------------------------
With that being said, if someone is motivated enough and cares enough to write a wicked killer app based on what people ("mere mortals") will WANT and will CONSUME, then by all means they do that. Hence, the consumers and the free market will determine which "smart phones" sell the most. I HIGHLY doubt that consumers in the market (who vote with their disposable income or in America with their credit card debt) will give a rat's you-know-what about SDKs, languages such as Objective-C, etc.
Will most consumers in the market suddenly start buying Nokia phones just because they purchased Symbian and opened the Symbian source by donating it to the new Symbian Foundation? I DOUBT it. Will most mere mortals start buying phones with Android on them? I have my doubts. You know, there are a LOT of people (particularly business professionals) that are super happy with their Blackberries at the moment. Why will the change? Just because of an open source movement? Very doubtful. This is the problem with much of Silicon Valley mentality -- many developers time and again don't have much business acumen and don't understand, as Rupert Murdoch does, what it is that people want!
I am a developer of software and businesses. I have seen first-hand MERE MORTALS who LOVE the iPhone's human user interface and "user experience"! If the user interface is great AND the mobile web is easily accessible and creates efficiency (e.g., MobilMe once Apple irons out its hiccups), that's what people want. That's the world we live in (the mobile carriers control the wireless pipes). All creatures who thrive are the ones that adapt to their environment. Adaptation is required:
1.) adapt to the mobile web world as it exists for now until something changes,
2.) adapt by choosing the tools you need to accomplish your goals (Objective-C or Java or whatever).
[link]
From: Andrew (Jul 24 2008, at 12:59)
@Eddie, I think you are completely right, actually giving consumers what they want is all too often lost in the noise of implementation debates.
I found it interesting that in the memo Steve Ballmer sent to MS employees yesterday (7/23/08) he talks about taking a more of a system-level approach :-
"there is no doubt that Apple is thriving. Why? Because they are good at providing an experience that is narrow but complete, while our commitment to choice often comes with some compromises to the end-to-end experience. Today, we’re changing the way we work with hardware vendors to ensure that we can provide complete experiences with absolutely no compromises. We’ll do the same with phones—providing choice as we work to create great end-to-end experiences."
http://kara.allthingsd.com/20080723/microsoft-ceo-steve-ballmers-full-memo-to-the-troops-about-new-reorg/
[link]
From: Giacomo (Jul 25 2008, at 08:23)
It's fantastic how the "Free Internet" mentality changed our habits so deeply.
In the 80s or early 90s, given the possibility of building applications for a nice platform with mass audience, nobody would have complained that it's "too closed". That we do so now is a testament to how living on a level playing field for more than a decade (internet) and getting used to a big free/open-source movement, changed our expectations so much that we now expect better from all actors in the IT field, especially the ones most commercially successful.
This said, this sort of "free" environment won't exist forever "just because". We shouldn't repeat past errors (developers fleeing to Windows/VB/Office because "it's nice and it sells", enabling an unbreakable global monopoly on the desktop platform) with what it might be <b>THE</b> platform of the future. Even if we end up all developing on iPhone, we should keep the pressure up for Apple to be more open, to avoid having to go again through the pain of developing an alternative platform built completely from scratch (like Linux) and permanently incomplete. Apple can be part of the solution, if only they were a bit more open.
(Tim, ignore the Apple fanboys, an evil weed respawning every few years. "The bling" is their religion...)
[link]