-
Notifications
You must be signed in to change notification settings - Fork 11
Why multiple implementations in different languages? #97
Comments
This is a good question. Multiple implementations of a spec ensure redundancy. They also help to isolate and discover bugs, which may have otherwise not have been noticed due to the lack of a reference point. @diasdavid can talk more about the uses of js-ipfs. As far as I know, the Python implementation hasn't yet advanced very far. |
Our current focus is the go and js implementations, however it is important to understand that IPFS is a protocol, not a library, and so, like any other protocol, it will eventually see an implementation in every other language where there is a will to use it. We could in fact expose an API, which we do, and create clients in other languages, which we have done in js, swift, java, python and go, that developers can use to interact with IPFS directly, however, having a complete implementation brings several benefits when it comes to hackability and portability. Plus it enables us to do fancy things some environments supports, such as you described, WebRTC in the browser.
That situation will be eventually be stabilised :) Hope that this answer was helpful |
Ok makes sense. However, let me give my 2 cents: I think IPFS is still in the adoption phase. And to help its adoption, it has to support the best features as soon as possible. I consider WebRTC a fundamental use case that would improve adoption of IPFS by orders of magnitude. So, I think the JS implementation should use GopherJS (maybe only temporarily?) to get there as soon as possible. |
One thing related, is that if you publish implementations in many languages, you could hit some good developers that are good just in one language. |
This issue has been moved to https://discuss.ipfs.io/t/why-multiple-implementations-in-different-languages/371. |
I see there are multiple implementations for IPFS: Go, JS, and Python.
I can understand why you would want to have a JS implementation, so that it runs inside the browser (no need to install) and benefits from WebRTC's P2P capabilities.
However, what's the point of having a Python implementation? It seems also that the reference implementation in Go will always be more complete than the alternatives. Isn't it too much overhead? Also, maybe using GopherJS (https://github.com/gopherjs/gopherjs) for the in-browser version of IPFS helps the team finish it earlier, and allows not having to maintain many implementations at once.
Thanks
The text was updated successfully, but these errors were encountered: