From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=irif.fr (client-ip=2001:660:3301:8000::1:2; helo=korolev.univ-paris7.fr; envelope-from=jch@irif.fr; receiver=) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=irif.fr header.i=@irif.fr header.a=rsa-sha256 header.s=dkim-irif header.b=GmpwhJ2G Received: from korolev.univ-paris7.fr (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]) by mail.toke.dk (Postfix) with ESMTPS id A2D65989C14 for ; Wed, 13 Jul 2022 19:16:44 +0200 (CEST) Received: from potemkin.univ-paris7.fr (potemkin.univ-paris7.fr [IPv6:2001:660:3301:8000::1:1]) by korolev.univ-paris7.fr (8.14.4/8.14.4/relay1/82085) with ESMTP id 26DHGiNp031136 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Wed, 13 Jul 2022 19:16:44 +0200 Received: from mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [81.194.30.253]) by potemkin.univ-paris7.fr (8.14.4/8.14.4/relay2/82085) with ESMTP id 26DHGib8032648 for ; Wed, 13 Jul 2022 19:16:44 +0200 Received: from mailhub.math.univ-paris-diderot.fr (localhost [127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTP id 31503F43BC for ; Wed, 13 Jul 2022 19:16:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=irif.fr; h= content-transfer-encoding:content-type:content-type:mime-version :user-agent:subject:subject:from:from:message-id:date:date :received:received; s=dkim-irif; t=1657732602; x=1658596603; bh= bNw0iwGJAAkMKqxxGitPjSrx3uzpG24ZNP6Fgto+nDc=; b=GmpwhJ2G3H4pAtzZ dGA4zzoEPY/iIbfhD5jkKG80vDVfb2GH7iUOWYZvIegDy1/zsWX0tnmAgxuvmA6j iNx9i1XxQs17bXm9fQa2GDmWr7paIjzyc/rlsiBJnwNe6HoOLnPYqJzQ6BHZqHaq gOZIBVrIvT1k3ZHj3KXdeAmIYEL5BWtYLnRAGut8mfvBkO5M5v6700gnsGoiSBJ/ r7qLBCNSF6gHytlX3T+8i5/HRKMdWeD5khd357tGrdYJrKbwbfXkPBp9GsqA0xQi SBGb1Ctzna07Aze8zNqNB26yd8vn6Y1pB2iW3W9qxccdJgtbqzoV7toWDOtrNBEF j/uvWg== X-Virus-Scanned: amavisd-new at math.univ-paris-diderot.fr Received: from mailhub.math.univ-paris-diderot.fr ([127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id tH5AFTbuJ6LY for ; Wed, 13 Jul 2022 19:16:42 +0200 (CEST) Received: from pirx.irif.fr (unknown [78.194.40.74]) (Authenticated sender: jch) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTPSA id 4D5B7F43BA for ; Wed, 13 Jul 2022 19:16:42 +0200 (CEST) Date: Wed, 13 Jul 2022 19:16:42 +0200 Message-ID: <87edyp3pc5.wl-jch@irif.fr> From: Juliusz Chroboczek To: galene@lists.galene.org User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.1 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]); Wed, 13 Jul 2022 19:16:44 +0200 (CEST) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (potemkin.univ-paris7.fr [194.254.61.141]); Wed, 13 Jul 2022 19:16:44 +0200 (CEST) X-Miltered: at korolev with ID 62CEFDFC.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-Miltered: at potemkin with ID 62CEFDFC.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Enveloppe: 62CEFDFC.000 from potemkin.univ-paris7.fr/potemkin.univ-paris7.fr/null/potemkin.univ-paris7.fr/ X-j-chkmail-Enveloppe: 62CEFDFC.000 from mailhub.math.univ-paris-diderot.fr/mailhub.math.univ-paris-diderot.fr/null/mailhub.math.univ-paris-diderot.fr/ X-j-chkmail-Score: MSGID : 62CEFDFC.000 on korolev.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Score: MSGID : 62CEFDFC.000 on potemkin.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Status: Ham X-j-chkmail-Status: Ham Message-ID-Hash: QG6MUFEBGN54ZJMYMCONNXLZXDHDYQIU X-Message-ID-Hash: QG6MUFEBGN54ZJMYMCONNXLZXDHDYQIU X-MailFrom: jch@irif.fr X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.5 Precedence: list Subject: [Galene] Versioning the Galene protocol List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Hi, Following R=E9mi's issues, and since there are a number of third-party clients for Gal=E8ne slowly starty to emerge [1,2,3], I think the time has come to add some versioning and extensibility to the Galene protocol. Now Galene uses three different protocols: 1. A very simple REST interface, that is used to populate the list of public groups and to discover group parameters before connecting. 2. A WebSocket based protocol, used for chat and audio/video codec negotiation. 3. The whole WebRTC protocol stack, which is used for transmitting audio and video. The protocol that needs versioning is the WebSocket-based protocol, number (2) above. It is described here: https://galene.org/README.PROTOCOL.html#message-syntax I've given it some thought, and here are my plans. Please let me know if you think I'm missing something. 1. I'm going to ignore the built-in protocol negotiation of the WebSocket transport, since I don't feel that version negotiation should be done at this layer. 2. The protocol starts with an exchange of 'handshake' messages. I'm going to add a field 'version' to the handshake messages, and if the versions don't match, the connection fails. Since the client sends it handshake first, this means that the client will need to commit to a single version, while the server will be able to adapt its version depending on what was announced by the client. An alternative would be to allow the client to announce a list of versions that it supports -- is that useful? 3. If it is useful, we may add an "extensions" field to the handshake message, in order to allow a peer to announce that it supports extensions to the protocol, for example new groupactions. Other than the versioning, I have only one change to make to the protocol right now: I'm planning to require that the client request explicitly that it is interested in chat messages. (Currently, the client needs to actively request media streams, but it has no way to state that it is not interested in chat messages.) Comments welcome, none of this has been implemented yet, so it's easy to change. [1] https://github.com/garage44/pyrite [2] https://github.com/erdnaxe/galene-stream [3] https://github.com/igniterealtime/openfire-galene-plugin -- Juliusz