update readmes
add haskell.org link
update README lists
Welcome to ipfshs, this project is a work in progress of what strives to one day be a full stack implementation of the IPFS protocol written in Haskell.
The project is in still a relatively early state, but progress has been made in supporting components of the protocol. Currently, the ipfshs submodules implement the following features of IPFS:
A collection of protocols which aim to future-proof systems
Formats and data structures for building applications that can be fully decentralized
Modules for working with the IPLD data model. It defines the IPLD kinds and provides codecs for reading and encoding formats such as DAG-CBOR.
Provides implementation of multiformats: multicodec, mulithash, multibase, unsigned varints and content identifiers (CIDs).
Implements encoders and decoders for strings of digits for basesystems: base64, base32, base58btc, base16, and more.
Type-class interfaces for building generic encoders and decoders for various
binary data-types, with instances for the bytestring package.
All of the unit tests for all of the ipfshs libraries live in the testing
directory. Python scripts are utilized to generate tests in bulk into JSON
format. This repository holds the source for all the Python utility scripts,
Haskell unit tests, and open source data required for the these tests. See
the licensing section for more information.
The pages linked above in submodules are also included as git submodules each tracking the main branch via CI builds. Since the libraries are included as submodules and continuously updated, the entire source tree for IPFS can be downloaded with a few git commands, and then a branch can either be created or selected for each initialized submodule:
$ git clone https://git.sr.ht/~z0/ipfshs
$ cd ipfshs
$ git submodule update --init --recursive
Here is an example of initializing ipldm for local git development:
$ cd ipfshs/ipldm
$ git checkout main # follow the main branch at the current hash
$ git pull # and pull any new changes
$ git branch localdev # also make our own branch
$ git checkout localdev # and make changes there instead
The project can now be built and unit tested using these commands in the cloned ipfshs directory:
$ cabal build all
$ cd testing
$ cabal test all
Bugs can be reported via the ticket tracker
and patches can be submitted with git send-email
within the module's directory.
Each submodule comes with its own LICENSE.txt when used by itself. The ipfshs
project, and the compilation provided in this repository, are licensed under the
terms of the AGPLv3, included in this repository's LICENSE.txt.
This project uses open source data and scripts for unit testing and to generate
library code. The copyright information, licensing terms, and how each project
is used within ipfshs can be found in CREDITS.md.
Copyright © 2026 Zoey McBride | zoeymcbride@mailbox.org