What I'd really like to see is a "mission statement".
Best I have is the documentation I already wrote:
In that first image, EPS is the IP addresses in "green". Note how they're
all on the same network, even if they're physically spread across different
networks. So from my computer, I can always access all my beaglebone
devices as if they're right here on my desk.
Now whether or not you're willing to put the effort into such a document, I
do not know, and I would understand if you didn't. We're all busy,
including myself, so I can sympathize in that aspect.
Open source software. Anyone can contribute. But as you wrote, everyone
is busy. I already spent a huge amount of my personal time not only
writing the software, the installation tools, making builds available,
hosting the builds, and writing up the documentation that exists. All of
which is open source for people to do whatever they want.
(For the record, my other BeagleBone software is also free and open source:
If someone is willing to put some of their own time and/or money to fix
something or write more documentation, I'd be happy. If you have a feature
request you want to make, go ahead, but I don't promise anything since I'm
doing this on my own free time.
It can be hard implementing something such as this, and keeping it bullet
proof secure. I did notice while glancing at some of the method
documentation, there is a function, or functions that seem to be used for
encryption. What this, or these are used for I can only assume if's for
packet encryption, or the like.
Every data packet in the virtual network is encrypted using AES from
OpenSSL. The encryption key and initialization vector are set in the
configuration file when first setting up the server, and these two unique
values is what allow EPS devices to communicate together. If the wrong key
or initialization vector is used, then packets cannot be decrypted, and the
peers drop the connection.
This isn't my first encrypted communication project -- I'm also the author
of FC++, a commercial product that encrypts network communications between
two end points. And yes, I agree with you and the general community
statement that encryption can be difficult to implement correctly. To
reduce (but not remove) potential problems, I use OpenSSL's standard AES
- If curious about the encryption/decryption, start here in the source
- If still in doubt refer to the standard 2-clause BSD open source
license file included in EPS Conduits, which in part states:
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.