Random musings on mobile software development...
Sorcery-ltd | 07 August, 2008 11:45
Having quoted a Nokia employee in my recent blog post, saying that open sourcing S60 was like spreading manure out on a field, I thought I'd share my latest insight with you. I'm reading "Refactoring to Patterns" by Joshua Kerievsky; so far, it's excellent. While I was reading his description of an under-engineered system, S60 immediately sprang to mind - see if you agree:
"...While systems you've worked on may not be so gruesome, it's likely you've done some under-engineering. I know I have. There's simply an overwhelming urge to get code working quickly, and it's often coupled with powerful forces that impede our ability to improve the design of our existing code. In some cases, we consciously don't improve code because we know (or think we know) it won't have a long shelf life. Other times, we're compelled to not improve our code because well-meaning managers explain that our organization will be more competitive and successful if we "don't fix what ain't broke."
Continuous under-engineering leads to the 'fast, slow, slower' rhythm of software development, which goes something like this:
1. You quickly deliver release 1.0 of a system with junky code.
2. You deliver release 2.0 of the system, and the junky code slows you down.
3. As you attempt to deliver future releases, you go slower and slower as the junky code multiplies, until people lose faith in the system, the programmers, and even the process that got everyone into this position.
4. Somewhere during or after release 4.0, you realize you can't win. You begin exploring the option of a total rewrite."
So, first S60 phone released mid-2003 following fast and successful development project. S60 2.0 (2nd Edition) ships in the 4th quarter of 2004, a bit less than 18 months later. S60 3.0 (3rd Edition) ships at the end of the first quarter in 2006, more than 2 years later following a major struggle to add platform security and move to a new Symbian kernel. Will we get the next major release (5th Edition as 4th is skipped, supposedly because 4 is an unlucky number in some cultures) in our hands before 2009? And during this development Nokia are planning to completely switch the development model to open source and are clearly considering starting again, although they don't have time to write a new framework from scratch so they bought Qt!
Is this a fair representation of what's happened? Comments welcome!
Everyone is making a big fuss of the iPhone but it's at step 1 (the 3G version really doesn't add enough to be considered step 2 in my opinion), while S60 is at step 4. Are Apple going to do better, only time will tell.
Of course Joshua Kerievsky suggests a solution to this under-engineering problem - Test-Driven Development (TDD) and continuous refactoring. There are plenty of teams in Nokia and Symbian who are already using these practices. However, there's another issue that prevents major re-design that is specific to open systems - binary and source compatibility guarantees. The developers of the code can't refactor everything they'd like to because they don't actually know who else is using the interfaces and how; they've just promised not to change it. What's the solution to this? It seems the one we're most likely to get is parallel interfaces. Leave the old ones as they are and add new ones alongside them. Only add new features to the new interfaces so that developers eventually have to migrate anyway. This means we end up with an increasingly bloated code-base, carrying the remnants of old releases around almost forever (a bit like Windows really). Is there a better way? Or are all successful systems doomed to follow this course?
I'd love to know your thoughts on this.
Mark
Sorcery-ltd | 02 August, 2008 15:52
Another thing that is made possible by the Symbian Foundation, is for any member to submit source code and potentially get it released in millions of devices.
What do you think would be a good feature or component to add to Symbian devices?
I think an open license manager could be useful. The N-Gage application acts as a license (& DRM) manager for N-Gage games but there isn't a similar solution for the rest of the developer community. Securing your application can be costly and time consuming. Would it be a good idea to get a license manager that supported trial functionality and various activation schemes (type in code, SMS activation, connect to license server etc.) as part of the core OS. An advantage of this is that it could store all the relevant details in its private directory and these would then be protected by platform security and never removed, even if the application is uninstalled.
Obviously there would need to be some mechanisms to prevent spoofing of the server too! An open source project could potentially provide a license manager server, code samples for developers wanting to use it and guidelines for use to prevent your application from being easily hacked to remove the license checks. A server application you could host yourself on the internet and connect to via the license manager in the device could also also be part of the project.
Anyone interested? The first cut could make an excellent masters project for a good university student studying Symbian OS...
Just a thought. Comments and suggestions for features welcome.
Anything else you'd like to see included in the Symbian Foundation releases?
Mark
Mobile and embedded software developer. Loves technology and loves to help people.
RDF Facets:
qfnZtypeQUqfnTypeZBlogContentQ
qfnZtypeQUqfnTypeZCommunityContentQ
qfnZtypeQUqfnTypeZWebpageQ
qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX