Hello all, I embarrassed to say I have a rather important site that is still running 2.3.1. Is there a clearly defined upgrade path from that version to 3 or 3.1?
I can't officially comment, but I don't think there is path.
For the most part the structure/MVC stuff is much the same. A few redundant form fields. The amazing DataObjectManager module from UncleCheese is no longer needed as SS3 has enhanced Grid Fields at is core. But this means any where you're using DataObjectManager or ComplexTableFields you'll need to amend the code. Not a big one though.
SS3.1 changes public static $db variables to private static $db. Again not a biggie, just have to go through the code.
The biggest hurdle I've found is sorting out any dependencies on 3rd party stuff.
I'm a huge fan of the CLOC script. A Pearl script which Counts Lines Of Code = CLOC http://cloc.sourceforge.net/
Easy way to asses a big project and how much custom code you have to go through.