Hécate
41e999ed99
This commit brings in an HLint configuration file and several recommended modifications such as: * 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. And finally, a `stylish-haskell` helper script that detects if code files are dirty. Can be useful for CI, although manually calling it can be nice if you would rather first implement then beautify. |
||
---|---|---|
src | ||
test | ||
.gitignore | ||
.hlint.yaml | ||
CHANGELOG.md | ||
default.nix | ||
democlient.hs | ||
demoserver.hs | ||
FediChord.asn1 | ||
Hash2Pub.cabal | ||
hashtest.hs | ||
LICENSE | ||
Readme.md | ||
Setup.hs | ||
shell.nix | ||
stylish.sh |
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.