Symbian Source Code

thunderbong | 447 points

I used to work for Nokia Research during the mid 2000's. I remember how hard it was to get the source code for this back then as internal employees... One of my colleagues was working on a research prototype that needed tighter integration with the system than what you could achieve with a deployed app. So he needed the source code and the build environment for the OS.

And for that he needed quite a few people to agree and he had to sign an NDA (again, as an employee, not a subcontractor!). Then, of course the whole thing was pretty hard to make work on his machine.

Later on I did some work with the (public) SDK as well. The build system was based on the GNU toolchain. More precisely, a windows port of the GNU toolchain, so it would only work on windows. But even on windows it had a lot of warts (because these tools were build for unix in the first place, so e.g. drive letters and back slashes were problematic). As far as I can remember, a lot of the build tools were written in perl. There was some script to generate makefiles for your project and even that, as far as I can remember had a front end script. (I remember something called MAKMAKE.BAT, but I may be wrong.)

The whole thing was a pretty frustrating experience. And we haven't talked about the libraries, the OS (cooperative multi tasking, everything is a callback) or memory management ('descriptors' that made trivial string operations a pain). No wonder it couldn't keep up with android and ios. Now, to be fair, the OS was based on a core and concepts created in the mid 1990s to allow software development on devices with 64k of memory or something. But even with several megabytes of RAM (so the early 2000s), that programming model was obviously way too constraining.

atleta | 2 years ago

It is odd to see people talking about how Symbian was so early on, in the smartphone era.

It's considerably more mature than that. :-) (For the avoidance of doubt: this is a good thing.)

Symbian was a rebrand of the Psion 5 and 5MX OS, which was called EPOC32. It also ran on some other hardware, including the Ericsson MC218, Oregon Scientific Osaris, and Geofox One.

The first EPOC32 device was the Psion 5 in 1997:

http://www.computinghistory.org.uk/det/5300/Psion-Series-5/

Succeeded by the 5MX:

https://uxdesign.cc/psion-pda-how-does-it-look-today-327e01b...

https://thenewstack.io/retrocomputing-in-modern-times-redisc...

In other words, this OS was out there in the real world, in use by hundreds of thousands of people, five years before the first Symbian device (Nokia 7650).

lproven | 2 years ago

If anyone's interested here's [0] a Mediafire archive of Symbian developer sources of all kinds, from compilers and SDKs to manuals.

[0] https://www.mediafire.com/folder/79jhy594xb3uk/Symbian_Devel...

HidyBush | 2 years ago

Symbian was the era that trains you to never be afraid of debugging the hardest problems and understand how big of a blessing documentation is.

A few examples of my childhood experiences making a game for Symbian:

1) Debugging that one problem which would cause the whole OS to crash

The crash log didn't help cause it wouldn't flush the logs to disk in time. My under developed concepts of multi-threading didn't help much either not that I know much more today 10 years later.

2) Overriding OS memory safety to read accelerometer data from memory in phones that didn't have APIs for it

The patience and creative thinking you learn tackling with such high levels of uncertainty and painful problems is incredible.

I am not aware of how engineers learn engineering (I am self taught) but this kind of patience and endurance does shape a lot of my engineering skills today.

umarniz | 2 years ago

Anyone else feel sad coming across something like this? So many hours spent for a product that is largely forgotten. Glad to see the pieces out in the open though.

substation13 | 2 years ago

There's a great (and insanely detailed) book on the rise and fall of Symbian by a guy who was there for most, if not all, of the journey:

https://www.amazon.co.uk/Smartphones-beyond-Lessons-remarkab...

When I say detailed, I mean detailed... David Wood seems to have copies of every email and memo he ever wrote when he was there... and he doesn't hold back when it comes to sharing them.

Required reading for anybody seeking to build a platform business.

gendal | 2 years ago

I have to cite Nokia N8 [1]. It had USB otg, mini hdmi, FM receiver, FM transmitter, MicroSD memory card, TV out and Nokia later released a TV receiver adapter for it.

A friend of mine had one. He said he spent a few days in the countryside watching films he copied to an SD card on an old tube TV with it. He also told me how he could play MP3 files and listen it on the old FM radio that was available in the house he was in. It was also possible for him, once in a city a few kilometers away, to answer e-mails and read news using WiFi. You could just plug the mini HDMI to a modern TV, plug a keyboard on it and use a Bluetooth mouse to get a fully functional computer where you could even write and run python programs. All this at a time when basically nobody even talked about "convergence".

We've been walking backwards since then. These days the only devices able to give similar power are the still unpolished linuxphones. That's why we should support them or else we will continue walking backwards.

[1] https://en.wikipedia.org/wiki/Nokia_N8

marcodiego | 2 years ago

Spent some time at Nokia when I was fresh out of university. The thrill of getting "hello world" on the screen in Symbian/S60 is not something I'll ever forget. Took ages of battling CodeWarrior and I think even a simple app was something like 6 files, but seeing code I wrote running on a phone in 2004 was pretty awesome.

kevsim | 2 years ago

Looking through some of this code is a painful reminder of the time when lots of people thought XML was a good idea.

<math result="sf.spec.sbs.numberofjobs" operand1="${env.NUMBER_OF_PROCESSORS}" operation="" operand2="2" datatype="int"/>

instead of

numberofjobs = NUMBER_OF_PROCESSORS 2

Talk about a headwind to productivity.

oofbey | 2 years ago

A lifetime ago, I spent lots of long hours on reversing Symbian apps, writing tools and tutorials for it. Any old souls here from the reverse engineering community of that era will recognize my username. :)

ARTeamer | 2 years ago

Oh, cool. I remember trying to write native apps for my Nokia 5800 and the SDK being... not very good. Also I lacked experience and a sufficiently powerful computer. Also I don't think the thing was documented much, either that or I didn't know where to look for the docs. And the bizarre class naming scheme. And the bizarre dozen types of strings. And the most bizarre custom error handling mechanism (iirc it was called "leave") instead of C++ exceptions.

I do wonder if this code is enough to build a working firmware image for a Nokia phone, but most probably some of the required parts are missing.

grishka | 2 years ago

I worked on Symbian aka EPOC around the early to mid 2000. Trips down to London to visit their offices. I'm still connected to some of the guys on Facebook from that time.

It was one of my first roles outside of Uni, boy getting exposed to everything from low level system software and kernels to application development, and API creation. I learnt so much. Much of which, in principle is still valid.

I learnt a lot from the other developers and engineers a met.

Remember sitting a room with David Wood, where we talked through the creation of a book about Python development / entry level development on the platform. I still recall David's view that we should use the best, easiest, and also most expensive tooling in the book. But that seemed to lock so many people out of the ecosystem.

Anyway - to many memories, and so much I learnt. Meeting PhDs, and Grads today who struggle with how C/C++ works, I'm really lucky I got the chance to work on it when I did. And now I've a craving for a Series 5mx... ebay here I come...

mc_woods | 2 years ago

Am I the only person who saw this post and figured that it was the source code for a Sybian machine and rolled my eyes, thinking, "How sophisticated could it be, really?"

dustyquince | 2 years ago

No LICENSE files. Is this official or a leak?

networked | 2 years ago

I was looking for their implementation of T9, but haven't found it yet. Would that be in here? Does anyone with more context or Google-foo know where it is?

leafmeal | 2 years ago

Fond memories of running my day to day (email, diary, expenses, task management) of a Psion 3a with 3xAA batteries and a modem/cable to my Nokia mobile.

nickdothutton | 2 years ago

Heh. Worked on that in a previous life.

teknolog | 2 years ago

A high school friend and I decided to try and port the .NET Compact Framework to Symbian OS, specifically Series 60. The company (https://web.archive.org/web/20100112091803/http://www.redfiv...) was based in Johannesburg, South Africa and although we raised funding, we just took way too long.

We were lucky enough to be able to bootstrap some things with the Mono/Xamarin .NET implementation. Initially we created an interpreter but then created a full JIT compiler. It was not easy, to say the least, getting things to work on that platform.

What also didn’t help was the level of support we got from Symbian/Nokia; our project/startup was mostly met with indifference. By the time we had a viable, mostly functioning .NET Compact Framework v2 running the writing was on the wall vs iPhone.

dusanbab | 2 years ago

Wow. I did a quick random sample of their code and it's really clean, which is especially impressive in the bare-metal domain.

zamalek | 2 years ago

For anyone wanting to play Nokia N-Gage games (S60? I forget), there is already a lengthy walkthrough and setup of how to emulate the games on Windows that is available on The Internet Archive; complete with a torrent/zip of all the games on the system.

antiverse | 2 years ago

This was what my team developed - a build system that worked properly with parallelism. I'm still very proud of it even though there were design issues, it was really quite innovative in its way and the only big mistake was to make it so Symbian specific:

https://github.com/SymbianSource/oss.FCL.sftools.dev.build/t...

t43562 | 2 years ago

This reminds me of those android tv boxes. Their spec is pretty good to run linux. Is there generic way to convert them to say arch/ubuntu linux?

pm2222 | 2 years ago

I remember FCA00000, a Spanish guy who would write articles in Spanish for a long lost ezine about the internals of Symbian.

bsnal | 2 years ago

Here are the release notes for Symbian kernel

https://github.com/SymbianSource/oss.FCL.sf.os.kernelhwsrv/b...

1998 - 2010

miohtama | 2 years ago

What a nice platform it was to use as a consumer, but terrible to program as a programmer.

Compared to iOS and Android development, Symbian was extremely hard, and iOS was much easy even with a whole new language (Objective-C, not the shiny Swift) to learn.

can16358p | 2 years ago

It feels like Garmin devices are still dependent on this era's tools. When someone asks me about issues with using my Garmin Edge 1030 for navigation, I often say it works fine enough but it is sort of like using a Symbian phone in the early 2000s.

btreesOfSpring | 2 years ago

Great to see the code up there on GitHub. So many cogent points made here. It brings it all back to me. What happened there from Symbian to Nokia and then Accenture ought to be taught in MBA programmes as a Greek tragedy.

magicloop | 2 years ago

Repo seems to contain personal data of employees. I won't post a link to it.

cja | 2 years ago

Wow, memory lane here. My first programming job was working on Symbian apps. I think I had a 1MB heap and something like an 8KB stack to work with. Good times!

tjstankus | 2 years ago

My first smartphone was a Nokia running Symbian.

DeathArrow | 2 years ago

wow this gives me nostalgia. Symbian was probably the start of the smartphones era.

jerrygoyal | 2 years ago

Is it all licensed as Eclipse Public License v1.0?

protomyth | 2 years ago

i miss epoc32 source

oflebbe | 2 years ago
Ste_Evans | 2 years ago