Sorry to toot at you out of the blue, but I was looking at your Interpeer project code and blogs and thought I would touch base.
I have two particular questions:
1. You use C++. Would you be interested in someone doing a parallel implementation in another language? (I would personally prefer to use Ada, for example.) This would help ensure the universality of your system.
2. Have you looked at the Pi Calculus at all? Your Channels concept looks like it's at most a half-step removed.
@qqmrichter Hi! Please do not apologize for contacting me out of the blue, especially not about something I'm passionate about! That's always welcome!
As to your questions...
1) Yes! Not only does this matter with regards to universality, it's also great for RFCs. The trouble is, there's still a bit in flux in the implementation, so a second implementation is either a bit early, or in the best possible moment, as it'll get a second pair of eyes that way.
@qqmrichter ... implementation is something I'd like to have as a reference implementation, which is also why it sometimes goes for isolation and testability of concepts/components rather than a terser version. A different implementation may well make other choices, which is also useful.
@qqmrichter As to 2), pi calculus, no. I have to admit I have not. If you see a way to bridge the two, then I'd like to learn more!
@jens OK, I'll start looking over the implementation you've got. My C++ is a bit rusty (because I hate the language and wish it would die in a fire! 😉), but I should still be able to read it without a lot of difficulty. From that I can start investigating possibilities of implementation in Ada (and if I feel really sick in something like Prolog/Logtalk in parallel).
I agree that this is both a way of cross-pollinating ideas and helping nail down interfaces and architectures.
@jens As to the Pi Calculus, I'm not sure how much you already know about it so if this seems too basic, feel free to correct.
The Pi Calculus (and its distributed variants) is just a mathematical model like the Lambda Calculus or CSP or the like (and indeed it's very much a CSP-influenced concept). It isn't a language so much as a modeling system that can be used to shape architectures (even at the language level, like Lambda shaped, say, Haskell).
@jens Like all process calculi, Pi is based around concurrent systems. Like CSP it envisions concurrent processes that communicate via channels...
...are we seeing the link yet?...
...but unlike CSP it adds one feature: channels may be passed to processes via other channels (which is to say channels are first-class values, unlike CSP where they're part of the framework). Distributed variants exist and that's where it started to echo while I was picking through your docs on channels.
@jens You were commenting at one point about the difficulty of making multi-protocol support in single-endpoint connections, showing the weaknesses, for example, of ports. This is where I think one of the distributed Pi Calculi could give an answer: The connection point is a fixed process interface (channel) but part of the protocol negotiation is sending the desired channel as a parameter. This leaves the gatekeeper implementation dirt simple.
@jens Unusually for this realm, the Wikipedia article on Pi Calculus (https://www.wikiwand.com/en/Π-calculus) is actually pretty good. It gives enough of an overview of how Pi Calculus modelling works that I think it could inform design choices.
Variants to basic Pi Calculus add, as mentioned earlier, distributed calculi and typed calculi. It's a really good ideas mine for concurrent and distributed designs.
@qqmrichter I am seeing the connection, I'm just not seeing it clearly. I've created a channel on libera.chat, if you need to discuss. It may be a little easier overall than here... YMMV
@jens OK, after trying about a thousand times to get a bouncer working I've given up on IRC (again).
Do you have some other persistent, high-volume conversation mechanism usable? IRC is just ... I don't have enough spoons to work with that festering pile of a mess.
@jens I finally beat the free ZNC instance I got into submission. Wow is IRC dire! It looks like this is finally working, though.
Generic Mastodon server, open for registrations.