If you are a software developer and you care about user interface design and
usability and smart features that make our life better, I bet you think that
most mobile phone software sucks.
My Nokia phone for example is not able to complete words when I write SMS
messages. It is also not able to sort the list of names to which I can send
an SMS in order of frequency I sent them SMSs. It is also not possible to check the call duration of the last N calls.
When I edit messages with T9, of all the words mapped to the same keystrokes,
it is not able to guess that if I write a lot of times the word "Tine", and very rarely "time", the next time it should present me "Tine" as first guess.
Not only it lacks a lot of obvious features,
the user interface is also very slow, the development environment is a Windows-only SDK, it's buggy as Hell and it hangs when switching between GSM and 3G connection and so on.
Why phone software sucks?
Usually in the software market it works this way: there is a problem to solve
like to create a good IRC client. A lot of people will write IRC clients, the
best clients will end winning in the market, so we will have few winners used
by many users. The next generation of IRC clients will start basing the work
on the ideas of this few cool software adding more interesting features, trying
to design a better UI, and so on, and again the few best will win.
With phone software it works in another way because the software is actually bound with the hardware, you can write the software only if you are the hardware vendor... and guess what, there are few hardware vendors and are huge companies, not exactly the places where new fresh ideas will born.
Individuals, small teams of developers, are not in the market,
even if phone software is not so an huge work, it is much more a matter of designing it well.
Splitting hardware vendors and software vendors
What's needed in my opinion is to create a market similar to today's PC market. Hardware is separated from software. Imagine the following scenario: five years from now when you buy a phone you get the new Nokia-1000 that is simply not usable as it is, it comes with a cable you will use to load the software you like. Of course you are free to buy the phone with a pre-loaded software if you are not a geek...
What's important is that a phone like this is fully open, there is free documentation online and free development tools so that developers can write the whole software needed.
The phone already comes with some kind of low-level firmware that is
able to make low level stuff without the developers need rewriting it every time, like:
- system calls to start a call
- system calls to send an SMS message
- call-backs called on incoming calls or SMSs
- capture an image from the camera
- detect orientation
- and so on...
Probably it makes sense that this firmware also exports some kind of SDL-alike library to control the display, the audio, read keystrokes from the keyboard
and so on, and even an (optional) toolkit with widgets already implemented that
the developers may not use if they want to implement their own toolkit.
What about Android?
It is just another big player? If so it will not mean freedom for small
teams to develop phone software from scratch. It is not clear to me if phone customers will be able to upload a new android-based firmware in an already purchased phone,
but if this happens, Android can be the starting point to split the hardware and software markets of mobile phones.