In a lot of regions, OSM has better data than Google. But still, Google data is used more than OSM data. Why? Because Google creates good tools to use their data: Navigation apps for iPhone and Android, the social latitude app ...
Therefore, I do a call for all developers to collaborate on one app: Navit.
How is Navit written?
The Navit core is written in C, the device specific bindings are written in the device specific language: e.g. Java for Android, Objective-C for iOS ...
What can Navit do already?
See the wiki for this one: http://wiki.openstreetmap.org/wiki/Navit#features
What Navit can't do yet:
So if your a developer and have some time left, there is always work to do.
PS. I'm not one of the core members of Navit. I tried to help with Navit but had too little experience in C to solve real bugs.
Comment from stephan75 on 3 January 2011 at 17:24
There are at least two more points that should improve for navit:
1) Like mentioned in the OSM wiki: don't rely on the tag "is_in" to find out all streets belonging to a certain place, but use boundary relations!
2) Let the user edit the preferences via the User interface and not via editing a very long and complicated xml-file!
Comment from Sanderd17 on 3 January 2011 at 17:29
The first thing can be done if there would be some preprocessor which applies is_in tags to all objects in boundaries before maptool parses it.
About the user interface: It takes a huge interface to define a map rendering schema or to define routing weights, so I think those things should stay in XML (maybe splitted in different XML files). Other settings (with lesser choice) could go to the GUI.
Comment from marscot on 3 January 2011 at 20:40
My phone runs Symbian and wont run it, But I do use "yourpocketmap http://ypm.101gr.com/
Comment from Sanderd17 on 4 January 2011 at 08:35
Yes indeed, I never thought about Symbian. It should also be possible to port it to symbian. Nothing is more closed than apples iPhone, so if you can do it there, it should be do-able for symbian too.