Again, I was specifically referring to different trainz-build numbers (and versions, to a lesser extent), for which I observe there is quite a divide among users ever since SP1 came out.
Compatibility between different versions breaks because the data formats have changed somewhere.
We build in backwards compatibility for reading, but we can't build in forwards compatibility for writing as that would require perfect precognition - and if we had that, I'm sure we could put it to a lot better use than making a railway simulator

.
We only ever change the interfaces if we are forced to (to fix a bug, or to add a new feature that then requires a new bit of data) - that's why you get a whole string of similar builds (hotfixes, localisations, and builds for different platforms) which DO work together, before a breaking change.
For example, one reason that TS12 SP1 and TS:Mac2 can't multiplayer together is because the location for "bell state" changed to be at the vehicle level (not at the train level). This changes the serialisation for both the train and the vehicle. TS:Mac2 can understand what TS12SP1 is on about, and will convert. But TS12SP1 cannot cope with the data from TS:Mac2.
For this kind of change (which requires a change in interface), our only alternative would be to decide to fix the interface in stone, never to be changed - which means issues like the bell would never be fixed. I'm sure that would be an unpopular decision.
The program needs to sync movements, not control commands and letting the asset's enginespec on each client decide how each train behaves.
Trainz does sync the current position.
But if this was all it did, you wouldn't be able to cope with hosting a worldwide game. In fact, it would still look jerky and juddery with everyone on a single LAN segment.
However, we also sync the current speed, the current acceleration, and the control inputs to predict how the acceleration will change over time. With all this data we can then do a full physics simulation to predict train movement - which as it's the same code calculating it at both ends, produces a very accurate result. That accuracy enables us to sync relatively infrequently so we don't need large amounts of bandwidth, and because the predictions are good, cope with high latency - which enables everyone to play together in a worldwide internet game.
Cut just one piece of data out, and we can't use the existing physics engine to predict movement. If we can't do that, we have to write a new one. That will not only cost us development time which could be better used making improvements elsewhere, but we'll need to parallel maintain it as well. And it will never be as good, so it will always result in more jerky movement.
Everything is a tradeoff.
Again, I would reiterate my point above. Why do we both about the physics of other players' trains in the first place? In fact, when you compare railroads vs aircraft, the latter has much more data to sync because trains only have ONE degree of freedom and that is along the z axis whereas aircraft have SIX.
Flightsim was played "multiplayer" for years with a bunch of disconnected PCs and CB Radio handsets. Actually seeing other planes in engine in Flightsim is of so marginal a benefit that it can be handwaved entirely, and the computers don't even need to be connected.
Given that kind of background, if Flightsim gets the position of an aircraft wrong by even several hundred metres during flight, it's probably not going to be noticed. You can also completely ignore planes you can't see - you don't have to know anything about them at all.
That doesn't work in a train-sim environment. That difference is the difference between a well planned meet at a loop and a massive derailment. So we get the position right, and do it without introducing geographic limitations - which means relying on more data. And we need it for every train in the world too - otherwise the signals would be all wrong.
An asset being (non DRMed) payware doesn't make a difference if both parties have it. Each client uses whatever it can find in the local installation and failing which, looks for a similar substitute.
How do we determine if both parties have the same asset? How do we determine if it's been changed?
How do we determine what is a "suitable fallback"?
If it's modified (and if it didn't come through our services, then we have to assume it is), then we have absolutely no way of telling locally if our copy of this asset is the same as someone elses. Some games take the viewpoint that every single modification should be copied from the server every time you join a game. Good luck getting in game this side of Tuesday with the amount of content our creators put into their maps and sessions. Also, that's not particularly nice for payware creators, because it will then share that payware to everyone who connects.
I think (...) a lot of the best content out there are not found on the DLS.
And that's a problem in itself. But there are so many other benefits from being on the DLS that we should attempt to fix it directly, rather than work around it just for multiplayer.
The only aspect of MP that has to be strictly locked down is the route's track network and associated assets.
That also means the elevation of the ground (because that can affect the track), and anything that can create a hole in the baseboard (because that can affect baseboard elevations). And any scenery object with attached track, including industries, level crossings, fixed track objects, bridges, tunnels, and so on. But not all such objects actually contain track. You've also sucked in things like the YARN road junctions, most catenary, and so on. And any dependency of any of those asset types too.
Then as I've pointed out above, we need train performance data to get smooth operation in internet wide games. That means every enginespec unmodified, every vehicle using it's original enginespec, and every vehicle and product weight unmodified. Also the product compatibility as the session creator intended, too.
It also needs to be everything with a script.
At this point, the list of "what's important to have unmodified" comes out very small. We're firmly in "... some of the sheep" territory here. Is it really worth computing the list of what's really necessary just to allow someone to change the billboards on a random building?
Anyone whose copy of the route may compromise the session is not allowed to connect until he does a "Revert" or reinstalls the route.
We have pretty much taken exactly that option. We can revert, or if you've only ever had a modified version, we can re-download.
I am simply suggesting how I see multiplayer can be better implemented so that more people will play it - all of which is for the better.
Good idea - but wrong direction. You'd make more headway by putting your efforts towards persuading the people who have made what you consider the best freeware to upload it to the DLS. Doesn't have to be DLS exclusive, just uploaded to make sure there's an authentic copy that Trainz knows about, and can trust. Then it's good to use in Multiplayer.
For local modifications, create a clone asset, rather than editing an original. Then you can enjoy the clone with your tweaked enginespec or whatever, and still run the original for multiplayer compatibility.
Or better yet, if you are a good enginespec tweaker, offer your services to loco creators - and help them improve their own enginespecs. Then they can be uploaded as official DLS updates to those locos, and everyone benefits from the improvements.