I've been trialling different hotspot firmware solutions and have settled on Open-Mesh.
Open-Mesh is based on OpenWRT and uses either OLSR or B.A.T.M.A.N ad-hoc mesh routing protocols. In it's favour it only uses this on it's mesh layer, for public access it uses traditional AP Infrastructure mode.
While it has been great so far I believe there is a bit left to be desired. Traditional Ad-Hoc routing protocols use IP addresses on Layer-3 to mesh the nodes together, this can use incredible overhead, chew up memory and reduce performance. Layer-2 mesh routing protocols such as batman-advanced or Mikrotik's solution simply use the MAC layer which I have found increases performance. Other such issues that must be sorted out are the ability to co-locate mesh nodes making them capable of sharing the same switch and in turn not meshing together on the wireless layer.
I've made initial contact with the developers and am looking forward to some great enhancements in the near future and will certainly therefore deploy much more of these units in the CBD as a part of our Hotspot mesh project.