Introduce some code formatting guidelines and enforce them with hlint and stylish: - End-of-line extra spaces removal; - Import lines ordering; - Redundant ($) removal; - Generalisation of (++) and map to (<>) and fmap; - Preferring pure over return; - Removing extraenous extensions. |
3 years ago | |
---|---|---|
src | 3 years ago | |
test | 3 years ago | |
.gitignore | 3 years ago | |
.hlint.yaml | 3 years ago | |
CHANGELOG.md | 3 years ago | |
FediChord.asn1 | 3 years ago | |
Hash2Pub.cabal | 3 years ago | |
LICENSE | 3 years ago | |
Readme.md | 3 years ago | |
Setup.hs | 3 years ago | |
default.nix | 3 years ago | |
democlient.hs | 3 years ago | |
demoserver.hs | 3 years ago | |
hashtest.hs | 3 years ago | |
shell.nix | 3 years ago | |
stylish.sh | 3 years ago |
Readme.md
Hash2Pub
This is heavily WIP and does not provide any useful functionality yet.
I aim for always having the master branch at a state where it builds and tests pass.
A fully-decentralised relay for global hashtag federation in ActivityPub based on a distributed hash table. It allows querying and subscribing to all posts of a certain hashtag and is implemented in Haskell.
This is the practical implementation of the concept presented in the paper Decentralised Hashtag Search and Subscription for Federated Social Networks. A 30 minutes introduction talk is available as well.
The ASN.1 module schema used for DHT messages can be found in FediChord.asn1
.
Building
The project and its developent environment are built with Nix.
The development environment can be entered with nix-shell
. Then the project can be built with cabal build
from within the environment, or using nix-shell --command "cabal build"
to do both steps at once.