Symbian Introduces Open Source Release Plan
volume4 brings news that David Wood of the Symbian Foundation has made a post detailing their plans for a release schedule, with new versions due out every six months. We discussed Nokia's acquisition of Symbian for the purpose of open sourcing the popular mobile OS last year. Quoting:
"There's a lot of activity underway, throughout the software development teams for all the different packages that make up the Symbian Platform. These packages are finding their way into platform releases. The plan is that there will be two platform releases each year. ... Symbian^2, which is based on S60 5.1, reaches a functionally complete state at the middle of this year, and should be hardened by the end of the year. This means that the first devices based on Symbian^2 could be reaching the market any time around the end of this year — depending on the integration plans, the level of customisation, and the design choices made by manufacturers. Symbian^3 follows on six months later — reaching a functionally complete state at the end of this year, and should be hardened by the middle of 2010."
Sounds like a response to Android, but a little late.
Other than install base for phones, what advantage does an opensourced Symbian have over Android?
There were rumors of Android and Symbian merging for a while, but it seems as though Symbian has taken to cheap heckling.
"He may look like an idiot, and talk like an idiot, but don't let that fool you. He really is an idiot." - Duck Soup
I have a Symbian-based phone made by Nokia. What apparently happens with these is that eventually a new version of Symbian comes out, new phones ship with it, but the people with older phones are stuck with the old Symbian version. New applications will only be written for the latest Symbian version, and thus the older phones become pretty much useless over time - no matter how much potential they have hardware-wise. From what I've understood this is pretty much what happened for example with the move from S60 2nd edition to S60 3rd edition.
My phone is S60 3rd FP1 (Symbian 9.2), and there already exists S60 3rd FP2 (Symbian 9.3) and S60 5th edition (Symbian 9.4). So I guess my phone will become useless soon.
Will this Open Sourcing in any way help me with getting a longer lifetime for my phone? Or do I need to keep buying new phones just to get the latest Symbian version?
If anyone here's interested in coding for an embedded operating system, I'd strongly recommend running the hell away from Symbian. It's awful.
Let us gloss over the lousy documentation (in which it's impossible to find anything, and where there are no links between chapters --- so, e.g., you can't follow a superclass chain up through the S60 chapter into the Symbian core chapter). Let us also gloss over the lousy build system (a horrible maze of crappy perl scripts, which, apart from being so hideously slow that our project takes the best part of ten minutes to build even if no source files have changed, doesn't allow you to have two source files in the same project with the same name. Even if they're in different directories). Let us also pass quickly over the debugger, trying not to make eye contact, that's unreliable, will only let you debug one task at a time, and which tends to crash if you do the wrong thing.
No, let's talk about the language.
You program for Symbian in C++. Good, you might think. No. This is C++ with all the good bits taken out and replaced by badly designed bits.
Let's take exceptions. There are no C++ exceptions. What there are instead are Leave codes; a macro-and-longjmp framework that replaces exceptions which allows you to throw an integer value and then catch it further up the call stack. Unfortunately because this is implemented without compiler assistance it doesn't unwind the stack frame, so destructors of locals aren't called! All is not lost, though: there's a complicated and easy-to-get-wrong manual cleanup stack on which you can push stuff that you want the system to free for you in such situations. God help you if you forget to push something, or pop something at the wrong point...
Let's take strings. There's no standard string class, of course. What there are are an even dozen different classes for storing strings in different ways: on the heap, on the stack, constant strings owned by someone else, etc. There are some superclasses that will allow you to pass references to these things around without having to worry about the implementation.
Except... it doesn't actually work. The various different string superclasses are incompatible. You can cast a TDes (mutable abstract string) to a TDesC (immutable abstract string). You can't cast a TPtr (mutable pointer to mutable string data) to a TPtrC (mutable pointer to immutable string data). Some of their system functions require you to pass in a reference to a concrete string type, so god help you if want to use a different implementation. You can't use certain implementations in certain contexts. The result is that for some operations you have to allocate a fixed-size buffer on the stack, call a system function to populate it, then copy the buffer into another buffer on the heap, because the buffer-on-heap object is immutable! Despite being resizeable and assignable!
Things get even worse when you want to store multiple strings. There's a labyrinthine maze of string array classes: arrays of fixed sized strings, arrays of descriptors, arrays of pointers to strings, arrays of pointer strings (which are different)... add this to Symbian's bizarre convention where a data storage class allocates memory in its constructor but does not free it in its destructor (which means the user must manually Close() method on all member variables) and simply figuring out who's responsible for freeing a particular object becomes non-trivial. I once spent three days trying to find out how to store an array of strings without leaking them. I kid you not.
(To be fair, they have been trying to fix this with OpenC++, a new programming environment based on, like, standards. It doesn't actually work. The interface to Symbian C++ code is patchy and poorly specced which means it's only really useful for running chunks of third-party code in a sandbox --- you still need to write your actual application in Symbian C++.)
Now lets move on to the OS proper. Like the languag
Symbain C++ peculiarities is not a critical issue, they can be adapted to. But Symbian Signed is a real bummer, especially for small/indie developer. Pay for each attempt to sign binary + pay yearly for publisher ID. And self-signed application, not only limited in functionality, but will not be allowed to Nokia Ovi application store.
You dont even understand what you are telling the world, Symbian should be using GCC targeted for arm, thumb. That way other far more competant people would be worrying about the compiler, and you could cross compile a decent CVS like git or subversion, on the platform.
Qt would compile
gdb would work
You dont begin to get it. All these 'decisions' were driven by the wish to develop a proprietary lock-in product that actually failed in the business sense. Symbian and most other vendors in the embedded space do not have the resources to compete with the FOSS world, neither do Apple. Nokia, and M$ have the money but not the High Level Architects to compete in a pro-active and agile way, they are forever in catch up.
The common sense analogy is the free market -v- directed economies; the former always win, see the old Soviet Union, not because of idiology but because, in directed economies everyone lies and those at the top do not have the information to compete in an agile way.
In the free market people try different things and those that work get funded.
And before politicised people jump in and talk, for example, about GM in the USA, they would have failed long ago without repeated government assistance, all in violation of WTO rules.
This is one of the reasons the rest of the world will not tolerate the rebuilding of the American economic hegmony and many Professors in MBA programs will have to find gainful employment.