From 550b1b9750c7c983ee40207530199cd6e130854a Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Tue, 2 Nov 2021 01:44:31 +0100 Subject: add draft turtle-flavored markdown data --- data/doap.ttl | 735 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 735 insertions(+) create mode 100644 data/doap.ttl diff --git a/data/doap.ttl b/data/doap.ttl new file mode 100644 index 0000000..f6b66b4 --- /dev/null +++ b/data/doap.ttl @@ -0,0 +1,735 @@ +@prefix adms: . +@prefix dc: . +@prefix dcat: . +@prefix doap: . +@prefix doap-deps: . +@prefix foaf: . +@prefix owl: . +@prefix rdfs: . +@prefix skos: . +@prefix spdx: . + +#This document uses turtle-flavored markdown comments: +#Lines beginning with "# " is markdown, modulo those characters. +#Markdown "[QName]" considers homepage-ish nodes of QName for linking. +#Markdown "[:QName]" expands to RDF nodes of QName as human sentences. +#Markdown "[SELECT {...}]" expands to SPARQL result as human paragraphs. +#Markdown "[{...}]" expands to "[SELECT * WHERE {...}]", human sorted. + +# # WebRTC +# WebRTC is the contemporary open standard for realtime media streaming. +# +# This document identifies WebRTC parts and integrations +# and their qualities related to usability and sustainability. +# +# ## Usability +# +# WebRTC consists of multiple parts, +# each crucial for a good user experience. +# +# A good user experience should not only be here and now, +# but also into the future and for everyone. +# Qualities related to sustainability include +# collaboration (Free software and open standards), +# resilience and maintainability (e.g. software distribution integration), +# and footprint (e.g. electricity, memory, and computation consumption). + +:component + a skos:Concept; + skos:prefLabel "WebRTC Component"; + dc:description """ +Tool or service doing a specific task, +e.g. transcoding RTP streaming between WebRTC-compatible and other formats. +""". + +:framework + a skos:Concept; + skos:prefLabel "WebRTC Framework"; + dc:description """ +Set of tools and/or integrations with external components, +for providing a coherent developer interface for building platforms and/or services. +""". + +:platform + a skos:Concept; + skos:prefLabel "WebRTC Platform"; + dc:description """ +Set of tools and/or integrations with external components, +for providing a coherent user-facing application as a service. +""". + +:service + a skos:Concept; + skos:prefLabel "WebRTC Service"; + dc:description """ +Coherent user-facing application provided as a service. +""". + +# ### Services +# +# [:service] +# +# [{ ?project doap:category :service }] + +# ### Platforms +# +#TODO: generate short "see above" entries instead +# [:platform] +# See also above for platforms also provided as a service. +# +# [{ ?project doap:category :mixing MINUS { ?project doap:category :routing } }] + +:janus + a dcat:Dataset, + doap:Project; + doap:name "Janus"; + doap:shortdesc "general purpose WebRTC server/gateway"; + doap:category :framework; + doap:homepage ; + doap:download-page ; + doap:license :gpl_3; + doap:programming-language "C", "JavaScript"; + doap:implements :sfu. + +:mediasoup + a dcat:Dataset, + doap:Project; + doap:name "Mediasoup"; + doap:shortdesc "WebRTC selective forwarding unit (SFU)"; + doap:category :framework; + doap:homepage ; + doap:download-page ; + rdfs:seeAlso ; + doap:license :isc; + doap:programming-language "C++", "TypeScript"; + doap:implements :cc-remb, :sfu. + +:medooze + a dcat:Dataset, + doap:Project; + doap:name "Medooze SFU"; + doap:shortdesc "WebRTC selective forwarding unit (SFU)"; + doap:category :framework; + doap:homepage ; + doap:download-page ; + doap:license :expat; + doap:programming-language "C++", "JavaScript"; + doap:implements :sfu, :mcu. + +:spreed + a dcat:Dataset, + doap:Project; + doap:name "Spreed WebRTC"; + doap:shortdesc "WebRTC audio/video call and conferencing server"; + doap:category :routing; + doap:download-page ; + doap:license :agpl_3; + doap:programming-language "Go", "JavaScript"; + doap:implements :sfu. + +:jitsi-videobridge + a dcat:Dataset, + doap:Project; + doap:name "Jitsi Videobridge"; + doap:shortdesc "WebRTC compatible video router or SFU"; + dc:comment "Seems biased towards XMPP-based signalling.", + "Seems biased towards [plan B][legacy-planb]."; + doap:category :routing; + doap:homepage ; + doap:download-page ; + rdfs:seeAlso , + ; + doap:license :apache_2; + doap:programming-language "Java", "JavaScript"; + doap:implements :cc-gcc, :sfu, :xmpp-colibri. + +:kurento-kms + a dcat:Dataset, + doap:Project; + doap:name "Kurento Media Server"; + doap:shortdesc "WebRTC Media Server"; + doap:category :framework; + doap:homepage ; + doap:download-page ; + rdfs:seeAlso ; + doap:license :apache_2; + doap:programming-language "C++"; + doap:implements :mcu, :sfu. + +:licode + a dcat:Dataset, + doap:Project; + doap:name "Licode"; + doap:shortdesc "WebRTC Communications Platform"; + doap:category :framework; + doap:homepage ; + doap:download-page ; + doap:license :expat; + doap:programming-language "C++", "JavaScript"; + doap:implements :mcu, :sfu. + +:openvidu + a dcat:Dataset, + doap:Project; + doap:name "OpenVidu"; + doap:shortdesc "platform to facilitate the addition of video calls in your web or mobile application"; + doap:category :platform; + doap:homepage ; + doap:download-page ; + doap:license :apache_2; + adms:includedAsset :kurento-kms; + doap:programming-language "Java", "TypeScript"; + doap:implements :sfu. + +:red5 + a dcat:Dataset, + doap:Project; + doap:name "Ant Media Server"; + doap:shortdesc "WebRTC SFU"; + doap:category :component; + doap:homepage ; + doap:download-page ; + doap:license :apache_2; + doap:programming-language "Java"; + doap:implements :sfu. + +:ant + a dcat:Dataset, + doap:Project; + doap:name "Red5 Server"; + doap:shortdesc "WebRTC SFU"; + dc:comment "Fork of [Red5 Server][red5]."; + doap:category :component; + doap:homepage ; + doap:download-page ; + doap:license :apache_2; + doap:programming-language "Java"; + doap:implements :sfu. + +:medooze + a dcat:Dataset, + doap:Project; + doap:name "Medooze media-server"; + doap:shortdesc "WebRTC media server"; + doap:category :mixing; + doap:homepage ; + doap:download-page ; + doap:license :gpl_2; + doap:programming-language "C++", "JavaScript"; + doap:implements :cc-transport, :priv-perc, :mcu. + +# ### Bridging +# +# [:bridging] +# Tools also doing WebRTC streaming are excluded here +# (see above listings). +# +# [{ ?project doap:category :mixing MINUS { ?project doap:category :routing . ?project doap:category :mixing } }] + +:sylk-server + a dcat:Dataset, + doap:Project; + doap:name "SylkServer"; + doap:shortdesc "SIP/XMPP Application Server"; + dc:comment "Code is Python 2.x, a language dialect obsoleted upstream."; + doap:category :platform; + doap:homepage ; + doap:download-page ; + doap:license :gpl_3; + adms:includedAsset :janus; + doap:programming-language "Python"; + doap:implements :sip, :xmpp, :sfu. + +:jitsi-jigasi + a dcat:Dataset, + doap:Project; + doap:name "Jigasi"; + doap:shortdesc "WebRTC bridge to Jitsi Videobridge"; + doap:category :component; + doap:download-page ; + doap:license :apache_2; + doap:programming-language "Java"; +# doap:implements :webrtc-transcoder. + +:matrix-synapse + a dcat:Dataset, + doap:Project; + doap:name "Matrix-Synapse"; + doap:shortdesc "Federated text chat with WebRTC direct chat and optional WebRTC conferencing"; + doap:category :platform; + doap:download-page ; + doap:license :apache_2; + doap:programming-language "Python"; + doap:implements :matrix, :webrtc-p2p. + +:bigbluebutton + a dcat:Dataset, + doap:Project; + doap:name "BigBlueButton"; + doap:shortdesc "web conferencing system for online learning"; + dc:comment "Uses Kurento Media Server only for one-way streaming, and locally implemented SFU."; + doap:category :platform; + doap:homepage ; + doap:download-page ; + rdfs:seeAlso , + ; + doap:license :lgpl_3; + adms:includedAsset :kurento-kms; + doap:programming-language "Java"; + doap:implements :sfu. + +:openmeetings + a dcat:Dataset, + doap:Project; + doap:name "OpenMeetings"; + doap:shortdesc "Collaboration Platform"; + dc:comment """ +Uses Kurento Media Server and Red5 only for one-way streaming, and locally implemented SFU. +SFU was first introduced with release 5.0.0-M3 on 2019-12-16. +"""; + doap:category :platform; + doap:homepage ; + doap:download-page ; + rdfs:seeAlso , + ; + doap:license :apache_2; + adms:includedAsset :kurento-kms, :red5; + doap:programming-language "Java", "JavaScript"; + doap:implements :sfu. + +Wire Audio Video Signaling - +[Wire](https://wire.com/) Application Server +using for [MLS](https://messaginglayersecurity.rocks/), +and using internal FIXME for WebRTC SFU, +written in Haskell, Rust, C, +FIXME. + +### Web frontend + +[mediasoup-demo](https://github.com/versatica/mediasoup-demo) +using Mediasoup +written in JavaScript +hosted at + +[multiparty-meeting](https://edumeet.org/) +at [Github](https://github.com/havfo/multiparty-meeting) +using Mediasoup +(and optionally drachtio and Kurento Media Server), +written in JavaScript +hosted at and + +[Jangouts](https://github.com/jangouts/jangouts) +using Janus, +written in CoffeeScript + +[Roomler](https://github.com/gjovanov/roomler) +using Janus, +written in VueJS +hosted at + +[tawk.space](https://github.com/invisible-college/tawk.space) +using Janus +written in CoffeeScript +hosted at + +[SIP2SIP](https://ag-projects.com/sip2sip/) +using SylkServer and Janus +hosted at +and + +[Roll Call](https://github.com/mikeal/roll-call) +audio-only +hosted at + +[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 + +[mConf](http://mconf.org/) +using Kurento Media Server +written in Java and Ruby + +[Veeting](https://veeting.com/) +cloud SFU service +using Janus +hosted at +(free trial at ) + +[Talky](https://about.talky.io/) +cloud SFU service +hosted at + +[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 + +Wowza Streaming Cloud +cloud streaming 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 + + +# ## specs + +# ### Topology + +:sfu + a doap:Specification; + skos:prefLabel "Selective Forwarding Unit"; + skos:altLabel "SFU"; + rdfs:seeAlso . + +:mcu + a doap:Specification; + skos:prefLabel "Multipoint Conferencing Unit"; + skos:altLabel "MCU"; + rdfs:seeAlso . + +# ### Integration + +:xmpp-colibri + a doap:Specification; + skos:prefLabel "XMPP COLIBRI"; + foaf:homepage . + +# ### Congestion Control + +:cc + a skos:Concept; + skos:prefLabel "Congestion Control"; + rdfs:seeAlso , + , + , + , + . + +:cc-transport + a doap:Specification; + skos:prefLabel "RTP Transport-wide Congestion Control"; + skos:altLabel "Google Transport-wide Congestion Control", + "transport-cc", + "TWCC"; + dc:comment """ + Supported for bundled streams in Gecḱo-based web browsers since mozilla/76. +"""; + rdfs:seeAlso , + ; + foaf:homepage . + +# #### Sender side bitrate estimation + +:cc-gcc + a doap:Specification; + skos:prefLabel "Google Congestion Control"; + skos:altLabel "GCC"; + foaf:homepage . + +:cc-nada + a doap:Specification; + skos:prefLabel "Network-Assisted Dynamic Adaptation"; + skos:altLabel "NADA"; + sioc:previous_version ; + foaf:homepage ; + owl:sameAs . + +:cc-scream + a doap:Specification; + skos:prefLabel "Self-Clocked Rate Adaptation for Multimedia"; + skos:altLabel "SCReAM"; + rdfs:seeAlso ; + sioc:previous_version ; + foaf:homepage ; + owl:sameAs . + +:cc-tmmbr + a doap:Specification; + skos:prefLabel "Temporary Maximum Media Stream Bit Rate Request"; + skos:altLabel "TMMBR"; + rdfs:seeAlso , + ; + foaf:page . + +# #### Receiver side bitrate estimation + +:cc-remb + a doap:Specification; + skos:prefLabel "Receiver Estimated Maximum Bitrate"; + skos:altLabel "REMB"; + skos:altLabel "goog-remb"; + rdfs:comment: """ +Seemingly abandoned in libwebrtc +and dropped since Firefox 96. +""" + rdfs:seeAlso , + ; + foaf:homepage . + +# ### Codec + +:codec + a skos:Concept; + skos:prefLabel "Codec". + +:codec-vp8 + a doap:Specification; + skos:prefLabel "VP8"; + dc:abstract "VP8 is a roualty-free video codec, mandatory part of the WebRTC specification."; + rdfs:comment: """ +Performance is notoriously weak on operating system iOS, +likely related to Apple investments +in the directly competing royalty-based codec H.264. +""" + rdfs:seeAlso , + , + . + +# ### Compatibility + +:legacy + a skos:Concept; + skos:prefLabel "Legacy". + +:legacy-blink + a doap:Specification; + skos:prefLabel "Legacy Blink"; + dc:abstract "Adequate quirks to work around WebRTC violations in Blink" + dc:comment """ +The web browser engine Blink +(used e.g. in Google Chrome and Chromium) +introduced WebRTC before it was formally defined, +and the later definition changed at several places +where the Blink codebase didn't adjust even after 5-10 years. +Some tools not explicitly tracking Blink issues +might implicitly have hardcoded non-standard Blink protocols +and fail subtly for other clients implementing \"by the book\". +""" + rdfs:seeAlso . + +:legacy-gecko + a doap:Specification; + skos:prefLabel "Legacy Gecko"; + dc:abstract "Adequate quirks to work around WebRTC violations in Gecko" + rdfs:seeAlso , + , + , + , + . + +:legacy-webkit + a doap:Specification; + skos:prefLabel "Legacy WebKit"; + dc:abstract "Adequate quirks to work around WebRTC violations in WebKit" + dc:comment """ +The web browser engine WebKit +(used e.g. in Apple Safari and GNOME Web) +has a notoriously buggy WebRTC implementation, +needing several workarounds +for anything but simple things +like one-way streaming or 1-to-1 meetings. +Only tools paying special attention to WebKit or Safari or iOS +are likely to provide a decent experience in WebKit-based environments. +""" + rdfs:seeAlso ; + . + +# ### Privacy + +:priv + a skos:Concept; + skos:prefLabel "Privacy". + rdfs:seeAlso , + . + +:priv-mdns + a doap:Specification; + skos:prefLabel "Using Multicast DNS to protect privacy when exposing ICE candidates"; + rdfs:seeAlso . + +:priv-mls + a doap:Specification; + skos:prefLabel "Messaging Layer Security (MLS)"; + rdfs:seeAlso , + , + . + sioc:previous_version , + ; + foaf:page , + , + . + +:priv-perc + a doap:Specification; + skos:prefLabel "Privacy Enhanced RTP Conferencing (PERC)"; + rdfs:seeAlso + , + , + + , + . + +# ### Redundancy + +:resilience + a skos:Concept; + skos:prefLabel "Resilience"; + rdfs:seeAlso . + +:red + a doap:Specification; + skos:prefLabel "Redundant Audio Data (RED)"; + rdfs:seeAlso ; + sioc:previous_version ; + foaf:homepage ; + owl:sameAs . + +:rtp-rtx + a doap:Specification; + skos:prefLabel "RTP Retransmission Payload Format (RTX)"; + dc:description """ +RTP packet retransmission allows a client +to request retransmission of an RTP packet +if they determine that it has been lost. +It is up to their own logic to determine +when they request this to be done. +The request is done using a NACK RTCP feedback message. +If the packet is in the history of the sender it is then resent. +In the case of Chrome it is sent using RFC4588 (if negotiated) +which encapsulates the retransmitted packet +and sends it on a separate stream. +In the case of Firefox (before release 76) the packet is resent as-is. +"""; + dc:comment """ +Description based on Asterisk note. +Seems interoperability issues involving lack of RTX support may hide additional flaws at the other side: +Allegedly packets sent as-is (not tagged as per RFC4588) got ignored by Microsoft Edge (in 2018) +perhaps due to Microsoft Edge using non-compliant SDP \"plan B\" format; +from comment in Mozilla bug #1164187: +\"Edge doesn't retransmit at all if the receiver does not support required ssrc multiplexed rtx\". +"""; + rdfs:seeAlso , + , + , + , + . + sioc:previous_version ; + foaf:homepage ; + owl:sameAs . + +# ### Signalling + +:matrix + a doap:Specification; + skos:prefLabel "Matrix"; +# rdfs:seeAlso . + +:sip + a skos:Concept; + skos:prefLabel "SIP"; + rdfs:seeAlso . + +:xmpp + a skos:Concept; + skos:prefLabel "XMPP"; + rdfs:seeAlso . + +# ### Session Description + +:sdp-jsep + a doap:Specification; + skos:prefLabel "JSEP"; + dc:abstract "Javascript Session Establishment Protocol (JSEP)"; + dc:description "Official WebRTC SDP syntax for signalling media sources, also known as \"unified plan\"."; + dc:comment """ +Unified plan was initially proposed in draft-roach-mmusic-unified-plan-00, +which was absorbed into draft-roach-mmusic-unified-plan and became IETF RFC 4588. + +Used in Gecko-based web browsers. +Used in recent WebKit-based web browsers. +Used in recent Blink-based web browsers (since release 72). +"""; + rdfs:seeAlso , + ; + sioc:previous_version ; + foaf:page ; + foaf:homepage ; + owl:sameAs . + +:sdp-planb + a doap:Specification; + skos:prefLabel "SDP \"plan B\""; + dc:abstract "unofficial legacy \"plan b\" WebRTC SDP syntax for signalling multiple media sources"; + dc:comment """ +Historically used in WebKit-based web browsers. +Supported in Blink-based web browsers (but unused by default since release 72). +"""; + rdfs:seeAlso , + ; + foaf:homepage . + +# ## licenses + +:agpl_3 + a spdx:License; + spdx:licenseId "AGPL-3.0"; + owl:sameAs . + +:apache_2 + a spdx:License; + spdx:licenseId "Apache-2.0"; + owl:sameAs . + +:expat + a spdx:License; + spdx:licenseId "MIT"; + owl:sameAs . + +:gpl_2 + a spdx:License; + spdx:licenseId "GPL-2.0"; + owl:sameAs . + +:gpl_3 + a spdx:License; + spdx:licenseId "GPL-3.0"; + owl:sameAs . + +:isc + a spdx:License; + spdx:licenseId "ISC"; + owl:sameAs . + +:lgpl_3 + a spdx:License; + spdx:licenseId "LGPL-3.0"; + owl:sameAs . -- cgit v1.2.3