In general, I think that a self-documenting exception messages are a great idea.
Oh point #4 I think that merging to the 3 branch (for a 3.5 release) would be the best bet. If it's literally just a longer exception message, 3.4 would be okay, but if we end up looking into points #2 or #3 we'd likely get some new features. I don't think it needs to be embargoed until 4.0.
On point #3, we'd want to see if transifex can support multi-line strings.
Other other point I think we need to consider is how this will affect various consumers of exception messages. Some key ones for me are:
- CLI dump
- HTML dump in a web view
- syslog
- log to a text file
- log to graylog
We could either log the entire multiline view, or for logs where that's more intrusive, we should ensure that cropping all but the first line provides a shorter summary of the problem (this is a common practise in git summaries too)
The only other thing I wonder is whether we should be using a subclass of Exception, with separate message and description parameters. That way, we could handle the description property only in cases where it's of use.
I'm not convinced that pouring this volume of information into a typical error log is the best idea. However, for something like Raygun, it would be great, because it has better support for digging into the details of a single error. The silverstripe-raygun module could be extended to handle DetailedException.