The .msg interface definitions are one of the largest downsides to ROS. The biggest downside to me being the lack of real enum support.
I wish ROS2 had switched over to protobuf so that the enuma would have generated tostring functions, optional fields, and of course the benefits that come along with using existing open source tools.
I read through the design decision a bit on this, but it was kind of unclear what happened exactly, and I wonder if this is something I could bring to ROS2. Adding support for protobuf message definitions and maybe eventually deprecating .msg formats.