As for the 1 - I wanted to stay away from any mention of opengl here - for me vecmath is independent from any API using it. As for the 2 and 3 - it would create source incompatibility with existing source using javax.vecmath. Point 2 could be possibly implemented in transparent way, but for me methods which have very different behaviour depending on some magical switch are no-no.
As for the isolating programmer - it is not possible with vecmath. All fields are public, with specific names. There is no way to encapsulate anything. By adding RM/CM get/set I just wanted a clear way to interface to non-object version of matrix - plain array.
Please note that only bulk transfer methods have any notion of column or row ‘majorness’. All the rest of api is agnostic as far as it is concerned - as it was in original. Only set method was specifically calling for row-major layout.
Yes, it is possible to make a mistake with setCM/RM. Maybe calling it setColumnMajor/setRowMajor would be better ? It is not a problem to change that.