Re: Legacy only
"the trouble is it is too different from the mainstream now, so it is a lot of extra work if you want code that runs on it and also on [today's mainstream OSes["
How old are you?
Once upon a time, VMS was THE mainstream OS for 32 bit systems. And it stayed that way for a long time.
But times and circumstances do change. The folk who think a Microsoft setup is and always will be the answer would do well to remember that.
*IX is a different set of circumstances; it's probably not going away any time soon, but the details behind the name will likely change. I'm old enough to remember when System V and BSD and V7 (?) couldn't even agree on the number of parameters needed to open() a file; fortunately things have got better.
Sometimes being different brings incompatibilities. Sometimes incompatibilities are the price of something more important.
VMS hasn't generally passed strings around as null terminated unsized chunks of data (though if you're using VMS C it's easy enough). VMS's own native application data format for that kind of thing is descriptor-based, ie a documented structure that describes the string (how much space is available, and how much of it is used, where it is, etc), and a *separate* item that holds the characters themselves. Plus a documented and extensible set of routines to manipulate such strings. In many VMS languages all of this is hidden from the user; C's K+R-style strings are a rare exception.
Is this approach slower to manipulate than null terminated? It depends (finding the end of a descriptor string is easy). Is it more robust than vanilla null terminated? Ought to be, if done right. Can VMS use null terminated strings? Absolutely.
Which is "better"? Depends on what's important to you: e.g. out of the box UNIX source compatibility, or the chance to write relatively robust applications relatively easily (e.g. no buffer overflows here, if done right; the data structures and runtime library do the checking for you, all you have to do is use them right).
That is obviously a trivial example, just to illustrate that "different" does not immediately mean "worse".