aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2020-03-24 19:39:40 +0100
committerJonas Smedegaard <dr@jones.dk>2020-03-24 19:39:40 +0100
commit0cef4b1c7886851397cfe24329b3b65d6e350534 (patch)
treee22030fd6fbd30889ab481d7a2f01a71543f9fc7
parent45f64b8bb7d2de89a87ad0baf8913bf4710fc39d (diff)
categorize options as good, bad, or ugly; move sections Features and Platforms to document DEVELOPMENT.md
-rw-r--r--DEVELOP.md180
-rw-r--r--README.md182
2 files changed, 235 insertions, 127 deletions
diff --git a/DEVELOP.md b/DEVELOP.md
new file mode 100644
index 0000000..ff67ed1
--- /dev/null
+++ b/DEVELOP.md
@@ -0,0 +1,180 @@
+#Designing a realtime audio/video conferencing service
+
+## Features
+
+Functionality to consider when considering tool/platform.
+
+ * topology
+ + mesh (P2P)
+ all processing at end-points, participants limited by bandwidth
+ + routing (SFU)
+ light server processing, participants limited by bandwidth
+ + mixing (MCU)
+ heavy server processing
+ * stream source efficiency
+ + Support [simulcast](https://webrtcglossary.com/simulcast/)
+ i.e. encode multiple streams that an SFU can "hop" between
+ + Support spatial/temporal/quality [SVC](https://webrtcglossary.com/svc/)
+ i.e. encode a stream that an SFU can efficiently "slice" without recoding
+ + Support suspending simulcast streams
+ <https://webrtchacks.com/suspending-simulcast-streams/>
+ + Support [SCReAM](https://github.com/EricssonResearch/scream)
+ * security
+ + Support [PERC](https://webrtcglossary.com/perc/)
+ + Support [ZRTP](https://en.wikipedia.org/wiki/ZRTP)
+ * stream forwarding efficiency
+ * meeting management
+ + Personalized Meeting rooms
+ + Scheduled/Meet-me Meetings
+ + Instant/Direct Meetings
+ + Presence Support
+ + Recording
+ + Text chat
+ + Screen sharing
+ * conference stream efficiency
+ + Skip video streams beyond a threshold of participants
+ + Skip video streams tied to quiet audio streams
+ + Skip streams of explicitly tagged non-speaker participants
+ * conference management
+ + Conference Recording
+ + force-mute participants
+ + "Raise a hand" for muted participants
+ * meeting room
+ + Dual stream for dual screen
+ * Dial in from telephone
+ * Dial in from SIP audio-only
+ * Dial in from SIP with video
+ * Dial in from SIP with SIMPLE text chat
+
+## See also
+
+### Tools
+
+[Janus Gateway](https://janus.conf.meetecho.com/)
+WebRTC SFU/bridge/broker
+written in C
+
+[Mediasoup](https://mediasoup.org/)
+WebRTC SFU
+written in C
+
+[Kurento](https://www.kurento.org/)
+WebRTC MCU
+written in C++
+
+[drachtio](https://drachtio.org/)
+SIP "SFU"
+written in C++
+
+[Licode](https://lynckia.com/licode/)
+WebRTC MCU
+written in C++
+
+[Medooze WebRTC Media Server](https://github.com/medooze/media-server)
+WebRTC/SIP MCU
+written in C++
+
+[SylkServer](https://sylkserver.com/)
+SIP "SFU"
+written in Python
+
+[Spreed WebRTC](https://github.com/strukturag/spreed-webrtc)
+WebRTC SFU
+written in NodeJS and Go
+
+[Jitsi Videobridge](https://jitsi.org/jitsi-videobridge/)
+XMPP SFU
+written in Java
+
+[Jigasi](https://jitsi.org/jitsi-meet/)
+WebRTC bridge to Jitsi Videobridge
+written in Java
+
+### Platforms
+
+[multiparty-meeting](https://github.com/havfo/multiparty-meeting)
+using Mediasoup
+(and optionally drachtio and Kurento)
+written in JavaScript
+hosted at <https://letsmeet.no/>
+
+[Jangouts](https://github.com/jangouts/jangouts)
+using Janus
+written in CoffeeScript
+
+[tawk.space](https://github.com/invisible-college/tawk.space)
+using Janus
+written in CoffeeScript
+hosted at <https://tawk.space/>
+
+[SIP2SIP](https://ag-projects.com/sip2sip/)
+using SylkServer and Janus
+hosted at <https://sip2sip.info/>
+and <https://webrtc.sipthor.net/>
+
+[Roll Call](https://github.com/mikeal/roll-call)
+audio-only
+hosted at <https://roll.call>
+
+[Spreed.ME](https://www.spreed.me/)
+using Spreed WebRTC
+
+[Nextcloud Talk](https://nextcloud.com/talk/)
+using Spreed WebRTC
+
+[Jitsi Meet](https://jitsi.org/jitsi-meet/)
+using Jigasi and Jitsi Videobridge
+hosted at <https://meet.jit.si/>
+
+[Matrix](https://matrix.org/)
+using Jigasi and Jitsi Videobridge
+
+[BigBlueButton](https://bigbluebutton.org/)
+using Kurento
+written in Java
+
+[mConf](http://mconf.org/)
+using Kurento
+written in Java and Ruby
+
+[OpenMeeting](https://openmeetings.apache.org/)
+written in Java
+
+[Wire](https://wire.com/)
+proprietary-protocol [Free Software](https://github.com/wireapp/wire) stack
+written in Haskell, Rust, C
+
+[Talky](https://about.talky.io/)
+cloud SFU service
+hosted at <https://talky.io/>
+
+[Me](https://join.me/)
+cloud SFU service
+
+GoToMeeting
+cloud SFU service
+
+[Zoom Meetings](https://zoom.us/)
+cloud SFU service
+supporting "up to 50 participants at once"
+(but client bandwidth and resource demands and stability of such session is unknown)
+
+Hangouts Meet
+cloud SFU service
+
+Webex Meetings
+cloud SFU service
+
+Skype
+cloud SFU service
+suporting "up to 25 participants at once"
+(but client bandwidth and resource demands and stability of such session is unknown)
+
+MoxieMeet
+cloud SFU service
+requiring Google account
+supporting "up to 32 users all on video together"
+(but client bandwidth and resource demands and stability of such session is unknown)
+
+TeamViewer
+cloud SFU service
diff --git a/README.md b/README.md
index 9923797..c37ffa6 100644
--- a/README.md
+++ b/README.md
@@ -2,14 +2,18 @@
> Use <https://sip2sip.info/> for now, and try avoid more than 6 video streams
+This is an overview of realtime audio/video conferencing option,
+categorized as "good", "bad" or "ugly"
+based on how recommendable they are
+both politically, technically and practically.
-## Recommendations
-Ideal would be to self-host,
-but no such solutions are readyly available in Debian yet.
-Current recommendation is therefore to use a cloud service
-built with Free software, light on resources,
-and realistic to fully self-host later if needed.
+## Good
+
+"Good" options use open standards and Free software,
+is realistic to self-host on cheap, small computers
+(even if concrete instance might be cloud-based),
+and are readily usable.
Generally most reliable is <https://sip2sip.info/>,
so use that unless you need a specific feature unavailable there.
@@ -57,6 +61,17 @@ Includes text chat
(crucial in case of audio trouble).
+## Bad
+
+"Bad" options use Free software,
+but either uses non-standard protocols,
+is too heavy for small-scale self-hosting,
+or does not really work reliably.
+
+These are only relevant if you need some specific feature,
+or for inspiration when exploring what is possible.
+
+
### tawk.space
No login.
@@ -76,181 +91,94 @@ Includes text-based scratch-space.
Includes per-participant pointer.
-## Features
-
-Functionality to consider when considering tool/platform.
-
- * topology
- + mesh (P2P)
- all processing at end-points, participants limited by bandwidth
- + routing (SFU)
- light server processing, participants limited by bandwidth
- + mixing (MCU)
- heavy server processing
- * stream source efficiency
- + Support [simulcast](https://webrtcglossary.com/simulcast/)
- i.e. encode multiple streams that an SFU can "hop" between
- + Support spatial/temporal/quality [SVC](https://webrtcglossary.com/svc/)
- i.e. encode a stream that an SFU can efficiently "slice" without recoding
- + Support suspending simulcast streams
- <https://webrtchacks.com/suspending-simulcast-streams/>
- + Support [SCReAM](https://github.com/EricssonResearch/scream)
- * security
- + Support [PERC](https://webrtcglossary.com/perc/)
- + Support [ZRTP](https://en.wikipedia.org/wiki/ZRTP)
- * stream forwarding efficiency
- * meeting management
- + Personalized Meeting rooms
- + Scheduled/Meet-me Meetings
- + Instant/Direct Meetings
- + Presence Support
- + Recording
- + Text chat
- + Screen sharing
- * conference stream efficiency
- + Skip video streams beyond a threshold of participants
- + Skip video streams tied to quiet audio streams
- + Skip streams of explicitly tagged non-speaker participants
- * conference management
- + Conference Recording
- + force-mute participants
- + "Raise a hand" for muted participants
- * meeting room
- + Dual stream for dual screen
- * Dial in from telephone
- * Dial in from SIP audio-only
- * Dial in from SIP with video
- * Dial in from SIP with SIMPLE text chat
-
-## See also
-
-### Tools
-
-[Janus Gateway](https://janus.conf.meetecho.com/)
-WebRTC SFU/bridge/broker
-written in C
-
-[Mediasoup](https://mediasoup.org/)
-WebRTC SFU
-written in C
-
-[Kurento](https://www.kurento.org/)
-WebRTC MCU
-written in C++
-
-[drachtio](https://drachtio.org/)
-SIP "SFU"
-written in C++
-
-[Licode](https://lynckia.com/licode/)
-WebRTC MCU
-written in C++
-
-[Medooze WebRTC Media Server](https://github.com/medooze/media-server)
-WebRTC/SIP MCU
-written in C++
-
-[SylkServer](https://sylkserver.com/)
-SIP "SFU"
-written in Python
-
-[Spreed WebRTC](https://github.com/strukturag/spreed-webrtc)
-WebRTC SFU
-written in NodeJS and Go
-
-[Jitsi Videobridge](https://jitsi.org/jitsi-videobridge/)
-XMPP SFU
-written in Java
-
-[Jigasi](https://jitsi.org/jitsi-meet/)
-WebRTC bridge to Jitsi Videobridge
-written in Java
-
-### Platforms
-
-[multiparty-meeting](https://github.com/havfo/multiparty-meeting)
-using Mediasoup
-(and optionally drachtio and Kurento)
-written in JavaScript
-hosted at <https://letsmeet.no/>
-
-[Jangouts](https://github.com/jangouts/jangouts)
-using Janus
-written in CoffeeScript
-
-[tawk.space](https://github.com/invisible-college/tawk.space)
-using Janus
-written in CoffeeScript
-hosted at <https://tawk.space/>
-
-[SIP2SIP](https://ag-projects.com/sip2sip/)
-using SylkServer and Janus
-hosted at <https://sip2sip.info/>
-and <https://webrtc.sipthor.net/>
+### roll.call
[Roll Call](https://github.com/mikeal/roll-call)
audio-only
hosted at <https://roll.call>
-[Spreed.ME](https://www.spreed.me/)
-using Spreed WebRTC
-[Nextcloud Talk](https://nextcloud.com/talk/)
-using Spreed WebRTC
+### Jitsi
[Jitsi Meet](https://jitsi.org/jitsi-meet/)
using Jigasi and Jitsi Videobridge
hosted at <https://meet.jit.si/>
+
+### Matrix
+
[Matrix](https://matrix.org/)
using Jigasi and Jitsi Videobridge
+
+### BigBlueButton
+
[BigBlueButton](https://bigbluebutton.org/)
using Kurento
written in Java
-[mConf](http://mconf.org/)
-using Kurento
-written in Java and Ruby
-[OpenMeeting](https://openmeetings.apache.org/)
-written in Java
+### Wire
[Wire](https://wire.com/)
proprietary-protocol [Free Software](https://github.com/wireapp/wire) stack
written in Haskell, Rust, C
+
+## Ugly
+
+"Ugly" options use proprietary software.
+
+Avoid them, they are bad for society.
+
+### Talky
+
[Talky](https://about.talky.io/)
cloud SFU service
hosted at <https://talky.io/>
+### Me
+
[Me](https://join.me/)
cloud SFU service
-GoToMeeting
+### GoToMeeting
+
cloud SFU service
+### Zoom
+
[Zoom Meetings](https://zoom.us/)
cloud SFU service
supporting "up to 50 participants at once"
(but client bandwidth and resource demands and stability of such session is unknown)
+### Hangouts
+
Hangouts Meet
cloud SFU service
+### Webex
+
Webex Meetings
cloud SFU service
+### Skype
+
Skype
cloud SFU service
suporting "up to 25 participants at once"
(but client bandwidth and resource demands and stability of such session is unknown)
+### MoxieMeet
+
MoxieMeet
cloud SFU service
requiring Google account
supporting "up to 32 users all on video together"
(but client bandwidth and resource demands and stability of such session is unknown)
+### TeamViewer
+
TeamViewer
cloud SFU service