A DHT-based relay and post store for ActivityPub hashtags
Find a file
2020-10-07 00:43:06 +02:00
app add config option for k-choices rebalance interval 2020-10-06 16:01:29 +02:00
src start implementing k-choices rebalancing, considering 1 VS each run 2020-10-07 00:43:06 +02:00
test refactor vservers map to RingMap to be able to index it 2020-10-05 02:27:02 +02:00
.gitignore remove unnecessary directory level 2020-05-19 00:01:32 +02:00
.hlint.yaml adjust hlint hints to ignore lambda-case 2020-05-29 21:30:18 +02:00
cabal.project.renameinfuture disable online package fetching, only starts to work with cabal 3.4 and needs to be renamed then 2020-07-14 13:40:13 +02:00
CHANGELOG.md remove unnecessary directory level 2020-05-19 00:01:32 +02:00
default.nix make inclusion of HIE overlay conditional as well 2020-09-21 22:14:33 +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 implement k-choices join functions 2020-09-25 01:41:04 +02:00
Hash2Pub.cabal Merge branch 'measurement_logging' into mainline 2020-09-17 02:19:04 +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 clarify different nix-shell environments in readme 2020-09-05 15:01:46 +02:00
Setup.hs remove unnecessary directory level 2020-05-19 00:01:32 +02:00
shell-minimal.nix add nix shell environment without HIE for smaller foot print 2020-08-13 13:08:38 +02:00
shell.nix enable HIE only in the shell environment, but not by default 2020-07-26 16:38:56 +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 shell-minimal.nix. Then the project can be built with cabal build from within the environment, or using nix-shell --command "cabal build" shell-minimal.nix to do both steps at once.

While the shell-minimal.nix environment contains everything necessary for building and testing this project, the shell.nix additionally contains the Haskell IDE engine hie and the documentation for all used Haskell packages for more convenient development.
Be aware that these need to be build from source and can take a very long time to build.