10 comments

[ 34.6 ms ] story [ 1008 ms ] thread
It's not the good stuff. Symbian is fast and small, but it's difficult to get perfectly stable. As hardware got faster, it got more important that the foundation is rock solid.
Yet Mobian and postmarketOS are thriving for some reason. Why?
Well yes?

Symbian didn't die for no reason.

Developers mostly described it as a pain to develop to it

Symbian wasn’t just early, it dominated. But complexity, fragmentation and slow moves killed it fast once iOS and Android shifted focus to clean developer tools and unified ecosystems. It’s a reminder that early lead means nothing if you can’t keep devs on board.
Symbian was the last time a mass-market operating system was designed from scratch [1]. No Unix compatibility, no C API, everything optimized for a particular use case.

Unfortunately the timing was unlucky and the use case assumptions were short-lived. Symbian wanted a native C++ API, but the language in mid-1990s wasn’t great for embedded. So they reinvented everything from strings to exceptions to coroutines, creating a unique and clunky C++ dialect that nobody enjoyed learning and writing and which drifted further away from standard C++ as the language evolved.

And the other side of the coin was that Symbian was designed to squeeze every byte out of devices with 1 MB RAM and intermittent low-bandwidth networking. That’s what a viable smartphone looked like in 1997, but ten years later Apple and Google could just ship desktop operating systems shrunk down to mobile and assume always-on networks. Customers loved the products and Symbian’s efficiency advantages became more of a hindrance because nobody wanted the cheaper Symbian devices that did so much less (by the new smartphone standard).

Around 2008 Nokia acquired Symbian completely and tried to course-correct by ticking every box against Android. Symbian added POSIX and touch screen support and became open source. But there was no clear reason why anyone would pick it over Android at that point.

- -

[1] There’s Google Fuchsia, but it’s not mass-market in the same sense as Symbian which shipped on hundreds of millions of devices and had a real ecosystem of third-party native software.

I did Symbian programming back in the day. IIRC the Sony-Erricson P800. It was not developer friendly. The memory management model was hard to program and could crash easily. Also did some work with Nokia on the N60. I was working at Orange at that time and we had hired a contractor to integrate push to talk (because for some reasons Orange though push to talk would take off in Europe, lolol). I got a couple of free trips to Tampere to theoretically help Nokia debug this third party push to talk app. I seem to recall Nokia not being too enthused to work with some pushy American hacker who wanted to open a debugger and fix things. I remember that we had some nice reindeer dinners.

Early mobile is littered with dead operating systems. not really that surprising. PalmOS, Symbian, SaveJE, windows mobile, etc. not worth crying over.

Development was unfriendly because S60 supported running without virtual memory, so you had to be really careful releasing memory. I.e. it was targetting small CPUs. The wonky "cleanup" was a big part of this.
Symbian was as far as I know the last mass market open phone platform for developers.

You had Qt, JavaME and a lot of others framework to develop your apps. The old Skype was working perfectly on those devices, with full integration.

Then Google tricked us into Android because it was Linux and open source, Apple said no more Java the future is the web.

And now my bloated bank app developed in React Native or whatever won't start on Lineage and Graphene because of Play Integrity API. Also I can't access my homebanking in my web browser. Strangely I also can't find anything as good as the old Skype with the same features.

I am not saying I saw the trap at the time and Nokia and Sun might have turned evil too.

I programmed apps for Nokia Symbian devices a lot, and it was amazing just how fast the OS was. Not the UI, mind you, Avkon was pretty slow, but the kernel. Lightning fast.

The Active Object model was a bit tricky to learn, but once you knew what you were doing, you had "light threads" (that were not really threads) caring about your network, audio etc. very, very efficiently. I was in awe of efficiency of the kernel.

That said:

* the learning curve was basically El Capitan of all learning curves,

* the IDE called Carbide.c++ (a variant of Eclipse) sucked even more than regular Eclipse,

* on-device debugging was horrible, barely there,

* emulators were limited, a regular developer had no chance to debug many things such as audio or Bluetooth,

* build toolchains were obsolete (imagine using GCC 2.x in 2011, with all its inefficiencies and bugs),

* someone at Nokia decided that compatibility between devices did not matter and the Nokia world was so enormously fragmented (OS + UI) that releasing an application for all Nokias, even for all Nokias of one generation, was horrible, plus test devices were expensive.

Symbian OS kernel would work just fine today. The rest of the ecosystem was rightly abandoned.