Hi, I’m Satu Dahl, editor in the Symbian Technical Communications team, and I’m pleased to let you know that we’ve now published the long-awaited ‘Porting to the Symbian Platform’ book by Mark Wilcox and a team of expert co-authors: Ivan Litovski, David Caabeiro, Paul Todd, Jo Stichbury, Gabor Torok, Gabor Morvay, Vinod Vijayarajan, Lucian Piros, Lauri Aalto and Will Bamberg.

Symbian is (in)famous for its special dialect of C++. However, over the last few years a lot of effort has been made to allow developers to write standard C/C++ and POSIX compliant code for the platform. There are also several popular open source libraries available, including a Standard Template Library implementation.
Code for most of these can be found in the Generic OS Services package. The move to use Qt as the native application framework continues the trend to make Symbian an ever more open source and porting-friendly platform. The recent post from Paul Beusterien shows we’re also trying to align our tools strategy with this same philosophy.
If you want to write mobile applications without the idioms of Symbian C++, have existing software assets that you’d like to re-use on Symbian devices, or are an open source developer still waiting for an open Linux-based device to gain significant market penetration, this is the book for you!
The book can be purchased from Amazon or Wiley website and Wiley will also be selling it at SEE in October.
We have a created a Wiki page for the book where you can find a sample chapter, detailed table of contents and other useful information.
Happy reading!


Given my answer to what can Symbian foundation do to help the platform ( http://blog.symbian.org/2009/09/18/enabling-communities/#comment-3998 ). I think it would be great to see if Symbian.org could take a page from Chris Anderson and make some form of this book Free. Many would still buy the shelf reference, however other may take their existing apps for other platforms and start a successful port if they had a e-copy of the book available for free.
Andy, I suppose much of the information is already “free” in the wiki section of the developer.symbian.org and other sites (ie forum.nokia.com).
Remember, open source software development should be “free speech” not “free beer”.
Hi Kensai, Andy
You’re correct, there’s a lot of the background to the book already available for free on the wiki (see http://developer.symbian.org/wiki/index.php/Porting_to_the_Symbian_Platform for the book’s wiki page, which includes a link to the sample chapter, and the Porting wiki category e.g. http://developer.symbian.org/wiki/index.php/Writing_portable_code_and_maintaining_ports).
We think providing books for free is very much in the spirit of openness and have a number of initiatives in the works to provide free books. Satu posted a blog about this previously http://blog.symbian.org/2009/07/01/open-developer-books-from-symbian-foundation-and-the-developer-community/
We hope to start up a number of future wiki book projects too, since we’re finding the Python book project has picked up momentum recently. You can find the project here: http://developer.symbian.org/wiki/index.php/Python_on_Symbian_TOC
The wiki books will eventually become print books along the free eBook/Espresso book machine model. If you’re interested in contributing to our ongoing projects, please let us know here: http://developer.symbian.org/wiki/index.php/Contribute_to_Symbian_Books
Thanks!
Jo
Hi Kensai, Andy
You’re correct, there’s a lot of the background to the book already available for free on the wiki (see http://developer.symbian.org/wiki/index.php/Porting_to_the_Symbian_Platform for the book’s wiki page, which includes a link to the sample chapter, and the Porting wiki category e.g. http://developer.symbian.org/wiki/index.php/Writing_portable_code_and_maintaining_ports).
We think providing books for free is very much in the spirit of openness and have a number of initiatives in the works to provide free books. Satu posted a blog about this previously http://blog.symbian.org/2009/07/01/open-developer-books-from-symbian-foundation-and-the-developer-community/
We hope to start up a number of future wiki book projects too, since we’re finding the Python book project has picked up momentum recently. You can find the project here: http://developer.symbian.org/wiki/index.php/Python_on_Symbian_TOC
The wiki books will eventually become print books along the free eBook/Espresso book machine model. If you’re interested in contributing to our ongoing projects, please let us know here: http://developer.symbian.org/wiki/index.php/Contribute_to_Symbian_Books
Thanks!
Jo
Is there any help for porting drivers/kernel side code?
Hi tl
If you’re in a Symbian Foundation member company, you’ll find the Symbian^3 Product Developer’s Reference library has some information about base ports. Here’s a link to the top level docs: http://developer.symbian.org/main/documentation/reference/s%5E3/doc_source/guide/KernelandHardwareServices/index.html
Unfortunately nothing about porting drivers directly in the book. It is focussed on middleware and apps only.
I’d like to add some more information on porting device drivers to the wiki in the not too distant future. The base porting materials tend to assume you’re writing new drivers, but in many cases a driver for Linux or some RTOS already exists.
There’s also a problem there with examples. Most open source device drivers are for Linux and available under the GPL. Since the GPL is incompatible with the EPL, we can’t port them and use them on Symbian. Any suggestions for open source drivers that would make good example ports? Otherwise we’re likely to end up with some noddy tutorial examples that don’t reflect a real driver port. Perhaps a silicon vendor (say TI
) could release an interesting (but non-sensitive IP content) driver for Linux under a BSD license or similar?
I applaud making it as easy as possible to port applications from other platforms to Symbian (hopefully Google and other vendors continue to find this easier and easier).
I also hope that making Java applications work is not forgotten with the focus onQt. Java is not for every application, but for many Applications, they can be an inexpensive and easy way to get apps to the Symbian platform. I have noticed that Java Interpreter has been broken out of the OS and is now able to be updated independentely in newer versions of the OS. I think this is a great idea and hope that this sort of thinking continues as well as Symbian working with the Software Industry as a whole to create more standardized APIs for phone features (i.e. GPS, voice to text, navigation, etc…0 so that Java can still be a viable option across platforms.
Java on Symbian is busy having its UI components re-written to use Qt. Java can’t be part of the platform because it isn’t free for device manufacturers, so we can’t give it away, but I understand that Nokia are contributing as much as possible of their Java solution, excluding the VM of course.
However, this isn’t relevant for the book, which is specifically about development in C/C++. Indeed, the whole point with Java ME was that you shouldn’t have to port at all, although most would acknowledge that this didn’t work out perfectly.
@Mark, handling GPL / EPL licensing issues sounds like a whole topic in of itself!
My guess is that given the structure of a lot of the ‘generically interesting’ Linux drivers I’m not sure whether many Si vendors will own much more than a relatively thin platform / machine layer
@tl – Oh dear, that could be a major flaw in that plan. In which case, why the big binary blobs in the BSPs? Maybe a FreeBSD driver would suffice, if there’s one for a suitably similar bit of hardware to something used by a board we can run Symbian on.
Mixing GPL and EPL is very simple – you can’t (or technically you can but you can’t legally distribute the resulting combination unless the GPL code is application level only such that the EPL code is covered by the “system library exception clause”), that’s my reading of the licenses and existing commentary on this issue anyway although of course IANAL.
If you didn’t write the whole driver, you can’t port it from Linux to Symbian anyway, only the bits you own, since the ported GPL’d parts would be a “derivative work” and subject to the GPL. As such, given your last statement, perhaps “porting drivers” isn’t such a useful topic after all?
Big binary In the Symbian BSPs? The Symbian HAIs typically need you to write more stuff.
Subjectively, Linux has a development model which is much more hands on with respect to drivers. It makes sense to evolve appropriate hardware adaptation layers when you carry a lot of platforms in your source base. The lack of a hardened compatibility layers in Linux also helps to optimize this layer – and the price of this lack of compatibility actually helps over time. It isn’t always nirvana, but is (again subjectively) better. Guess what I could say about SHAI?
Yeah I had the same doubt about whether porting is needed, however, people (especially with significant ’specific’ 3rd party IP) still need to write largish drivers or kernel side code and they’re more familiar with Linux idioms. Also, even if you have an adaptation layer you’ll still often have to debug or enhance in that part of the code too.
Thanks for the feedback, still an idea worth pursuing then. I guess it might even be worth porting a Linux driver (plus some adaptation from a Si vendor), even if the result is GPL and can’t actually be used as part of a distribution…
I’d be very interested in what you’ve got to say about SHAI. I’ve noted that the SHAI interfaces are intended to be in beta and not fixed at all for the first releases until experience helps shape them before they are hardened. I’ve already wondered if hardware might actually change fast enough that they never really harden. Even so, I think having a (much more) common adaptation interface for all vendors on each release will benefit the platform as a whole. Probably this is a discussion best held elsewhere – a discussion thread on the forums perhaps?