First of all, it's really exciting to see all this interest in cross-platform portability!
ORMT have agreed to migrate to .NET 6 right now (I'll be doing all the PRs), as we already have that in the project files as an opt-in test. We will evaluate newer versions but Visual Studio compatibility remains a concern that will have to be tested.
cesarbl, on 18 July 2026 - 01:05 AM, said:
I guess using VS code with the C# extension could be an alternative to VS 2022?
Yeah, perhaps. We can test Visual Studio 2026 with .NET 6 (not listed as supported) soon.
cesarbl, on 18 July 2026 - 01:05 AM, said:
A more valid concern is supporting people with old PCs which are uneligible for W11. For them, if we migrate to newer .NET versions, we should provide an alternative e.g. by officially supporting Linux (maybe by including some installation instructions as in
https://github.com/p...wiki/Linux-Wine ).
Rj Zondervan, on 18 July 2026 - 02:51 AM, said:
When that fork reaches a workable Proof of Concept I'll also report back about installation/distribution strategies for Linux, because there are some flavours that can exist next to eachother, but target different kinds of Linux user.
Officially supporting Linux or macOS is not very likely in the near term, however, we are happy to accept fixes to the code which make it work more portably. This includes more significant changes, as long as they apply cross-platform without negative effect on Windows.
cesarbl, on 18 July 2026 - 01:05 AM, said:
Another problem with UNIX-like OSes is that filesystems are typically case-sensitive, while MSTS content usually assumes that filesystem queries are case-insensitive. This forces the Content folder to live in an NTFS or EXT4+casefold partition.
Rj Zondervan, on 18 July 2026 - 02:51 AM, said:
By chance I am working on a Linux port the same way as Aman did for macOS, and indeed just ran into the case sensitivity issue yesterday. It is not something that is impossible to bridge (in some cases using an AI model helps to find fixes for this), hardcoded backslashes have more impact (but also, not impossible to overcome).
Filename case sensitivity is definitely an area of concern for portability. We are happy to accept fixes that preserve filename case inside Open Rails but would need to also maintain case-insensitivity for many internal systems e.g. loading deduplication of textures/models.
However, if content itself refers to a file with a different case to the actual file, we will have to carefully evaluate any solutions to this, as we don't want to worsen performance on Windows.
Rj Zondervan, on 18 July 2026 - 02:51 AM, said:
I'll push to my fork shortly (it also contains a plan to get from a PoC status to something production ready, including a strategy on the forms).
We should start a new thread for discussing any cross-platform work on the menu, before anyone starts any significant work.
That said, Eto.Forms, as mentioned by Aman already, has been my preferred option if we were to keep the Windows.Forms style of menu.
ggwp, on 18 July 2026 - 11:12 AM, said:
@TrainGuy6550 — on the shaders: the DirectX HLSL isn't running directly. I compile the .fx shaders to MonoGame's OpenGL bytecode (.mgfx) with mgfxc using /Profile:OpenGL, so the DesktopGL (OpenGL) backend runs them. mgfxc itself still needs d3dcompiler, so I run just that one compile step through Wine as a build-time step (with a small MACGL define to skip a per-instance transform that came out wrong on DesktopGL). At runtime the engine is fully native — no Wine.
Curious what is going on with that transform, but I expect we would be happy to switch everything to the DesktopGL runtime, provided Windows performance doesn't suffer.
We should also be able to avoid
#if for platform-specific code in .NET 6+, as any platform-specific code can use the
OperatingSystem class instead, although we would want to minimise that too. The less platform-specific code the better.
ggwp, on 18 July 2026 - 11:12 AM, said:
@gpz — yes, I'd be glad to open a PR (or a few smaller, focused PRs) so the changes can be reviewed and synced back. Just point me at the preferred target branch and I'll follow the contribution guidelines.
Smaller, focused PRs are preferable. Please target the default branch "master".
We have
full contributing guidelines; specifically this is a "feature" but don't worry too much about the list of requirements for those: we've got them all covered already (this thread +
Cross-platform portability/support for Linux/macOS Trello card). Just put a link to this thread and that Trello card into the description of each PR and we're good on the process.