JOSM plugin as proof-of-concept
A plugin for JOSM should be implemented which renders the lanes of roads during editing as specified by:
Pay attention to the difference of the value of the key lanes=* and the number of lane-dependent values specified by any key with the :lanes suffix! The key lanes=* only counts lanes for motorized traffic, while any key with the :lanes suffix provides information for all kind of lanes, including e.g. bicycle lanes.
In order to reduce the number of needed lane_link relations, some rules should be formulated, which describe how in most cases lanes are linked to each other. The goal is to cover at least 98% of those links with not more than 20 rules. Make sure that those rules are world-wide valid (e.g. left-hand traffic vs. right-hand traffic)!
Prototype of turning instructions
A simple routing algorithm should be implemented which processes all available turning data along the route and outputs accurate turning and lane changing instructions. The routing algorithm can be kept simple and the possible routes very short. Important are corretc turning and lange changing instructions. This might be challenging as the OSM ways might be split very often and one has to start by building a network consisting of lanes and the routing algorithm has to process this "lane network".
Besides all information needed to link the lanes together (see above) at least the following information should be processed: