How difficult would it be to adapt GraphHopper for routing on things that are not roads/paths using things that are not cars/bikes/feet? For example, routing on canals using boats?
Last time I looked at it, none of the routers for OSM were good at routing over areas in OSM. For example, when planning a route on foot over a large square, the route often follows the outside edge. This becomes even harder when the area contains "holes" (i.e. a multipolygon). So for canals it could work, but if you need to cross a lake with an island you're in trouble.
It already is adapted https://github.com/geofabrik/OpenRailRouting and I know also from a couple of services having it adapted to boats. But yes, routing on areas is still not properly possible (only via emulating paths on it).