It would, but primarily because most of the existing values are functional classifications rather than access restrictions, legal or otherwise. A highway=road
functional_class=primary
or a highway=street
usage=residential
would have gotten the point across just as well as highway=primary
or highway=residential
, but without potentially causing confusion over whether primary
refers to an official route designation or residential
just means “resembles a quiet residential street”.
Given all the passion and bikeshedding we’ve seen about road classification over the years, I don’t think we would’ve wound up with a wasteland of unclassified streets just because of storing this information in a secondary key. We would’ve still had presets and no shortage of mappers chiding other mappers for classifying streets incorrectly. In some regions, we might’ve been able to accommodate multiple competing classification schemes instead of having to reconcile official and unofficial schemes.
But even an unclassified street can be useful. Road classification takes on an outsized importance in OSM mainly because the tagging scheme forces you to think about it upfront, and because of the British and European cartographic tradition of color-coding streets like a bowl of Froot Loops, typified by OSM Carto and many other OSM renderers. By contrast, traditional North American road maps tend to deemphasize classifications in favor of route designations, as OSM Americana alludes to. Many trail maps, public transit maps, and city street guides for pedestrians don’t even differentiate one kind of road from another at all. If anything, the width matters more.
From a certain perspective, barrier=street
would be just as appropriate.
Of course, as you point out, all of this is hypothetical. Even refactoring highway=path
alone seems like tilting at windmills, or boiling the ocean, let alone refactoring all the rest of the highway=*
values.