Quo vadis Nokia?

I was thinking about a title for this post, something like "Where the hell is Nokia going?". Then I remembered about that old movie "Quo Vadis".

Funnily enough, I Googled the title before writing something, and surprise: I found another post with the same title and subject which actually tells the very same things I was going to write. So I am just going to write an "appendix" to vent out.

My angst (and rage) about Nokia began to build up when I went to download Python for Series 60. I am going to teach a mini-course about PyS60 in PyCon Brazil 2009. Went to the pages I used to find PyS60. All of them out-of-service or obviously abandoned. WTF, PyS60 getting abandoned?

I finally found PyS60 at garage.maemo.org, it's being released often, but... all that abandoned pages should have been taken care of, and PyS60 deserved a smarter and more official "home" than garage.maemo.org. It is not a Maemo project, after all. And which other alternatives do we have for easy S60 development? I know that everybody is going to Javascript these days, and S60 has this widget thing now, but widgets are not applications. PyS60 can do whole, standalone applications, so it is not a serious alternative by now. Please offer us developers JSS60 before thinking about ramping down PyS60!

And then we have this insistence on Symbian. People used to believe that Symbian OS has some "secret power" that makes it so good for mobile. Nokia certainly believes in that, because there is nothing left to believe: the API is terrible, the SDKs are terrible (maybe 5th Edition SDK is better, I havent' played with it yet), the UI is terrible, several APIs are not open, and so on.

Maemo Project, which is based on Linux, is around for 4 or 5 years. If Maemo couldn't be put in a mobile phone in so much time, Linux should be really bad, right? God in the skies and Symbian on Earth, right?

Well, in the last 4 years that I work more closely with mobiles, we have seen SEVERAL new mobile operating systems being built from scratch, all of them being very well-received. I am talking about Android, Palm Pre and iPhone OS. Two of them use Linux kernels, one of them is derived from UNIX (OS X). All of them have excellent SDKs, good APIs which make sense for the average developer, and so on. UNIX is not that bad for mobile, after all. (It could mount up to 5, if Openmoko and GreenPhone didn't sink.)

Maemo has IMHO a serious defect: it tries to be a "normal" Linux, with X11 and GTK+. All other mobile systems use a custom UI system. Nevertheless, it is still possible to use it, and make a nice UI on top of it. Maemo 5 is coming with accelerated 3D hardware, so OpenGL ES can be used to bypass X11 and GTK limitations completely.

Nokia seems to be afraid of releasing some mainstream product with Maemo. Or worse, Nokia does not really believe in Maemo, which explains why Maemo development is so slow, allowing no less than three competitors to release "open" systems running inside real cell phones before Maemo makes it. If only N810 had a 3G SIM card slot... Actually, Maemo 5 hardware will have it, but perhaps too late.

Indeed Maemo 5 brings three things that should be in place since Maemo 1: accelerated 3D, Qt toolkit, and support to GSM/3G packet data.

But Maemo 5.0 will still have GTK+ as official toolkit, and Qt as a community supported toolkit. Maemo 5.x or 6.0 will promote Qt to officlal and bust GTK+ to community. Wouldn't be better just to delay Maemo 5 and use Qt as official toolkit from the beginning? Maemo is late for the market anyway.

Buying Qt was the one right thing Nokia did. It was a surprise, and it was nice news. But I am growing skeptic about how Nokia will actually milk Qt. Let's remember TrollTech had a ready-to-used Linux phone (GreenPhone), based on QTopia which does not depend on X11. But the current trend in Nokia seems to be the S60 port for Qt. Why?

I must agree that it is desirable to have a common toolkit between Maemo and Series 60, since there are so many S60 phones out there... but let's be frank, how many S60 *developers* are out there? Very few, to the point that I bet PyS60 community is actually bigger. At least, you find PyS60 things way easier on Google than for C++/S60. How many S60 owners actually install 3rd party applications? Very, very few. Most people buy S60 phones because of the great hardware, way better than iPhone, but this reason for buying phones will not stand forever. The iPhone 3GS is out there already.

Worse yet, it feels like Nokia found an excuse to keep Symbian around and maintain the status quo. Extrapolating a little bit the observed facts, it even seems that Python (given what has been done to PyS60) is being abandoned because developing in C++ and Qt is soooo great. In fact Qt "fixes" C++ in several ways, but is still not Python. And Qt indeed has an internal Javascript interpreter, but it is *far* from allowing you to develop whole applications with pure Javsacript. Qt is great but it can not operate miracles. If it did, KDE would have taken over the world.

Another thing that I simply can not understand, is why smartphones newer than N93/N95 dared to show up without 3D hardware acceleration. N95 was so great by many because of that -- having 3d acceleration when nobody had it -- and I have even heard from many people that they are not going to buy a N85 or a N96 because some game they bought wouldn't run on them. I am not a hardware guy, I am a complete ignorant about how 3D acceleration influences device cost and price -- but I simply can't understand why Nokia didn't set this standard. It would be just for the S60 expensive smartphones, not for the 1208. (N810 coming without OpenGL was a mistake that came from the same source, I guess.)

Some people say that "Nokia can always make money selling cell phones for poor people". I am not sure; at least in Brazil the low-end phone market has been taken by LG, Samsung and other manufacturers from Asia, which make that pink-and-pretty-but-kitsch phones what we'd buy for a 17-year-old mistress. Nokia low-end phones are getting definetively scarce in cell phone stores, even though they *are* better.

And, in time, even poor people will want smartphones. CRT televisions simply don't sell anymore here; even poor people will buy LCD TVs (and stainless steel big and beautiful fridges) even if it makes no economic sense for them. The same is happening with other consumer electronics. Who buys a cell phone without a camera these days? So, the smartphone will eventually become the only kind of "phone" around. </john_dvorak>

So, wrapping it up:

* Kitsch phone market has been taken by Asian manufacturers, and this kind of phone will eventually disappear

* "Business" people are using Blackberries and will probably jump the Palm Pre bandwagon. Palm still has a lot of "friends" out there, and Palm development community is bigger than most people think.

* "Cool" people have bought iPhones

* GNU/boring people, a niche market, will probably go for Android phones

So, what's left for Nokia? Currently, not even the GNU/borings can be satisfied by any Nokia product (though Maemo 5 will be "almost" a cell phone.)

I have an opinion about Nokia should do. I am not a business executive but I am a developer and I know a bit about platforms, and why they become popular or not.

* It's the developers' community, stupid! A platform is as good as the applications made for it. A new platform does NOT need to follow 100% of a established standard. It just needs to MAKE SENSE, and to have good APIs, SDKs and documentation. Making a good platform is not easy, but Palm has done it twice, so it is not impossible. And UNIX/Linux is out there to provide a good basement. Just don't make it utterly difficult and confusing like Symbian just because 16-bit mobiles needed applications to be that way. Also, take the opportunity and don't make things like secret APIs that every non-trivial application must use.

* There is no time to create an operating system from scratch, so it's gotta be Linux or Symbian. Neither Symbian nor Linux can compete head-to-head with iPhone OS, so don't even try. The alternate strategy is to offer things for "non-cool" people. A system that is open, developer's-friendly, and will find its way into many use cases, even if it is not flashy like an iPhone. Macintoshes continue to be a niche, after all.

* Dump Symbian APIs completely. Take the opportunity and dump Symbian kernel altogether. It's utterly proven that Symbian kernel has no magic powder trapped in it, and everybody else is doing well with UNIX kernels. (If Symbian were so good, Series 40 would have disappeared already.) Arguments about sunk cost are just for governments.

* Make Maemo happen, perhaps making some bold changes in its stack, like removing X11 or using it just as a display driver. Weld Qt into Maemo, so Qt *must* be used, even if it is the only option, to avoid that Linux thing "oh-you-have-3490-toolkit-options-but-no-one-is-actually-good-and-well-integrated-with-environment-but-YOU-HAVE-FREEDOM-MAN!".

* Given there are so many million Nokia smarthones out there, make them work for you. Offer a Maemo alpha for, say, N95. It doesn't even be compatible with more than one model. A lot of brave developers will like to test it. N95 is best because it is "old" but feature-packed and can be bought cheaply on eBay. And a N95 with Maemo can still be used as a phone, while N810 is deadweight that nobody carries around. I won't buy a new and expensive Maemo hardware just to help to test it; I'd rather buy an iPhone with that money, sorry. But I'd buy a N95 for that.

* Take the opportunity and compile Qt to use OpenGL backend only. Put 3D acceleration hardware as a platform requirement. If the factory UI comes out ugly, at least the talented developers have the tools to do better in their own applications.

* Take a really good team of UI designers and developers, lock them in a convent and don't let them exit until they come up with a really nice UI.

* Pretty please, commit to interpreted language support. Stop handling Python, as a concession made to silence noisy developers. If you prefer Javascript to Python, that's ok, but Javascript must be enabled to write whole applications; adding widget support is just copying Apple. Make it better than Apple, going beyond Javascript and not labeling interpreted languages as a "just for widgets" thing.

* I respect the *idea* of offering Qt for S60 as a bridge environment. But I guess that almost nobody will use it. Like OpenC, Qt does not free the developer from the infamous Symbian SDK (and Windows!), which is an even bigger problem than the API. I'd dump this effort too. It hurts to say that, because the port makes sense in principle, but now I am thinking about better R&D resource usage.

* I agree that some kind of code signing is necessary for cell phone applications which are made available "for the whole world", but Symbian Signed is infamous because it wants to extort the developers, while it should milk the customers. Also, it negates free access to capabilities even on developer's own phone! There is no reason why a developer should not be able to install a full-capability application in his own phone, or deploy it for a specific set of IMEIs. Take the opportunity and make it friendlier than Apple; listen to developer's complaints and do better.

* Make money by selling good hardware with decent software. Take these hypes like Internet stores etc. with a grain of salt. I believe that things like Apple Store are fit in an environment where there is a good hardware, with good operating system, and happy developers. Apple Store just closes the circuit while enforcing code signing (in a way that developers don't feel extorted.) iTunes music store happens because there is a good iTunes and a marvelous iPod to connect with. Ovi won't make Symbian look good, however.

* A shrink in product line may be in order. I am actively interested in Nokia N-smartphones and I must say I am permanently confused about the features of every one. We have N85, N82, N95, N96, N97... each one is best in a single thing. I already learnt that N82 has the best camera, but the rest, I don't know.