Migration from Stackoverflow Chat

It looks like we need to move from Stackoverflow chat so it seems time to build our own chat client and server.

We have history on our sides with IOS messenger, and then Altme. These provide the design base on which we can build.

I suggest:

  • Decentralised store like Altme
  • The ability to easily switch servers (need a central store somewhere)
  • Encrypted private messaging
  • Local store in a sqlite db
  • App is a PWA using WASM.
  • The ability for P2P direct messenging to avoid storing PMs anywhere
  • We'll need to store public certificates

And other stuff

Rather than have a central server of different topics as in Stackexchange, we should be able to select a server which is at a different IP address so that the one client copes with different sites with different topics.

I made the analogy to like, Star Wars, and when the Emperor has taken over the Congress, and everyone is pretty mad... and..

Yes. StackExchange has gone way, way south.

I set a goal, that we do not use the service by mid-2020, so think June or July.

Sure, we all switch things up over time, and Red's use of gitter doesn't seem like so much of a success story either. Kind of the same deal--someone else's servers, but no one really cares (yet). The thing is that SE fell into some corrupt hands so we're being forced out.

I hate to leave, it was a great idea, until they kicked out or fired everyone we liked...

I've been using the matrix protocol https://matrix.org/ which has been working pretty good for me. You can start out by just using the hosted service by the company behind it (vector) and in the future you can set up your own services. Its peer to peer and decentralized so no one owns it. Would be nice to have rebol bindings to it or something but the current clients are very serviceable like riot.im

I think we are taking this opportunity to build a Rebol app. But if that doesn't work out we seem to have many options to move to.

Sounds good on paper; I didn't know anything about it previously other than Ingo was working on a Rebol client for it...which originated the high codepoint cat bug. (Now resolved by UTF-8 Everywhere!)

I'll have to look into it. @IngoHohmann - I know you've said that you don't really know what state your client is in and it needs work, but it could be a better start for us than nothing...and maybe a good way for me to study the protocol and get it working at the same time. Do you mind publishing what you've got, in whatever state it's in, so we can take a crack at it?

I'm thinking about a "big picture" answer which helps reduce reliance on central services for other things (Q&A, issue databases, trello-like cards...Diaspora-like social networking). It may-or-may-not be that the scope of the matrix project is that big (?)

We don't have to tackle it all at once, but if there's a good framework already emerging somewhere then we should see how Rebol might be able to play a role in that world.

I refer often to a presentation by James Vasile about "FreedomBox" that I saw some years ago...and while I talk about this kind of stuff a lot, I've not exactly been putting my money where my mouth is:

The matrix protocol does have aspirations to be the protocol for all of that kind of stuff (kanban apps etc. and there are examples somewhere on their website) and also including end-to-end encryption, video streaming (I've tried it a while a go and it does work but not sure how well). In the design its basically a partially ordered DAG format in JSON that can be extended for different formats. I think that matrix at least has somewhat sizeable network-effect attached to it, has pretty easy onboarding, with a clear migration path to your own servers while still having something that works "right now" .

As far as even bigger picture as usual its a large and fuzzy space. I haven't directly compared matrix with the ActivityPub protocol (which is the basis of the Diaspora milieu, like mastodon etc.) but my hunch is that they aren't directly competitive and they both are more about federation so I imagine they could bridge.

As far as the technical merits of the data/programming model matrix has baked in I thinks its something of an MVP, but its not clear at this point what is better though. Probably something more REBOLy would be better than JSON, but that has the disadvantage of not actually existing currently. I see nothing wrong with bootstrapping and learning from other imperfect technologies rather than languishing in something while your community builds the omega-system.

On a more technical discussion of what a decentralized social computing platform (omega-system) would look like in general as an open question. I never actually was able to use any of Carl's old rebol web tech, and I have a lot of questions as to how things like security and arbitrary code execution would have worked, and I haven't seen anywhere talking about this. A lot of 90s research in this sphere ended up concluding that an object capabilities (ocaps) was the way to do this, like the E language, and I tend to agree for various reasons. Recently there are a couple matrix-like programmable systems that seem to take this seriously (matrix doesn't really have a programming model). The ambients protocol (ambients.org) which is intentionally limited by being a total-functional programming language, or the spritely project (https://gitlab.com/spritely from the guy that did ActivityPub and declared the successor of it) which is basically an actor model with ocaps in racket. That being said I don't think rebol itself really has the solution to these problems, i.e. mistrust in open decentralized networking. At least yet, so I don't really see the need to dive down any particularly deep rabbit holes trying to solve it if all you need is a chat room right now. Those depths are worth plumbing as an overarching plan, but bootstrapping is a real thing so..

Sci-Fi-fantasy tangent:

In a previous life I worked on Intentional Programming, and we were really looking at a medium of exchange beyond ASCII where you were empowered to point and say "that!". It worked...very well. And the long tail of this would go beyond programming...replacing all the text widgets on your system with ones that could do direct projectional editing on top of a graph that was UUID based under the hood.

I want to be able to federate and form agreements on how you will memoize things (e.g. even to have different people disagreeing about what the word "Red" means and in what context). Then to have some way of hinting or giving guidance when you're in a conversation with someone(s) where their view is going to be a diff from yours.

Being able to do so means there has to be an understanding of what the speaker meant when they said something. Today's machine learning tools can give people a big leg up on helping to "intentionalize" and harden their semantics at edit time...and I haven't been looking at any of that.

Anyway--in my fever dream--if someone wanders into a conversation where other people are talking about Red-the-language as "Red" but they don't know what it is...they might see it render as "red-lang", but with a heads up that the people around them are seeing it as "Red". What you see by default and how much diff is given is based on your established network weightings in that context. You can weight individuals or larger nodes that aggregate consensus.

I'd like to see something that is powered by such diffs on emergent consensus of whose opinions you think are important be the replacement for things like DNS. I see things like NameCoin as being (like most crypto solutions) little better in the end than what they purport to replace. It's still a pyramid scheme...and its only "decentralization" is it protects against execution of fiat authority outside of bounds of an agreed-upon contract. That's better than nothing, I guess? But I'm hard pressed to think it's worth it to burn up the planet's energy supply on something that doesn't do what I actually want: which is to give the average person a practical form of self-determination when they walk into a system that has established power positions. :latin_cross::alien:

TL; DR: I agree... no JSON or Rebol or anything of the sort is equipped to give me the far-future decentralized protocol that lives in my imagination. (And the likely-nigh-impossible efforts of trying to build something that egalitarian and live in such a distributed world are almost likely to be wiped out by some Borg-like Facebook-or-Google-or-whatever hive mind, before getting anywhere near off the ground.)

I'm not sure how deep I want to dive, I just want to catch up on what people have been doing since I stopped last paying attention to the problem.

I stopped paying attention however many years ago, because I was happy enough with what I had--for what I was trying to do. But I'm no longer happy--and kicking myself for my complacency/laziness. It's gotten to the point of ridiculousness...the examples are rampant. Meetup trying to charge you $2 to RSVP for events (I had trusted Meetup when I was organizer of the Austin C/C++ group, this trust was misplaced). Ten years of contribution to StackOverflow only to find it taking the content and link strength and throwing everyone who trusted it under the bus.

It was easy to tell myself that not using Facebook was enough. But I can't keep my head in the sand anymore. It's making me rethink a lot of things...including where-instead-of-Spotify to put my music playlists, or any other group-shareable content I generate.

How Rebol plays into any of this is admittedly not clear. It's just that whatever I use and evangelize next is not going to be some-site-run-by-some-guy. It needs to be something you can build, run, and understand yourself. Besides Rebol being a language I'd like to continue to work on, I do think it has offerings here regarding how to get as close as you can to a do-it-yourself layman-readable system, that fits in the palm of your hand including its full bootstrap...and yet actually does something modern and useful.

Just a side note if you have not seen it: GitHub is planning to release a chat area as well (called GitHub Discussions). It is now available as a beta in selected repositories.

HN discussion: https://news.ycombinator.com/item?id=22388639

1 Like

I've been looking at this sort of thing and this really caught my interest.

It's a self organizing network that supposedly scales well. It doesn't need a DNS because it's self organized such that all addresses are related to a tree and can always be found if they are up. They mention they have used it with "Matrix".

Now this is just the skeleton. The network but with this network you can't be shut off unless they shut down the whole net. On top of this you will need some way of distributing the storage to many places. I2P, (an anonymous internet), is working on this in small steps. Right now they are working on just mirroring web sites in BitTorrent files. They already have an extensive BitTorrent infrastructure.

One thing that's missing from all these except one service that I know of is the ability to "choose" to mirror data from a site. Many of these you can choose to mirror data but you are not in control of what you mirror only the total amount(like Freenet). Zeronet has a button on web sites that you can "pin" someone else's site. This means you will share data for that site, (serve it like a torrent file). I really think that's a huge advantage as there are certain things I in no way wish to have on my drives but would be more than happy to share in serving data from sites I like.

Here's an excellent link to tons of distributed internet links.

1 Like