A DHT-based relay and post store for ActivityPub hashtags
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Trolli Schmittlauch b46f66e2c0 update Readme with latest branch name and pointer to SocialHub 1 year ago
app increase HTTP timeout for initial post publication to 60 seconds 2 years ago
src add log messages for failed relays as well 2 years ago
test fix tests 2 years ago
.gitignore remove unnecessary directory level 2 years ago
.hlint.yaml adjust hlint hints to ignore lambda-case 2 years ago
CHANGELOG.md remove unnecessary directory level 2 years ago
FediChord.asn1 indicate in LeaveRequest whether to expect a migration 2 years ago
Hash2Pub.cabal update ghc to 8.6.4, nixpkgs base to 20.09 2 years ago
LICENSE remove unnecessary directory level 2 years ago
Readme.md update Readme with latest branch name and pointer to SocialHub 1 year ago
Setup.hs remove unnecessary directory level 2 years ago
cabal.project.renameinfuture disable online package fetching, only starts to work with cabal 3.4 and needs to be renamed then 2 years ago
default.nix update ghc to 8.6.4, nixpkgs base to 20.09 2 years ago
democlient.hs remove unnecessary directory level 2 years ago
demoserver.hs remove unnecessary directory level 2 years ago
hashtest.hs remove unnecessary directory level 2 years ago
shell-minimal.nix add nix shell environment without HIE for smaller foot print 2 years ago
shell.nix update ghc to 8.6.4, nixpkgs base to 20.09 2 years ago
stylish.sh Linting integration 2 years ago

Readme.md

Hash2Pub

This is heavily WIP and does not provide any useful functionality yet.
I aim for always having the mainline branch in 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.

For further questions and discussins, please refer to the Hash2Pub topic in SocialHub.

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.