-
Notifications
You must be signed in to change notification settings - Fork 0
Scope of rust-ipfs
#8
Comments
This makes sense, and if we agree on this I think a reasonable resolution to this as an issue would be to include it in the README and CONTRIBUTING.md. I can take ownership of that.
Agree on stable 👍 The resolution here is to enforce these standards via CI. Windows testing is the only one that's problematic, as it costs $$. Another goal for fundraising, perhaps.
@vmx Is there is an "official" designation for items in the IPFS spec? It would be great to have a very clear threshold for what we will support and what we will not. Finally, @vmx @koivunej @dvc94ch and @rklaehn, here's a big open question: For the cli, following the command spec in lock-step makes sense. However for the Rust APIs, I'm wondering if the Rust language itself idiomatic (Traits and trait implementations are the main thing that comes to mind) in a way where the way traditional IPFS APIs are structured - ipfs.pin.ls(), ipfs.pin.add(), ipfs.pin.rm() - might be problematic? |
I think Rust IPFS should also implement experimental features (though not as a priority). Current experimental features of JS IPFS can be found here https://github.com/ipfs/js-ipfs/tree/e9eca18b9531f35b19094f9c0aa5073fba07814d/packages/ipfs#optionsexperimental. I think eventually Rust IPFS should support all the things that the interop tests support.
I would just start somewhere, but won't take decisions taken at the beginning for granted. I'd expect that things on earlier implemented commands might change again while implementing other commands. |
Another thing I noticed in going through the @vmx @hugomrdias your guidance would be very useful here. Luckily this looks like it might not be an issue until Phase 1.2 so we have some time to mitigate this |
Start looking into js-ipfs repo instead of that one, we are moving to a mono repo setup. |
@hugomrdias Would it be possible to get this version of interface-ipfs-core published to npm? We currently don't need to patch the tests yet but it would give us the I can |
Earlier @vmx wrote (sorry for the delay):
This sounds like a better scoping in the longer run. No point in not doing something if there are conformant impls and tests for that.
I don't we should aim to keep the programming language apis the same, as priority at least. Multi-dot APIs could be offered but that seems like a waste in Rust. Some names and naming conventions have been bikeshed long already, for example: HashSet does not have |
Perhaps we can eventually make some sort of document like "Rust IPFS for the [JS|Go] Developer" |
I agree. The same functionality should of course be implemented, but the API should be idiomatic for the corresponding language. |
Looking at how the apis have evolved the One idea for non-async_trait access was to provide mostly libp2p Swarm alike API (leave polling of the "stream" or "everything" to user). This would work for applications which don't necessary want the multiple layers of tracking which are essential for conformance testing but not so much for any application, since the tracking cannot be used as a strong indicator but as a weak indicator at the level of "is a tcp connection open".. Disregarding non-perfectly looking APIs I still feel that getting the common tests running is the number one priority since there is so much code already without conformance testing. |
What's wrong with |
Just to clarify. In my previous comment I was replying to myself to my comment before that, specificly the idea I had with "splitting" or "namespacing" the single facade with traits, to allow for cohesive documentation. |
I propose the following:
rust-ipfs
as an embeddable crate initially forstd
capable rust applications which might want to expose the HTTP API in addition to working on the provided interfaces such as what the currentIpfs
type providesrust-lang
does, and currently compile on latest stable compiler.rust-ipfs
will be build per grant to be testable with existingipfs
testing tools such asjs-interface-http-api
andinterop
rust-ipfs
and aim to pass the tests common tests in order not to fragment the ipfs API ecosystem but to be one additional implementation with different runtime characteristics and enable more ipfs projects in different programming languagesThe text was updated successfully, but these errors were encountered: