If you’ve even idly checked in on the robust world of Doom fan development in recent years, you’ve probably encountered one of the hundreds of gameplay mods, WAD files, or entire commercial games based on GZDoom. The open source Doom port—which can trace its lineage back to the original launch of ZDoom back in 1998—adds modern graphics rendering, quality-of-life additions, and incredibly deep modding features to the original Doom source code that John Carmack released in 1997.
Now, though, the community behind GZDoom is publicly fracturing, with a large contingent of developers uniting behind a new fork called UZDoom. The move is in apparent protest of the leadership of GZDoom creator and maintainer Cristoph Oelckers (aka Graf Zahl), who recently admitted to inserting untested AI-generated code into the GZDoom codebase.
“Due to some disagreements—some recent; some tolerated for close to 2 decades—with how collaboration should work, we’ve decided that the best course of action was to fork the project,” developer Nash Muhandes wrote on the DoomWorld forums Wednesday. “I don’t want to see the GZDoom legacy die, as do most all of us, hence why I think the best thing to do is to continue development through a fork, while introducing a different development model that highly favors transparent collaboration between multiple people.”
AI-way or the highway
Zahl’s project leadership has generated plenty of friction within the GZDoom development community over the years—this Reddit thread provides a brief history of some of the drama. But the inciting incident leading to this week’s UZDoom split seems to center in large part on Zahl’s open use of AI-generated code in a recent GZDoom update. While such use of AI coding tools is often hard to identify from the outside (as Zahl himself noted in a GitHub post), this particular instance was highlighted by Zahl’s own commented code snippet: “This is what ChatGPT told me for detecting dark mode on Linux.”

Tossing "AI" generated code in the mix seems rather to piss on those benefits.
It's really not hard to say. Doom source ports have a very rich, long family tree and lots of new ports have been forked off or created. GZDoom itself is a derivative of ZDoom, which descends from ATBDoom, which was a Windows port of the Linux Doom source code release that John Carmack did.
GZDoom became a big community standard after Randi Heit finished development on ZDoom and announced ZDoom was finished with updates. GZDoom itself has already spawned at least one viable, continuing port prior to this in LZDoom.
And this is just the ZDoom side of the tree. While GZDoom was the most popular way for people to get into playing community Doom content for years, most really dedicated Doom fanatics (speedrunners, streamers, so forth and so on) play using DSDA-Doom. DSDA-Doom was started after PRBoom+ and its related GLBoom+ port were also finished and not getting any more updates. PRBoom+ is descended from PRBoom, which descended from Boom, which spawned from DosDoom, which was the John Carmack Linux source code release ported to DOS. DSDA-Doom had its own recent maintainer/owner controversy where the owner lost their mind over the id24 standard and tried to shut down the port over it. Other people coaxed him into retiring instead, and DSDA-Doom is happily keeping along.
This isn't even touching on any of the other ports that are still getting worked on. Like how the recent Night Dive Doom + Doom II collection was built on Rum & Raisin Doom. Or how one day Hellion will finally catch mainstream attention and you'll all be gawking at Babylon's Chimera going "how did someone do that in Doom" and it'll be actual Doom, not the modern map design features GZDoom has implemented over the years.
The other thing the article doesn't make clear is that the people who forked to make UZDoom are the same people who have been doing the vast majority of development on GZDoom for years. Graf Zahl wasn't just adding AI-generated code, but he was coming out of nowhere after a long period of inactivity to add it. So when Nash Muhandes, Agent_Ash, and the rest are creating the fork, they really do know what they're doing and how to keep development moving correctly. Unsurprisingly, looking at the GitHub project for UZDoom will show a lot of discussions that are like "this is a good change I already wrote but Graf Zahl turned it down, can we put it in now" and people are agreeing very quickly.
Finally, if people reading this are unfamiliar with the Doom community and wondering how hard it is to switch from one source port to the other. It's really not that hard, and it's even easier because UZDoom has GZDoom save game compatibility (so the only possible sticking point is already addressed.) At the simplest level I could download UZDoom, unpack the program somewhere, and run it - it will automatically recognize my doom.wad from Steam or wherever and use it. But if I want to continue my current game that I was playing just before the announcement of the fork, with all my extra customizations and stuff from being someone who plays Doom a lot? I'd just need to drag and drop two files (the community PWAD and my save game file) on the UZDoom executable and I'm perfectly away to the races. If I was going to start something new, community maps always list what they're compatible with and the vast majority of stuff was compatible with GZDoom (and therefore UZDoom) in the first place.
So, it's actually very easy to say how this will affect the community of Doom players. It will barely be a ripple. We'll all download a new source port version, put it wherever/however we have our Doom stuff organized on our systems, and then we will keep ripping and tearing and shooting as we have been for 30 years.
PS: You should go look at the new Sunder map, The Leviathan's Arteries. Just go watch 10 seconds of a video or something and marvel at the best of what Doom mapping is today.