Instead of adding yet another tag for only cycle lanes with all its problems in case of multiple lanes with different colors, would it not be a better approach to stick to a more general system by using the :lanes tagging?
Example (from left to right: two lanes without restriction, a shared, green lane for bus and bicycle, another lane without restriction, a red cycle lane)
Not a bad idea, although it will make querying very challenging because you would have to work out which position is the bike lane and then cross reference the surface:color:lanes.
You are right that cycle lanes do not count to lanes=* but they are included in *:lanes[:*]. Please take another look at my example above. I just add some more words to it to make it clearer.
The challenge is not that tough. Take a look at cycleway:lanes=* and use the corresponding values of surface:colour:lanes=*.
If we follow the approach with cycleway:surface:colour we have a solution for cycle lanes but we do not know the position of the lane and we run into problems if there are several cycle lanes with different colors plus we would need more tags for the color of bus lanes or any other lane.
Well, it could be be a delineation color (e.g. white or yellow line or area separating cycling lane from other lanes). While that outline color is also technically part of the “surface”, in OSM we usually mean for the surface tag to describe the biggest/main/fill area only.
But whatever, really, we are starting to venture into paving_stones details-alike madness nanomapping territory here
As of last December, green-colored pavement is now specified by the national MUTCD in the U.S. Until then, 162 state and local transportation departments had obtained waivers from the Federal Highway Administration to implement the NACTO guideline on an interim basis. No other color can be applied to bike lanes. Similar regulations exist in Canada, for example in the Ontario Traffic Manual, but the red for transit lanes apparently takes precedence.
No, your change was fine. surface:colour is documented and widely used to “describe the colour of the surface of an object”, so if you want to specify the surface color of a bike lane mapped to the centerline, this results in cycleway:*:surface:colour. I’m a bit confused that there’s such a long discussion about this.
In my opinion, surface:colour:lanes is only necessary if there are two or more bike lanes in the same direction with different colors, i.e. a bike lane between car lanes with a different color. All other cases are described in sufficient detail with cycleway:*:surface:colour imho.
(btw. Straßenraumkarte from Berlin is a showcase how surface colours of cycle lanes can be used.)