1
0
Fork 0
mirror of https://github.com/Nutomic/ibis.git synced 2024-11-22 09:01:09 +00:00
ibis/README.md

36 lines
2.4 KiB
Markdown
Raw Normal View History

2024-03-13 13:05:52 +00:00
About Ibis
2023-11-15 00:38:16 +00:00
===
2024-03-13 13:05:52 +00:00
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](https://ibis.wiki/article/Announcing_Ibis,_the_federated_Wikipedia_Alternative) for more information.
2023-11-15 00:38:16 +00:00
2024-03-08 15:09:51 +00:00
## Useful links
2023-12-20 16:08:19 +00:00
2024-03-08 15:09:51 +00:00
- [Usage Instructions](https://ibis.wiki/article/Usage_Instructions)
- [Setup Instructions](https://ibis.wiki/article/Setup_Instructions)
2024-02-14 13:45:58 +00:00
2024-03-08 15:09:51 +00:00
## Name
2024-02-14 13:45:58 +00:00
2024-03-08 15:09:51 +00:00
The Ibis is a [bird which is related to the Egyptian god of knowledge and science](https://en.wikipedia.org/wiki/African_sacred_ibis#In_myth_and_legend).
2024-02-14 13:45:58 +00:00
2024-01-09 11:41:44 +00:00
## Development
First install PostgreSQL and setup the development database:
```sh
psql -c "CREATE USER ibis WITH PASSWORD 'ibis' SUPERUSER;" -U postgres
psql -c "CREATE DATABASE ibis WITH OWNER ibis;" -U postgres
```
2024-03-08 15:09:51 +00:00
You need to install [cargo](https://rustup.rs/), [trunk](https://trunkrs.dev) and [cargo watch](https://github.com/watchexec/cargo-watch). Run `./scripts/watch.sh` which automatically rebuilds the project after changes. Then open the site at [127.0.0.1:8080](http://127.0.0.1:8080/).
2024-01-29 15:06:24 +00:00
2024-01-30 11:32:02 +00:00
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`.
2024-03-13 13:05:52 +00:00
## 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 `Edit`s 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.
2023-11-15 00:38:16 +00:00
## License
[AGPL](LICENSE)