Ipfs: 🌟 Do you want to implement IPFS in a new language, get started here!

Created on 26 Sep 2016  ·  28Comments  ·  Source: ipfs/ipfs

If someone wants to create an IPFS implementation in a new language, the best starting point is to create the supporting libp2p and multiformats modules. Those modules are useful beyond IPFS and you absolutely need them in order to have a working IPFS implementation in your language.

Most helpful comment

Thank you for capturing this @flyingzumwalt. Here is an up to date list, of all of this supporting modules with their respective implementations in go and JS + specs.

Supporting Modules

All 28 comments

Thank you for capturing this @flyingzumwalt. Here is an up to date list, of all of this supporting modules with their respective implementations in go and JS + specs.

Supporting Modules

@RichardLitt where does this info belong? It's relevant to ipfs, libp2p and multiformats.

This should probably be here, in community, I think. The first step towards building IPFS in a different language is through getting community support. We can add this stuff as a guide: "How to implement IPFS in your favorite language".

Let's pull this into a document here; sound good?

Is there a per-language (excluding JS, Go and python) state of the art channel/discussion already somewhere? I am wondering because I know there are several modules already implemented in several languages but I can't find an exact or concise summary of each. Especially for the languages without a general ipfs directory yet (like java-ipfs or rust-ipfs etc).

Moreover -just out of curiosity- is there a priority order for protocol Labs in terms of what the next language should be ? (or is this left to the community ?)

I would be willing to write (or help write) something in C++ if there is interest.

@theobat that's a great question! @RichardLitt it looks like we meant to set up a reference page with this info but both forgot. I like @theobat's question about finding existing efforts to implement IPFS in a given language. Are we tracking that anywhere? @whyrusleeping @diasdavid do you know? Does anyone have ideas how we we should track this?

On Wed, Oct 26th 2016 (next week) we begin the c-ipfs implementation.
https://github.com/kenCode-de/c-ipfs

There will be 5 of us working on it to begin with. If you will be contributing, you can also join our skype group if you'd like, so just email me your skype name and I will add you. Please and Thanx! :)

@kenCode-de What time zone are you in and what time will the meeting start on Wednesday? Your Github page says you're located in Germany, is that correct?

yep, i live in munich but the skype meeting is at 0930 GMT on wednesday. we are beginning the c-ipfs implementation. we have at least 5 guys who have committed so far and i hope we can round up a few more...

@kenCode-de I work during that time. Can you record the Skype conversation? I think recording only the audio should be sufficient so that sharing it isn't an issue.

@theobat that's a great question! @RichardLitt it looks like we meant to set up a reference page with this info but both forgot. I like @theobat's question about finding existing efforts to implement IPFS in a given language. Are we tracking that anywhere? @whyrusleeping @diasdavid do you know? Does anyone have ideas how we we should track this?

Let's do it then. :)

I think we are only tracking different efforts on ipfs/ipfs, both in the README here and in the issues, where people can check issues (cf https://github.com/ipfs/ipfs/issues/164).

Yeah thanks @RichardLitt , this readme is what I was looking for it's a pretty good _per-language overview_, I didn't search thoroughly enough I guess... But as the recent reflections suggest docs and directions could be slightly more centralized... @ianopolous any plans to implement libp2p in Java yet or is it still to be scheduled ?

@theobat I do indeed plan on implementing ipfs and hence libp2p in Java. As it gives once less thing that Peergos users will need to install. Though I probably won't be able to start for another few months.

Implementation in C is now underway: https://github.com/ipfs/ipfs/issues/164

IPFS should have started with a C/C++ implementation, and used wrappers for all other languages (Nim is of particular interest to me). Starting with Go and JS was a mistake IMHO, and I don't think IPFS will get very far unless a C/C++ implementation takes over.

This thread is about people who are implementing or interested in implementing IPFS in new languages. If you are interested in working on IPFS in C, @kenCode-de would love to have more help with that effort. Complaining about the existing implementations helps nothing.

If your concern is that you cannot bind to existing implementations with other languages, take a look at building shared libraries with go: http://blog.ralch.com/tutorial/golang-sharing-libraries/

You might also be interested in this thread about a C/C++ implementation: https://github.com/ipfs/ipfs/issues/164

C-IPFS is now functional, pre-release of v1.0 is online, API and IPNS is working, just doing all the testing and fixing and testing and fixing now... Getting it to play nice with the Go version.. priceless ;)
https://github.com/Agorise?tab=repositories
Peace, Love, and Agorism,
kenCode

@Agorise Thats great! I'm gonna try it out now :)

@Agorise where should users report issues? The repo you linked doesnt have an issue tracker

We should have .deb and raspi builds in the next few days there as well..
kenCode

oops, forgot to turn it on. here ya go:
https://github.com/Agorise/c-ipfs/issues
kenCode

What about java?

Is there any implementation of libp2p in Java, Kotlin or Scala?

I would be interested to implement libp2p to Java. Any suggestions how I should proceed? Anyone interested to help on this task? I created a github repository for this project https://github.com/fellahst/java-libp2p. I am planning to use the java library from multiformats as foundation for handling Multiaddr, Multihash, Multicodec and Multistream. I would be nice if there was a UML (or conceptual model) formalized from libp2p team to guide the OO implementation.

I hope to implement java-libp2p and java-ipfs eventually. But that won't be any time soon so don't wait for me. (I'm the author of the java multi's and cid and http-api)

I also have a handy ipld-cbor implementation in Java which will be needed for java-ipfs (though it's internal to peergos and not released on its own).

I would be interested to implement libp2p in Scala using Parapet.

Closing this issue as part of a larger effort to tidy up repos. However, please feel welcome to join in the conversation on the IPFS Forums to discuss, brainstorm, or get help in implementing IPFS in your favorite language. See you there!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Miserlou picture Miserlou  ·  6Comments

nbingham1 picture nbingham1  ·  19Comments

brainframe-me picture brainframe-me  ·  3Comments

haarts picture haarts  ·  4Comments

timthelion picture timthelion  ·  28Comments