Why phone software sucks?

Splitting hardware vendors and software vendors

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...

What about Android?

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 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.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., 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,, it is much more a matter of designing it well.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...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: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.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,to split the hardware and software markets of mobile phones.