30 Years of ReactOS

114 pointsposted 8 hours ago
by Mark_Jansen

56 Comments

ch_123

2 minutes ago

I would like to see ReactOS succeed for various reasons, mainly philosophical. On the other hand, for practical real-world use cases, it has to compete with several alternative solutions:

1. Just use Windows 11. Yes, it sucks and MS occasionally breaks stuff - but at least hardware and software vendors will develop their code against Win 11 and test it. In other words, you have the highest guarantee of compatibility with contemporary software and drivers.

2. Use an older version of Windows. If you want to use old hardware or software, odds are you will get the best experience with whatever version of Windows they were developed against. You have to accept the lack of support for modern software, and you will most likely need to ensure it is not connected to the internet - but at the same time, it's unlikely that your Windows 98 retro gaming rig is your only computer so that's probably an acceptable tradeoff.

3. Run WINE on top of Linux or some other mature open source operating system. This is not a good solution for the average person, but ticks the box for FOSS fans who need to run Windows applications. Since Windows compatibility is dictated by Windows' libraries and frameworks and not the kernel, compatibility is likely to be comparable to ReactOS.

I am not saying that this covers every possible use case for ReactOS, but I would posit it covers enough that the will and investment required to create a production-grade Windows clone goes elsewhere.

_fat_santa

32 minutes ago

I look at ReactOS largely as an exercise in engineering and there's really nothing wrong it with it being just that. Personally I think projects like Wine/Proton have made far more in-roads in being able to run Windows software on non-Windows systems but I still have to give props to the developers of ReactOS for sticking with it for 30 freaking years.

ACS_Solver

3 minutes ago

Yes. The unique point of ReactOS is driver compatibility. Wine is pretty great for Win32 API, Proton completes it with excellent D3D support through DXVK, and with these projects a lot of Windows userspace can run fine on Linux. Wine doesn't do anything for driver compatibility, which is where ReactOS was supposed to fill in, running any driver written for Windows 2000 or XP.

But by now, as I also wrote in the other thread on this, ReactOS should be seen as something more like GNU Hurd. An exercise in kernel development and reverse engineering, a project that clearly requires a high level of technical skill, but long past the window of opportunity for actual adoption. If Hurd had been usable by say 1995, when Linux just got started on portability, it would have had a chance. If ReactOS had been usable ten years ago, it would also have had a chance at adoption, but now it's firmly in the "purely for engineering" space.

rubymamis

an hour ago

Great project, but let's just make this year the year of the Linux Desktop!

xattt

37 minutes ago

With significant progress for Linux on the desktop this year, I propose it’s time to move the goalposts:

    - 2027, the year of ReactOS
    - 2028, the year of Haiku
    - 2029, the year of TempleOS

bitigchi

3 minutes ago

Haiku has gazillions of modern software and got NVIDIA drivers recently. Things are looking pretty bright for Haiku.

ofrzeta

29 minutes ago

I get the joke, but Haiku could indeed have its year because it's the only one of these OSs that has Firefox running. Do you need anything else? (ok, some hardware support would be nice, I guess)

DustinBrett

33 minutes ago

At some point AI might get good enough to write whatever is missing from that thing. Seems like they have the ability to wait it out.

zamadatix

9 minutes ago

Maybe, maybe not, but one thing is for certain: you can't seem to escape conversation about AI regardless which post you open on HN!

computersuck

2 hours ago

Multi Processor Support!!? Cutting edge stuff

superdisk

3 hours ago

I sometimes daydream about becoming a billionaire and bankrolling this project to completion. Would do the world so much good.

sho_hn

3 hours ago

I still think Windows app compat for Linux (i.e. as Wine does and Valve productized with a gaming focus) is the better solution since it offers a true upgrade path out.

I realize ReactOS has a potentially wider useful scope (I think device driver compat is part of what they're attempting to do, so it'd offer a solution to keeping niche HW running) but I think it's just a smaller audience.

mghackerlady

2 hours ago

Has anyone thought about making the linux kernel roughly compatible with NT? Like how FreeBSD is compatible with Linux? I know it'd definitely be harder as NT is proprietary but syscalls (in my very uninformed opinion) seem all that difficult to implement, even without a userland

augusto-moura

an hour ago

At what level do you mean that? Kernel level? Driver level?

Wine[1] is the de facto compatibility layer with NT executables. Driver compatibility is too complex and obscure to worth the while. Often information is undocumented or hard to get.

There are a few implementations of windows behaviors at kernel level for a few subsystems features, ntsync, samba, ntfs, etc. they can be used by wine to improve compatibility or performance

[1]: https://www.winehq.org/

treyd

2 hours ago

FreeBSD is not "compatible with Linux", it provides a way to run Linux applications under a Linux-like syscall environment. What you're suggesting is as if you could load Linux kernel modules into the FreeBSD kernel.

The issue with NT is the driver ecosystem. You'd have to reimplement a lot of under-documented NT behavior for NT drivers to behave themselves, and making that work within the Linux kernel would require major architectural changes. The userland is also where a lot of magic happens for application compatibility.

bryanlarsen

an hour ago

It's far from "roughly compatible with NT", but the Linux kernel does accept changes to make supporting Windows applications more efficient.

example: ntsync

jchw

2 hours ago

Me as a kid thought this would be a great idea, and started implementing a PE binfmt. I actually did make a rudimentary PE binfmt, though it started to occur to me how different Windows and Linux really were as I progressed.

For example, with ELF/UNIX, the basic ELF binfmt is barely any more complex than what you'd probably expect the a.out binfmt to be: it maps sections into memory and then executes. Dynamic linking isn't implemented; instead, similar to the interpreter of a shell script, an ELF binary can have an interpreter (PT_INTERP) which is loaded in lieu of the actual binary. This way, the PT_INTERP can be set to the well-known path of the dynamic linker of your libc, which itself is a static ELF binary. It is executed with the appropriate arguments loaded onto the stack and the dynamic linker starts loading the actual binary and its dependencies.

Windows is totally different here. I mean, as far as I know, the dynamic linker is still in userland, known as the Windows Loader. However, the barrier between the userland and kernel land is not stable for Windows NT. Syscall numbers can change during major updates. And, sometimes, implementation details are split between the kernel and userland. Now, in order to be able to contribute to Wine and other projects, I've had to be very careful how I discover how Windows internals works, often by reading other's writings and doing careful black box analysis (for some of this I have work I can show to show how I figured it out.) But for example, the PEB/TIB structures that store information about processes/threads seems to be something that both the userland and kernel components both read and modify. For dynamic linking in particular, there are some linked lists in the PEB that store the modules loaded into the process, and I believe these are used by both the Windows loader and the kernel in some cases.

The Windows NT kernel also just takes on a lot more responsibilities. For example, input. I can literally identify some of the syscalls that go into input handling and observe how they change behavior depending on the last result of PeekMessage. The kernel also appears to be the part of the system that handles event coalescing and priority. It's nothing absurd (the Wine project has already figured out how a lot of this works) but it is a Huge difference from Linux where there's no concept of "messages" and probably shouldn't be.

So the equivalent of the Windows NT kernel services would often be more appropriate to put in userland on Linux anyways, and Wine already does that.

It would still be interesting to attempt to get a Windows XP userland to boot directly on a Linux kernel, but I don't think you'd ever end up with anything that could ever be upstreamed :)

Maybe we should do the PE binfmt though. I am no longer a fan of ELF with it's symbol conflicts and whatnot. Let's make Linux PE-based so we can finally get icons for binaries without needing to append a filesystem to the end of it :)

direwolf20

2 hours ago

You can already use binfmt_misc to instruct the kernel to execute PE binaries with Wine.

jchw

an hour ago

I mean something a bit different. I mean using PE binaries to store Linux programs, no Wine loader.

Of course, this is a little silly. It would require massively rethinking many aspects of the Linux userland, like the libc design. However, I honestly would be OK with this future. I don't really care that much for ELF or its consequences, and there are PE32+ binaries all over the place anyways, so may as well embrace it. Linux itself is often a PE32+ binary, for the sake of EFI stub/UKI.

(You could also implement this with binfmt_misc, sure, but then you'd still need at least an ELF binary for the init binary and/or a loader.)

(edit: But like I said, it's a little silly. It breaks all kinds of shit. Symbol interposition stops working. The libdl API breaks. You can't LD_PRELOAD. The libpthread trick to make errno a thread local breaks. Etc, etc.)

snvzz

3 hours ago

>it'd offer a solution to keeping niche HW running

Preservation. It ensures WinNT survives as a platform even if Microsoft abandons it, which some would argue the present state of Win11 counts as doing.

ch_123

11 minutes ago

If MS abandons WinNT, then people will likely continue to use the existing versions of Windows which are out there for any existing software (just as people continue to use MS-DOS and Win 9x for old games and software).

As for new software - I think it's open to debate just how much new Win32 software will be created after a hypothetical abandonment by Microsoft of Windows.

godzillabrennus

2 hours ago

Windows 11 is the enshitification late stage advertisement economy product that no one asked for, and everyone in the C Suite at Microsoft is excited about. Probably the only thing they are more excited for is yet another terrible branding decision.

drzaiusx11

3 hours ago

I wonder if any corporations that could benefit from this project could help bankroll it (of which I assume there are many.)

Wish they had a sponsorship listing on their GH page... I poked around and couldn't find one

zamadatix

15 minutes ago

There's a sponsorship section but it just links to the donate page rather than a corporate focused sponsorship program. It seems most of the corporate activity in this space is around userspace compatibility rather than NT kernel compatibility, like CrossOver or Valve driving Wine and other codebases in that regard.

freedomben

32 minutes ago

I suspect this would be a very risky proposition for them. The expense would be enormous, so it would either need to be a player with such huge economies of scale to make it work, or it would have to be a collection of businesses that in aggregate could make it economically feasible. I would suspect in most cases, it would be a lot cheaper to just port your software to modern Linux than to try to get react OS over the line. And that's before considering that a lot of the large players will be in contract situations with Microsoft that likely directly prevent this sort of thing

Cthulhu_

2 hours ago

Is money the issue for this project, or finding the right people?

Or another point of view, if you put a lot of money into it, it becomes a commercial endeavour - would it still be for a good cause?

More armchair internet commenter devil's advocate discussion starters than any opinions of mine to be honest. But, there's a lot of projects that would benefit from no-strings-attached donations.

velcrovan

2 hours ago

As far as I can tell, the nearest thing to a stated goal or mission is on their “About” page:

    Our main features are:

    * ReactOS is able to run Windows software
    * ReactOS is able to run Windows drivers
    * ReactOS looks-like Windows
    * ReactOS is free and open source
Building a replica of an old OS is a fun project, but if there was a purpose for it besides having an "is able to" replica, it would attract more people.

squeefers

25 minutes ago

in the real world, most people use windows. most software that those people use is written for windows. if it can run windows exes out of the box, whilst not phoning home to microsoft, it becomes an attractive proposition. i want to get off windows but i dont want the headache of linux; to me its the only hope

doublerabbit

3 hours ago

Let's become billionaires together. You bankroll ReactOS and I'll bankroll HaikuOS.

snvzz

3 hours ago

And I'll join in and bankroll AROS.

Together, we could bankroll Minix3 as well.

LoganDark

2 hours ago

Who wants to bankroll SerenityOS?

snvzz

2 hours ago

I don't think that one wants to be bankrolled. It'd go against its spirit.

ipunchghosts

2 hours ago

I would think claude code would help make a quick dent in boosting reactos capabilities. Curious what others think.

Oxodao

2 hours ago

I would rather not. While it is already highly questionable to use it normally because it steals opensource code, but let's give it a pass for this thought experiment, it probably scrapped the multiple git repository of Windows leaked source code. In which case it would ABSOLUTELY undermine the project's ability to say it's a clean room implementation

DustinBrett

32 minutes ago

How do you steal open source code? It's open.

Dwedit

14 minutes ago

You violate the license (such as GPL)

jeroenhd

an hour ago

Various versions of Windows have had their source code leaked out in part or almost whole. If Claude produces an exact copy, like LLMs used to do with the fast inverse square root from Doom, Microsoft would have good reason to sue and it'd be on the project to prove that the copyright violation was done by a bot (which makes it legal now).

With the project essentially implementing the entire API method by method, the chances of LLMs repeating some of the leaked source code would be tremendous.

A one-directional fork of ReactOS might be able to make some fast progress for a few people who desperately need certain programs to work, but I don't think the project will benefit from LLMs.

DustinBrett

32 minutes ago

I think it's not ready yet but I agree that eventually it will be. The 40th anniversary of ReactOS might have some substantial features. This is the decade of ReactOS!

bluedino

15 minutes ago

A cleanroom trained LLM would be needed, no?

sermah

33 minutes ago

I think it would be an elephant in a china shop. ReactOS doesn’t come from React (JS Library)

sshb

2 hours ago

Feel like such projects would benefit tremendously from agentic coding

luismedel

2 hours ago

What if the agents were trained by leaked Microsoft code?

jeroenhd

an hour ago

With the way the courts seem to judge LLM outputs, I don't think that's an issue as long as it's provable that the code was shat out by an LLM.

Of course Microsoft could still claim that someone used a leaked Windows build as the source so any LLM use would be a ticking time bomb.

squeefers

an hour ago

anything that gets away from microsoft, and more importantly linus torvalds, is a good thing

satvikpendem

an hour ago

Why Torvalds?

squeefers

29 minutes ago

as a person, hes supremely loathable. hes long since stopped coding and now hes just gobshiting. im not saying you have to stop admiring him

dangus

23 minutes ago

Have you...worked in software before?

His skills are applied to being essentially the product manager of the Linux kernel, just like any other senior engineer of his age and experience.

It's better that he not write code because he can have greater impact steering the direction of the kernel and reviewing others' work.

I'm also not sure why you don't like the guy on such a personal level. He only made Linux and git because he didn't have an alternative that worked for him. What did he ever do to you?

I watched the video of him hanging out with Linus from Linux Tech Tips and I thought he seemed like a relatively personable guy. Maybe he's somewhat opinionated on technology and wrote an angry email or two but certainly not a bad person.

augusto-moura

an hour ago

I think he/she is talking about avoiding both Windows and Linux

satvikpendem

an hour ago

Yes, I am asking why avoid Linux too?

pjmlp

34 minutes ago

Maybe the monoculture that many kids nowadays think UNIX === Linux?

dangus

22 minutes ago

I don't think the kids these days know that UNIX exists.

UNIX is also basically irrelevant unless you are talking about macOS technically being UNIX, so I agree with the kids.

The idea that Linux is a monoculture is also hilarious to me. That umbrella includes things like RHEL, SteamOS, Bazzite, Android, Chromebooks, Gnome, KDE, dwm, i3, your robot vacuum, car infotainment systems..."Linux" is the exact opposite of a monoculture.

pjmlp

10 minutes ago

All powered by the Linux kernel, the very meaning of monoculture.

Also it isn't as if BSD, FreeRTOS, Aix, INTEGRITY, SmartOS, Illumos, QNX,... don't exist.

squeefers

32 minutes ago

not linux, specifically linus. its just a shame hes still attached to the kernel

satvikpendem

30 minutes ago

Okay, so why avoid Torvalds? I am not sure what part of him you find objectionable.

millerm

an hour ago

What would be the point of avoiding linux?