# Wormhole > Note: Most of these claims are not all valid yet, as Wormhole is > still heavily in development. This is a placeholder for the README > and the goals of the project. Wormhole is a lightweight federated social media server which allows for efficient communication between ActivityPub servers. - **Fast** -- Wormhole is written in modern C++ and utilizes efficient libraries such as RapidJSON for parsing. - **Lightweight** -- Incredibly tiny resource usage, with the choice of SQLite or PostgreSQL for the backend. - **Portable** -- Completely distributable, no need to compile from source to change a configuration option or run migrations. Wormhole is a self-contained powerful executable. - **Modular and Extensible** -- Designed for easy development and drop-in implementations for new protocols, including run-time plugins and compile-time modules. - **Easy to setup** -- Wormhole is very simple to setup; run the executable once to generate a config if not already done. - Powerful when needed -- Nearly every component can be customized, from caching, federation thresholds, or even low-end database options. - **Compatible** -- Bring your own Pleroma/mastodon database, switch between SQLite and Postgres, use your favorite client: Wormhole remains compatible in as many areas as possible Of course, you are encouraged to build and try for yourself if you choose to disregard these claims! **(see note above)** # Documentation Wormhole provides thorough documentation regarding each component in the `docs/` directory. Code is documented with Javadoc and can be generated with `DoxyGen` (as can the pages in the `docs/` directory); to do so, run the following command: $ doxygen Doxygen will generate *HTML*, *Docbook*, *XML*, and *LaTeX* files in the `docs/doxygen` directory. A HTML file that contains a redirect to the `index.html` file is simply placed for convience. # Building Wormhole uses CMake as the primary build system. Create a build directory, then run CMake to generate the build files, followed by your build mechanism (GNU Make). ### Release mode $ mkdir build; cd build $ cmake -DCMAKE_BUILD_TYPE=Release .. $ make # use -j# to parallel compile quickly Following the [Installing](#Installing) steps afterwards. ### Debug mode When compiled with debug mode, debug logs will show up by default, extra asserts will be done, and the program can be debugged. $ mkdir build; cd build $ cmake -DCMAKE_BUILD_TYPE=Debug .. $ make -j2 # Installing Assuming you've [built](#building) wormhole in Release mode, you can now install *(as root, of course)* # make install Now setup your service or what-nots, and you're done! # License ``` This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . ```