Whats the correct way to mark places : cities, towns, villages etc

I was wondering whats the correct practice to mark places. For example, a town.

Should that just be a standalone node marked town and with name? Should any of the main roads/highways passing through it touch it? Or should one draw an area around the around and name/mark that as the town? What is the best practice?

“Ideally”, the town with have a boundary way, a place node, and a ‘administrative boundary’ relation that links them. I recently fixed Abilene Texas and it seems to work right (even the parts in different counties), so you might want to look at it.

Thanks! Will keep that in mind…
Often, when adding villages/towns, I wonder how they would be connected to a road/highway for the purpose of navigation.

I think this depends on the town, and where it is. ie does it have any official boundaries? For some countries, cities/towns do have administrative boundaries, but in other countries they don’t.

If it does have official boundaries, then yes, it is a good idea to map those with a boundary relation. It is also helpful to add a node, to show where the town centre is. You can add this node to the relation, with the role admin_centre.
If there are no official boundaries, probably best to just map it with a place node.

I think place nodes should not be part of other ways, and not the same node as other features. Otherwise it can be unclear what the tags refer to. eg if you tag a road junction with place=town and a name tag, you don’t know whether that is the name of the town or the name of the junction. Better to have a separate node, next to the road. Any routing software can easily find the nearest road to navigate to anyway.

Navigation usually routes you to the most near point on a street if you set a village town centre as destination. No need to connect the village place node (if you have such a thing) with a road.