Nokia has bowed to international pressure and agreed to end the cruel and unusual practice of programming natively for the Symbian OS. It still wants developers to target Symbian, but using the more humane Qt APIs instead.
Nokia has also torn up the OS roadmap, and will speed up the delivery of new functionality to users in chunks, as and when it's ready, instead of in milestone releases. In less prominent statements, Nokia has clarified what had become a very confusing development picture.
Eighteen months ago, the Symbian Foundation's David Wood (who has now left the organisation) announced that Nokia's Avkon code, the UI for S60, would be deprecated and a widget library called Orbit for Qt would take its place. A comment left on Nokia's official blog here, says it is dropping the Orbit in favour of Qt Quick. Qt Quick is a declarative language for describing user interface layout. But Avkon will be retained for backward compatibility.
Sun's Java boss Rich Green joined Nokia in May to try and sort out the mess. It's much less of a mess now, and the decision to step off the milestone treadmill should fulfill the long-standing criticism that Nokia works too slowly. That's a valid one - it's almost two years since Nokia acquired Trolltech, and shortly afterwards declared Qt as the API to write to across its two platforms. Only last month did developers receive the tools with which they could (kind of) do the job.
Elsewhere, as we reported, Nokia is taking an axe to its Ovi and Symbian development, promising to streamline it and implying that more work will take place in house. There are cuts, and the future of the Foundation must now be debatable.
As for the Symbian APIs being cruel and inhumane? After I described Symbian as "good system design", several people emailed to tell me that I was very, very wrong.
One experienced industry source pointed out this example.
"Symbian is the only platform that has to spend one day teaching people how to use strings before they can code in it. The approved method is that you create an
HBufC (a Heap allocated, BUFfer that is Constant), then
Call Des() on it (which returns a
TPtr - a pointer to a writable descriptor)," he says.
"So writable strings in memory, and constant? Blows your mind." ®