Free Code Chat Software: Difference between revisions
(added some links to FSD where it has listings) |
|||
| Line 6: | Line 6: | ||
* [https://web.archive.org/web/20190921181450/http://adhearsion.com/foundation/ Adhearsion Foundation]: a whole stack of web telephony software projects, although as of late 2019, only [https://github.com/adhearsion/adhearsion/ Adhearsion] itself and [https://github.com/adhearsion/blather Blather] have recent commits, and most of them seem to have ceased development in late 2015/ 2016 (including [https://github.com/candy-chat/candy/issues/516 Candy]). There's been no updates on the Foundation website since then either. | * [https://web.archive.org/web/20190921181450/http://adhearsion.com/foundation/ Adhearsion Foundation]: a whole stack of web telephony software projects, although as of late 2019, only [https://github.com/adhearsion/adhearsion/ Adhearsion] itself and [https://github.com/adhearsion/blather Blather] have recent commits, and most of them seem to have ceased development in late 2015/ 2016 (including [https://github.com/candy-chat/candy/issues/516 Candy]). There's been no updates on the Foundation website since then either. | ||
* [https://www.gnu.org/software/gnucomm/ 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 [https://web.archive.org/web/20120424194509/http://www.gnutelephony.org/index.php/GNU_Telephony GNU Telephony website] appears to have gone down and the page on gnu.org has no updates on development progress since 2013. | * [https://www.gnu.org/software/gnucomm/ GNUComm and GNU Telephony] (GPL 2 or later): A suite of telephony software supported by the GNU Project, which includes 7 GNU projects: [https://directory.fsf.org/wiki/Bayonne Bayonne], [https://directory.fsf.org/wiki/Sipwitch SIP Witch], and their supporting libraries (Common C++ / uCommon, ccAudio, ccScript, ccRTP, and ZRTP / ZRTP4J). The [https://web.archive.org/web/20120424194509/http://www.gnutelephony.org/index.php/GNU_Telephony 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 [https://directory.fsf.org/wiki/Gnucomm Free Software Directory], as are some of the subsidiary projects (see links above). | ||
* [https://wiki.mumble.info/ Mumble/ Murmur] ([https://github.com/mumble-voip/mumble/blob/master/LICENSE New BSD]): an 'IRC with voice' style system, developed for in-game chat | * [https://wiki.mumble.info/ Mumble/ Murmur] ([https://github.com/mumble-voip/mumble/blob/master/LICENSE New BSD]): an 'IRC with voice' style system, developed for in-game chat. Listed in the [https://directory.fsf.org/wiki/Mumble Free Software Directory]. | ||
* [https://www.doubango.org/sipml5/ SIPML5] ([https://github.com/DoubangoTelecom/sipml5/blob/master/LICENSE BSD], formerly GPLv3) and [https://www.doubango.org/webrtc2sip/ WebRTC2SIP]: A SIP client written in Javascript, and a WebRTC back-end allowing the browser to be a phone. | * [https://www.doubango.org/sipml5/ SIPML5] ([https://github.com/DoubangoTelecom/sipml5/blob/master/LICENSE BSD], formerly GPLv3) and [https://www.doubango.org/webrtc2sip/ WebRTC2SIP]: A SIP client written in Javascript, and a WebRTC back-end allowing the browser to be a phone. | ||
| Line 16: | Line 16: | ||
== Video only == | == Video only == | ||
* [http://www.dyne.org/software/hasciicam/ HasciiCam] (C, [https://github.com/jaromil/hasciicam/blob/master/COPYING 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. | * [http://www.dyne.org/software/hasciicam/ HasciiCam] (C, [https://github.com/jaromil/hasciicam/blob/master/COPYING 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 [https://directory.fsf.org/wiki/Hasciicam Free Software Directory]. | ||
* [https://jitsi.org/jitsi-videobridge/ Jitsi VideoBridge] ([https://github.com/jitsi/jitsi-videobridge/blob/master/LICENSE Apache 2.0], formerly LGPL): video relaying server for multiparty conferences. | * [https://jitsi.org/jitsi-videobridge/ Jitsi VideoBridge] ([https://github.com/jitsi/jitsi-videobridge/blob/master/LICENSE Apache 2.0], formerly LGPL): video relaying server for multiparty conferences. | ||
| Line 26: | Line 26: | ||
* [https://github.com/plugorgau/eventstreamr/ Eventstreamr] ([https://github.com/plugorgau/eventstreamr/blob/master/LICENSE GNU AGPLv3], now [https://code.timvideos.us/projects/ discontinued]): "single and multi room audio visual stream management". No new commits on this repo since 2015. | * [https://github.com/plugorgau/eventstreamr/ Eventstreamr] ([https://github.com/plugorgau/eventstreamr/blob/master/LICENSE GNU AGPLv3], now [https://code.timvideos.us/projects/ discontinued]): "single and multi room audio visual stream management". No new commits on this repo since 2015. | ||
* [https://jami.net/ GNU Jami] ([https://jami.net/discover/ GPLv3+]): P2P text, voice, and video chat client, cross-platform (desktop and mobile) | * [https://jami.net/ GNU Jami] ([https://jami.net/discover/ GPLv3+]): P2P text, voice, and video chat client, cross-platform (desktop and mobile). Listed in the [https://directory.fsf.org/wiki/Jami Free Software Directory]. | ||
* [https://jitsi.org/jitsi-meet/ Jitsi Meet] ([https://github.com/jitsi/jitsi-meet/blob/master/LICENSE Apache 2.0], formerly "MIT"): WebRTC client for text, voice and video conferencing, encrypted by default, with desktop and presentation sharing. | * [https://jitsi.org/jitsi-meet/ Jitsi Meet] ([https://github.com/jitsi/jitsi-meet/blob/master/LICENSE Apache 2.0], formerly "MIT"): WebRTC client for text, voice and video conferencing, encrypted by default, with desktop and presentation sharing. | ||
* [https://nextcloud.com/talk/ NextCloud Talk] ([https://github.com/nextcloud/spreed/blob/master/COPYING AGPL]): a WebRTC plug-in for the [https://nextcloud.com/ NextCloud app suite], based on Spreed. | * [https://nextcloud.com/talk/ NextCloud Talk] ([https://github.com/nextcloud/spreed/blob/master/COPYING AGPL]): a WebRTC plug-in for the [https://nextcloud.com/ NextCloud app suite], based on Spreed (see below). NextCloud is listed in the [https://directory.fsf.org/wiki/Nextcloud Free Software Directory]. | ||
* [https://opencast.org/ OpenCast] ([https://github.com/lkiesow/opencast/blob/develop/LICENSE 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 [https://www.apereo.org/ Apero Foundation]. | * [https://opencast.org/ OpenCast] ([https://github.com/lkiesow/opencast/blob/develop/LICENSE 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 [https://www.apereo.org/ Apero Foundation]. | ||
| Line 40: | Line 40: | ||
* [https://rocket.chat/ RocketChat] ([https://github.com/RocketChat/Rocket.Chat/blob/develop/LICENSE "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. | * [https://rocket.chat/ RocketChat] ([https://github.com/RocketChat/Rocket.Chat/blob/develop/LICENSE "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. | ||
* [https://www.signal.org/ Signal] ([https://github.com/signalapp/ client apps: GPLv3], [https://github.com/signalapp/Signal-Server 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. | * [https://www.signal.org/ Signal] ([https://github.com/signalapp/ client apps: GPLv3], [https://github.com/signalapp/Signal-Server 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 [https://directory.fsf.org/wiki/Signal Free Software Directory]. | ||
* [https://www.spreed.me/ Spreed] ([https://github.com/signalapp/Signal-Server AGPLv3]): A WebRTC server for voice and video calls and conferencing, using Go and Node.JS. | * [https://www.spreed.me/ Spreed] ([https://github.com/signalapp/Signal-Server AGPLv3]): A WebRTC server for voice and video calls and conferencing, using Go and Node.JS. | ||
* [https://github.com/subrosa-io Subrosa] (GPLv3, discontinued): WebRTC client/server for text, voice and video conferencing, encrypted by default. | * [https://github.com/subrosa-io Subrosa] (GPLv3, discontinued): WebRTC client/server for text, voice and video conferencing, encrypted by default. Listed in the [https://directory.fsf.org/wiki/Subrosa Free Software Directory]. | ||
* [https://about.talky.io/ Talky.io]: A WebRTC platform which has released a number of elements of their stack as free code including [https://www.simplewebrtc.com/ SimpleWebRTC] and [https://github.com/otalk OTalk] (although there are still some proprietary bits in the stack). | * [https://about.talky.io/ Talky.io]: A WebRTC platform which has released a number of elements of their stack as free code including [https://www.simplewebrtc.com/ SimpleWebRTC] and [https://github.com/otalk OTalk] (although there are still some proprietary bits in the stack). | ||
* [https://tox.chat/ 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, [https://github.com/TokTok/c-toxcore/blob/master/LICENSE GPLv3]) | * [https://tox.chat/ 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, [https://github.com/TokTok/c-toxcore/blob/master/LICENSE GPLv3]). Listed in the [https://directory.fsf.org/wiki/Tox Free Software Directory], which also has pages for some of its client apps. | ||
* [https://unhangout.media.mit.edu/ UnHangout] ([https://gitlab.com/unhangout/reunhangout/blob/master/LICENSE GPLv3], Javascript): Developed at MIT, specifically as a replacement for the Goggle product with a similar name. Seems to be a JS-based web interface built around a Jitsi Meet core. As of late 2019, no new commits to the code repo since 2018. | * [https://unhangout.media.mit.edu/ UnHangout] ([https://gitlab.com/unhangout/reunhangout/blob/master/LICENSE GPLv3], Javascript): Developed at MIT, specifically as a replacement for the Goggle product with a similar name. Seems to be a JS-based web interface built around a Jitsi Meet core. As of late 2019, no new commits to the code repo since 2018. | ||
* [https://wire.com/ | * [https://wire.com/ Wire] ([https://github.com/wireapp client apps: GPLv3], [https://github.com/wireapp/wire-server/blob/develop/LICENSE server: AGPLv3]):: encrypted one-to-one and group chat, with encryption. Has both web app and desktop/ mobile apps. Listed in the [https://directory.fsf.org/wiki/Wire Free Software Directory]. | ||
== Live mixers == | == Live mixers == | ||
dvswitch (GNU GPL): an audio-visual mixing system that depends on LibAV | * dvswitch (GNU GPL): an audio-visual mixing system that [https://libav.org/ depends on LibAV (LGPL or GPL)]. Listed in the [https://directory.fsf.org/wiki/Dvswitch Free Software Directory]. | ||
gst-switch (GNU GPL): | * gst-switch (GNU GPL, [https://code.timvideos.us/projects/ discontinued], C): used GStreamer | ||
snowmix (GNU GPLv3) | snowmix (GNU GPLv3) | ||
Revision as of 10:15, 18 October 2019
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.
Audio only
- 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.
- SIPML5 (BSD, formerly GPLv3) and WebRTC2SIP: A SIP client written in Javascript, and a WebRTC back-end allowing the browser to be a phone.
Video only
- 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.
- Jitsi VideoBridge (Apache 2.0, formerly LGPL): video relaying server for multiparty conferences.
Audio-visual
- 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.
- Eventstreamr (GNU AGPLv3, now discontinued): "single and multi room audio visual stream management". No new commits on this repo since 2015.
- GNU Jami (GPLv3+): 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.
- 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.
- Palava.tv: Like Jitsi Meet, a WebRTC audio and video conferencing stack that includes the Palava-portal ("MIT", Ruby, Javascript), Palava-client (LGPLv3, Ruby, Javascript), and Palava-machine (AGPLv3, Ruby). Listed on the FSF Free Software Directory.
- RetroShare (current licensing situation is unclear): A P2P communications client which can support both voice and video chat
- 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.
- Subrosa (GPLv3, discontinued): WebRTC client/server for text, voice and video conferencing, encrypted by default. Listed in the Free Software Directory.
- 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.
- UnHangout (GPLv3, Javascript): Developed at MIT, specifically as a replacement for the Goggle product with a similar name. Seems to be a JS-based web interface built around a Jitsi Meet core. As of late 2019, no new commits to the code repo since 2018.
- 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.
Live mixers
- dvswitch (GNU GPL): an audio-visual mixing system that depends on LibAV (LGPL or GPL). Listed in the Free Software Directory.
- gst-switch (GNU GPL, discontinued, C): used GStreamer
snowmix (GNU GPLv3)
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
Standards/ Protocols
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
- Wikipedia: Jingle (protocol)
- Muji (open protocol extending Jingle): allow for multi-user voice chat
WebRTC: An open standard developed by Goggle, Mozilla, and Opera for realtime voice and video conversation, which is being standardized by the W3C.
- Some documentation on how to implement can be found on WebRTC Quick Start.
- Wikipedia: WebRTC
Codecs
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:
Audio
- Opus - developed by Xiph (replaces Speex)
- Vorbis - developed by Xiph, lossy codec (equivalent to MP3, also obsoleted by Opus?)
- FLAC - developed by Xiph, lossless codec
Video
- Theora - developed by Xiph
- Dirac - created by BBC Research, "low-resolution web content to broadcasting HD and beyond, to near-lossless studio editing"
- VP8/ VP9 - bought by Goggle and released as a royalty-free open codec
Containers
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
Peer-to-Peer Network
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:
FreeNet (GPL): uses standard IP networking in an attempt to create an uncensorable alternative to the world wide web,
GNUNet (GPL): "GNU's Framework for Secure Peer-to-Peer Networking",
BitTorrent Live: A system for streaming live events using the same P2P swarming principles underlying BitTorrent downloads
Retroshare (GPL): "using a web-of-trust to authenticate peers and OpenSSL to encrypt all communication... provides filesharing, chat, messages, forums and channels
More Information
- Chatting, Audio and Video Calls: A document by RiseUp Labs, the folks behind We.Riseup.net
- 74 free code telephony projects from 2007
- The state of FOSS real-time communications - a discussion on Reddit