ipfs / kubo

An IPFS implementation in Go
https://docs.ipfs.tech/how-to/command-line-quick-start/
Other
16.17k stars 3.02k forks source link

Extract plugin interfaces in their own package ? #7608

Open MichaelMure opened 4 years ago

MichaelMure commented 4 years ago

Writing a go-ipfs plugin at the moment imply to import go-ipfs itself to get the interfaces to implement and expose. This create a circular dependency which, while it works imply to update every plugins for each go-ipfs release otherwise go modules start to mess up the dependencies.

It'd be great if those interfaces could be extracted into their own package/repo to break this cycle.

Now I'm well aware that I dug my own grave with https://github.com/ipfs/go-ipfs/commit/2a9e5005da1ae517f8e4a0aa69bce5a1d752372b as this PluginDaemonInternal can't be extracted but it might be the exception to the rule.

aschmahmann commented 4 years ago

This could be nice to do, but might require a bit of work to actually do the refactoring.

High level, I agree the working with plugins (especially when they're not built in tree) can be a big pain as a result of the various issues associated with Golang's plugin system. We should probably figure out a better way to deal with plugins then we currently do.