A DHT-based relay and post store for ActivityPub hashtags
Find a file
Hécate 41e999ed99 Linting integration
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.
2020-05-19 12:42:06 +02:00
src Linting integration 2020-05-19 12:42:06 +02:00
test Linting integration 2020-05-19 12:42:06 +02:00
.gitignore remove unnecessary directory level 2020-05-19 00:01:32 +02:00
.hlint.yaml Linting integration 2020-05-19 12:42:06 +02:00
CHANGELOG.md remove unnecessary directory level 2020-05-19 00:01:32 +02:00
default.nix remove unnecessary directory level 2020-05-19 00:01:32 +02:00
democlient.hs remove unnecessary directory level 2020-05-19 00:01:32 +02:00
demoserver.hs remove unnecessary directory level 2020-05-19 00:01:32 +02:00
FediChord.asn1 remove unnecessary directory level 2020-05-19 00:01:32 +02:00
Hash2Pub.cabal remove unnecessary directory level 2020-05-19 00:01:32 +02:00
hashtest.hs remove unnecessary directory level 2020-05-19 00:01:32 +02:00
LICENSE remove unnecessary directory level 2020-05-19 00:01:32 +02:00
Readme.md add readme 2020-05-19 00:01:32 +02:00
Setup.hs remove unnecessary directory level 2020-05-19 00:01:32 +02:00
shell.nix remove unnecessary directory level 2020-05-19 00:01:32 +02:00
stylish.sh Linting integration 2020-05-19 12:42:06 +02:00

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.