Ever since I bought a Nokia N95 8G, I have been thinking about looking into some Symbian development. Could those with experience developing on the Symbian OS like their feeling towards the platform? Is it hard to get started, are the tools mature etc?
Hey Jimmy,
Just as a heads-up, we try to avoid subjective questions, as per the FAQ
What kind of questions should I not ask here?
Avoid asking questions that are subjective, argumentative, or require extended discussion. This is a place for questions that can be answered!
Now you are new, so it's OK :)
In terms of your question, I would say:
- Who gives a crap if its hard, if you want to do something, roll the sleeves up and do it, the harder it is, the more rewarding it will be!
- I'm not a Symbian OS dev (once I get a PDA I may get into .NET CF), but I would say that mobile apps are really starting to pick up, many apps are now being released with a mobile app to keep people connected and using your software. The more people using it = more business!
- Looking at the Wikipedia page here I would say there are plenty of options for IDE's and platforms to actually developing against, awesome!
I worked on the OS development side of Symbian OS for a little over a year. The general feel of the system is that it is a bug-ridden undocumented piece of crap. The only positive thing I can say is that the OS code itself follows internal coding standards relatively well. The standard CodeWarrior IDE was garbage (although Carbide, which came out as a replacement recently, is pretty decent but the free version was very barebones and several versions behind, at least some time ago). The emulator was barely usable - it ran slow, differed from the actual device and crashed or hung often.
If you want to develop on Symbian, be prepared for a lot of trial and error because there is almost no documentation available, even on the core concepts of the environment. As a fictional example, the basic documentation for the method "JiggleThingy()" would be "Jiggles the thingy". Of course, there were many occasions where the implementation was quite different from the documentation, too.
An aquaintance ran a mobile software development company in Asia for a few years and developed for pretty much all of the platforms. He told me that Symbian was the worst of the lot - it caused far more headache than any other mobile platform.
This is all about C++ development. Developing for Symbian using Java offers so limited functionality that I have not heard of anyone that actually has done it.
I recommend Python for S60 as good way to explorer the capabilities of the Nokia S60/Symbian platform. It's easy to use and comes with a powerful setup of APIs. There is also a book that covers a lot of fun examples. One nice thing about the Python SDK is that you can run code on the phone interactively via a console on your PC.
I guess I could answer some of the subjective sides of the question as someone who has worked on Symbian OS for quite a few years ;) However I won't, I'll try to stick to what I see as some facts and useful information.
The phone in question runs the Nokia Series 60 UI (these days called s60). Symbian phones have traditionally been split into the OS bit (Symbian OS v9.1, 9.2 etc) and the phone vendor buys or develops their own UI. A particular version of s60 will run on a specific version of Symbian OS.
So a good place to start for development on your phone is Forum Nokia: http://www.forum.nokia.com/main/resources/technologies/symbian/documentation/getting_started.html
This will cover the UI bits and pieces. I should add that UI vendors do perform a lot of OS customisation themselves (with varying degrees of self-control/quality) so differences in API's especially involving hardware can become esoteric.
Symbian itself does provide a decent level of quality of documentation, not up there with Microsoft but better than a lot of open source offerring. A good reference is the Symbian Developer Network:
Regarding tools. The standard development environment these days is Nokia's Carbide platform which is based on Eclipse, I think it is fair to say that if you can put up with Eclipse you'll be fine, I you can't... well... command line time for you.
Carbide has on-device debugging and includes the compilers for PC and ARM (GCC-E) targets.
Most app development is done using the Symbian Emulator which will be part of the SDK for your phone from Nokia.
When you are ready to put the app on the phone, you need to look at Symbian Signed: http://www.newlc.com/new-symbian-signed-processes-are-now-available A lot of people have had reasonable complaints that it can be a bit confusing, but as a non-commercial developer I believe "Open Signed" is supposed to be the easiest.
I've done some Symbian C++ application development, it is quite difficult to get your head around, and it's particularly hard if (like me) you have to switch between multiple development environments (Palm, though not so much now, Windows Mobile, desktop Windows, THEOS, Linux, HTML/CSS).
But I've heard the "no documentation" thing raised in a lot of places and I didn't find that to be true at all. In some cases, there was too much documentation, and what was there was too complicated for a newbie. Sample code was the same - there's loads of it, but it's hard to split out which parts of the code control which feature.
I know that once you get into it, though, it's quite straightforward to build some pretty impressive apps. There's a good community at Forum Nokia (mentioned above) and I get some inspiration from talking to some of the devs they wheel out at the Smartphone show in London. If you can spare the time, it'd be worth your while going down there to have a look as you're not too far away, it's on at the end of October. Not a massive show by any means, but worth a look.
Symbian is a little different to what you may be used to perhaps, but it is a stable platform (200+million devices out there) and the tools are mature.
Carbide is very good especially if you've used eclipse before.
A first place to look before you start Symbian programming is here: http://descriptors.blogspot.com/
Descriptors are Symbians strings. They're very efficient, however a little different to many other string implementations.
The reputation of Symbian OS C++ development as being unfriendly (to say the least) is undeniable. On the other hand, the platform is also extremely powerful.
If you only want to code personal programs or little freewares/sharewares, another platform could be better suited to you. If you are trying to find an operating system that can sustain a professional career in software development, Symbian, J2ME and, to a lesser extent, linux are your best bets.
The documentation and tools of Symbian are evolving with every new versions. Using Symbian OS C++ is getting incrementally easier (but it still has a long way to go).
A little relevant advert : Symbian Press latest effort to introduce developers to the Symbian ecosystem.
http://www.quickrecipesonsymbianos.com
It can be used as an 80 hours step-by-step course.
Have a look at NS Basic/Symbian OS. It provides a Visual Basic like environment. It's pretty easy to use and gets you around a lot of the problems that Symbian OS causes. Apps will run on both S60 3rd Edition and UIQ3 devices without change.
We've done a reasonable amount of S60 programming in our organisation, plus a lot of BREW, and bits of just about everything else.
- The S60 tools are pretty good compared to a lot of platforms I've used. For example,
- BREW's tools are a disgrace.
- The S60 platform is pretty powerful. You can do just about anything (though you may be restricted by signing requirements). Java isn't even worth making the comparison, you are so sandboxed you can't do anything...
- S60 Signing is ok, though we have been mucked about a bit occasionally (who hasn't...)
- The learning curve is very steep. Fundamentally, it's different. If there are two ways to do something, one of them standard, then Symbian will have picked the other one.
- The documentation, particularly in FP2, is not that bad
- The build system is as bad as everyone says it is
Qt for S60 is coming out pretty soon, there's already an unsupported pre-release available. You might wish to invest your time there, since it's likely going to be the favoured UI for Nokia in the future.