Just subscribed to this discussion form and this is my very first message here
I just wanted to reach out to you all that I started a new libp2p implementation in Kotlin, please have a look at:
I also created a multiformats implementation, also in Kotlin:
I started the kotlin-libp2p project mainly for educational/research purposes. I love to code on networking stacks and protocols and I think libp2p is an awesome technology. I can not wait to implement all the different protocols (Kademlia, Identify, mDNS, Yamux, etc.) and see if its working with the other stacks (Go, Js, Rust, …). Please be advised that it is in heavy development, as such I do not guarantee any stability, usability, issues and such (Although I do test a lot). And I’m doing this in my spare time, so please do not expect feature XYZ anytime soon.
I also think Kotlin is a very nice language and coroutines are awesome. For people that don’t know: Kotlin is a language developed by JetBrains and is the preferred language for Android development (but I personally use Kotlin for backend work). The Kotlin compiler compiles Kotlin into JVM bytecode (the same bytecode as Java) so Kotlin can run on any compliant JVM and is fully interoperable with Java.
kotlin-libp2p is based on the go-libp2p implementation (some ideas/features are taken from there).
Please do not hesitate to reach out to me if you have any questions.
I haven’t participated in any libp2p community call yet, so not sure of the format, but I love to participate. Sure, I’m happy to introduce myself and the kotlin-libp2p implementation. Where can I get an invite?
I will run the interop tests anytime soon, I’m really curious about the results… I’ll keep you all informed of any results.
@Nashatyrev and @ ianopolous : I was not aware of your implementation, looks nice! I’m always happy to share/collaborate.
The main reason for me is educational, and for research purposes. Initially when I started this project, I was “playing” around with Java (since I was using that at work) and with some protocols. However, I discovered that Kotlin is a nice language and I was not familiar with Kotlin at all. So, in the process I learned Kotlin and implemented some different protocols and parts of the libp2p stack. At a certain moment in time my hands are itching to implement the next part, and the next. And from one thing comes the other. I love to see Kademlia working, I love to see Quic working, etc. etc.
Also, the other things is, its open source. Meaning, everybody can use parts that is beneficial for them. Maybe not the whole project, but some ideas, algorithms, etc.
go-libp2p is a great and mature implementation (at least much more mature than my implementation is). I am not suggesting at all that you move from go-libp2p and use kotlin-lip2p.