We should document the details of the HAMT/CHAMP implementation we are using so that others can implement a compatible library in other languages (and even use it for other projects too).
This should likely be its own document, for now it can go in go-hamt-ipld as a file called spec.md.
I'm not yet sure how the structure of the document should look, but if you take this up, feel free to write it up as you see fit, and we can reorganize later.
Acceptance criteria
Someone should be able to, without looking at any go code, implement a fully compatible HAMT library from the spec document.
Note: I can likely pick this one up if nobody else wants to, but I would very much appreciate a second set of eyes on the algorithms and datastructures. Having me write the canonical code and spec feels like a good way to bake in bad assumptions.
Description
We should document the details of the HAMT/CHAMP implementation we are using so that others can implement a compatible library in other languages (and even use it for other projects too).
This should likely be its own document, for now it can go in go-hamt-ipld as a file called
spec.md
.I'm not yet sure how the structure of the document should look, but if you take this up, feel free to write it up as you see fit, and we can reorganize later.
Acceptance criteria
Someone should be able to, without looking at any go code, implement a fully compatible HAMT library from the spec document.
Risks + pitfalls
Where to begin
https://github.com/ipfs/go-hamt-ipld
Note: I can likely pick this one up if nobody else wants to, but I would very much appreciate a second set of eyes on the algorithms and datastructures. Having me write the canonical code and spec feels like a good way to bake in bad assumptions.