After the release of Wolfenstein 3D, id Software noticed that many players were creating custom levels by modifying the games files. Rather than cracking down on it, John Carmack designed the Doom Engine to be extendable from the ground up, resulting in the WAD format. This was also backed by John Romero, who had created similar modifications in his youth and wanted other people to do the same.
The WAD format was still somewhat restrictive however, as only levels, graphics, music and sfx could be replaced. This all changed when John Carmack released the full source code to the game engine in 1997, allowing people to modify the source code to their hearts content. Because of a number of legal issues surrounding one of the sound libraries used in the DOS Version, the released source code was for the Linux port of Doom, which was quickly ported back to DOS, creating the first source ports.
While Doom was not the first game to feature modding support, it was extremely influential on video game modding, as it created one of the first big modding communities, which is still alive to this day.
Here are a bunch of terms that are useful to know when exploring the world of doom modding. These are mainly meant to be basic explanations meant to help someone just getting started.
You can click on the icons next to the headings to get a more thorough explanation.
"Source port" is a term used to describe the various projects that attempt to port Doom (or other games whose source code is publicly available) to new devices and/or extend its functionality. While the term is usually used to describe unofficial ports, it's also occasionally used to describe any version of Doom that isn't the original DOS release. The term was coined after John Carmack released Linux Dooms source code to the public in 1997, which was then ported back to DOS and Windows and further enhanced with other features, causing the term "source port" or just "port" to become associated with source code modifications in general.
WAD, short for "Where's all the data?", is an archive format used by the Doom engine to store all sorts of data.
IWAD, short for "Internal WAD", refers to archives where all the data that is required to run a Doom engine game is stored. You need an IWAD to be able to use a source port. While the original IWADs for Doom, Heretic, etc. have to be purchased in some way, there are a handful of projects that provide free IWADs which can be used to substitute the original IWADs, and some total conversions also provide their own IWADs.
PWADs are archives with data which the engine will use to "patch" over the data contained in an IWAD. This allows them to add or replace levels, graphics, sounds, scripts etc. from/to the original game without modifying the game files in the IWAD directly.
Many modern feature-extending source ports also support newer archive formats, which are commonly used by gameplay mods. These may still be referred to as "WADs" despite using different file extensions. These archives cannot directly support maps because maps are stored in a series of lumps which cannot be separated, they can only be included in a separate WAD inside the archive which will then be loaded as a seperate patch by the source port.
PK3s are essentially just zip files with an alternate file extension to prevent operating systems from associating them with virtual folders and to avoid leading users into believing that they will have to extract them for the game to work. This file extension was originally used by id software in Quake 3 Arena. Modders might also use .pkz (for the ZDoom engine), .pke (for the Eternity Engine), .ipk3 (to denote that this archive should be used as an IWAD) or even just .zip, although this is generally not recommended for the reasons listed before.
PK7 is essentially just the .7z-equivalent to PK3. This format offers better compression than .pk3, but also increases the time needed to load new files because of a lengthier decompression process. Alternate file extensions are .pkz (for ZDoom), .ipk7 (for archives that should be used as IWADs) and .7z, although usage of this extension is frowned upon for the same reasons as the .zip extensions.
This is the map format that originally shipped with Doom, and it continued to be used for most other games on the engine. Today, it is mainly used by mappers who want to ensure that people will be able to play their map on as many source ports as possible.
Vanilla Doom has a number of static limitations, which are removed by most, but not all, source ports. Maps that require a limit-removing source port will usually have the words "limit removing" at some point in their descriptions.
While still based on the vanilla format, the Boom format introduces a number of new features, such as conveyor belts, fake water effects and translucent walls. While originally named after the source port of the same name, many ports have adopted this format because of its widespread usage by map makers.
Raven Software created a custom map format to support the advanced features of Hexen, such as ACS, a scripting language which opens up a level of interactivity unseen in vanilla Doom. ZDoom was the first sourceport to allow people to use this format outside of Hexen, along with extending both it and the ACS language. These maps are usually referred to as "Doom-in-Hexen, "Heretic-in-Hexen" etc. This format is only rarely used nowadays in favor of the new UDMF format.
The Universal Doom Map Format, also known as UDMF or Textmap, is the result of an ongoing effort between source port developers to create a standardized, extensible map format. It is currently supported by the ZDoom Family, Eternity Engine and Vavoom.
While the term "Mapset" itself should be pretty self explanatory to anyone familiar with the shooter genre, there are some special terms for Doom Mapsets that are worth mentioning:
"Megawad" is a term used to describe a mapset that includes a large amount of levels, at least 15 according to the idgames archive definition.
An episode replacement is a set of levels that includes an amount of levels similar to what is contained in one of the episodes of the original game, usually around 8 or 9. Despite using the word "replacement" episode replacements don't always replace an episode, the important part is only how many maps the WAD contains. For example, Sigil, John Romeros unofficial "fifth episode" for the original Doom, which he erroneously referred to as a megawad, is set up to be added to Doom 1s episode select screen when loaded on a modern source port. Because of this, episode replacements are also just referred to as "episode wads".
A total conversion is a PWAD which throughly replaces many assets to the point that the finished mod is closer to being its own game than a mod.
A partial conversion is a PWAD that makes some changes to the vanilla game, like adding custom weapons and monsters, but still leaves the gameplay mostly intact to the point that the mod becomes more of an "alternative version" rather than an entirely different game.
This term can be somewhat confusing as sometimes megawads advertise themselves as partial conversions despite making no changes to gameplay. Many megawads also make minor gameplay changes, like adding one or two new monsters, but don't identify themselves as partial conversions, adding to this confusion.
For example, the Doom wiki lists Ancient Aliens, a mod that only adds two custom monsters, as partial conversion, but refers to Valiant as a megawad, despite that mod modifying two weapons and overhauling half of Dooms bestiary.
A gameplay mod is a PWAD that changes the games gameplay while leaving the levels untouched (although some gameplay mods provide tutorial levels). This allows you to combine them with the 25+ years worth of Doom maps to experience them in new ways.
Gameplay mods can be split into even more subcategories, like weapon mods, monster mods (may also be referred to as monster packs), gore mods, quality of life mods, utility mods, hud mods, etcetera. Players often combine these to customize their experience even further.
This where the difference between regular mapsets, total conversions and partial conversions becomes important: A total conversion will usually not be compatible with weapon or monster mods, a partial conversion might be compatible with some gameplay mods, and regular mapsets should work with most gameplay mods as long as both are made for the same game.
This explanation is not perfect, it's merely meant to give you an idea of what kind of mods may or may not be compatible. LegenDoom, a mod that adds Fallout 4s legendary mechanics to Doom, can be used with almost any game or mod because it adds its effects to all ingame monsters (even those from monster packs) via a script.
Not every gameplay mod makes major changes to the gameplay, some utility mods, like Autoautosave, don't fundamentally change Dooms gameplay but still fall under the umbrella term "gameplay mod" because they don't add new levels to the game.
Here's a basic overview of a number of source ports that I thought were worth mentioning. This is merely a subjective perpective on a bunch of source ports by some dude who mainly got interested in Doom because of the modding scene surrounding it and wasn't even alive when the game was originally released, so take all my opinions with a grain of salt..
If you want to see a person who knows a bit more about the intricacies of vanilla Doom give their take on a couple of source ports, I'd recommend checking out Dwars' series on source ports here.
ZDoom is a source port that merged code from multiple doom engine games and a handful of other source ports to become one of the most feature-rich source ports of its time. This has led to it and its derivatives being used as not just a source port, but a full-on 3d engine, with some creating entire stand-alone games with the engine, like Hedon and Vomitoreum.
ZDooms development ceased in 2017, and GZDoom has now become it's official "successor".
GZDoom, named after its lead developer, Graf Zahl (which is the german name of the Sesame Street character Count von Count), originally started life as a new renderer for the PrBoom source port. Beyond its new graphical features, it also introduced ZScript, a scripting language currently exclusive to this port which allows for an unprecedented level of modding currently unmatched by any other source port.
Similar to ZDoom in its heyday, it prides itself on its ability to run most of the custom content created for Doom in the last 25 years.
While it is often derided for its lack of vanilla accuracy, its wide range of compatiblity, modability and optimization for modern hardware make this source port one of the most popular source ports around, and one that most Doom players will at the very least have installed somewhere on their computer.
A word of warning though: Because of the stubbornness of its creator GZDoom has some pretty horrible default settings.
LZDoom is a fork of GZDoom with some of its more advanced rendering features stripped out with the aim of allowing players running older Hardware to still be able to run modern Doom mods. While it is not completely up-to-date with the newest GZDoom features it may still be worth looking into if you're running an older system.
Zandronum is a multiplayer-focused source port based on the now defunct Skulltag source port. While Skulltag itself was based on an older version of ZDoom, it still lacked many features newer versions of ZDoom supported. Zandronum ported many ZDoom features to its new engine, and has now become the main source port of choice for multiplayer mods such as Megaman 8-bit Deathmatch.
While many source ports support multiplayer in theory, most use Dooms original peer-to-peer multiplayer, which is extremely unreliable as a single player losing connection will immediately end the game and cause the "server" to be closed. Zandronum (as well as a few other source ports like ZDaemon and Odamex) offers a proper client-server model more in line with what you'd expect from something like Quake, Unreal Tournament and modern Source Engine games. On top of this it also adds a number of features you'd expect to see in most multiplayer games released around the 2000s.
Chocolate Doom is a source port that tries to stay as true to the vanilla game as possible by conserving the original executables look, feel and even bugs, hence the name "Chocolate Doom". This has made it the source port of choice for turbonerds people seeking to experience Doom the way people originally played it in the 90s, as well as mappers who want to ensure that their maps are fully compatible with vanilla Doom.
Crispy Doom is a derivative of Chocolate Doom that doubles the display resolution as well as add a few more "nice to have" visual tweaks while keeping everything else close to vanilla, making it a great source port to pick if you want to maintain the bitcrushed vanilla look and feel while still playing at a somewhat higher resolution.