From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; dkim=pass header.d=irif.fr header.i=@irif.fr header.a=rsa-sha256 header.s=dkim-irif header.b=cL5uFt9d; arc=none (Message is not ARC signed); dmarc=none 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 30C0619D6B88 for ; Fri, 06 Nov 2026 12:31:38 +0100 (CET) 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 6A6BVaGl018166 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Fri, 6 Nov 2026 12:31:36 +0100 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 6A6BVaej026954 for ; Fri, 6 Nov 2026 12:31:36 +0100 Received: from mailhub.math.univ-paris-diderot.fr (unknown [127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTP id A5C9C90268 for ; Fri, 6 Nov 2026 12:31:36 +0100 (CET) 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=1793964695; x=1794828696; bh= dkzXypud3orqV2MNMuBz15tqOY06O+xnRjrEq3duLyc=; b=cL5uFt9dF60MISmA fPSr9jswJaLUTGmXIqb/N5adSnExmbnaAE4GNLiG14tOPkvY919XhdMJ00kvxkDp fC+5mD8iqJ+UR2YNqtcoxcjSk1rnHNid6HVs8MZGB77Puw1tkUaM8i9290q3XLLh LgpEbzR/9uJfLX+U5zfDyuRT3hMFzRlmH+vIthEzmSzPs/tPV7s5sB1GI0I5i+5p 838I5Sb6o891eUmjHXWBxDZh/D4XIGJj3hdkoSQR0kS07hTbPZhj9p5+fZ1UJZIp ZRLMVcGrI10UCwnM0Jn65ixcmUwtZtPgdT9oTCAcHeKisBmSVR/+8xQnpvMXv7HQ 77e0NA== 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 RN9MVVgPpFwk for ; Fri, 6 Nov 2026 12:31:35 +0100 (CET) Received: from trurl.irif.fr (unknown [82.64.191.149]) (Authenticated sender: jch) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTPSA id 426A3902DD for ; Fri, 6 Nov 2026 12:31:35 +0100 (CET) Date: Fri, 06 Nov 2026 12:31:35 +0100 Message-ID: <87zevmkxgo.wl-jch@irif.fr> From: Juliusz Chroboczek To: galene@lists.galene.org User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/30.2 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]); Fri, 06 Nov 2026 12:31:36 +0100 (CET) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (potemkin.univ-paris7.fr [194.254.61.141]); Fri, 06 Nov 2026 12:31:36 +0100 (CET) X-Miltered: at korolev with ID 6AEDBA98.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-Miltered: at potemkin with ID 6AEDBA98.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Enveloppe: 6AEDBA98.000 from potemkin.univ-paris7.fr/potemkin.univ-paris7.fr/null/potemkin.univ-paris7.fr/ X-j-chkmail-Enveloppe: 6AEDBA98.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 : 6AEDBA98.000 on korolev.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Score: MSGID : 6AEDBA98.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: Z6XV2JRDEF4QQSMEZ4OBMWT2HYLMHASQ X-Message-ID-Hash: Z6XV2JRDEF4QQSMEZ4OBMWT2HYLMHASQ X-MailFrom: jch@irif.fr X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Subject: [Galene] Potential improvements to subgroups (breakout rooms) 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, I've just had an extended e-mail discussion with a high-school teacher. She's been using subgroups extensively, and found the interface lacking. She's making some interesting points, which I'll write down here for posterity. Apparently, she starts her session with all students in a single Galene group, then splits them into subgroups to work on their own. 1. She finds it difficult to join a subgroup. I've fixed that by making the output of /subgroups clickable (already in master). 2. She wants to streamline the process of splitting the group. With clickable subgroups, it is possible to right-click the link, choose =AB Copy URL =BB, then send a PM. In order to make this easier, I've ma= ke the /subgroups output include empty subgroups (they used to be filtered out), and added an (undocumented) /touchsubgroup command to create an empty subgroup. (Recall that automatically created subgroups remain maxHistoryAge seconds (default 4h).) 3. She makes the following suggestions. 3.1 She suggests that there should be a way to forcibly move a user to a subgroup. That's a good idea, but it needs to be done carefully: Galene should ask for consent from the user before moving them. 3.2 If moving a subgroup is too forceful for Galene, she suggests that, instead, there could be a command that sends a private message with the URL of the group to join. I think that's an excellent idea. It would be easy enough to add a chat command, say "/move user subgroup", but doing that with a contextual menu is problematic. The client does not maintain the list of subgropus, it requests it from the server when you type /subgroups. The result is that you would need to fetch the list from the server between the click and displaying the menu, which would need strict timeouts in order to keep the interface responsive. There's another issue: Galene's protocol is fully asynchronous, and does not have a notion of replies and requests. With hindsight, this is a mistake, we should add a "request-id" field to pair replies with requests. Not difficult to implement, just requires explicitly categorising all protocol messages into requests, replies, and notifications. 4. When keeping track of multiple groups of students in multiple browser tabs, she finds it bothersome to have to mute/unmute the tabs. She suggests a mode where all tabs are muted, and only the active tab is unmuted. I think it's a good idea, I'll have to look carefully at the browser API's to see if that's implementable. -- Juliusz