ipld / go-ipld-prime

Golang interfaces for the IPLD Data Model, with core Codecs included, IPLD Schemas support, and some handy functional transforms tools.
MIT License
132 stars 50 forks source link

More examples and getting-started code demos needed #392

Open warpfork opened 2 years ago

warpfork commented 2 years ago

Like it says on the tin.

Making an issue for this so we can put it on boards to remind ourselves there's work to be done here. However, there could be a lot of specific targets in this area, and I'm not sure I can enumerate them all immediately -- more issues may follow.

Some examples of room for improvement:

drgomesp commented 2 years ago

Would be nice to have an example of how to create a sort of DAGService implementation using go-ipld-prime, if that's even applicable anymore, of course.

rvagg commented 2 years ago

@drgomesp one of the difficulties with that API is that it's primarily built around the dag-pb codec, which only manages lists of links and an optional byte array. So it's relatively straightforward to model an API that "builds a DAG" by just adding and removing CIDs. Because go-ipld-prime is not tied strictly to a codec, just arbirary "nodes" in a graph that may or may not involve links, you have to bring some strong opinions about the shape of the data structure to do it.

But maybe such an example makes sense if it's strictly modelled on the dag-pb structure and can therefore be output through the dag-pb codec. Or maybe it could demonstrate a more modern form that uses dag-cbor and a HAMT. I've been working toward some "collections" style work for IPLD that are essentially large managed collections of links, with some additional nice features, maybe that'll end up being a useful example when I finally get something worth showing.. although I'm primarily working on JS with it first, so a Go form may be even more delayed.