# CMaNGOS keeps a World of Warcraft server emulator honest about behaviour

> mangos-wotlk is the Wrath of the Lich King branch of the CMaNGOS project, a C++ server emulator whose stated purpose is to match the behaviour of the original service as closely as possible, and whose GPL-2.0 licence, trademark disclaimers and third-party dependency directory are part of the deal you inherit when you build it.

**cmangos/mangos-wotlk** — C(ontinued)-MaNGOS is about: -- Doing WoW-Emulation Right!

- Repository: https://github.com/cmangos/mangos-wotlk
- Website: http://cmangos.net/
- Stars: 561 · Forks: 337
- Language: C++
- License: GPL-2.0
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/cmangos-mangos-wotlk

## A server emulator defined by the word right

CMaNGOS is described as a free project whose goal is Doing Emulation Right, and the README expands that phrase into three commitments rather than leaving it as a slogan.

The first is doing, which the README spells out as this project is focused on developing software, and adds that there are many other aspects that need to be done and are considered equally important, with anyone who wants to do something very welcome to do so.

The second is emulation, which the project defines as developing a server software that is able to emulate a well known MMORPG service.

The third is right, and this is the one with teeth. The goal must always be to provide the best code that we can, and being right is defined by the behaviour of the system we want to emulate. Developing things right also includes documenting and discussing how to do things better, which is why learning and teaching are described as always being part of what the project does.

That definition has a practical consequence for anyone reading the source. Correctness is measured against the behaviour of the original service rather than against a design preference, so a patch that makes the emulator more logical but less faithful is not an improvement by this project's own standard. It is a strict definition, and it is the reason the project also asks for documentation and discussion as part of the work rather than treating them as secondary.

The repository in question, mangos-wotlk, is the branch for the Wrath of the Lich King era of that service, and the codebase is C++ with GPL-2.0 licensing. The last push was on 2026-10-22, and the published release is a development build rather than a versioned tag.

## Freedom for developers, and a friendly room to work in

Beyond the emulation goal, the README states the conditions the project wants to work under, and they are unusual enough to quote.

On freedom, there are two kinds. Freedom of work, which means the code is released under the GPL so everybody is free to use and contribute to the open source project, and freedom for developers and contributors on things that interest them, with the line that no one here is telling anybody what to do. The README puts it bluntly: if you want somebody to do something for you, pay them, but we are here to enjoy. There is a third kind, freedom to have fun with developing.

The second condition is a friendly environment, and the rules are equally concrete. The project tries to leave personal issues behind, they only argue about content and not about thin air, and they follow the Netiquette.

That is worth reading for what it says about the project's shape. A server emulator that tries to match a commercial service's behaviour is a long-term maintenance job with a large contributor base, and the README's framing is that the environment where people work is a deliberate part of the design, in the same way the behaviour matching is.

The practical upshot for a prospective contributor is that the project advertises an open contribution process with a contributing guidelines document at the repository root, and the README asks you to look at it. There is a Discord server, a GitHub issue tracker, and a pull request queue for the mangos-wotlk repository specifically, which tells you where work actually gets proposed.

The support for this branch also comes with a caveat about upstream: the project runs several repositories under the cmangos organisation, and the issue tracker and wiki links in the README point at the shared tracker rather than a branch specific one, so expect to read issues about other game versions when you search for prior work on a protocol question.

## The GPL plus the OpenSSL exception, read literally

The licensing section is longer than most projects of this size, and the reason is that the code is a reimplementation of a service operated by a large commercial company whose marks and content are separately protected.

The base grant is the GNU General Public License version 2 or later, in the standard form, with the full text delivered in the COPYING file and the summary in the README describing the program as distributed in the hope that it will be useful but without any warranty.

Then the exceptions, which are the parts that need reading rather than skimming. World of Warcraft content is copyrighted by Blizzard Entertainment or its licensors, and the listed names, including WoW, Warcraft, The Frozen Throne, The Burning Crusade, Wrath of the Lich King, Cataclysm, Mists of Pandaria and a set of dungeon and character names, are trademarks or registered trademarks in the United States and other countries. The README states plainly that the project is not affiliated with Blizzard Entertainment or its licensors.

The third-party point is concrete. Some of the libraries the project uses have other licences that must be upheld, and those libraries live in the `dep/` directory. So the GPL applies to the project code, and whatever licence each vendored dependency carries applies to that dependency, and the obligation to comply with all of them sits with whoever distributes the build.

The fourth part is the OpenSSL linking exception. As a special exception, the project gives permission to link the code of its release of MaNGOS with the OpenSSL project's OpenSSL library, or with modified versions of it under the same licence, and to distribute the linked executables. The GPL still has to be obeyed for all other code, and the exception may be extended to your own version of the file if you modify it, but it is not an obligation, and the statement may be deleted if you would rather not carry it.

This is not legal advice, but the structure of it is worth understanding before you build. You inherit a GPL-2.0 codebase, a set of dependency licences you must honour, and a trademark position in which the project's own name and marks are the protected part and Blizzard's marks are the ones you must not claim.

## What the repository actually contains

The top level of the repository is the clearest evidence of how the project is put together.

There is `src/` for the server source, `dep/` for the third-party libraries with their own licences, `sql/` for the database side, `cmake/` for the build system, `contrib/` for contributed extras, and `doc/` for the documentation. At the root sit `CMakeLists.txt`, `createprojects.bat`, and the usual project paperwork: `AUTHORS.md`, `COPYRIGHT.md`, `CONTRIBUTING.md`, `THANKS` and `WARNING`, along with `ChangeLog.md` and `NEWS.md`.

A few of those files earn their place. `NEWS.md` and `ChangeLog.md` are separate, which is a small sign of care about telling a user what changed from telling a developer how it changed. `WARNING` has no extension, which suggests it is a plain notice rather than a document, and it is the file to read before you do anything with a build. `createprojects.bat` is a Windows batch file for generating project files, so the CMake build is not the only entry point available.

The presence of `sql/` is the detail that decides whether this project is approachable for you. A server emulator is a stateful service, and the state lives in a relational database whose schema has to be created before anything works. That is a substantial difference in setup cost from an application you clone and run, and it is the part of the install that the README does not describe, which is why it points at the wiki with additional information on installation and at the documentation in the `doc/` subdirectory.

The code formatting is also pinned down, with a `.clang-format` file at the root, which is a small but telling detail for a C++ codebase of this size and age. Consistent formatting across a large contributor base is not achieved by good intentions alone.

## Continuous builds across three desktop platforms

The README opens with three CI badges, and they are the ones for Windows, Ubuntu and MacOS workflows, which tells you the project builds on all three and that those builds are checked continuously rather than occasionally.

That matters more for an emulator than it does for a typical library. The codebase is large C++ that has to compile cleanly against different system libraries on three operating systems, and the configurations where it does not compile are exactly where an emulator breaks for its users. Continuous builds across Windows, Ubuntu and MacOS mean the project knows which combinations work on the day you pull it.

The build system is CMake, with the configuration in the `cmake/` directory and the top level `CMakeLists.txt`. The `createprojects.bat` script in the root suggests the CMake configuration is used to generate IDE project files on Windows as well.

The release story is different from the build story, and worth understanding. The published release is labelled a development build, dated 2026-05-23, rather than a version number. For a project whose whole premise is matching the behaviour of a specific commercial service, a named release carries more weight than for most software: it is a fixed record of known-good behaviour that you can point at. So the practical approach for an operator is to pick the development build you tested, or to build a specific commit, and record it.

The repository is not archived and the last push was on 2026-10-22, so work is happening on the branch continuously.

## Where this fits, and where the friction is

The case for a server emulator branch like this one is straightforward: it lets a group of people run their own instance of a service that no longer accepts new servers, with the behaviour of the original rather than a rough approximation.

The friction is in the parts the README does not describe. There is no installer here, no package, and no client. A working server needs the database schema loaded from `sql/`, a configuration that this README does not include, and a game client that the project cannot distribute and asks you to supply under Blizzard's own terms. The documentation that would fill those gaps is in the `doc/` subdirectory and the wiki, which is where the README sends you for installation information.

There is also the version alignment problem, and the branch name makes it concrete. mangos-wotlk targets the Wrath of the Lich King era specifically, and the server and client have to agree on data structures, spell revisions and protocol details. A client from a different era against this server will produce errors that look like emulator bugs.

The alternative approach is to use a different project entirely. Several emulator families exist for the same game, and they differ in how strictly they reproduce the original behaviour, in which expansion they target, and in whether they include the tooling for running a populated world with scripts, quests and dungeons. A branch that emulates one expansion with fidelity as its stated priority is a different proposition from one that tries to support every era and every convenience feature at once.

The second alternative is to skip emulation and use a hosted service or a modern retail-like game, which removes every setup problem above and removes the point of the project. For an organisation that wants to study the protocol, script content or run a community server on the original rules, that is the trade being made, and it is the trade the README's three goals are written to justify.

## Conclusion

Adopt mangos-wotlk if you want to run a Wrath of the Lich King era World of Warcraft server and you are prepared to build from source, supply the client yourself and read the documentation in the `doc/` directory and the project wiki. Do not adopt it expecting a turnkey package, since the repository ships source and a wiki rather than installers, and do not redistribute Blizzard content, which the project explicitly does not license. Verify first that your client build matches the emulator branch, that the database schema under `sql/` is loaded before the server starts, that the third-party libraries under `dep/` carry licences you can comply with, and that you have read the `WARNING` file and the OpenSSL linking exception in the LICENSE terms before you distribute a build.

## FAQ

### What is CMaNGOS and what does mangos-wotlk contain?

CMaNGOS is a free project whose goal is Doing Emulation Right, developing server software that emulates a well known MMORPG service. mangos-wotlk is the branch targeting the Wrath of the Lich King era, written in C++ and licensed under GPL-2.0.

### How do I install a CMaNGOS server?

The README does not give installation steps in the repository itself. It points to the project wiki, which carries additional information on installation, and to the documentation in the `doc/` subdirectory, and the repository carries a CMake build with `createprojects.bat` for generating project files and a `sql/` directory for the database side.

### What licence does CMaNGOS use and are there exceptions?

The project is released under the GNU General Public License version 2 or later, with the full text in COPYING. There is a special exception permitting linking with the OpenSSL library and distributing the linked executables, third-party libraries under `dep/` carry their own licences that must be upheld, and World of Warcraft content and marks are separately protected by Blizzard Entertainment, with which the project is not affiliated.

### Does the CMaNGOS project ship the game content?

No. The README states that World of Warcraft content is copyrighted by Blizzard Entertainment or its licensors, that listed names are trademarks or registered trademarks, and that the CMaNGOS project is not affiliated with Blizzard Entertainment. The code is the emulator; the content and the client are not part of it.

### How is the CMaNGOS development process run?

The README asks that contributors read CONTRIBUTING.md, and points to the CMaNGOS Discord, the GitHub repositories, the shared issue tracker, the pull request queue for mangos-wotlk, and the wiki. It also describes the working philosophy as a friendly environment where personal issues are left aside and only content is argued about.

## Sources

- [cmangos/mangos-wotlk on GitHub](https://github.com/cmangos/mangos-wotlk)
- [License: GPL-2.0](https://github.com/cmangos/mangos-wotlk/blob/master/LICENSE)
- [Project website](http://cmangos.net/)
- [README](https://github.com/cmangos/mangos-wotlk/blob/master/README.md)
- [Releases](https://github.com/cmangos/mangos-wotlk/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/cmangos-mangos-wotlk
