Cube 2: Sauerbraten
Cube 2: Sauerbraten is an engine/editor for designing and playing first person shooter games, primarily aimed at multiplayer LAN games. It is an entirely open source/freeware project, actively supported and developed, and supports a good set of features, all of which ultimately lead to getting some friends together and blowing each other to bloody gobbets. Good times, good times.
While many systems for designing FPS maps use an editor/engine split, where you engage in an edit/test/edit again cycle, Sauerbraten makes no such distinction. You load up, or create, a map, then press "E" to begin editing it, and "E" again to leave edit mode. At the simplest level, editing consists of extruding or deleting cubes and adding textures, but to create the kind of beautiful maps you can see in screenshots or play as part of Sauerbraten's distribution package, you will need to master a variety of skills, as well as creating or importing textures designed for your specific needs.
Sauerbraten does not use a standard Windows interface. Most editing in Cube 2: Sauerbraten is accomplished by some mix of "click a key, then spin the mousewheel." In essence, you constantly shift into different modes. Press "y" to make the mousewheel cycle through textures. Press "g" to make the grid size smaller or larger. Multiple players logged into a map can all edit it cooperatively, allowing teams to work on a project and see each other's changes happening dynamically.
In some cases, you need as much coordination to edit a map as to frag your friends. For example, bending and deforming corners requires holding down the mousewheel while dragging to select a range, then spinning the mousewheel to edit the corners, all without ever letting the mousewheel up or clicking any of the other mouse buttons. My failure to master this skill meant that I constantly lost my selection, selected the wrong squares, or was only able to perform a partial edit before my fingers slipped.
As with many open-source projects, documentation is sparse and sometimes out of date. There is a forum for asking questions, and I did find it useful, but it uses very non-standard forum software that seems to have fallen through a timewarp from 1998, with a simple list of topics-as-links. There's a wiki, but it consists mostly of stub articles and partially written guides that tend to make assumptions about prior knowledge.
A fairly basic scripting language (CubeScript) is also part of Sauerbraten. It's intended primarily for trigger events (such as causing a monster to spawn when you cross a square), rather than scripting advanced AI or adding complex new features. The engine source code, though, is open source, so it is certainly possible to use it as a base for adding additional functionality via more traditional means.
If you're interested in FPS map design--and aren't afraid to get your hands a little dirty and experiment a bit to figure out what works and what doesn't--download Sauerbraten and check it out. Just make sure your mousewheel finger isn't as itchy as your trigger finger.
Note: I experienced regular crashes using Sauerbraten, but a forum search revealed this is a common issue with ATI drivers and provided a quick fix; since then, I experienced no issues.