Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
flyingzumwalt opened this issue Sep 26, 2016 · 28 comments
Closed

Comments

@flyingzumwalt
Copy link
Contributor

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.

@flyingzumwalt flyingzumwalt changed the title Publish a list of "Supporting Modules" Publish a list of "Supporting Modules" for people implementing in new languages Sep 26, 2016
@flyingzumwalt flyingzumwalt changed the title Publish a list of "Supporting Modules" for people implementing in new languages Publish a list of "Supporting Modules" for people implementing IPFS in new languages Sep 26, 2016
@daviddias
Copy link
Member

daviddias commented Sep 26, 2016

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

@flyingzumwalt
Copy link
Contributor Author

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

@RichardLitt
Copy link
Member

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?

@daviddias daviddias changed the title Publish a list of "Supporting Modules" for people implementing IPFS in new languages Do you want to implement IPFS in a new language, get started here! Oct 17, 2016
@daviddias daviddias changed the title Do you want to implement IPFS in a new language, get started here! 🌟 Do you want to implement IPFS in a new language, get started here! Oct 17, 2016
@theobat
Copy link

theobat commented Oct 20, 2016

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 ?)

@kevina
Copy link

kevina commented Oct 20, 2016

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

@flyingzumwalt
Copy link
Contributor Author

flyingzumwalt commented Oct 21, 2016

@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?

@kenCode-de
Copy link

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! :)

@dyba
Copy link

dyba commented Oct 21, 2016

@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?

@kenCode-de
Copy link

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...

@dyba
Copy link

dyba commented Oct 21, 2016

@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.

@RichardLitt
Copy link
Member

@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).

@theobat
Copy link

theobat commented Oct 25, 2016

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 ?

@ianopolous
Copy link
Member

@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.

@kenCode-de
Copy link

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

@lbmn
Copy link

lbmn commented May 17, 2017

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.

@whyrusleeping
Copy link
Member

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/

@whyrusleeping
Copy link
Member

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

@Agorise
Copy link

Agorise commented Sep 27, 2017

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

@whyrusleeping
Copy link
Member

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

@whyrusleeping
Copy link
Member

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

@Agorise
Copy link

Agorise commented Sep 27, 2017

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

@Agorise
Copy link

Agorise commented Sep 27, 2017

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

@W-B-S
Copy link

W-B-S commented Feb 22, 2018

What about java?

@fellahst
Copy link

fellahst commented Mar 3, 2018

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

@fellahst
Copy link

fellahst commented Mar 6, 2018

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.

@ianopolous
Copy link
Member

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).

@Stebalien Stebalien transferred this issue from ipfs/community Aug 1, 2019
@dmgcodevil
Copy link

dmgcodevil commented Aug 30, 2019

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

@daviddias daviddias pinned this issue Sep 13, 2019
@jessicaschilling jessicaschilling unpinned this issue Mar 27, 2020
@jessicaschilling
Copy link
Contributor

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!

@ipfs ipfs deleted a comment from Txmike206 Apr 1, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests