Since John Carmack released the Doom source code, it has provided a significant advantage for modifying and creating independent games. And also, it created source ports just like ZDoom, GZDoom, LZDoom, Chocolate Doom, Crispy Doom, and others. GZDoom is the most recent source port and more stable for modding support and modern gameplay. Most of the mods were made with Doom II: Hell On Earth as a base.
Ultimate Doom Builder works for level design. You can also include scripts here without SLADE3. Very easy to use and map creation using IWADs as a base. It is available for Windows, macOS and Linux and it's totally free and open-source!

SLADE3 it is also free and open source. This is the structure builder for Doom modding using C/C++ (optional) and ACS Script Language by default. With this tool, we can replace or add more textures to our Doom WAD or total conversion.

WhackEd4 is used to modify parameters for monsters, the player and weapons. Also we can edit the strings, changing level names, messages when the player pick items or death messages.

ACS (Action Code Script) is the code editor for events, enemies and environment interaction. It's used like C/C++. You can use it on Ultimate Doom Builder or SLADE3.

Other tools to use for Doom modding are just like graphic design, audio software for music and ambient sounds. Even we can put in 3D models using .md3 file format, which was used for Quake games.