# Some ideas towards secure, horizontal, accessible communications...  These aren't all FOSS (free, open source software), but we're trying to balance here ease-of-use & free (libre as in freedom and as in affordable) with sovereignty/independence in implementation and maintenance AND keep in mind POLA (the [principle of least authority](https://leastauthority.com/blog/meet-fritz-the-pola-bear-our-mascot/), as neatly explained by this polar bear mascot.) ## Top recommendations for secure chat are summarized, basically, as through *"protocols, not platforms"* [[Masnick, 2019](https://knightcolumbia.org/content/protocols-not-platforms-a-technological-approach-to-free-speech)]... - ### [Element.io](https://element.io) (or, the more simple client, [Fluffychat](https://fluffychat.im/)) running on the **[Matrix](https://matrix.org)** protocol (further details on this below) OR * ### [NOS](https://www.nos.social) (was [Planetary](https://www.planetary.social/) for iOS) using the [NOStr protocol](https://nostr.how/en/the-protocol) (see also [Amethyst](https://www.amethyst.social/) for Android, or [Primal](https://primal.net/home)) . * [NOSTR](https://nostr.how/en/what-is-nostr) (“Notes and Other Stuff Transmitted by Relays") -- It's not an app nor a service you can sign up for, it's an open protocol, that anyone can build upon, that is censorship-resistant, and it is truly a global, decentralized and thrilling unfolding landscape right now, with many clients being developed, and very solid foundations, multiplicity of relays, lighting "zaps" to build an economic circulation system...very exciting stuff. Some [NOSTR clients here](https://nostr.com/clients)- for android: [Amethyst](https://www.amethyst.social/) * > [Bridgy Fed](https://fed.brid.gy/) is "a decentralized social network bridge. It connects the fediverse, the web, and Bluesky. If you're on one of these networks, you can use Bridgy Fed to follow people on other networks, see their posts, and reply and like and repost them. Likewise, they'll be able to see you and your posts too." see also: - [Keet.io](https://keet.io) Peer-to-peer chat, video & text. Private & Encrypted. - [Reticulum.Network](https://reticulum.network/manual/whatis.html) "cryptography-based networking stack for building both local and wide-area networks with readily available hardware, that can continue to operate under adverse conditions, such as extremely low bandwidth and very high latency" ### Audio Chat - [spacious.audio](https://spacious.audio) - lovely cozy little humane P2P trust-building team chat app ### Video chat - #### meet.jit.si for video chat (based on the old school [XMPP](https://en.wikipedia.org/wiki/XMPP) standard, the [Jitsi app](https://jitsi.org/) is available for different platforms, or you can connect to a free room via most web browsers.) Further tech details on this: [XMPP + WebRTC](https://xmpp.org/uses/webrtc/) and see below for more XMPP chat apps * > see also the Jitsi server of our comrades at https://meet.mayfirst.org which offers some additional moderator privileges (this is now a paid subscription service but they offer many options, including this Jitsi instance) - speaking of XMPP, an older app called [Pidgin](https://www.pidgin.im/) still works, as does the double ratchet cryptography and ease of use in [ChatSecure](https://chatsecure.org/) - #### for video with chat integration, classroom-style, see [Big Blue Button](https://bigbluebutton.org/) * > (They used to offer a [limited test server](https://demo.bigbluebutton.org), but with a fairly powerful computer we could [run our own instance]((https://docs.bigbluebutton.org/administration/install/)). Not sure if there's interest in maintaining the costs of that kind of presence full-time, maybe better to just be ephemeral, and open it as a service on a cloud machine only during the time it's needed.) still do recommend [Signal](https://signal.org), see also https://ctrl.alt.coop/en/post/signal-without-a-smartphone/ ## Video Streaming For video streaming, check out how great the Open Broadcaster Software Studio has developed! (So easy to use to bring in other people/feeds/etc).  Find it at [OBS Studio](https://obsproject.com/) and https://vdo.ninja (used to be obs.ninja)  via [Steve Seguin](https://github.com/steveseguin/obsninja/wiki/FAQ#whatis) As an aside, we were [introduced to OBS](https://web.archive.org/web/20201204230331/https://news.metaviews.ca/future-tools-obs-studio/) by [Jesse Hirsh](https://jessehirsh.com/) (of [Metaviews](https://www.metaviews.ca/), an amazing [futurist](https://metaviews.substack.com?r=rls6), [farmer](https://impossible.ws/), [hacker](https://metaviews.substack.com/t/hacking) and [friend](https://web.archive.org/web/19990117074433/http://www.tao.ca/sky/org.html) who has 'learned in public' for decades now & taught us a lot ;) - here's the [OBS Quick Start Guide](https://obsproject.com/kb/quick-start-guide) & their [Help Portal](https://obsproject.com/help) ## Event organizing - [Gath.io](https://gath.io) "a simple, federated, privacy-first event hosting platform" (Activity Pub protocol) - [Mobilizon](https://mobilizon.org/) ## More easy-to-use (over-the-web) chat options: https://spatial.chat seems cool, the free version has time restrictions, but it's remarkably easy to use. also https://chatb.org is super easy, no accounts needed, just show up and make a connection. [Here's the code](https://r-w-x.org/r/chatb.git). and https://meething.space is coming along nicely, hopefully can work out the kinks of connection Many of these above (and so many more!) are working on WebRTC Here's some technical documentation, [WebRTC For the Curious](https://webrtcforthecurious.com), by the very smart fellow Sean DuBois (but for a great, accessible introduction, he appeared on the [Sept 9, 2020 edition](https://www.youtube.com/watch?v=AGs4ZC24Q1Y) of the somewhat didactic Matrix podcast, ["Open Tech Will Save Us](https://matrix.org/podcasts/otwsu/).) Here's info on [setting up a STUN/TURN server](https://ourcodeworld.com/articles/read/1175/how-to-create-and-configure-your-own-stun-turn-server-with-coturn-in-ubuntu-18-04) for ourselves. ([Top 23 Stun FOSS tools](https://awesomeopensource.com/projects/stun)) > ## A few words from the old school... > ### on IRC > - [Basics of IRC](https://libera.chat/guides/basics) from the amazing folks at [LiberaChat](https://libera.chat/) > - https://modern.ircdocs.horse/ > > ### SILC > - [Secure Internet Live Conferencing](https://silc.github.io/) > -[RiseUp Collective's Problems & Concerns with SILC](https://we.riseup.net/riseup+tech/problems-with-silc) > - see also [Pidgin](https://pidgin.im/) > > ### More about XMPP > A classic from the old school is [XMPP](https://xmpp.org/): > -use [Jabber](http://www.jabber.org/) (clients [list here](https://xmpp.org/software/clients.html)); recommend [Gajim](https://gajim.org/) or [Movim](https://movim.eu/) and/or with [Conversations on Android](https://conversations.im/) - $4.49 [on Google Play](https://play.google.com/store/apps/details?id=eu.siacs.conversations) or free [on F-Droid](https://f-droid.org/en/packages/eu.siacs.conversations/)) which uses [OMEMO](https://conversations.im/omemo/), an extension protocol for XMPP (XEP) that allows for end-to-end encryption using a double ratchet method > -- see also [PidginChat](https://pidgin.im/about/pidginchat/) > > - Bridges to everything! [Slidge.im](https://Slidge.im) is "a software library, built in Python, for creating gateways from XMPP to other networks, such as Telegram, Discord, or WhatsApp." > - Perhaps we should set up an [ejabberd](https://www.ejabberd.im/) service of our own. Would be good for the choir, where we're fed up with one-at-a-time voices on zoom, but also, you'll love the low latency of [Mumble](https://mumble.info/) (used by gamers for "in-game" chat while playing, so great synchronous audio, even for 100 people at a time, while gaming graphics are using most of your bandwidth.) > - [Mumble](https://mumble.info/) - main page or get them to [set you up a server](https://www.mumble.com/) > here's the [Mumble wiki](https://wiki.mumble.info/wiki/Main_Page) or set up your own on a [Murmur server](https://wiki.mumble.info/wiki/Murmurguide) > - (Or there's alternative server implementation in [GO](https://golang.org/) called "[Grumble](https://github.com/mumble-voip/grumble)," which seems to still have some issues to fix; or use the [Mumble-to-Web-Proxy](https://github.com/johni0702/mumble-web-proxy): "The Mumble protocol uses TCP for control and UDP for voice. This proxy bridges those to WebSocket for control and WebRTC for voice.") There's also a [Mumble-Web](https://github.com/Johni0702/mumble-web) (HTML5 client) application to connect to this ^ > > > I think for broader movement purposes, we may want to connect by phones, too, so we'd maybe want a [SIP service](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) (see also: "[What is a SIP Server?](https://www.telnetww.com/blog/voice/what-is-a-sip-server/)"; here's a [miniSIP for VOIP](https://www.myvoipapp.com/) which can run even on a Raspberry PI but it's not FOSS, it costs between $199-$4999; although [The Kamailio Project](https://www.kamailio.org/w/) may be a good open source alternative, also because [Asterisk](https://www.asterisk.org/) is kinda hard to set up. The [Openfire Project](http://www.igniterealtime.org/projects/openfire/) also has an [Asterisk-IM plugin](https://www.igniterealtime.org/projects/asterisk/) that uses the [Spark client](https://www.igniterealtime.org/projects/spark/). (Maybe [FreePBX](https://www.sangoma.com/freepbx) is an easier alternative, I've not yet tried that.) > ## Historic P2P Options: Scuttlebutt Not so much still in active development but full of good ideas & implementions, check out [SCUTTLEBUTT](https://scuttlebutt.nz), a distributed social network, via basically what is an append-only peer to peer log store (aka the "gossip protocol") protocol **Server** [ssb](); [tinySSB](https://github.com/ssbc/tinySSB) - the LoRa descendant of Secure Scuttlebutt **Clients**: https://manyver.se, + [various apps](https://scuttlebot.io/apps/index.html) (updates??) - ### [Manyver.se](https://manyver.se) (For Android, iOS, Windows, macOS, Linux) on [Scuttlebutt](https://scuttlebutt.nz/) * > (for more detailed developer info on the protocol, see https://scuttlebot.io or the [Scuttlebutt Treasure Map for Developers](https://dev.scuttlebutt.nz) * > this is a [Gossip protocol](https://en.wikipedia.org/wiki/Gossip_protocol), so it's like email in that there's no 'delete', it's a peer-to-peer distributed log store) * >> for longer term data sovereignty of record keeping there's a very helpful scuttlebutt based app developed in collaboration with Māori communities called [Āhau](https://ahau.io) next, also in the vein of "protocols, not platforms"... ## The Matrix Project In much wider usage (more $$, developers, users) for secure, decentralized communications, I recommend [Element](https://element.io) (was [Riot](https://element.io/blog/the-world-is-changing/)), a client which runs on the [Matrix protocol](https://matrix.org).   You can [use their servers](https://ems.element.io/auth?redirect=/), or [set up your own](https://matrix.org/blog/2020/04/06/running-your-own-secure-communication-service-with-matrix-and-jitsi).  There are [several different server](https://matrix.org/ecosystem/servers/) implementations, but [Synapse (recommended) and Dendrite (fast/light & next gen, written in Go, but still in beta.)  The Element team (along with many others in the open source movement) have since developed lots of cool bridges to irc, slack, jitsi, discord, whatsapp, + LOTS more, using "puppeting", even facebook messenger, plain old email to/from Matrix (which is getting a boost this GSoC) and sms! Some technical writers at Dresden have recently produced a very helpful set of german and [english Matrix intro documentation](https://doc.matrix.tu-dresden.de/en/) "how-to" notes and diagrams. Most excitingly, advancing quickly during the pandemic, is P2P Matrix: [Introduction here](https://matrix.org/blog/2020/06/02/introducing-p2p-matrix/). You can monitor the project's advance here: https://areweP2Pyet.com Our own, currently not federated homeserver is at [matrix.amongcomrades.org] ## Peer-to-Peer Everything We've long been big proponents of [p2p for everything](https://p2pfoundation.net/) really, though sadly that Foundation has been slipping to the right with founder Michel Bauwens, so some of us are pushing for the [P2P Left](https://p2p-left.gitlab.io/statement/). One great recent project incubator/agitator out there is the DisCo.Coop, see their [Manifesto here](https://manifesto.disco.coop/), basically for "decentralized cooperative organizations" on the blockchain, rather than the more classic libertarian "[decentralized autonomous organizations](https://blockchainhub.net/dao-decentralized-autonomous-organization/) [DAOs]".) In particular, let's look at joining/building our own branches within the great "world tree spanning" [Yggdrasil](https://yggdrasil-network.github.io/about.html). (See "[History of the World Tree](https://yggdrasil-network.github.io/2019/01/09/history.html)")  Alongside the rise of the [***fediverse***](https://hackmd.io/@solidarity/fediverse), these kind of meshes are the future of the distributed web (aka web 3.0, s/a "mesh" networks). Excited to see bridging projects and interoperability but we want to teach as we go, avoid "service ISP" models of software delivery, don't just want to run "our own" Matrix server, replicating the problems of centralization, instead, it'd be great if all of our people each easily could run their own matrix server and we'd back each other up  (am  following the work of [Neil Alexander](https://neilalexander.dev/2020/06/02/thoughts-p2p-matrix) and [Kegan Dougal](https://matrix.org/author/kegan-dougal/) here. (https://arewep2pyet.com & See also [this 2020 github note](https://github.com/matrix-org/dendrite/wiki/How-p2p.riot.im-works) although p2p.riot.im is deprecated as of this writing (Dec 2023)) ## Other File-sharing Apps Here's a wonderfully easy to use p2p file-sharing app: https://sharedrop.io (powered by WebRTC & Firebase: https://awesomeopensource.com/project/cowbell/sharedrop & kinda like 'AirDrop' if you are on a LAN too, can sync android<-->computer very easily once p2p connection is established.) See also [the wormhole app](https://wormhole.app) Here's [some discussion](https://discuss.ipfs.tech/t/dht-and-p2p-swarm-peers-discovery-yggdrasil-mesh-networks/6549) around "peer discovery", distributed hash tables and mesh networking. Have also been following the development of the [IPFS](https://ipfs.io) (The Interplanetary File System) for a few years now.  [Fleek](https://fleek.co) makes it easy (and they also [explain why](https://twitter.com/fleekxyz/status/1352606023387934720) this is needed and good. In January 2024 they'll move to https://fleek.xyz) Check out their [space daemon](https://docs.fleek.co/space-daemon/overview/), see it in action through their easy to use storage and file sharing at [storage](https://fleek.xyz/storage/)... storage as currency through [FileCoin](https://filecoin.io/). [Subsocial](https://subsocial.network/) is built on this "substrate" base on the [Polkadot blockchain](https://polkadot.network/). Also interesting to note is blockchain domains: [ENS](https://ens.domains/) ## A Note about Networking We need to think low-tech and redundant. [Refurbished equipment](https://opensource.com/article/23/3/refurbish-old-computer-linux) and [re-flashed old routers](https://openwrt.org) can be brought online haphazardly, but still back each other up. [see here [Pagekite](https://pagekite.net/) for easy way to make your localhost public] Then, for network flows, see also the [NYM network](https://nymtech.net/), for additional protections beyond [onion routing](https://www.sciencedirect.com/topics/computer-science/onion-router), previously mostly left only to TOR. See also [garlic routing](https://en.wikipedia.org/wiki/Garlic_routing) Much respect to the [Pineapple Proxy](https://pnproxy.org/welcome.html) folks, a third way unifying solarpunk and lunarpunk. [Undystopian Alexandria Library](https://pnproxy.org/Undystopian-Alexandria.html) ## Operating Systems - [TAILS](https://tails.net) - [Freedom Box](https://freedombox.org) - [Devuan](https://devuan.org) from our comrades at https://dyne.org