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
Sorcery-ltd | 18 July, 2008 14:53
It's been a few weeks since the big announcement and I think I've finally digested it.
My fellow champion Gabor Torok has already collected a lot of interesting analysis but there are a couple of more recent links with inside perspectives that are worth a read. There's an interview with Nokia's chief development officer where the practicalities of opening the source and the motivation for the change are discussed. It's stated that as part of the move to becoming an internet company, Nokia wants to get out of the "plumbing business". I assume that means they want to reduce the engineering effort they put into integrating phone software rather than stop making devices all together one day...? There is also a conversation with a Nokia employee who has a rather less rose-tinted view of the move...
"S60 is costing us a load of money, since we have to essentially carry it on our own shoulders. Pretty much the only community around S60 is the community we pay to be there (a few lone, strong, awesome warriors notwithstanding)."
"I doubt that open sourcing Symbian is going to help in the community building though. There are two kinds of OSS developers: the guys who do things for fun, and the guys who do OSS because they are paid to do so. In order for an open source project to really flourish and take over the world, you need both."
Which is a concern that I share, although I am perhaps a little more optimistic about it. I'm not sure Symbian + S60 really needs to flourish and take over the world - it's already in the top spot, staying there is a slightly different game. I'll come back to that when I discuss licensing issues later. I thought this comment on the future Symbian Foundation code base was amusing (if a little harsh) but it also highlights one of the benefits of going open source, even if the only participants are paid by various network operators and device manufacturers...
"Spreading the manure out in the field where everyone can step on it does not necessarily make it better than keeping it in your closet. It does, however, make new things grow better. Still, I think this is a smart move. Open source improves quality by using the embarrassment factor. People suddenly sharpen up in their coding when they know their work could be inspected potentially by millions of people - even if nobody ever bothers to do so. And that, while it sounds insignificant, does actually go a long way."
One of the most important things in open source is the license...
I've been doing some of my own thinking too and one of the interesting things for me is the choice of license (EPL) for the foundation code. A quick check reveals that the EPL is incompatible with the GPL, that is, combinations of code licensed under the two schemes cannot legally be distributed. You'll be able to develop free software (GPL) applications against a Symbian Foundation SDK (as you can now with closed source Symbian) because there is a "system library" exception clause in the GPL. I think (although I'm no software copyright law specialist) that you'll also be able to develop GPL'd plug-ins for Symbian Frameworks under the same exception, but that is a bit of a grey area and you certainly couldn't distribute them as part of a foundation release. In fact the foundation releases will not be able to take GPL'd code from the rest of the open source world at all (although they can use code licensed under the LGPL). Similarly, GPL'd code bases like the various mobile Linux variants probably won't be able to use anything from the foundation code. This is where I wonder how many of the current open source crowd will convert... I suspect not many. There is always the potential to attract new developers to a newly open platform though, particularly with the prospect of getting your contributions onto several hundred million devices... and the one saving grace is Qt (which will be in an interesting position for licensing itself, currently dual licensed - GPL and proprietary). Qt (with a Symbian port) has the potential to be the first truly cross platform native mobile development environment. Definitely something to take an interest in if you're a mobile developer. Maybe that will entice some of the open source community to start new projects?
Reference platforms?
If we're going to have a level playing field in the Symbian Foundation, rather than all the other manufacturers hanging on to Nokia's coat tails, then we're going to need reference platforms. When S60 is closed source they can choose a device model internally from the upcoming Nokia range and use it as a reference to help determine whether bugs exist in the platform code or only on a specific device or hardware platform. If there is a wider range of manufacturers with an even wider range of hardware designs there there will be a strong need to have a common test platform (or possibly a few) for this purpose. Who will produce them? One obvious choice are the silicon vendors, but there is a lot of software work involved in getting the reference working that they currently don't have the in-house expertise for. Another option would be to choose an recently released product and run the newer version of the foundation code on that - the danger there is always having out of date hardware. I'd be interested to see some plans for this area made public fairly soon because now would be a fairly good time for OEMs wanting to target the first foundation release to start looking at component selection and hardware designs - a first product will probably take at least 18 months because of the learning curve. With experience it should be possible to halve that.
Optimism
When I wrote on this blog about an Open Mobile Software Foundation in April, I was hoping for something like the Symbian Foundation but not expecting anything near this scale. I really think open source is the only sensible way to go for software projects of this scale and complexity. Even if the "community" consists almost entirely of commercial developers rather than enthusiasts hacking in their spare time, I think there are a lot of benefits to be gained from a a truly open platform for both the device manufacturers and developers of add on applications and services. With a common, open code base, as well as standard programming environments provided by the likes of Open C/C++ and implementations of various industry standards, along with a vastly improved UI toolkit in the form of Qt, the fragmentation and lack of documentation that have plagued mobile development from the start may finally be coming to an end. (Disclaimer: I'm a bit of an optimist these days and my views should be interpreted accordingly).
Thanks for reading, your comments are encouraged!
Mark
Sorcery-ltd | 14 July, 2008 13:41
New developer resources that is. These are just some that I've looked at recently but here are my recommendations...
The Good:
This book is designed as a 2 week self-study course for Symbian C++. There's a section to get your development environment set up and working and then the basics of Symbian C++ are all covered in the first 75 pages. After that you can work through, or pick and choose from a number of 'recipes' - which are code examples like you'd get on the wiki here but with more explanation. The recipies cover File Handling, Contacts & Calendar, Networking, Messaging, Graphics & Drawing, 3D Graphics Using OpenGL ES, Multimedia, Telephony, Connectivity and Location-Based Services. Some of the material was contributed by fellow Champion Antony Pranata and other parts by FN's own Jukka Silvennoinen (the amazing symbianyucca on the DiBo). I've been lucky enough to get an advanced copy but you should be able to buy yours very soon! If you like to take a hands-on approach to your learning then this is the book for you.
The Bad:
A new developer booklet from Symbian - although I've linked it above, don't read it! You'll probably end up more confused about platform security than you were before. The diagram on the front cover is a classic example, it's just wrong. The key that goes with it inside (page 8) compounds the original sin of PlatSec - the secure core that is trusted with all capabilities and the capability that allows the creation of executables and granting of other capabilities have the same name (TCB) when they are different things - this diagram makes the difference less clear, not more. The other big problem with this diagram is that it shows the capabilities in a heirarchy, when they are supposed to be orthogonal (i.e. separate, not layered on top of one another). Anyway, enough ranting, I'll just say that spreading mis-information about a security system doesn't make it more secure and Symbian should withdraw this booklet.
The Ugly:
Finally, the most unappealing book to buy on Symbian OS (it's not as bad as the PlatSec booklet above, but that's not for sale) is the recent UIQ 3 book. There are a number of reasons for this, not all related to the quality of the material (some of it's good, some bad - note that despite having their name stamped on it, it's not an offical Symbian Press title). An important one is that most/all of the content is being made available on-line as a wiki. The other, is that, following the recent Symbian Foundation announcement, UIQ is as good as dead. Unfortunate timing for the release of the book. There will still be some UIQ phones around for a while but the volumes are not that high. I'm sorry to say for UIQ device owners - investing in UIQ software development is likely to be a waste of money. Develop for S60 and port to UIQ only if there is a real demand from end users.
There are of course many other great books and booklets on Symbian development - this is just my attempt to help you use your reading time wisely.
Mark
Sorcery-ltd | 29 May, 2008 22:20
OK, so it's easy to criticise Symbian Signed but they have been improving things. I still think there's further to go so here's my simple proposal for the next step.
I'll call it Free Signed.
Free Signed is just like Express Signed except that it's free and there're no test criteria.
Here are the compromises I'd suggest:
I think this method could replace a lot of the current usage of Open Signed (although I see no reason to remove that option) and could be very useful for freeware and open source, friendly user and public trials for commercial software and also in future, internal projects in large organisations (for whom mobile will become a growing part of their IT strategy).
To really make this work for freeware and open source though we'd need a network of publisher certifiers. I'd suggest one ideal source of those are people who run popular blogs and websites about mobile applications - being able to supply installable copies of free applications could drive more traffic to their sites. They get sent a copy of the application and test it anyway, if they have no major problems with it they can sign it for wider distribution. There may also be other Forum Nokia Champions who are willing to do this and probably some staff at various companies in the Symbian ecosystem who also have a personal interest in the technology.
The key issues would be zero or extremely limited cost and liability for the publisher certifiers. They could sign something to say they would provide their best effort to help track down the originator of any malware or cracked application that they inadvertently sign.
There - a dull post with no links, pictures or videos! Just an idea.
What do you think?
Mark
Sorcery-ltd | 24 May, 2008 16:28
In my last post I talked about a smart new S60 application and its implications for Symbian Signing and platform security. I said I'd talk about the other part of Symbian Signing, application quality, in my next post... so here it is already.
My personal opinion is that what is currently Symbian Signed should have absolutely NOTHING to do with application quality. It should be entirely about identity and trust. In addition to this I do believe there should be a signing program that is ALL about application quality. Here's why, the current system basically assumes that there are developers and there are dumb users and nothing in between. There is a quality gate that can actually prevent you from properly distributing many types of application. In the real world there is a sliding scale of user knowledge from the very advanced power-user to those who've never used a computer or smartphone beforeand have no idea what software really is or what it can do. Where those different groups of users discover content is likely to be very different. Software published in some places is unlikely to be found by anyone but the enthusiast - in this way the audience is somewhat self-selecting. On the other hand, the Download client built into Nokia devices and operator portals should only carry content of an appropriate quality - otherwise there are likely to be serious customer service issues.
For open source and freeware developers, very often it is the advanced users that are in fact the alpha and beta testers. You can't really rely on finding them all before you start testing - you just publish your first vaguely usable version and see who wants to play with it and what feedback they give. That's one of the wonders of the internet - it seems there's almost always someone out there who's interested. Release early and often is one of the major practices in the open source world. The current Symbian Signed program and criteria are incompatible with this practice.
Now, to illustrate my point I want to use the example of my new favourite application on the N800 Internet tablet - Numpty Physics. It's based on the concept for the amazing Crayon Physics, here's a video showing the gameplay for the upcoming commercial version of that, Crayon Physics Deluxe:
Numpty Physics is listed as "The pearl" on Maemo.org as I write this (which basically means it's a lot of other people's favourite too) and it's publicly stated that it's only beta quality. In fact I've had it crash so badly I had to take the battery off and also the only way to quit is via the 'q' key which is only available on an N810 - oops. Do I care about these issues - no. I love that I can play it now - I'll like it even more when it's finished. If I had the time and inclination I could get involved and help improve it. If I had to download an unsigned package and submit it to a signing portal would I have installed it and then got excited enough to think about getting involved in the project? Almost certainly not.
And that is really my point. What open source and free software projects need are motivated users and developers to easily access them and give them a quick try.
Signing an application just to enable it to be installed on any device should be both free and without restriction (except some kind of identity/trust chain). I'd be happy to sign other people's open source projects after fairly limited contact with them (because I can see the code after all - I'm not at all so sure about closed source freeware, I'd want to get to know the developer quite well first) if I didn't then have a legal responsibility for any harm they might do. That responsibility has to rest with the end users that choose to install them.
Application quality should be policed at the point of distribution. That can certainly be via a central signing program, it just shouldn't be the same signing program that gates whether on not an application can be installed on a device at all.
What about security for the end users? Well, I think my last post showed that Symbian Signed doesn't really do much about that anyway.
Any thoughts or suggestions?
Mark
Sorcery-ltd | 24 May, 2008 14:15
This is a dual purpose post. First I want to highlight the brilliant work of one of my fellow Forum Nokia Champions - Marco Bellino of Symbian Toys fame. His recently released application, Guardian, is really impressive and I strongly recommend downloading it to check it out (and no I'm not getting paid to say so!).
Guardian is a complete security and anti-theft solution for your smartphone. Here are the top features listed on the website:
- Sim Changed notification through Invisible sms
- Password Protection of messaging, gallery, contacts or any other
application
- GPS Localization and Tracking through GoogleMaps
- optimized for Low Memory and Battery consumption
- and MUCH more...
So, if someone steals your phone it can keep your personal data safe from access via the phone (it doesn't protect contents of the memory card being viewed in another device of course). If you cancel your subscription and the theif puts a new SIM into the phone then it will send you an SMS (to another number of your choice) telling you the new phone number without any notification on the device. Why would you want to know this? Well it also has some very impressive remote control functionality. You can send SMS messages to the stolen device and access contacts and messages (or delete them) without the new user having any idea this is happening. You can also get the phone to send you its current location - GPS co-ordinates or Cell ID. In the case of phones with GPS that can get a position fix, you even get a link to Google Maps back showing you exactly where your phone is. The application auto-starts and runs invisibly in the background. If you use it to protect itself then no-one can change the settings either.
At the moment the remote control system is a little "techy" (see the user guide on the website for details) but Marco tells me he plans to improve this in the future with a remote control client application of some kind (maybe a Java ME app, or a web interface, or possibly both).
I think this could be an extremely popular application for celebrities and anyone living in an area where phone theft is a big problem. I could also see it being used by parents on their childrens' devices. They can not only track them when they're out longer than they should be but also spy on what messages they're sending and receiving. All a bit "big brother" (no, not the TV show).
What's the most impressive thing about all of this though? It's all been done without using any restricted or device manufacturer capabilities!
When I first tried it out I was convinced it must need TCB capability, or at the very least AllFiles, and possibly also NetworkControl. Having thought about it a little though, I can see how it's all done without them. This means that an application with this kind of functionality can be Express Signed and even distributed unsigned and then Open Signed by users (i.e. no traceability).
This brings me to the second part of my post - the implications of all this for security and Symbian Signing!
Another less benevolent application having this kind of functionality could be the worst kind of malware. It can go through your contacts and send dowload links to itself to all your friends without you knowing. The messages would come from you so they're quite likely to be trusted. It can then delete all your contacts so you can't warn them or just lock you out of all the applications on your device (no reason to give you the option to enter a valid security code in malware). It can also auto-start when you reboot your phone so your only option is likely to be re-flashing the device, otherwise it's a brick. I expect similar malware could also make repeated call setup attempts and thus disrupt the network. It can also send SMS to premium rate services (and probably also hide the reverse billed type coming back) so you don't notice what's happened until you get your bill (or run out of credit). Additionally all of this functionality could be dormant in an otherwise useful application and only triggered by a message that is silently hidden away. Also, what's to stop someone secretly tracking your location (at your expense) in the same way Guardian could be used by a parent?
If all of this can be acheived without the most sensitive capabilities then what exactly is Symbian Signed protecting end users from and how?
Well, to get the widest distribution the malware would need to be Express Signed at least. In that case a Publisher ID is needed and in theory at least it should then be possible to track down the developer. In reality I doubt that serious malware author couldn't find a loophole to get access to a Publisher ID without revealing their real identity. Or disguise their application as something useful and go through a publishing house that has less stringent ID checking than the trust center.
Another possiblity is that Symbian Signed can revoke the certificate - but is that system actually in use? Are there many (any) phones out there that enable a check?
Guardian doesn't tell you about its capabilities when it's installed (although to be fair the user guide spells it out in full) and Symbian Signed no longer requires an application to do so. It seems to me that this signing program is attempting to take some of the resposibility for security away from the end user. Is that really possible? I'm not so sure.
The other feature of Symbian Signed is policing application quality - more about that in my next post...
I think I might be in the market for a trustworthy Symbian anti-virus, or just a program that checks things like auto-start and the capabilities when I install and lets me make a decision about whether I trust the application (developer) enough to let it do what it wants (I don't really want to have to use Marco's SisXplorer on everything I install).
Discussion on this topic is very much encouraged!
P.S. Actually I believe Guardian is technically a Symbian Signed failure. It currently allows the user to protect the Telephone application and when that's in place you can't make emergency calls without entering the security code - a type approval failure for the phone. I wouldn't suggest anything other than leaving Marco to release an update that fixes this though - in the mean time, just don't use the feature.
Sorcery-ltd | 29 April, 2008 18:31
For anyone interested in seeing just how far their favourite platform can be pushed, games are the place to look.
In case you've missed it Nokia's N-Gage service has been on a limited release for a little while now. It's limited in terms of supported devices at the moment but I've been able to try it out on my N95 (after upgrading the firmware of course).
I can see why there hasn't been a lot of fanfare and publicity yet. The client software in my phone has had a few of the developers old favourite "Kern-Exec 3" errors and also networking errors using my home WLAN that I could only fix by exiting the application and loading it again (plus when I held END to stop it using my GPRS connection before I'd selected WLAN the whole thing locked up and I had to take the battery off).
However, teething probelms aside, these are the best games I've ever seen on a phone and they are generally very playable and they all have a free trial. FIFA 2008 suffers from the classic problem of football games with very simple controls - there are a number of very repeatable ways to score, after a few games you've discovered some and then most of the challenge is gone. Not enough longevity there to tempt me to pay for the full version. The Tetris and breakout versions are classics but the trials are so short you barely get started (mind you, if you don't know these games already you've probably been living in a cave for the last 20 years, plus you can try other versions out for free on the web). Space Impact Kappa Base looks like a good 2D scrolling shooter it's just not to my taste. I might be tempted to pay for Asphalt 3 Street Rules (again the trial could be a bit longer to help decide, only 1 lap) certainly in preference to System Rush Evolution (although that's not bad either). My favourite so far, with extremely simple gameplay and great for 5-15 minutes on the train (not sure about longevity beyond that though - further playtesting required) is Hooked On: Creatures of the Deep - a very enjoyable mostly one button fishing game.
If I could provide one major piece of feedback it would be that the platform needs to allow the game developers (if it doesn't already, and if it does the games need to take advantage) to over-ride the system keys (e.g. for application switching and music player - send, end, copy/paste and cancel would be good to use for controlling the games too when customising the keys). These keys are placed around the directional pad on my N95 (many other phones too) and in the heat of a gaming session it's very easy to accidentally press one. This generally results in your game being paused while something else opens - not the best experience. I expect that app switching and the music key are captured before they even get to the game in the current architecture but this needs fixing. When the phone is being used for gaming, gaming needs to take over as the primary function. You only need one button or action to break out of the in game controls and return to normal control. This could of course be customisable for those that don't want it.
Overall I'd say not quite ready for the mass market yet but a very promising start.
Mark
Sorcery-ltd | 14 April, 2008 22:30
I'd like to get some feedback from the developer community on something I've been thinking about lately. This post is going to be quite long so please bear with me...
What I like about open source software
A lot of people have written about the benefits of open source software. If you haven't read it, "The Cathedral and the Bazaar" by Eric Raymond is a real classic (he's also expanded it to a book). Much more open development models with more direct and continuous user engagement can only help make better products. Software systems are becoming more and more complex and I don't think it makes much sense for a number of companies to put enourmous resources into developing completely separate competing versions. However, as I think Microsoft have proved - it isn't good for anyone (except the bank balances of a few!) if one company has a near monopoly on a certain type of system. Also, business models need to evolve for digital products that cost almost nothing to reproduce and distribute. I believe the open source model is taking us in the right direction.
What I don't like about Free Software and the GPL
The problem with Free Software is it's free. I know the intention is that it's free as in speech, not as in beer. The trouble is it almost invariably ends up being free as in beer as well (yes I know there are exceptions). This assigns zero monetary value to something which could well be extremely valuable. The main problem with this is that it strongly discourages investment in open source development. Surely open source development would be even more widespread and successful if it had both freedom and more money?
I imagine giant corporations like Nokia (who have always added a lot of value to their products with their software) embracing open source like a small child embracing an elderly female relative - part of them loves the thought and is thinking of the sweets (or cost savings and benefits) while another part is scared of big sloppy kisses (or losing competitive advantages).
For a corporation like FIC semiconductor, with their OpenMoko platform, I can completely see the motivation for investing in free software. Much more than half of the complexity of a mobile phone is in the software - however, if the software is free then all the value for the product goes to the hardware. FIC aren't too great at software but they're really good at making cheap hardware. Free software is perfect for them. I don't feel that the industry converging on a battle to produce the lowest cost hardware is going to be the best thing for users (or the planet) in the long run, although I expect some will disagree.
In a recent speech at OSiM, Ari Jaaksi has fairly openly said that the open source community will need to compromise if they want Nokia to invest in their development and put their code in it's products. Now I'm something of a pragmatist and think there's room for some compromise. I know some will disagree and that is how it should be. Indeed there are many prominent members of the free software community who I would regard as anarchists - I don't think they'd be offended by that either. I'm also not saying it's a bad thing. We need a bit of anarchy to balance the excesses of capitalism (capitalism for running the world is like exams for testing learning & understanding - we know it's not a good way of doing things we just haven't come up with anything that isn't worse yet!).
A Compromise
Now I've laid out my philosophical position (you can wake up now) I'll make my suggestion for a compromise. Do we need an Open Mobile Software Foundation (OMSF) - an independent non-profit organisation created to own the intellectual property generated by open source mobile developers? If all contributors to an open source project assign their copyright to the OMSF then it can use a multi-licensing strategy to both keep the software open AND generate income to pay for testing/signing expenses & most importantly, further open source development. I expect many great developers aren't just in it for the money but rather their interest in the technology and would love to be paid to develop open source software.
The compromise is that not everyone has to open all their source code but those that don't have to pay for the development of more open code. For middleware I think this would work with the GPL and a commercial license. To make it work for applications too though I'd suggest another compromise on the four freedoms. If you don't allow people to distribute OMSF owned applications in source or binary form FOR PROFIT without paying for a commercial license then they can be sold (cheaply) by the OMSF to generate income.
I see this situation not just benefitting open source developers but also innovative independent software vendors with a closed source model. They would get a stable and maintained set of middleware and applications with very reasonable licensing fees that they can use and customise to add value. Hopefully that reduces the up-front investment required to create a product and lowers the risk - encouraging more investment in mobile application development in general. Another potential beneficiary are the networks who get a larger catalogue of applications (which they could also license and sell if they think they can add value through marketing and easier download/installation) and greater uptake of data services.
The general idea would be that anyone could license the software below the cost of developing it themselves and the cost of licensing would depend on the license required (are they going to contribute changes back to the community?) and also the contribution the licensee makes to the community (businesses that contribute code or sponsorship get cheaper licenses).
It would hope that device vendors and networks would see the potential benefits and even sponsor such an initiative. Then again I may just be dreaming...
I've had some early feedback on this idea to say that a foundation model needs a large community but I think that's a bit of a chicken and egg situation (which did come first?). I'd see the foundation as an enabler for the community.
What do you think? Anyone interested in setting such a thing up? Who'd like to work for such an organisation? I'd love some feedback - I've opened a thread on the discussion boards in case there's a lot of debate.
Thanks for reading!
Mark
Sorcery-ltd | 24 March, 2008 15:20
I spend quite a bit of time helping out people on the discussion boards. When I'm answering questions these days I try to keep this old proverb in mind:
"Give a man a fish; you have fed him for today. Teach a man to fish; and you have fed him for a lifetime."
I believe the key to success in the ever changing technology industry is not about learning an enormous amount of information but more about learning how to find the information you need. If I give someone a few lines of code that fixes their problem they paste it in and what have they learned - "if you get stuck, just ask and someone will fix it". If I can explain why something is happening or point someone to the resources they need to find out (fellow champion _wizard_hu is excellent at this) then hopefully they'll have more of an idea what to do themselves the next time.
I was one of those annoying kids who was always asking "why?", "how?", "what does that mean?". My grandmother set me on the right path by never answering my questions but showing me how to use the dictionary, encyclopedia or whatever other source I could use to find out for myself. These days we have the internet and search engines so surely there's no excuse.
However, when I looked this proverb up to check the wording I found this site with some "improvements": http://www.amatecon.com/fish.html
Here are some of my favourites (converted into some tips for getting the most out of the discussion boards):
"Give a man a fish; you have fed him for today. Teach a man to use the Net and he won't bother you for weeks."
So, before you post a question on the discussion boards - search! Search the wiki and use your favourite search engine. Double check the same question hasn't already been asked on the board you're posting on (they often have).
"Give a man a fish; you have fed him for today. Teach a man to fish, and he will sit in the boat and drink beer all day."
Just because you've learnt how to search don't spend too long surfing the amazing amount of information this has revealed to you - there's some coding to do!
"Teach a man to fish and you have fed him for a lifetime. Unless he doesn't like sushi - then you also have to teach him how to cook."
Don't be afraid to post questions though. Just because the information's out there and you can find it doesn't mean you will know how to use it. Be specific with your questions, provide as much detail as you can (even if you think it's irrelevant), what device (or emulator) and SDK are you using, what's your application trying to do and why - someone might solve your problem by pointing out a better way to acheive the result. Also, show you've made some effort - provide a link to the example or wiki page that you're using for reference - that way you're much more likely to get a fast, high quality response.
I'd like to finish by pointing out what I think is a great initiative, code snippets, that I hope Nokia expands further - making the fishing easier for everyone.
Mark
Sorcery-ltd | 15 February, 2008 19:22
I'm a big fan of mobile devices as pocket-sized computers and get excited by the potential of truly mobile computing. Having worked for mobile phone manufacturers for most of my career, and now as a Forum Nokia Champion, I've generally had the latest greatest phone from back before there were colour screens or mobile internet access. -- The downside to that is I've also often been using them before they were ready by several months, not an experience to be recommended!
This has meant that until recently I've never actually bought a device from Nokia (in fact the only phone I'd ever bought was a chunky pre-paid Phillips model back in 2001). However I decided that a Nokia Internet Tablet would be the ideal Christmas present for my internet addicted father. Having played with his for a few hours I had to get one for myself!
I've had the N800 for a couple of weeks now and I think it's really fantastic! I went for the N800 rather than the N810 because it's a lot cheaper, my N95 can provide the missing GPS functionality (or a bluetooth GPS device which you'll find does a much better job) and as a touch typist I prefer to use a bluetooth keyboard when I need to do a lot of text input rather than the small qwerty built-in to the N810. Also, I find the rotating camera in the N800 easier to use for a video conference than the fixed one in the N810.
I was motivated to write this post becasue, since I got the N800, I haven't used my N95 for anything but calls and texts. The large screen on the N800 makes it far better for web browsing and I also find the browser downloads pages a lot faster. The internet tablet form factor is also better for gaming, videos and browsing through your music collection. With the vast majority of maemo software being completely free I've also already downloaded more software on the tablet than on my phone (which I've had for several months).
My phone still has several advantages though. It's small enough to fit comfortably in my pocket so I've always got it with me. It has a decent camera (you can't really use the tablet camera for taking pictures you'd want to keep). It can make phone calls and access the internet from almost anywhere (rather than just where there's WiFi).
Of course the 2 together gives me the best of both worlds. So for now I'll stick with both rather than one or the other - so S60 + Maemo rather than S60 vs Maemo. However, I'd like all the functionality in one box (well, I don't mind carrying a separate bluetooth keyboard for when some serious text input is needed). Will the final device be S60 Touch or an internet tablet with a cellular modem and better call and contacts software? I guess I'll have to wait and see.
From a developer perspective I think the Maemo platform would be a lot more popular than S60 if it weren't for the fact that there are over 150 million Symbian OS phones out there with more than a 1/3 of those have S60 3rd Edition. The numbers are growing fast too. In comparison the number of internet tablets is microscopic. I don't know the exact figure (anyone else like to comment?) but I don't believe it's really viable as a mass market commercial development platform yet.
S60 needs a lot more free and open source software (I believe people will be happy to buy good quality mobile software but you need a lot of free stuff to get into the habit of downloading and using it - it gives you more of an idea of what to expect) or Nokia (& others) need to sell a LOT more internet tablets (or both!). Ideally Nokia will include Maemo in its cross platform software initiative and we'll be able to port across the whole range with ease. Oddly, I think most of my development effort will be on Symbian based platforms for a while yet but I look forward to the day when I can justify some more time spent on Maemo. I say oddly because I think a lot more of my user time will be on an internet tablet this year. Something doesn't seem right there - maybe it's just because I'm towards the early adopter end of the spectrum but I'll have to think on it some more.
Anyone else out there who has used, or developed for, both platforms - you're thoughts and comments would be most welcome. Which do you prefer and why? How do you see the platforms evolving in the future?
Mark
Sorcery-ltd | 03 February, 2008 18:56
I've had a week to let the Trolltech news sink in so I thought I'd share my thoughts on it.
There's been a lot of discussion of Nokia's latest acquisition on the web. A number of Linux & FOSS fans are talking about the demise of Symbian. Some Symbian fans are confused by the move and worried about the nightmare of yet more fragmentation in the mobile developer space. There are also Maemo fans who are worried that Nokia is changing direction. The most sensible take I've seen on this comes from Nokia's own Quim Gill, manager of the Maemo platform.
Hardly anyone seems to be talking about the obvious benefit - PIPS and Open C on Symbian allow easier porting of open source projects BUT you still have to write the UI in native Symbian code. For an open source developer that means they still need to learn Symbian C++ and the S60 UI (which in my opinion is by far the worst bit of Symbian programming and the least well documented). Adding Qt to S60 to provide an alternative UI option opens the way for a lot more applications to be ported. If you look at the proliferation of completely free software available on Maemo (which adds enormous value to that platform) and compare it to what you can get for free on Symbian then I think you can only see this move as a good thing. Symbian APIs will probably still be required for specialist phone functionality, at least for a while, although I expect most developers won't need to care that the underlying OS is Symbian (apart from signing and PlatSec issues).
The next bonus is a clear intention (from the pretty pictures being presented as a background to the acquisition) to make a version of the Qt framework available on S40 - hopefully allowing much easier porting of applications to a truly enormous number of devices. I expect that, at least initially, this will be the Java version of Qt but perhaps one day we'll see C/C++ APIs opened up on S40, possibly sandboxed on a separate core on a next generation chip like this one from Broadcom? Maybe we'll even see S40 applications move to a Linux platform on such dual core chips eventually - the cost of the necessary processing power, RAM & Flash has fallen so fast it seems very possible.
The other advantage(?) of an open source framework from the perspective of a company like Nokia could be that it requires very little if any documentation. If you really need to find out some fine detail you can just look at the code (or ask someone who already understands it). As software platforms grow in complexity and generally tend to evolve more than they're designed, maintaining good developer documentation (particularly if you don't have any in the first place) is increasingly difficult, time-consuming and expensive. If you document as you go it increases time to market (because only the people writing the code understand it at that point). Third party developers can't wait for documentation after you've delivered the products because that impacts their time to market. So, if you want to continuously evolve and improve the platform then the simplest solution would seem to be to open up the source code!
It's my hope that this acquisition signals more openness in the future from Nokia. Both in terms of opening up new APIs and sharing more source code.
Thanks for reading and please share what you think the future holds in terms of Nokia, Linux & Openness?
Mark
Sorcery-ltd | 26 January, 2008 13:20
Hi,
So after asking a couple of times and waiting patiently for my Forum Nokia Champion blog it turns out I've had one for ages and didn't realise!
Since Nokia have very kindly made me "Champion of the Month" I thought I'd better start blogging. What better way to start than by sharing Nokia's success.
For the fourth quarter of 2007 Nokia sold more than 40% of all mobile phones! That's an astonishing number and had been a target for Nokia for many years. It's interesting that now they've shifted their focus toward being an internet company and service provider as well as a handset manufacturer they finally acheive the result they always wanted.
Here's the breakdown of the numbers from Strategy Analytics (yes, it's not just a Nokia internal number) for those who are interested:
Global Marketshare % | Q4 '06 | 2006 | Q4 '07 | 2007 |
Nokia | 36.0% | 34.7% | 40.2% | 38.8% |
Samsung | 11.2% | 11.3% | 14.0% | 14.3% |
Motorola | 22.4% | 21.7% | 12.3% | 14.1% |
Sony Ericsson | 8.9% | 7.5% | 9.3% | 9.2% |
LG Electronics | 5.8% | 6.4% | 7.1% | 7.2% |
Others | 15.7% | 18.4% | 17.1% | 16.4% |
Total | 100.0% | 100.0% | 100.0% | 100.0% |
Total Growth Year-over-Year | 19.3% | 22.6% | 13.3% | 12.3%
|
You can see that most of the gains for Nokia, Samsung, Sony Ericsson & LG have come at the expense of Motorola - who seem to have really lost their way at the end of last year.
The other interesting thing to note is that the mobile phone market is still growing strongly despite the worsening global economic situation. In fact there are now half as many mobile phone subscriptions as there are people on the planet (of course that doesn't mean half the world has a mobile subscription - lots of people have more than one). That link goes to Tomi Ahonen's blog and it's well worth a read. The growth of spending on mobile services is truly staggering. In 2007 the Value-Add Services content revenues for mobiles globally was $45 billion. Lets hope an increasing fraction of that revenue goes on mobile applications over the next few years!
So to finish I'd like to say congratulations to the global giant that is Nokia and good luck for 2008 to all those that share the vision of a mobile connected world.
Mark
Mobile and embedded software developer. Loves technology and loves to help people.
RDF Facets:
qfnZtypeQUqfnTypeZBlogContentQ
qfnZtypeQUqfnTypeZCommunityContentQ
qfnZtypeQUqfnTypeZWebpageQ
qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX