Find a file
nekobit 96a8adbb20 Frontend stuff, fix request bugs, fcgi init
FossilOrigin-Name: c50619fe310abc08cf7a4753fd36542197373c27118d9378fa7265fb84e64d32
2022-10-30 06:14:37 +00:00
.fossil-settings Add doc redirect 2022-09-27 18:47:59 +00:00
cmake Split CMake components to libraries, import OpenSSL 2022-10-11 00:22:45 +00:00
docs Documentation 2022-10-21 04:09:24 +00:00
src Frontend stuff, fix request bugs, fcgi init 2022-10-30 06:14:37 +00:00
test Random token generation 2022-10-22 22:18:07 +00:00
AUTHORS Libmicrohttpd linkage 2022-09-27 03:08:39 +00:00
CMakeLists.txt Frontend stuff, fix request bugs, fcgi init 2022-10-30 06:14:37 +00:00
config.sample.yaml Frontend config 2022-10-29 20:59:08 +00:00
Doxyfile Doxygen options 2022-10-21 04:28:51 +00:00
LICENSE Libmicrohttpd linkage 2022-09-27 03:08:39 +00:00
README.md Doxygen options 2022-10-21 04:28:51 +00:00

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 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 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 <https://www.gnu.org/licenses/>.