When most people think of running Windows programs without Windows, they usually think of WINE, the API developed for Unix systems. But there’s another project, called ReactOS, which is an open-source, GPL-compatible operating system designed to run Windows programs and work with Windows drivers – essentially, rebuilding Windows from the ground up without using Microsoft’s code. ReactOS and WINE share quite a bit of code and contribute to each other’s products, but Unix has its own TCP/IP stack. ReactOS’s TCP/IP stack had to be built for ReactOS.
Art Yerkes’s day job is working with Secret Level to work on the remake of the classic Sega Genesis hit “Golden Axe.” But he’s also known as the developer for much of the network code of ReactOS. We had a chance to talk with him, briefly, about his experiences.
“In a previous life, I had done a lot of work on media streaming, and so I got to be pretty familiar with TCP/IP itself during that time. I figured that much of what we had was good up to the packet layer, so I just started pulling the string on stuff I didn’t really like. It started at the high level TCP and AFD implementations which were really kinda hokey and didn’t respect IRQL at all. There are certain rules to coding NT drivers, and while I wasn’t familiar with them at first, the [ReactOS] kernel [developers] people really helped me get up to speed and helped me write the drivers.”
Yerkes’s work didn’t come in a vacuum. He explained that there was a partial network stack already in place, coded by Casper Hornstrup, but that it needed improvement.
“I imported TCP from the FreeBSD snapshot from OSKit… and I kept for the most part Casper’s implementation of the packet-oriented protocols, but I cleaned them up and made the implementations a lot smaller and a bit sturdier.”
While Yerkes improved the stability of the TCP/IP stack, he admitted that at this point, he’s not concerned with transmission efficiency.
“It’s much too early in ReactOS’s development to think about that. The [operating] system, as a whole, isn’t very stable. Leaving the TCP code in as understandable a form as possible is very desirable, if for no other reasons than getting a good stack trace when something breaks, so you can tell where the failure came from.”
Yerkes urged newer developers interested in learning how Windows networking works to join the #reactos IRC channel on the freenode network to talk with people there about the project.
Correction: Art Yerkes name was incorrectly spelled “Yerkis” twice in this article. NPD regrets the typographical errors.