ReactOS “Open-Source Windows” Manages to Run Some Battlefield Games
phoronix.com
phoronix.com
The reply kind of opened my eyes. If Wine/ReactOS do continue the trend of becoming better more stable platform than Windows itself, thanks to Microsoft hell bent on destroying their reputation, eventually, Wine/ReactOS can even Embrace-Extend-Extinguish Windows itself.
A man can dream..
Some hacking on Wine was able to get SAI2 running, but SAI1 is elusive due to the design of Wine’s wintab32 implementation; XI2 events only go to the window that is being interacted with, whereas wintab32 events can and often are pumped to hidden background windows (for reasons unknown to me, though I guess if the window is on a different event loop it probably helps to mitigate events lagging. WM_POINTER magically coalesces events when the loop is tied up, and lets you grab the coalesced events, so it has less of this problem.)
I’ve thought about it a lot, but… The Wine input stack is fairly complicated and I haven’t grokked it all. I do have some projects I made for (clean room) examining behavior of the WM_POINTER events though. (Also, testing for this will suck.)
Oh... if only...
I can't remember the last time I tried to run a non-game application and it actually worked. And I try often - I can think of three instances in the past few weeks alone (if you want to know - Fusion 360, an internal .NET app from 2010 that by rights should have worked perfectly, an old DVD of Altium Designer).
Don't get me wrong, I'm extremely grateful for Wine. But perfectly compatible it ain't, not even close.
[0]; https://github.com/HansKristian-Work/vkd3d-proton/commit/f39...
One example is folks stuck with the legacy nvidia driver. If the game can still run, they can still get fixes this way. It's nice when we can sidestep the process of waiting on nvidia or whoever in the various closed source drivers on both linux and windows.
On the other hand if ReactOS and or wine try to do the same thing then we could see some shift but I don’t think it is likely.
This might also facilitate developing cross-platform support for the Win32 option in a VM rather than on a live Windows machine -- e.g. a ReactOS VM. Besides avoiding licensing issues, some kinds of developer on-boarding could be facilitated by just pointing them to an available VM, rather than a gauntlet of environment setup.
In a sense, all this points toward an alternate reference implementation for Win32, or at least some subset, for some purposes. And/or a possible phrase: "ReactOS-First" development on Win32.
In my opinion, for production use it's currently best suited for use as a free virtual machine for old software that no longer runs natively on Windows. If enough APIs are covered, it can be an excellent replacement for an XP VM to run some ancient tools.
In theory someone could take modern Firefox, figure out what essential APIs are missing, and contribute a set of fixes to get the latest LTS version of Firefox working again, but that's quite a complicated process.
https://msfn.org/board/topic/182647-my-browser-builds-part-3...
FreeBSD is a great option for a modern stable OS that can run pretty much everything linux can. Desktop system is also easy to install via DarkMate[0] on vanilla FreeBSD or then go to e.g. GhostBSD[1] that has all the bells and whistles from GUI installation onwards.
[0]: https://github.com/broozar/installDesktopFreeBSD/
[1]: https://ghostbsd.org
Why go to alternatives when linux is available?
The question works both ways.
If you compile your own user space software or it's already ported, then yes. But it doesn't have the same driver or virtualization support Linux has. I haven't tried any of the BSDs on a laptop for about 4 years but power management was abysmal then.
Haiku seems to be headed that way, though.
HaikuOS is a hobby project, it doesn’t have the industry relevance to be serious enough for a solid release.
Gnu Hurd’s only benefit is having a micro kernel. Minix, QNX, and possibly other actively developers OS’s have that market. It hasn’t been updated in 6 years and will fade. There’s already Linux anyway.
But majority of indie OS mindset was suddenly captured over past couple of years by SerenityOS. It is a good project in itself, but goes to show 1.0 does not matter for capturing Dev mindshare.
ReactOS on the other hand is very opaque and unfriendly. The website goes without updates for months. There is a sparsely populated forum that is filled with hostility and frustration from the inner circle. The current release ( made not that long ago ) is based off a branch that the main development moved off of years ago. There is a wiki that shows what is appearing in the next release but it has not been updated since June 28. Most of the project discussion happens at chat.reactos.org but I am not sure how you are to know that even exists. To me, it feels like the project attitude towards the community is that they are useless freeloaders. People better than you are busy doing important work that you would not understand. Don’t bother them.
Another aspect of the end-user focus is that SerenityOS has an emphasis on producing working software that is useful. Despite its alpha state they are redesigning dialogue boxes and controls to be easier to use. Animations and subtle GUI effects are celebrated as are small usability features in applications. Despite it being a project goal to build everything from scratch, there is a large ports collection and some of the most notable live streams show the founder porting popular programs and games. While ReactOS cannot even bother to get a browser working, SerenityOS is creating one from scratch.
I have a huge respect for the ReactOS achievement but it is no great mystery why a project like SerenityOS has had more momentum. In my view, the way the ReactOS project is managed has absolutely held it back. I could say the same for projects like GNUstep unfortunately.
Projects like Haiku have not bottled quite the same magic as Serenity but Haiku is very community friendly and it shows. Haiku is also pragmatic and, while the goal is to mimic BeOS and to offer an alternative app platform they have built compatibility layers in order to port over apps. They even run WINE. Haiku also has a browser ( not totally from scratch ) and there is already a port to RISC-V. Despite not being at 1.0 yet, there has been a lot of emphasis on creating a working end-user experience.
That was my experience at least.
VR games however, especially with Oculus Quest, are extremely problematic
https://www.playonlinux.com/en/
The only problem I have encountered so far, which I believe is a limitation of WINE that could be solved with a patch, is fooling very old XP programs into seeing smaller disks and less free storage. Some installers refuse to work then report negative free storage, which very likely means their old code uses shorter types to store the free space that are overloaded becoming negative when a longer type containing the actual size of a modern disk is assigned there. Patching WINE to offer an option to solve this shouldn't be very hard, hopefully.
Or, to rephrase it: what would happen if I took Windows XP and replaced the kernel (ntoskrnl.exe) with the one from ReactOS? Would that not be the ultimate binary and API compatibility test?
Things like dxvk or vkd3d have done support for what you are describing iirc though.
While I do not think that ReactOS is managed as described, I see no reason ReactOS could not meet its goals in this way. From a practical stand-point, I do not think it is possible today as few ReactOS components are complete enough to work in a real Windows environment. Certainly some of the user space stuff gets tested like that though.
Both GNU and BSD were created by starting with stuff that worked in real UNIX and filling in the blanks until a full system emerged. So, it seems a very practical approach.
The opposite happens sometimes as I have seen reports that say that something works on ReactOS when using one or two DLLs from real Windows.
ReactOS relies on WINE for user controls and libraries close to the user. In this way, it is a bit like GNU that started with the user interface and worked back to the kernel.
The ReactOS project itself seems to be focussed on the kernel and working back out from there.
Perhaps this is all too simple a view though as ReactOS certainly has other components ( like the app installer ). I think there is certainly some overlap between WINE and ReactOS devs as well.
But you're likely correct that my response is mostly suited to speaking about dll's created from the wine project.
Although I think some code and implementation ideas are shared between projects, as you allude with your comment about sharing developers.
I'd worry about stability and security in business context.
There is plenty of Linux-certified hardware as well as support plans.
Presumably ReactOS uses Windows driver ABI, so you can just use Windows drivers?
Support for NT kernel interfaces. This allows drivers written for Windows to work under ReactOS. Most of the userspace should work just fine on Wine and Linux.
From memory, that has fairly decent DirectX and OpenGL support in its drivers too, probably more optimised than the VirtualBox stuff.
Michael should know better than to publish that headline. Is this what we should expect from phoronix for 2022 onward?