OSM has all of that, it's great.
I haven't had time to really dig into OSM. One item that confuses me is the community-based editing which lends me to not wanting to touch it out of fear I'll cross someone (like Wikipedia). I do a lot of personal mapping on Google Earth of routes, points of interest, etc., just dumping GPS data out after walks. I would like to do the same on OSM, and store it as my own private overlay but I don't see how.