Hi, idk here, I met @rangermauve in Toronto a few weeks ago and we talked about this, I think it is an exciting idea and I’d like to help you all figure out the best way to enable Dat users to connect to eachother using I2P. There are a few ways to do it, so I’m going to try and answer some questions I see up the thread and then give my opinions on what I think are some of the options you have.
First things first, unfortunately there is not a node.js implementation of I2P. There are two main implementations at this time, both are actively developed, one is the original Java I2P project and the other is the newer C++ i2pd project.
If you use this approach, installing an I2P router might not have to be your problem, instead all you have to do is detect whether SAM is running and if it’s not, proceed without doing I2P things. If you choose this approach(Which is what I recommend) then the problem becomes providing a UI which allows your users to choose a “Connection Mode.” The best example I can think of a connection mode is in the BiglyBT bittorrent client, which has a slider that goes from “Non-Anonymous” which uses only regular connections, to “Mixed” which allows both anonymous and non-anonymous connections, and “Anonymous” which uses I2P only. This has two distinct advantages for your users as well, it allows anonymous-only users to retrieve content from the existing, non-anonymous network using “Mixed” users as bridges(I absolutely volunteer to be the first bridge if you choose this path), and it allows them to use whichever I2P router they prefer.
I have another sort of lab project as well, I call it the “Tricky Bundles” project but that will probably be changed to something like I2P SDK. Since we’re sensitive to the fact that many developers will be reluctant to include a full JVM and I2P router in their non-Java project, and that similarly many developers will be reluctant to include a big C++ dependency or create a binding to libi2pd or something, I’ve taken it upon myself to collect, collate, and if necessary, write the tools required to minimize that friction, however, this project is still very new. There are at least some configuration management tools that may be useful to us for guaranteeing that the router starts the SAM application and other important, but simple tasks common to many applications that would work with I2P. Also, should you choose to bundle an I2P router with your application(Which is still very much optional), I would like to help to overcome and document any obstacles you encounter as part of this project. Besides the hypothetical bundling of an I2P router.