A federated online encyclopedia
Go to file
Dessalines 6d7910f929 Adding leptos and taplo format checks. 2024-03-29 09:42:06 -04:00
.github Add funding.yml with liberapay profile 2024-03-14 14:33:21 +01:00
assets fix: mobile css layout (#22) 2024-03-14 10:13:07 +01:00
config fix default config 2024-02-28 12:24:13 +01:00
migrations Fix problems with invalid apub ids 2024-03-11 13:40:03 +01:00
scripts Add release script 2024-03-08 15:28:52 +01:00
src Adding leptos and taplo format checks. 2024-03-29 09:42:06 -04:00
tests Never use https in SSR mode, some more bug fixes 2024-03-08 14:29:29 +01:00
.gitignore simplify trunk setup 2024-01-11 16:21:44 +01:00
.leptosfmt.toml Adding leptos and taplo format checks. 2024-03-29 09:42:06 -04:00
.rustfmt.toml Use nightly cargo fmt for better imports formatting 2024-03-05 16:38:07 +01:00
.woodpecker.yml Adding leptos and taplo format checks. 2024-03-29 09:42:06 -04:00
Cargo.lock Fix problems with invalid apub ids 2024-03-11 13:40:03 +01:00
Cargo.toml Adding leptos and taplo format checks. 2024-03-29 09:42:06 -04:00
LICENSE add agpl license 2023-11-15 01:38:16 +01:00
README.md Update readme description 2024-03-13 14:05:52 +01:00
Trunk.toml add scripts for watch/federate 2024-01-30 12:32:02 +01:00
build.rs Never use https in SSR mode, some more bug fixes 2024-03-08 14:29:29 +01:00
config.toml Use include_str! to allow deployment as single binary 2024-02-28 18:31:46 +01:00
diesel.toml wip: Add diesel and postgres 2023-11-30 11:46:42 +01:00

README.md

About Ibis

Ibis is a federated alternative to Wikipedia. It uses the Activitypub protocol for communication between different servers (instances), similar to Mastodon or Lemmy. Users can sign up on any instance to read and edit articles, including articles from other instances. The project is currently in alpha state, with core functionality working but countless features still missing.

Read the Project Announcement for more information.

Name

The Ibis is a bird which is related to the Egyptian god of knowledge and science.

Development

First install PostgreSQL and setup the development database:

psql -c "CREATE USER ibis WITH PASSWORD 'ibis' SUPERUSER;" -U postgres
psql -c "CREATE DATABASE ibis WITH OWNER ibis;" -U postgres

You need to install cargo, trunk and cargo watch. Run ./scripts/watch.sh which automatically rebuilds the project after changes. Then open the site at 127.0.0.1:8080.

By default the frontend runs on port 8080, which can be changed with env var TRUNK_SERVE_PORT. The backend port is 8081 and can be changed with IBIS_BACKEND_PORT.

Federation

Main objects in terms of federation are the Instance and Article. Each article belongs to a single origin instance, the one where it was originally created. Articles have a collection of Edits a custom ActivityPub type containing a diff. The text of any article can be built by starting from empty string and applying all associated edits in order. Instances can synchronize their articles with each other, and follow each other to receive updates about articles. Edits are done with diffs which are generated on the backend, and allow for conflict resolution similar to git. Editing also works over federation. In this case an activity Update/Edit is sent to the origin instance. If the diff applies cleanly, the origin instance sends the new text in an Update/Article activity to its followers. In case there is a conflict, a Reject activity is sent back, the editor needs to resolve and resubmit the edit.

License

AGPL