Free Code Chat Software
A range of software related to voice and video chat, originally aggregated by Danyl Strype as part of research for Core Us, a proposed Disintermedia project for empowering global scale organizing using free code voice and video chat tools, including increasing the ability of conferences to support remote participation.
Note: This list is probably more useful to developers who want to know what free code is available for implementing voice and video. If you're looking for a list of apps, to get an idea which ones might suit your needs, try Free Code Chat Apps.
- Adhearsion Foundation: a whole stack of web telephony software projects, although as of late 2019, only Adhearsion itself and Blather have recent commits, and most of them seem to have ceased development in late 2015/ 2016 (including Candy). There's been no updates on the Foundation website since then either.
- GNUComm and GNU Telephony (GPL 2 or later): A suite of telephony software supported by the GNU Project, which includes 7 GNU projects: Bayonne, SIP Witch, and their supporting libraries (Common C++ / uCommon, ccAudio, ccScript, ccRTP, and ZRTP / ZRTP4J). The GNU Telephony website appears to have gone down and the page on gnu.org has no updates on development progress since 2013. GNUComm is listed in the Free Software Directory, as are some of the subsidiary projects (see links above).
- Mumble/ Murmur (New BSD): an 'IRC with voice' style system, developed for in-game chat. Listed in the Free Software Directory.
- Voicechat (GNU GPLv3+, Java SE 7): a voice chat app that "supports uPnP, conversations with multiple users and basic compression with comfort noise". Last commits 3 years ago, probably discontinued.
- HasciiCam (C, GPLv2+): Uses the AA-Lib library to convert video from a camera (eg web cam) into ASCII text, which can be transferred across a network and displayed without much lower use of resources than a full-data video stream. Listed in the Free Software Directory.
- BigBlueButton (LGPL): voice/video web conferencing server developed for distance education. Currently depends on Flash, but has a rough plan for full transition to HTML5 and WebRTC.
- Ekiga ([https://directory.fsf.org/wiki/Ekiga#tab=Details GPLv2+): originally released as GnomeMeeting, a "SoftPhone, Video Conferencing and Instant Messenger". Later became a SIP client. No releases since 2013. Discontinued?
- Eventstreamr (GNU AGPLv3, now discontinued): "single and multi room audio visual stream management". No new commits on this repo since 2015.
- Jami (GPLv3+): A GNU project formerly known as SFLphone and then GNU Ring. A P2P text, voice, and video chat client, cross-platform (desktop and mobile). Listed in the Free Software Directory.
- Jitsi Meet (Apache 2.0, formerly "MIT"): WebRTC client for text, voice and video conferencing, encrypted by default, with desktop and presentation sharing.
- Linphone (core library: GNU GPLv3, desktop, Windows 10, iOS clients: GPLv2, Android client: GNU GPLv3, flexisip server: GNU AGPL): Clients and server for voice/ video calling, using the SIP protocol.
- NextCloud Talk (AGPL): a WebRTC plug-in for the NextCloud app suite, based on Spreed (see below). NextCloud is listed in the Free Software Directory.
- OpenCast (Educational Community License 2.0, a variant of Apache 2.0, Java/ HTML): a system developed for use in recording and streaming university lectures by the Apero Foundation.
- RetroShare (current licensing situation is unclear): An experimental P2P communications client has been developed on top of the Retroshare P2P network stack (see below), intended to support both voice and video chat. They are struggling to find people to work on it: https://github.com/RetroShare/RetroShare/issues/16
- RocketChat ("MIT): a web-based chat server billed as a "Slack-like online chat, built with Meteor". It supports WebRTC for voice/ video conferencing, with a plug-in for Jitsi Videobridge to increase the number of users it can support in a conference.
- Signal (client apps: GPLv3, server: AGPLv3): Developed by Open Whisper Systems, Signal consists of apps for Android and iOS and a routing server, end-to-end encrypted by default. Listed in the Free Software Directory.
- Sylk Suite (Server: GPLv3+, client: AGPLv3+, API: "MIT"): WebRTC client/server for text, voice, and video conferencing, screensharing, and file transfers.
- Talky.io: A WebRTC platform which has released a number of elements of their stack as free code including SimpleWebRTC and OTalk (although there are still some proprietary bits in the stack).
- Tox: encrypted, cross-platform, peer-to-peer, text, voice, and video chat. Client software for various platforms, in various languages, mostly still in alpha/ beta, built around Toxcore (C, GPLv3). Listed in the Free Software Directory, which also has pages for some of its client apps.
- Wire (client apps: GPLv3, server: AGPLv3):: encrypted one-to-one and group chat, with encryption. Has both web app and desktop/ mobile apps. Listed in the Free Software Directory.
- dvswitch (GNU GPL): an audio-visual mixing system that depends on LibAV (LGPL or GPL). Listed in the Free Software Directory, but all links there are dead. Discontinued?
- snowmix (GNU GPLv3): no new releases on the project's SourceForge page or news updates on the homepage since 2016. Discontinued?
- Voctomix (Expat or "MIT") a live video mixer wrapped around GStreamer (GNU LGPL), developed by the C3VOC in response to their frustrations with dvswitch, snowmix and gst-switch. Developers of gst-switch (GNU GPLv3+, C, discontinued since 2017) discontinued it and switched to working on Voctomix.
SIP (Session Initiation Protocol): a server/client protocol mainly used for voice chat:
Tox: peer-to-peer, encrypted, text, voice, and video chat.
XMPP (eXtensible Messaging and Presence Protocol): client/server protocol for Instant Messaging (short emails in realtime) based on Jabber
- Wikipedia: XMPP
- Jingle (open protocol extending XMPP): designed for one-on-one voice/ video chat
- Some documentation on how to implement can be found in the WebRTC Quick Start, last revised in 2015.
- Wikipedia: WebRTC
If we are going to stream, store and replay audio and video from conferences, we don't want to use patent-encumbered, proprietary formats like MP3, and H.264. Instead, we want to use patent-free/ royalty-free multimedia file formats, developed by groups like Xiph.org.
Some existing options are:
- FLAC - developed by Xiph, lossless codec
- Opus - developed by Xiph (replaces Speex)
- Vorbis - developed by Xiph, lossy codec. Equivalent to MP3, although it compresses to smaller files with better sound quality. Technically obsoleted by Opus as well, but there will be an argument for using Vorbis until such time as Opus is more widely supported by hardware and software media players.
- Dirac - created by BBC Research, "low-resolution web content to broadcasting HD and beyond, to near-lossless studio editing". Original homepage, linked from BBC site, now redirects to spam site. No releases added to Sourceforge files page since 2011. Discontinued?
- Theora - developed by Xiph as the video layer for Ogg video files
- VP8/ VP9 - bought by Goggle and released as a royalty-free open codec, for use with WebM
Formats which allow video, audio, subtitles and other components in different formats to be one included in one file
- Ogg - developed by Xiph
- Matroska - developed by the Matroska organisation in France
- WebM - developed by Goggle, uses a fork of the Matroska container, VP8 (or 9) video, Vorbis or Opus audio, and WebVTT for text
Whatever end-user applications and codecs are used, it seems reasonable that any conferencing system will be more scalable if it uses some kind of P2P network, where everyone who joins the conference contributes some of their own computing resources to the networking effort. This is how Skype originally worked, before Microsoft acquired it and moved it to a purely client/server model. Some existing open P2P network protocols that could be used:
- BitTorrent Live (Can't yet find source code or license information, may not be free code): Originally pitched as a system for streaming live events like sports games and concerts, using the same P2P swarming principles underlying BitTorrent downloads. Seems to have pivoted towards a kind of blockchain-powered, P2P, alternative to YT.
- FreeNet ([https://github.com/freenet/fred/blob/next/LICENSE GNU GPLv2, some components under Apache 2.0 and "BSD", Java): uses standard IP networking in an attempt to create an censorship-resistent alternative to the world wide web,
- GNUNet (GNU GPLv3): "GNU's Framework for Secure Peer-to-Peer Networking", subsidiary projects include a pre-alpha voice chat app called Conversation.
- Retroshare (current licensing situation is unclear): "using a web-of-trust to authenticate peers and OpenSSL to encrypt all communication... provides filesharing, chat, messages, forums and channels ...". An experimental voice and video client, under the same name, is being built on top of this network stack.
- Speak Freely (discontinued, license unclear, FSD says "public domain", homepage says GNU GPL) - one of the earliest voice chat apps, "written in 1991 by John Walker, founder of Autodesk, and Brian C. Wiles".
- Subrosa (GPLv3, discontinued): WebRTC client/server for text, voice and video conferencing, encrypted by default. Listed in the Free Software Directory.
- John Walker explains why Speak Freely development ended in his 2003 essay The Digital imprimatur.
- "Skype replacement" page on LibrePlanet wiki: has a table of which apps support which protocols, and some testing notes.
- Chatting, Audio and Video Calls: A document by RiseUp Labs, the folks behind We.Riseup.net
- 74 free code telephony projects from 2007 (links to original source which appears to gone offline)
- The state of FOSS real-time communications - a discussion on Reddit
- a research paper on 'Scalable, Practical VoIP Teleconferencing With End-to-End Homomorphic Encryption'