diff options
author | Sacha Chua <sacha@sachachua.com> | 2022-11-19 12:00:36 -0500 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2022-11-19 12:00:36 -0500 |
commit | dd2ebe43e01f24003291e1726598aab9c6958444 (patch) | |
tree | 935e9bfe9ffcdd0cd172595fe016ba86c427220f /2022 | |
parent | 6112531c08cfc095dd0d4067794c8ce1334d8e80 (diff) | |
download | emacsconf-wiki-dd2ebe43e01f24003291e1726598aab9c6958444.tar.xz emacsconf-wiki-dd2ebe43e01f24003291e1726598aab9c6958444.zip |
Update the tasks (big change)
Diffstat (limited to '2022')
-rw-r--r-- | 2022/organizers-notebook/index.org | 1992 |
1 files changed, 1019 insertions, 973 deletions
diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org index 274c5f6b..2a9ec7ed 100644 --- a/2022/organizers-notebook/index.org +++ b/2022/organizers-notebook/index.org @@ -113,165 +113,20 @@ interests you! #+TOC: headlines 1 local -Roughly ordered by importance. -** TODO [#C] Record intro/outro for day-1 and day-2 :zaeph: -:PROPERTIES: -:CUSTOM_ID: rec-intro -:END: - -- Opening remarks - - Schedule overview - - How to participate - -- Closing remarks Sat - - Thanks - - Come back tomorrow -- Closing remarks Sun - - Thanks - - -** DONE Write speaker e-mail for people who have already submitted their talks -CLOSED: [2022-11-14 Mon 20:42] -:PROPERTIES: -:CUSTOM_ID: speaker-after-video -:END: - -To: speakers who have already submitted their talks (so that we don't distract people who are still working on their talks) - -#+begin_src emacs-lisp -(defun emacsconf-mail-speaker-after-video (group &optional template) - (interactive (list (emacsconf-mail-complete-email-group - (seq-filter (lambda (o) (plist-get o :intro-note)) - (emacsconf-active-talks (emacsconf-get-talk-info)))))) - (setq template (or template (emacsconf-mail-merge-get-template "speaker-after-video"))) - (let ((talks (cdr group))) - (emacsconf-mail-prepare - template - (car group) - (list :speakers-short (plist-get (cadr group) :speakers-short) - :plural (if (= (length (cdr group)) 1) "" "s") - :email (plist-get (cadr group) :email) - :in-between (mapconcat (lambda (talk) - (emacsconf-surround "<https://media.emacsconf.org/2022/in-between/" (plist-get talk :slug) ".png>" "")) - (cdr group) - ", ") - :intro - (mapconcat (lambda (talk) - (string-join (org-wrap (emacsconf-surround "- " (plist-get talk :intro-note) "\n" "") 70) "\n")) - (cdr group) - "") - :chapters - (mapconcat (lambda (talk) - (format "<https://media.emacsconf.org/2022/backstage/#%s>:\n%s" - (plist-get talk :slug) - (mapconcat - (lambda (chapter) - (concat (format-seconds "%.2h:%z%.2m:%.2s" - (floor (/ (elt chapter 1) 1000))) - " " - (elt chapter 3) "\n")) - (subed-parse-file - (expand-file-name (concat (plist-get talk :video-slug) "--main--chapters.vtt") emacsconf-cache-dir))))) - (cdr group) - "\n\n") - :caption-note - (if (seq-find (lambda (o) (not (string= (plist-get o :status) "TO_STREAM"))) (cdr group)) - " The captions haven't been fully edited yet, so please ignore any errors in the captions themselves." - "") - :urls - (mapconcat (lambda (o) (concat "<" emacsconf-base-url (plist-get o :url) ">")) - (cdr group) " , ") - :tech-check-note - (if (string-match "live" (or (mapconcat (lambda (o) (or (plist-get o :q-and-a) "")) (cdr group) " ") "")) - (format - "*Tech check* - -Since you're planning to do a live Q&A session, you may want to -connect to the test BBB room at <%s> to make sure you can share -your audio, your window or screen, and your webcam (optional). Sharing -system audio or multi-monitor setups can sometimes be tricky, so -please let us know if you need help figuring things out. You can -double-check by connecting with a separate device, or you can arrange -to meet with one of the tech-check volunteers -(<https://emacsconf.org/2022/prepare/#tech-check>).${wrap} - -" emacsconf-test-bbb-room) ""))) - (add-hook 'message-sent-hook - `(lambda () - (mapc (lambda (o) - (emacsconf-add-to-talk-logbook o "Sent speaker-after-video email")) - (list - ,@(mapcar (lambda (talk) (plist-get talk :slug)) talks)))) - nil t))) - -(defun emacsconf-mail-speakers-after-videos () - (interactive) - (let* ((info (seq-filter (lambda (o) (plist-get o :intro-note)) - (emacsconf-active-talks (emacsconf-get-talk-info)))) - (grouped (seq-group-by (lambda (o) (plist-get o :email)) info)) - (template (emacsconf-mail-merge-get-template "speaker-after-video"))) - (mapc (lambda (group) - (emacsconf-mail-speaker-after-video group template)) - grouped))) - - -#+end_src -*** Template -:PROPERTIES: -:EMAIL_ID: speaker-after-video -:FUNCTION: emacsconf-mail-speaker-after-video -:SUBJECT: EmacsConf: miscellaneous todos now that you've sent in your video${plural} -:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email}, sacha@sachachua.com -:CC: emacsconf-submit@gnu.org -:END: - -Hi, ${speakers-short}! - -Thank you for uploading your video early! Let's get a few more things -sorted out for a smooth EmacsConf 2022. - -${tech-check-note}*Intro* - -I've written a brief (and possibly inaccurate! =) ) intro that the -host can read out before your talk while the in-between slide -(${in-between}) is being displayed: - -${intro} - -Would you like to tweak it to better reflect your talk? - -*Chapter markers* - -I've added chapter markers to your video in the backstage area to help -with navigation. You can click on them in the backstage area if you -want to easily jump around, or review the list that I've included for -your convenience: - -${chapters} -If you prefer other headings or timestamps, please let me know!${caption-note} - -*Bio, community support links* - -People often want to learn more about speakers and show their -appreciation. If you'd like to include an author bio and any -social/support links to your talk page${plural} (${urls}), please -e-mail us the text that you'd like to include. You can also follow the -instructions at <https://emacsconf.org/edit/> to edit your talk -page${plural} directly yourself, if you want to.${wrap} - -Thanks again for all your contributions! - -Sacha - ** TODO [#A] Prepare intros for the hosts to read :sachac: :PROPERTIES: :CUSTOM_ID: host-intros :END: https://pad.emacsconf.org/intros also in :INTRO_NOTE: in conf.org so that we can plop it into the hyperlists +Doublecheck: + +#+begin_src emacs-lisp +#+end_src *** DONE Set up Etherpad with the talks and see if we can involve the speakers and captioning volunteers :sachac: CLOSED: [2022-11-19 Sat 11:06] ** TODO [#A] Write check-in email :sachac: -SCHEDULED: <2022-11-19 Sat> +DEADLINE: <2022-11-20 Sun> SCHEDULED: <2022-11-19 Sat> :PROPERTIES: :CUSTOM_ID: check-in-email :END: @@ -279,8 +134,11 @@ SCHEDULED: <2022-11-19 Sat> :PROPERTIES: :CUSTOM_ID: live-speakers :END: - - +** TODO [#A] Review the submissions for encoding issues :zaeph: +:PROPERTIES: +:CUSTOM_ID: review-submissions +:END: +so that we don't get surprised by missing or corrupted videos ** TODO [#B] Plan in-case-of-emergency schedule for dropping back to one track after Saturday morning :sachac: :PROPERTIES: :CUSTOM_ID: one-track @@ -394,138 +252,6 @@ SCHEDULED: <2022-11-18 Fri> :PROPERTIES: :CREATED: [2022-11-19 Sat 08:01] :END: -** Satellite events -:PROPERTIES: -:CUSTOM_ID: satellite -:END: -*** Zurich -**** TODO Link to them on the wiki :bandali: -https://200ok.ch/posts/2022-11-01_emacsconf__with_a_new_physical_venue.html -**** TODO announce on the emacsconf-discuss mailing list :bandali: -** DONE Prepare for prerecs :zaeph: -CLOSED: [2022-10-29 Sat 09:58] DEADLINE: <2022-11-04 Fri> -:PROPERTIES: -:CUSTOM_ID: prepare-prerec-process -:END: -*** DONE Optimize ffmpeg incantation -CLOSED: [2022-10-29 Sat 09:58] -Remember to update [[file:../prepare.md::Compression]] with the new incantation. - -**** Incantation from last year -#+begin_src sh :eval no -Q=32 -ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -aq-mode 2 -an -tile-columns 0 -tile-rows 0 -frame-parallel 0 -cpu-used 8 -auto-alt-ref 1 -lag-in-frames 25 -g 240 -pass 1 -f webm -threads 8 /dev/null && -ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -c:a copy -tile-columns 2 -tile-rows 2 -frame-parallel 0 -cpu-used -5 -auto-alt-ref 1 -lag-in-frames 25 -pass 2 -g 240 -threads 8 "$2" -#+end_src - -#+RESULTS: -:results: -:end: - -**** New candidate -Changelog: -- Disable adaptive quantization by setting aq-mode to 0 (TODO: compare samples) -- Add ~-row-mt 1~ needed to support ~tile-rows~ (2×2 is enough for 720p) -- Also use tiles for first pass -- Remove ~-frame-parallel 0~ because it’s disabled by default (see [[https://github.com/Kagami/webm.py/wiki/Notes-on-encoding-settings][Notes on encoding settings · Kagami/webm.py Wiki]]) -- Put number of CPU in variable and use it for ~cpu-used~ and ~threads~ -- Stick to default for ~auto-alt-ref~ -- Stick to default for ~lag-in-frames~ -#+begin_src sh :eval no -Q=32 -CPU=8 -ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -an -row-mt 1 -tile-columns 2 -tile-rows 2 -cpu-used $CPU -g 240 -pass 1 -f webm -threads $CPU /dev/null && - ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -c:a copy -row-mt 1 -tile-columns 2 -tile-rows 2 -cpu-used $CPU -pass 2 -g 240 -threads $CPU "$2" -#+end_src - -Other considerations: -- We might want to tweak the time before keyframes (~-g~). -*** DONE Figure out workflow for handling submitted prerecs -CLOSED: [2022-10-29 Sat 09:54] -We need time after the prerecs get submitted to: -- convert the videos and check that they've been reencoded properly by watching the re-encoded ones all the way to the end -- caption videos -- capture any extra info -- follow up with missing prerecs - -Make changes in [[#prerec-process]] - -** INPROGRESS [#C] Work on the OBS scenes :zaeph:corwin:sachac: -DEADLINE: <2022-11-11 Fri> -:PROPERTIES: -:CUSTOM_ID: obs-scenes -:END: -- [ ] corwin is out from Nov 11-20, and we should start working on them before then. -** DONE Make something to display between talks :akshay196: -CLOSED: [2022-11-07 Mon 14:46] -:PROPERTIES: -:CREATED: [2022-10-03 Mon 07:50] -:CUSTOM_ID: intro -:END: - -Goals: -- Reassure people that they're in the right stream for the talk that they're looking for -- Direct them to the pad and Q&A for the talk - -What to show in between talks: -- Previous talk: title, speaker, pronouns, talk page, Q&A information (if still live) -- Next talk: title, speaker, pronouns, talk page, Q&A information, countdown - -https://media.emacsconf.org/2022/backstage/gen-in-between.pdf -https://media.emacsconf.org/2022/backstage/dev-in-between.pdf - -- Good: Static image, maybe created with LaTeX -- Better: Video with unobtrusive sound so people can doublecheck that their audio works -- Best: Emacs thing so that we can have a dynamic timer and last-minute announcements, and so that it's Emacs =) -- Even better than that: A compact view that can be overlaid on the Q&A session using OBS - -See break commercials -https://www.collabmagazine.com/organizing-a-multi-track-virtual-conference-with-microsoft-teams-live-events-a-technical-playbook-and-lessons-learned/ - -OBS scenes (maybe?): - -- splash-screen when we’re on break -- scene when broadcasting a talk (where we might want a logo and a bar or surrounding to broadcast messages like time left in - recording); and -- Q&A scene with host-webcam, optional speaker-webcam, and pad with questions. -- Q&A scene focusing on shared screen from speaker -- Q&A scene with IRC and pad - -Nothing is urgent, blocking it, or being blocked by it, so you can -play around with ideas. - -We're experimenting with two tracks this year, so we expect that some -people will join midway through a talk or Q&A session and -would like to reorient themselves. Some Q&A sessions may end -early, so we would like to reassure people that they're in -the right spot for the next talk. Most Q&As will be done -live, but some Q&As will be done over IRC, so we need to -point people to the right place. - -and if there's room for a little extra info like public e-mail -addresses or pronouns, that can help people when they discuss -things. That info will be in the pad and IRC, though, so it's -also okay to omit it - - - -We can programmatically replace strings in -SVG from Emacs, so we can easily use that as an overlay. - - -<zaeph> …Or, if you just want to focus on the look of -things, we can think of the content on our own. - -<sachac> oh yeah, totally, you can just focus on the design and use -placeholder text - -Overlay considerations: -- talk videos will likely have subtitles; no subtitles for Q&A -- zaeph doesn't like vertical text -*** DONE Generate talk banners :sachac: -CLOSED: [2022-11-07 Mon 14:46] -https://gitlab.com/akshay196/emacsconf-artwork/-/blob/main/2022/talk-banner/sample.svg - ** TODO [#B] Create protocol for live Q&A :zaeph: :PROPERTIES: :CUSTOM_ID: live-protocol @@ -535,30 +261,6 @@ Objective: Comments: - It would be nice to have a protocol with speakers to tell us that they’re uncomfortable with a question, just so that we can find a smooth way to skip it. -** DONE Find volunteers for tech-checks :zaeph: -CLOSED: [2022-11-19 Sat 11:08] -:PROPERTIES: -:CUSTOM_ID: tech-checks -:END: -*** DONE Add entry in 2022/volunteer.md -*** DONE Write protocol for adding tech-checker volunteer -CLOSED: [2022-11-19 Sat 11:08] -- Invite volunteer to BBB (ask core organizers) -- Update [[file:prepare.md::Tech-check]] with new tech-checker info -- Coach tech-checker on the protocol -*** DONE Write the tech-checking protocol (formerly referred to as “tech-checklist”) -CLOSED: [2022-11-19 Sat 11:08] -From previous years: -#+begin_quote -- Can you speak and be heard? Is there echo? -- Can you hear the organizer? -- Can you share your screen? Is the screen readable? -- If you plan to show your keystrokes, is that display visible? -- If you want to share your webcam (optional), can you enable it? Is it visible? Will there likely be distractions in the background? -- Can you view the collaborative pad? Will you be comfortable reviewing questions on your own (perhaps by keeping it open beside your shared window), or will you need a volunteer to relay questions to you? -- Can you share contact information (ex: phone number) so that we can get in touch with you in case of technical issues or scheduling changes? -- Do you need help finding your way around IRC so that you can check into `#emacsconf-org`? What is your IRC nickname? -#+end_quote ** TODO Update viewing instructions and watch pages :sachac: :PROPERTIES: :CUSTOM_ID: write-viewing @@ -641,27 +343,60 @@ emacsconf-erc.el in the emacsconf-el repo - a small announcement might go into the hallway and emacsconf-org - announcement can include talk page, pad, IRC nick, pronouns -** DONE Move conf.org management to orga@res.emacsconf.org :sachac: -CLOSED: [2022-11-06 Sun 15:27] -:PROPERTIES: -:CUSTOM_ID: conforg -:END: -so that more people can work with it during the conference -See the publish role in the ansible playbook - -** TODO Set up stream events on Toobnix and YouTube :sachac:stream: +** STARTED [#A] Set up stream events on Toobnix and YouTube :sachac:stream: SCHEDULED: <2022-11-20 Sun> :PROPERTIES: :CUSTOM_ID: other-streams +:Effort: 0:30 +:QUANTIFIED: Emacs +:END: +:LOGBOOK: +CLOCK: [2022-11-19 Sat 11:30] :END: so that people on other platforms can come across EmacsConf +*** TODO [#A] Write the restreaming shell scripts +*** DONE Create the events and save the keys :sachac: +CLOSED: [2022-11-19 Sat 11:58] +[[file:~/proj/emacsconf/private/conf.org::*Other platforms][Other platforms]] + +$1 is of the form rtmp://.../stream_key #+begin_src sh :eval no :exports code MOUNT=$1 while true; do ffmpeg -loglevel 24 -i http://localhost:8000/main.webm -cluster_size_limit 2M -cluster_time_limit 5100 -b:v 1M -crf 30 -g 125 -deadline good -threads 4 -vcodec libx264 -acodec libmp3lame -f flv $MOUNT; done #+end_src +Creating the events +- YouTube: Create - Go Live - Schedule Stream - Streaming Software +- Toobnix: Publish - Go live + - max live is 5 hours + +***** EmacsConf 2022 - General track + +This is for the general track of EmacsConf, the conference about the joy of Emacs and Emacs Lisp. + +Watch using free/open source software: https://live.emacsconf.org/2022/watch/gen/ +Conference info: https://emacsconf.org/2022/ +Schedule: https://emacsconf.org/2022/talks/ +Chat on #emacsconf-dev via https://chat.emacsconf.org or irc.libera.chat +Etherpad: https://pad.emacsconf.org/2022 + +Videos are shared under the terms of the Creative Commons Attribution-ShareAlike 4.0 +International (CC BY-SA 4.0) license. Please observe the guidelines for conduct: https://emacsconf.org/conduct/ + +***** EmacsConf 2022 - Development track + +This is for the development track of EmacsConf, the conference about the joy of Emacs and Emacs Lisp. + +Watch using free/open source software: https://live.emacsconf.org/2022/watch/dev/ +Conference info: https://emacsconf.org/2022/ +Schedule: https://emacsconf.org/2022/talks/ +Chat on #emacsconf-dev via https://chat.emacsconf.org or irc.libera.chat +Etherpad: https://pad.emacsconf.org/2022 + +Videos are shared under the terms of the Creative Commons Attribution-ShareAlike 4.0 +International (CC BY-SA 4.0) license. Please observe the guidelines for conduct: https://emacsconf.org/conduct/ ** TODO Set up talks on Toobnix and YouTube :sachac:yt:toobnix: SCHEDULED: <2022-11-20 Sun> :PROPERTIES: @@ -669,13 +404,6 @@ SCHEDULED: <2022-11-20 Sun> :END: so that people can find the videos on other video platforms waiting for prerecs -** DONE Ask speakers for bios or support nudges to include on their talk pages :wiki: -CLOSED: [2022-11-19 Sat 11:09] -:PROPERTIES: -:CUSTOM_ID: speaker-bio -:END: -maybe after we get the prerecs -ex: liberapay, patreon, anyone looking for a job, etc. ** TODO Do another run SCHEDULED: <2022-11-26 Sat> :PROPERTIES: @@ -760,186 +488,157 @@ CLOSED: [2022-11-19 Sat 11:09] :LOGBOOK: CLOCK: [2022-11-19 Sat 09:47]--[2022-11-19 Sat 11:09] => 1:22 :END: -** DONE [#C] Smoothen captioning workflow :sachac: -CLOSED: [2022-11-19 Sat 11:10] +** TODO [#B] Turn off file upload service on media.emacsconf.org :sachac:infra: +SCHEDULED: <2022-11-27 Sun> :PROPERTIES: -:CUSTOM_ID: caption-workflow +:CUSTOM_ID: upload-off +:END: +so that nginx can have more memory and we don't risk slowdowns +** STARTED Review notebook for tasks, priorities, and scheduling +:PROPERTIES: +:CREATED: [2022-11-19 Sat 08:01] +:CUSTOM_ID: review +:Effort: 0:15 +:END: +:LOGBOOK: +CLOCK: [2022-11-19 Sat 11:17]--[2022-11-19 Sat 11:29] => 0:12 +:END: +** INPROGRESS Use Mumble for backchannel coordination and also on-stage +DEADLINE: <2022-11-18 Fri> +:PROPERTIES: +:CUSTOM_ID: mumble :END: -It looks like OpenAPI needs a little less editing in terms of -capitalization and punctuation, but it produces longer captions -(likely a 30-second sliding window). I'll try to upload both YT and -OpenAPI captions so that people can decide what they like. -*** DONE Figure out why it's choking on SRV2 -CLOSED: [2022-10-30 Sun 00:13] -Can I use aeneas for alignment instead? -Reflow the .txt file and reupload to res if needed -call ../run-aeneas.sh from the directory with the opus or ogg and the txt file +[2022-11-19 Sat] sachac: Confirmed that you can join the emacsconf-dev or emacsconf-gen channel if you have access, and you can speak on air in just that channel -sachac@res-emacsconf:~/current/meetups$ python3 -m aeneas.tools.execute_task emacsconf-2022-meetups--attending-and-organizing-emacs-meetups--bhavin-gandhi--main.opus reflowed.srt "task_language=eng|os_task_file_format=json|is_text_type=subtitles" output.json +*** DONE Update the Mumble setup :bandali: +CLOSED: [2022-11-19 Sat 11:15] +- [X] Add emacsconf-gen and emacsconf-dev channels +- [X] Give the emacsconf-gen and emacsconf-dev users access to them +- [X] Give the other organizers access to emacsconf-gen, emacsconf-dev, and org-private +- [X] Get emacsconf-gen and -dev to join the right channels +*** DONE E-mail volunteers and help them get on Mumble :bandali: +CLOSED: [2022-11-19 Sat 09:03] -I might try out lhotse and torchaudio someday, but it's low priority. aeneas seems to do a reasonable job of -*** DONE [#C] Move publishing the backstage index to res so that we can trigger it after the files are uploaded -CLOSED: [2022-11-19 Sat 11:09] -:PROPERTIES: -:CREATED: [2022-10-21 Fri 16:45] -:END: +**** Template -*** DONE Compare large, medium, and small models -CLOSED: [2022-10-23 Sun 08:32] -12 threads +We plan to use Mumble as a virtual walkie-talkie during the conference +so that we can quickly talk to each other as needed. It can also be a +way for us to add our audio to the streams. Please set up your system +as follows: -Original file: 21:16 21 minutes -| | Hours | Mult | Notes | -| [[https://media.emacsconf.org/2022/backstage/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--large.vtt][Large]] | 2:49 | 8 | | -| [[https://media.emacsconf.org/2022/backstage/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--medium.vtt][Medium]] | 2:03 | 5.9 | | -| [[https://media.emacsconf.org/2022/backstage/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--small.vtt][Small]] | 0:40 | 2 | More run-on sentences | +1. Install a Mumble client on the device you want to use to connect to + the voice channel. It can be your computer or phone. You can choose + the username that you would like to log in with. +2. Create and backup your certificate. (This is part of the wizard for + the desktop client, and it might be automatic on a phone client.) +3. Connect to mumble.emacsconf.org with your desired username. +4. Register your account on the server using the ~Self > Register~ + command. This reserves your username using your certificate and + allows me to add you to ACLs. +5. Let me know (sachac on #emacsconf-org in IRC or + sacha@sachachua.com) when you've registered so that I can add you + to the access control lists for the private channels. If I'm around + on mumble (sachac), you can say hi to me there and confirm that + it's working. -Large and medium might do better on a system with a GPU. I'll default to the small model for now. +You can enter a channel by double-clicking on it. (On Mumla for +Android, entering a channel is instead done by clicking on the arrow +to the right of the channel.) Then your audio will go to that channel, +and you can hear audio from that channel. We can use the +~emacsconf-gen~ and ~emacsconf-dev~ channels to speak on air, and we +can use the ~backstage~ channel for coordination. -*** DONE Commit subed-tsv so that people can try a cleaner output -CLOSED: [2022-10-23 Sun 09:59] +Looking forward to hearing from you! + +Sacha + +*** DONE Generate certificates, add them to conf.org, and register the users :sachac: +CLOSED: [2022-11-08 Tue 11:33] +*** WAITING Set up Mumble and bring the volunteers on board +SCHEDULED: <2022-11-26 Sat> :PROPERTIES: -:Effort: 1:00 -:QUANTIFIED: Emacs -:END: -:LOGBOOK: -CLOCK: [2022-10-23 Sun 08:32]--[2022-10-23 Sun 09:59] => 1:27 +:CREATED: [2022-11-19 Sat 07:59] :END: -*** DONE Investigate more granular timestamps for the output from OpenAPI Whisper -CLOSED: [2022-10-25 Tue 11:14] -https://git.emacsconf.org/emacsconf-ansible/tree/roles/caption/templates +| | Emailed | Onboarded | +|------------+---------+------------------------------------------------------------| +| FlowyCoder | X | [2022-11-19 Sat] access granted, briefed | +| jman | X | | +| vetrivln | X | [2022-11-19 Sat] access granted, needs to figure out audio | -*** DONE Upload srv2 from YouTube for word-level -CLOSED: [2022-10-22 Sat 23:16] +** Satellite events :PROPERTIES: -:CREATED: [2022-10-22 Sat 14:38] +:CUSTOM_ID: satellite :END: -*** CANCELLED [#C] Compare with Google Cloud Speech API -CLOSED: [2022-10-29 Sat 09:58] -~/code/speech - -*** DONE E-mail for bringing new captioning volunteers onboard -CLOSED: [2022-10-29 Sat 09:58] -#+begin_src emacs-lisp -(defun emacsconf-mail-backstage-intro (volunteer &optional template) - (interactive (list (emacsconf-complete-volunteer))) - (emacsconf-mail-prepare - (or template (emacsconf-mail-merge-get-template "backstage-intro")) - (assoc-default "EMAIL" volunteer 'string=) - (list - :backstage "https://media.emacsconf.org/2022/backstage/" - :backstage-user "emacsconf" - :backstage-password emacsconf-backstage-password - :conf-name emacsconf-name - :year emacsconf-year - :name (assoc-default "NAME_SHORT" volunteer 'string=) - :email (assoc-default "EMAIL" volunteer 'string=)))) -#+end_src -**** Template +*** Zurich +**** TODO Link to them on the wiki :bandali: +https://200ok.ch/posts/2022-11-01_emacsconf__with_a_new_physical_venue.html +**** TODO announce on the emacsconf-discuss mailing list :bandali: +** Volunteer update :PROPERTIES: -:TO: ${email} -:FUNCTION: emacsconf-mail-backstage-intro -:EMAIL_ID: backstage-intro -:SUBJECT: ${conf-name} ${year}: Thanks for volunteering! +:CUSTOM_ID: volunteer-2022-11-14 :END: -Hi ${name}! +- talk banners, akshay + +** TODO Make a linear hyperlist for managing EmacsConf :sachac: +:PROPERTIES: +:CUSTOM_ID: hyperlist +:END: -Thank you for volunteering for ${conf-name} ${year}! +Goal: +- Volunteers should be able to coordinate everything by stepping through a linear list of things to do +- The hyperlist will primarily live on orga@res.emacsconf.org and be accessed through emacsclient. (Maybe sat.org and sun.org) +- Volunteers should be able to take breaks as needed -We've set up ${backstage} as the backstage area where you can view the -videos and resources uploaded so far. You can access it with the -username "${backstage-user}" and the password "${backstage-password}". -Please keep the backstage password and other speakers' talk resources -secret. +- 9:05 Journalism + - [ ] Check ${name} into _BBB room_ + - [X] [[elisp:(emacsconf-update-talk-status "journalism" "." "PLAYING")][Start talk]] + - [X] [[elisp:(emacsconf-update-talk-status "journalism" "." "CLOSED_Q")][Start closed Q&A]] + - [ ] [[elisp:(emacsconf-update-talk-status "journalism" "." "OPEN_Q")][Open Q&A]] + - [ ] [[elisp:(emacsconf-update-talk-status "journalism" "." "UNSTREAMED_Q")][Mark Q&A as unstreamed]] + - [ ] [[elisp:(emacsconf-update-talk-status "journalism" "." "TO_ARCHIVE")][Finish talk]] +- 9:40 Handwritten + - [ ] [[elisp:(emacsconf-update-talk-status "handwritten" "." "PLAYING")][Start talk]] + - [ ] [[elisp:(emacsconf-update-talk-status "handwritten" "." "CLOSED_Q")][Start closed Q&A]] + - [ ] [[elisp:(emacsconf-update-talk-status "handwritten" "." "OPEN_Q")][Open Q&A]] + - [ ] [[elisp:(emacsconf-update-talk-status "handwritten" "." "UNSTREAMED_Q")][Mark Q&A as unstreamed]] + - [ ] [[elisp:(emacsconf-update-talk-status "handwritten" "." "TO_ARCHIVE")][Finish talk]] -For some ideas on ways to help, you can check out -https://emacsconf.org/2022/volunteer/ . You can also suggest other -things you might be interested in. +See sat.org and sun.org in the conf private repo -You can ask questions or chat with other volunteers by e-mailing the -mailing list at emacsconf-org@gnu.org or dropping by #emacsconf on the -libera.chat IRC network. You can also e-mail me or -emacsconf-org-private@gnu.org if you have private questions. +Try them in an Etherpad -Thank you again for your help! =) +https://media.emacsconf.org/2022/backstage/index-gen.html +https://media.emacsconf.org/2022/backstage/index-dev.html +https://media.emacsconf.org/2022/backstage/hyperlists/ -Sacha Chua +[[#coordination][How do we want to coordinate during the conference itself?]] +*** DONE Try writing it to an Etherpad +CLOSED: [2022-11-14 Mon 14:14] SCHEDULED: <2022-11-19 Sat> -*** DONE E-mail for bringing new captioning volunteers onboard -CLOSED: [2022-10-29 Sat 09:58] -#+begin_src emacs-lisp -(defun emacsconf-mail-captioning-intro (volunteer &optional template) - (interactive (list (emacsconf-complete-volunteer) - (emacsconf-mail-merge-get-template "captioning-intro"))) - (emacsconf-mail-prepare - (or template (emacsconf-mail-merge-get-template "captioning-intro")) - (assoc-default "EMAIL" volunteer 'string=) - (list - :backstage "https://media.emacsconf.org/2022/backstage/" - :backstage-user "emacsconf" - :backstage-password emacsconf-backstage-password - :conf-name emacsconf-name - :year emacsconf-year - :name (assoc-default "NAME_SHORT" volunteer 'string=) - :email (assoc-default "EMAIL" volunteer 'string=)))) -#+end_src -**** Template +*** TODO [#A] Revisit the hyperlists to make sure they make sense :PROPERTIES: -:TO: ${email} -:FUNCTION: emacsconf-mail-captioning-intro -:EMAIL_ID: captioning-intro -:SUBJECT: ${conf-name} ${year}: Thanks for volunteering to help with captions! +:CREATED: [2022-11-19 Sat 07:49] :END: - -Hi ${name}! - -Thank you for volunteering to help with the captions for ${conf-name} -${year}! Last year, we were able to get almost all the talks captioned -in time for streaming. Participants found them very useful for -understanding different technical terms, names, accents, and so on. -We'd love to be able to pull that off again this year, and it would be -great to have you on board. - -We've set up ${backstage} as the backstage area where you can view the -videos and resources uploaded so far. You can access it with the -username "${backstage-user}" and the password "${backstage-password}". -Please keep the backstage password and resources secret. If you see a -talk that you'd like to caption, you can e-mail me at -sacha@sachachua.com and I can reserve it for you. Then you can correct -any misrecognized words, fix capitalizations, remove filler words as -needed, and so on. - -You'll probably want to work with either the VTT or the TXT versions -(VTT is WebVTT format and has timestamps), but you can check the other -talk resources in case the speaker has posted scripts or other useful -things. Both VTT and TXT are plain text, so feel free to use your -favourite text or subtitle editor. I've posted a brief demo of how I -edit captions at -https://media.emacsconf.org/2022/backstage/editing-captions.html , and -you can find more captioning tips at https://emacsconf.org/captioning/ -. You can convert it to whatever format you like. If you prefer to -work with plain text, we can figure out the timestamps afterwards. - -Let me know if you want to reserve a talk for captioning or if you have -any questions or suggestions. We're also in the #emacsconf-org channel -on the libera.chat IRC network, which you can connect to with your -favourite IRC client or through the web-based interface at -https://chat.emacsconf.org/ . - -Sacha Chua -*** DONE [#C] Support cue IDs in subed-vtt.el -CLOSED: [2022-11-11 Fri 08:58] -*** CANCELLED [#C] jiwer · PyPI - measure error rate -CLOSED: [2022-11-19 Sat 11:09] +*** TODO [#B] Add intro notes and specific talk notes to the hyperlist +*** TODO [#A] Make a hyperlist for checking people in for easier copying and pasting +** TODO [#C] Record intro/outro for day-1 and day-2 :zaeph: :PROPERTIES: -:CREATED: [2022-10-22 Sat 20:59] +:CUSTOM_ID: rec-intro :END: -https://pypi.org/project/jiwer/ - +- Opening remarks + - Schedule overview + - How to participate + +- Closing remarks Sat + - Thanks + - Come back tomorrow +- Closing remarks Sun + - Thanks + - ** TODO [#C] Add category tags and possibly links between talks across 2022 and all previous years :quiliro:wiki: :PROPERTIES: :CUSTOM_ID: link-pages @@ -955,12 +654,6 @@ https://pypi.org/project/jiwer/ - You can create new categories by making up new CategoryNames. - You can also link to a talk with a link like this: =\[[/2022/talks/maint|Maintaining the Maintainers: Attribution as an Economic Model for Open Source]]= You can make a new heading called =# Related talks= -** TODO [#B] Turn off file upload service on media.emacsconf.org :sachac:infra: -SCHEDULED: <2022-11-27 Sun> -:PROPERTIES: -:CUSTOM_ID: upload-off -:END: -so that nginx can have more memory and we don't risk slowdowns ** TODO [#C] JS/CSS enhancement :emacsconf: :PROPERTIES: :CREATED: [2022-10-22 Sat 15:15] @@ -1009,6 +702,18 @@ CLOSED: [2022-11-19 Sat 11:12] CLOSED: [2022-10-11 Tue 12:20] *** DONE Set up Etherpad with MySQL +** SOMEDAY [#C] Consider breakout rooms for lunch break +:PROPERTIES: +:CREATED: [2022-11-07 Mon 08:12] +:CUSTOM_ID: breakouts +:END: + +** INPROGRESS [#C] Work on the OBS scenes :zaeph:corwin:sachac: +DEADLINE: <2022-11-11 Fri> +:PROPERTIES: +:CUSTOM_ID: obs-scenes +:END: +- [ ] corwin is out from Nov 11-20, and we should start working on them before then. ** INPROGRESS [#C] Plan Etherpad use and hosting :sachac:ansible: :PROPERTIES: :CUSTOM_ID: etherpad @@ -1124,499 +829,6 @@ CLOSED: [2022-10-13 Thu 13:55] *** DONE Export pad initial content HTML to make it easier to reimport into wikimedia or elsewhere CLOSED: [2022-10-13 Thu 13:46] ~emacsconf-pad-export-initial-content-for-all-talks~ -** DONE Set up BBB rooms and update conf.org :sachac: -CLOSED: [2022-11-19 Sat 11:12] -:PROPERTIES: -:CUSTOM_ID: create-bbb -:END: - -1. Log on to bbb.emacsverse.org as an admin. -2. Create a room. Enable *Mute users when they join*. - - The code below doesn't quite work, but might be a good starting point for future automation. - - #+begin_src emacs-lisp :eval no -(setq list (seq-drop (emacsconf-bbb-room-title-list) 3)) ; skip some if needed -(progn - (setq name (pop list)) - (kill-new (format "name=\"%s\";$('#create-room-block').click();$('#create-room-name').val(name);$('#room_mute_on_join').click();$('.create-room-button').click();\n" - name)) - (sleep-for 1) - (shell-command "xdotool key alt+Tab sleep 3 key ctrl+v sleep 1 key Return")) -#+end_src - -console.log(JSON.stringify([...document.querySelectorAll('.delete-room')].map((o) => { return { name: o.getAttribute('data-name'), path: o.getAttribute('data-path') }}).filter((o) => o.name.match(/^ec22/)))) - -see conf.org for the rest of the process -*** DONE Add volunteers to the BBB rooms -CLOSED: [2022-11-08 Tue 09:48] DEADLINE: <2022-11-18 Fri> - -- vetrivln: sat-am-dev, sun-am-dev -- FlowyCoder: sat-pm-gen, sun-pm-gen -- jman: sun-pm-gen - -** DONE Coordinate and help volunteers :sachac: -CLOSED: [2022-11-19 Sat 11:14] -:PROPERTIES: -:CUSTOM_ID: coordinate-volunteers -:END: - -- [[../volunteer]] -- Figure out what information volunteers need in order to feel - comfortable signing up for tasks. ex: - https://wiki.debian.org/DebConf/21/VideoVolunteering -- Encourage people to sign up for [[#shifts]] - -*** DONE Plan training session(s), Q&A availability, recordings -CLOSED: [2022-11-19 Sat 11:14] -*** CANCELLED Hold Q&A session with volunteers -CLOSED: [2022-11-19 Sat 11:14] -:PROPERTIES: -:CUSTOM_ID: schedule-volunteer-qna -:END: -** DONE Investigate streaming options, maybe OBS in the cloud :sachac: -CLOSED: [2022-11-06 Sun 18:16] DEADLINE: <2022-11-20 Sun> -:PROPERTIES: -:CUSTOM_ID: streaming -:END: - -Current status: - -- res.emacsconf.org seems to be able to handle 2x (OBS + TigerVNC + MPV, should test with Firefox as well) -- corwin and jman will stream gen from OBS on res -- bandali will stream dev from his laptop -- let sachac know if you want manual control or more autopilot for the gen stream - -Goals: - -- [X] Be able to start a VNC server with OBS, MPV, and Firefox, connect to it, and stream -- [X] Have another session with the sound isolated -- [-] Split the audio so that we can join the Q&A room before the MPV ends - handled by automatic scene switcher detecting mpv, but we can't share just a window, so we might as well just wait -- [X] Control MPV from the commandline: track-mpv appears in the correct display, and it can also be controlled via the socket like this: echo '{ "command": ["loadfile", "test2.webm"] }' | socat - ~/mpv-socket-emacsconf-dev -- [ ] Share the window instead of the desktop? - -Prerequisites: - -- You need to be able to SSH out to res.emacsconf.org on port 46668 - and forward ports, so one of the main organizers needs to add your - SSH public key to the authorized_keys file. Please e-mail your SSH - public key to sacha@sachachua.com and test that port 46668 is not - blocked. -- For streaming from OBS in VNC, you will need a VNC viewer like - tigervnc-viewer. -- For streaming from your local computer, you will need OBS and FFmpeg. - -During the conference, you will: - -- play the talk video (unless it's automatically managed by the agenda) and update the overlays -- display intro/intermission information as needed -- open the Q&A windows, like the pad and the BBB room/IRC (unless it's automatically managed by the agenda) -- adjust the volume if needed -- arrange windows and focus the BBB room on the speaker's webcam if needed -- if you like, you can be responsible for managing the track from conf.org on orga@res.emacsconf.org - -Dry run checklist: - -- [ ] Connect to the server - ssh orga@res.emacsconf.org -p 46668 - emacsconf # runs emacsclient -c -a emacs -- [ ] Forward ports and connect via VNC -- [ ] Find the OBS or start it if it is not running -- [ ] Start recording -- [ ] Play a video -- [ ] Open two Firefox windows and arrange them -- [ ] Manage windows on the workspace -- [ ] Adjust the volume in OBS -- [ ] SSH to the server and play a video off-screen -- [ ] SSH to the server with X forwarding and adjust the volume off-screen - -*** Broadcasting from local OBS (option A) - - You can copy the profile from your track or look inside it for the icecast mount point details: - - - Gen: rsync -avze 'ssh -p 46668' emacsconf-gen@res.emacsconf.org:~/.config/obs-studio/basic/profiles/ ~/.config/obs-studio/basic/profiles/ - - Dev: rsync -avze 'ssh -p 46668' emacsconf-dev@res.emacsconf.org:~/.config/obs-studio/basic/profiles/ ~/.config/obs-studio/basic/profiles/ - - - Sacha will turn off the OBS recordings on res so that you can test streaming from your computer - - If you're doing this independently, you can jump ahead to "Connecting to VNC" in order to stop the recording yourself - - - Verify with MPV: - #+begin_example - mpv https://live0.emacsconf.org/emacsconf/gen.webm - mpv https://live0.emacsconf.org/emacsconf/dev.webm - #+end_example - - - With luck, the 480p streams will be up automatically as well - #+begin_example - mpv https://live0.emacsconf.org/emacsconf/gen-480p.webm - mpv https://live0.emacsconf.org/emacsconf/dev-480p.webm - #+end_example - -*** Connecting to VNC (option B) - - 1. Stop broadcasting locally if you were testing local OBS. - - 2. Install a VNC viewer on your system (ex: tigervnc-viewer). - - 3. Set up your local environment: - - - gen: export TRACK=gen; export TRACK_PORT=5905; export SSH_PORT=46668 - - dev: export TRACK=dev; export TRACK_PORT=5906; export SSH_PORT=46668 - - 4. Copy the password: - - scp emacsconf-$TRACK@res.emacsconf.org:~/.vnc/passwd vnc-passwd-$TRACK -p $SSH_PORT - - 5. Forward your local ports and connect via VNC viewer to the - appropriate forwarded port from your laptop: - - #+begin_example - ssh emacsconf-$TRACK@res.emacsconf.org -N -L $TRACK_PORT:127.0.0.1:$TRACK_PORT -p $SSH_PORT & - sleep 5 # Give it time to establish the tunnels - xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK & - #+end_example - - (If this doesn't find a VNC server to connect to, you can start it with ~ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc~) - - 6. Start *recording* (not streaming). If you don't see OBS when you connect, it's probably on workspace 2, so you can switch with Alt-2. If you still don't see it there, you can open a terminal with Alt-Enter and then run ~track-obs~. After you start recording, confirm that it is now broadcasting to the stream. - - 7. Verify with MPV on your local system: - #+begin_example - mpv https://live0.emacsconf.org/emacsconf/$TRACK.webm & - #+end_example - - 8. With luck, the 480p streams will be up automatically as well. On your local system: - #+begin_example - mpv https://live0.emacsconf.org/emacsconf/$TRACK-480p.webm & - #+end_example - - 9. Play a video. It should display the video and update the overlays. If you need to update the overlays manually, you can copy files from ~/data/emacsconf/overlays~ onto ~$HOME/other.png~ and ~$HOME/video.png~. - - You can play a video with ~play video-id~ (ex: ~play meetups~), or you can specify the filename (ex: ~play ~/stream/emacsconf-2022-meetups*.webm). - - termit: Ctrl-Shift-t makes a new tab - - i3 cheat sheet: - - Alt-Enter creates a terminal - - Alt-d runs a command - - Alt-e toggles horizontal/vertical split - - Alt-f toggles full-screen - - Alt-w switches to tabbed view - - Alt-1 switches to workspace 1, Alt-2 switches to workspace 2 - - Alt-Shift-2 moves things to workspace 2 - - Alt-Shift-Left moves the current window to the left - - Alt-Shift-Right moves the current window to the right - - 10. Test Q&A. You can either wait for the video to finish or quit it with "q". - You can paste in the URLs or use - ~firefox /data/emacsconf/2022/index-$TRACK.html~ - - 11. Test adjusting the audio - - - ~ssh emacsconf-$TRACK@res.emacsconf.org -p 46668~ - - Then use ~qa-louder~, ~qa-quieter~, or ~qa-vol vol%~ (ex: ~qa-vol 90%~) - - Other notes and tips: - - - You can use Emacs for emergency or ad-hoc announcements. - - Use OBS or ~pavucontrol~ to adjust the volume of BBB as needed. You might be able to manage ~pavucontrol~ off-screen with ~ssh emacsconf-$TRACK@res.emacsconf.org -X -p $SSH_PORT pavucontrol~. - - You can also ~ssh emacsconf-$TRACK@res.emasconf.org -p 46668~ and start new processes from the command-line, such as using ~track-mpv~. If you specify commands when you call SSH instead of using an interactive shell, you may need to also specify DISPLAY=:5 (for the gen track) or DISPLAY=:6 (for the dev track), since ssh won't pick up the variables from ~.bashrc~. - - If you have a Wayland-only desktop without any X11 compatibility layer (example: [[https://swaywm.org][Sway]] with ~xwayland disable~) the suggested software (~tigervnc~) might no work. You can use instead for example ~gnome-remote-desktop~. The password for the VNC connection can be retrieved from the file ~vnc-passwd-$TRACK~ (3DES encrypted). - -*** Managing the stream from the agenda (option B2) - -ssh orga@res.emacsconf.org -p $SSH_PORT -emacsconf # runs emacsclient -c -a emacs - -You can then use - -- emacsconf-stream-play-video -- emacsconf-stream-open-qa-windows-on-change -- emacsconf-agenda-by-track -- emacsconf-agenda - -If things are going well, you can use C-c C-t on the agenda view to change a talk to PLAYING, CLOSED_Q, or OPEN_Q, and various things should happen in the background. If they don't happen in the background, use emacsconf-add-org-after-todo-state-change-hook to add the todo state change hook, then try again. - -Task state shortcuts for C-c C-t: - -- m (mpv) :: PLAYING - -stream-play-video, emacsconf-stream-set-talk-info, publish the files to the media directory -- q (Q&A) :: CLOSED_Q -- o (open) :: update the BBB redirect URLs to let people into the room -- u (unstreamed) -- r (to archive) - -You can leave the emacsclient with ~C-x 5 0~ - - -**** Do Q&A - -From the emacsclient on orga@res.emacsconf.org, you can open various talk-related things: -- emacsconf-stream-open-pad -- emacsconf-stream-join-qa -- emacsconf-stream-join-chat - -Alternatively, you can switch to the VNC viewer and use the links in -file:///data/emacsconf/2022/index-gen.html or -file:///data/emacsconf/2022/index-dev.html . - -For Q&A, you may want to have the Etherpad on the left, the BBB Q&A or -IRC chat on the right, and the terminal and OBS windows on -workspace 2. - -*** Other tasks as needed - -**** Display emergency news / announcements - -M-x emacsconf-stream-broadcast to send a message to both streams -or M-x emacsconf-stream-set-news to send a message to one stream. - -If that doesn't work, edit the news file directly with: -~ssh emacsconf-$TRACK@res.emacsconf.org > ~/news.txt~ - -If that doesn't work, use the VNC session to switch to an Emacs window -and type your message in. - -**** Kill the VNC server: - -ssh emacsconf-$TRACK@res.emacsconf.org "vncserver -kill" - -| ~/bin/track-obs | start OBS with the track's profile and scene collection | -| ~/bin/track-mpv file.webm | play the file using the track's sink | - -**** Making OBS scenes - -Making OBS scenes is pretty straightforward as you can move the -different blocks on your scene in the preview window. However, it’s -important to make sure that your video-captures and your overlays are -snapping properly to the edges of the view-port. To do this, make sure -to right-click on the block inside the preview window, and try the -different fitting options (fit by width, height, etc.) until you find -one that works best. - -We’ll probably be streaming at 720p, but since we’re also considering -a 1080p update, try to create your overlays in a format or a resolution -that would support resizing. - -*** Other notes -There are sockets in the home directory for MPV control if you want to keep that process. -echo '{ "command": ["loadfile", "test2.webm"] }' | socat - ~/mpv-socket-emacsconf-dev -*** DONE Test and document command-line way of managing audio :sachac: -CLOSED: [2022-11-19 Sat 11:14] DEADLINE: <2022-11-20 Sun> - -*** DONE Move my conf.org setup to res so that we can control everything from there -CLOSED: [2022-11-03 Thu 14:10] -*** DONE Set timers for changing todo state -CLOSED: [2022-11-13 Sun 11:13] - -#+begin_src emacs-lisp :eval no - (defun emacsconf-schedule-test-buffer (info) - (mapcar (lambda (o) (plist-put o :buffer "1") o) info)) - (let ((emacsconf-schedule-strategies '(emacsconf-schedule-test-buffer))) - (emacsconf-stream-schedule-timers (emacsconf-schedule-prepare - (emacsconf-schedule-inflate-sexp - `(("Test gen" :start ,(format-time-string "%Y-%m-%d %H:%M" - (time-add (current-time) (seconds-to-time 60)))) - (journalism :time "1") - (school :time "2") - (handwritten :time "1") - ("Test dev" :start ,(format-time-string "%Y-%m-%d %H:%M" - (time-add (current-time) (seconds-to-time 60)))) - (treesitter :time "2") - (lspbridge :time "1") - (asmblox :time "1")))))) - #+end_src - -the dev one worked, but the gen one gets -Couldn’t find local shell prompt for /bin/sh -Tramp: Opening connection *Async Shell Command* for emacsconf-gen@res.emacsconf.org using ssh...failed - -Maybe I need to stagger them, or maybe I need to use a shell command. -Changed to call ssh directly instead of using tramp. - -*** DONE Figure out how to work with the layout -CLOSED: [2022-11-08 Tue 12:32] -https://i3wm.org/docs/layout-saving.html -*** DONE Allow per-track configuration of todo hooks :sachac: -CLOSED: [2022-11-08 Tue 12:49] -emacsconf-todo-hooks -*** CANCELLED [#C] Use xdotool to automate joining BBB in Firefox (signing in, clicking on listen only) -CLOSED: [2022-11-08 Tue 12:32] -*** CANCELLED [#C] Experiment with sharing part of the screen so that there's space for us to work a little off-screen -CLOSED: [2022-11-08 Tue 12:32] - -We might just have to rely on xdotool to move windows the way we want them -Window fixes that didn't work -- https://obsproject.com/forum/threads/solved-window-capture-black-screen.47082/ -- https://www.reddit.com/r/obs/comments/kas5ka/obs_window_capture_xcomposite_black_screen/ - -*** DONE Set up scenes and try them -CLOSED: [2022-10-30 Sun 21:54] -*** DONE Set up text source for URL -CLOSED: [2022-10-30 Sun 21:54] -*** DONE Create Ansible tasks for setting up sinks for MPV and Firefox for the streams, and adding the scenes appropriately -CLOSED: [2022-10-30 Sun 21:54] -*** DONE See if I can even Ansible-up the rest of the tasks -CLOSED: [2022-10-30 Sun 21:54] -like starting up Firefox and mpv and everything -*** CANCELLED obs-websocket control of OBS on the server -CLOSED: [2022-11-19 Sat 11:14] -so that the streamer can adjust volume offscreen? -*** DONE document such that someone else could use/fix it -CLOSED: [2022-11-19 Sat 11:15] -*** DONE recruit at least one more person to help operate the "video bouncer" -CLOSED: [2022-11-19 Sat 11:15] -*** Other notes -- bandali doesn't have much cognitive bandwidth at the moment, so we can keep things simple with OBS on laptops - -- Issue: zaeph was dropping frames and couldn’t pay attention to as many things as he wanted -- Issue: corwin needs assistance to not be locked in his chair for the whole conf. Premptively, zaeph can do it by broadcasting OBS scenes via the rtmp (instead of just his webcam). -- With a long day, we may want to be able to schedule hosts/streamers/publishers in shifts -- Ideal: Easy reproducible setup to spin up an OBS VM with scenes set up, allowing multiple users to connect to it at the same time. Maybe x2go or vnc? VMs with 8 vCPUs and a vGPU cost more, so it would be good to figure out what's needed, spin it down, and then spin it up maybe the day before or something like that. -- Plus points if we can control the OBS via password-protected websocket so we can tell it to switch scenes (and even more points if we do so from Emacs, maybe via that obs-websocket.el ;) ). MPV is also controllable via IPC, so we can use the same MPV player and then switch videos around. Maybe mpvc? https://unix.stackexchange.com/questions/664728/how-can-i-control-mpv-in-command-line -- Probably Linode's Dedicated 32 GB + RTX6000 GPU x1 at $1.50 an hour for 2-3 days + dev time, since live.emacsconf.org is in Linode as well -- We should also look into normalization across the board, especially if we have BBB participants. pipewire + easyeffects on the box might be the easiest way to do it. - - - - -- https://docs.vdo.ninja/ -- Live Streaming using low configuration vps https://www.youtube.com/watch?v=3iBYYgkG1eM&t=953 -- https://snowmix.sourceforge.io/Examples/input.html -- https://www.google.com/url?sa=t&source=web&rct=j&url=https://m.youtube.com/watch%3Fv%3D1y-DUYiECWQ&ved=2ahUKEwjPru_TqOv6AhVMkokEHXL9Dm4QtwJ6BAgqEAI&usg=AOvVaw17mbCEiFL6dGVY4YEBufcy -- [[https://news.ycombinator.com/item?id=24633139][OBS Studio 26.0 | Hacker News]] -- https://github.com/mviereck/x11docker#sound -- https://vcs.fsf.org/?p=streamdesktop.git;a=tree -- https://opensource.com/article/20/5/conference-free-software -- https://github.com/soonum/hubangl -- https://obsproject.com/forum/threads/run-obs-on-vm-in-the-cloud.122543/ -** INPROGRESS Use Mumble for backchannel coordination and also on-stage -DEADLINE: <2022-11-18 Fri> -:PROPERTIES: -:CUSTOM_ID: mumble -:END: - -[2022-11-19 Sat] sachac: Confirmed that you can join the emacsconf-dev or emacsconf-gen channel if you have access, and you can speak on air in just that channel - -*** DONE Update the Mumble setup :bandali: -CLOSED: [2022-11-19 Sat 11:15] -- [X] Add emacsconf-gen and emacsconf-dev channels -- [X] Give the emacsconf-gen and emacsconf-dev users access to them -- [X] Give the other organizers access to emacsconf-gen, emacsconf-dev, and org-private -- [X] Get emacsconf-gen and -dev to join the right channels -*** DONE E-mail volunteers and help them get on Mumble :bandali: -CLOSED: [2022-11-19 Sat 09:03] - -**** Template - -We plan to use Mumble as a virtual walkie-talkie during the conference -so that we can quickly talk to each other as needed. It can also be a -way for us to add our audio to the streams. Please set up your system -as follows: - -1. Install a Mumble client on the device you want to use to connect to - the voice channel. It can be your computer or phone. You can choose - the username that you would like to log in with. -2. Create and backup your certificate. (This is part of the wizard for - the desktop client, and it might be automatic on a phone client.) -3. Connect to mumble.emacsconf.org with your desired username. -4. Register your account on the server using the ~Self > Register~ - command. This reserves your username using your certificate and - allows me to add you to ACLs. -5. Let me know (sachac on #emacsconf-org in IRC or - sacha@sachachua.com) when you've registered so that I can add you - to the access control lists for the private channels. If I'm around - on mumble (sachac), you can say hi to me there and confirm that - it's working. - -You can enter a channel by double-clicking on it. (On Mumla for -Android, entering a channel is instead done by clicking on the arrow -to the right of the channel.) Then your audio will go to that channel, -and you can hear audio from that channel. We can use the -~emacsconf-gen~ and ~emacsconf-dev~ channels to speak on air, and we -can use the ~backstage~ channel for coordination. - -Looking forward to hearing from you! - -Sacha - -*** DONE Generate certificates, add them to conf.org, and register the users :sachac: -CLOSED: [2022-11-08 Tue 11:33] -*** WAITING Set up Mumble and bring the volunteers on board -SCHEDULED: <2022-11-26 Sat> -:PROPERTIES: -:CREATED: [2022-11-19 Sat 07:59] -:END: - -| | Emailed | Onboarded | -|------------+---------+------------------------------------------------------------| -| FlowyCoder | X | [2022-11-19 Sat] access granted, briefed | -| jman | X | | -| vetrivln | X | [2022-11-19 Sat] access granted, needs to figure out audio | - -** Volunteer update -:PROPERTIES: -:CUSTOM_ID: volunteer-2022-11-14 -:END: - -- talk banners, akshay - -** DONE Make a linear hyperlist for managing EmacsConf :sachac: -CLOSED: [2022-11-14 Mon 14:14] -:PROPERTIES: -:CUSTOM_ID: hyperlist -:END: - -Goal: -- Volunteers should be able to coordinate everything by stepping through a linear list of things to do -- The hyperlist will primarily live on orga@res.emacsconf.org and be accessed through emacsclient. (Maybe sat.org and sun.org) -- Volunteers should be able to take breaks as needed - -- 9:05 Journalism - - [ ] Check ${name} into _BBB room_ - - [X] [[elisp:(emacsconf-update-talk-status "journalism" "." "PLAYING")][Start talk]] - - [X] [[elisp:(emacsconf-update-talk-status "journalism" "." "CLOSED_Q")][Start closed Q&A]] - - [ ] [[elisp:(emacsconf-update-talk-status "journalism" "." "OPEN_Q")][Open Q&A]] - - [ ] [[elisp:(emacsconf-update-talk-status "journalism" "." "UNSTREAMED_Q")][Mark Q&A as unstreamed]] - - [ ] [[elisp:(emacsconf-update-talk-status "journalism" "." "TO_ARCHIVE")][Finish talk]] -- 9:40 Handwritten - - [ ] [[elisp:(emacsconf-update-talk-status "handwritten" "." "PLAYING")][Start talk]] - - [ ] [[elisp:(emacsconf-update-talk-status "handwritten" "." "CLOSED_Q")][Start closed Q&A]] - - [ ] [[elisp:(emacsconf-update-talk-status "handwritten" "." "OPEN_Q")][Open Q&A]] - - [ ] [[elisp:(emacsconf-update-talk-status "handwritten" "." "UNSTREAMED_Q")][Mark Q&A as unstreamed]] - - [ ] [[elisp:(emacsconf-update-talk-status "handwritten" "." "TO_ARCHIVE")][Finish talk]] - -See sat.org and sun.org in the conf private repo - -Try them in an Etherpad - -https://media.emacsconf.org/2022/backstage/index-gen.html -https://media.emacsconf.org/2022/backstage/index-dev.html -https://media.emacsconf.org/2022/backstage/hyperlists/ - -[[#coordination][How do we want to coordinate during the conference itself?]] -*** DONE Try writing it to an Etherpad -CLOSED: [2022-11-14 Mon 14:14] SCHEDULED: <2022-11-19 Sat> - -*** TODO [#A] Revisit the hyperlists to make sure they make sense -:PROPERTIES: -:CREATED: [2022-11-19 Sat 07:49] -:END: -*** TODO [#B] Add intro notes and specific talk notes to the hyperlist -*** TODO [#A] Make a hyperlist for checking people in for easier copying and pasting -** SOMEDAY [#C] Consider breakout rooms for lunch break -:PROPERTIES: -:CREATED: [2022-11-07 Mon 08:12] -:CUSTOM_ID: breakouts -:END: - -** STARTED Review notebook for tasks, priorities, and scheduling -:PROPERTIES: -:CREATED: [2022-11-19 Sat 08:01] -:CUSTOM_ID: review -:Effort: 0:15 -:END: -:LOGBOOK: -CLOCK: [2022-11-19 Sat 11:17] -:END: * Projects to bear in mind but which are not actual :PROPERTIES: :CUSTOM_ID: maybe-projects @@ -4317,6 +3529,840 @@ CLOSED: [2022-11-06 Sun 15:26] :PROPERTIES: :CUSTOM_ID: prepare-audio :END: +** DONE Write speaker e-mail for people who have already submitted their talks +CLOSED: [2022-11-14 Mon 20:42] +:PROPERTIES: +:CUSTOM_ID: speaker-after-video +:END: + +To: speakers who have already submitted their talks (so that we don't distract people who are still working on their talks) + +#+begin_src emacs-lisp +(defun emacsconf-mail-speaker-after-video (group &optional template) + (interactive (list (emacsconf-mail-complete-email-group + (seq-filter (lambda (o) (plist-get o :intro-note)) + (emacsconf-active-talks (emacsconf-get-talk-info)))))) + (setq template (or template (emacsconf-mail-merge-get-template "speaker-after-video"))) + (let ((talks (cdr group))) + (emacsconf-mail-prepare + template + (car group) + (list :speakers-short (plist-get (cadr group) :speakers-short) + :plural (if (= (length (cdr group)) 1) "" "s") + :email (plist-get (cadr group) :email) + :in-between (mapconcat (lambda (talk) + (emacsconf-surround "<https://media.emacsconf.org/2022/in-between/" (plist-get talk :slug) ".png>" "")) + (cdr group) + ", ") + :intro + (mapconcat (lambda (talk) + (string-join (org-wrap (emacsconf-surround "- " (plist-get talk :intro-note) "\n" "") 70) "\n")) + (cdr group) + "") + :chapters + (mapconcat (lambda (talk) + (format "<https://media.emacsconf.org/2022/backstage/#%s>:\n%s" + (plist-get talk :slug) + (mapconcat + (lambda (chapter) + (concat (format-seconds "%.2h:%z%.2m:%.2s" + (floor (/ (elt chapter 1) 1000))) + " " + (elt chapter 3) "\n")) + (subed-parse-file + (expand-file-name (concat (plist-get talk :video-slug) "--main--chapters.vtt") emacsconf-cache-dir))))) + (cdr group) + "\n\n") + :caption-note + (if (seq-find (lambda (o) (not (string= (plist-get o :status) "TO_STREAM"))) (cdr group)) + " The captions haven't been fully edited yet, so please ignore any errors in the captions themselves." + "") + :urls + (mapconcat (lambda (o) (concat "<" emacsconf-base-url (plist-get o :url) ">")) + (cdr group) " , ") + :tech-check-note + (if (string-match "live" (or (mapconcat (lambda (o) (or (plist-get o :q-and-a) "")) (cdr group) " ") "")) + (format + "*Tech check* + +Since you're planning to do a live Q&A session, you may want to +connect to the test BBB room at <%s> to make sure you can share +your audio, your window or screen, and your webcam (optional). Sharing +system audio or multi-monitor setups can sometimes be tricky, so +please let us know if you need help figuring things out. You can +double-check by connecting with a separate device, or you can arrange +to meet with one of the tech-check volunteers +(<https://emacsconf.org/2022/prepare/#tech-check>).${wrap} + +" emacsconf-test-bbb-room) ""))) + (add-hook 'message-sent-hook + `(lambda () + (mapc (lambda (o) + (emacsconf-add-to-talk-logbook o "Sent speaker-after-video email")) + (list + ,@(mapcar (lambda (talk) (plist-get talk :slug)) talks)))) + nil t))) + +(defun emacsconf-mail-speakers-after-videos () + (interactive) + (let* ((info (seq-filter (lambda (o) (plist-get o :intro-note)) + (emacsconf-active-talks (emacsconf-get-talk-info)))) + (grouped (seq-group-by (lambda (o) (plist-get o :email)) info)) + (template (emacsconf-mail-merge-get-template "speaker-after-video"))) + (mapc (lambda (group) + (emacsconf-mail-speaker-after-video group template)) + grouped))) + + +#+end_src +*** Template +:PROPERTIES: +:EMAIL_ID: speaker-after-video +:FUNCTION: emacsconf-mail-speaker-after-video +:SUBJECT: EmacsConf: miscellaneous todos now that you've sent in your video${plural} +:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email}, sacha@sachachua.com +:CC: emacsconf-submit@gnu.org +:END: + +Hi, ${speakers-short}! + +Thank you for uploading your video early! Let's get a few more things +sorted out for a smooth EmacsConf 2022. + +${tech-check-note}*Intro* + +I've written a brief (and possibly inaccurate! =) ) intro that the +host can read out before your talk while the in-between slide +(${in-between}) is being displayed: + +${intro} + +Would you like to tweak it to better reflect your talk? + +*Chapter markers* + +I've added chapter markers to your video in the backstage area to help +with navigation. You can click on them in the backstage area if you +want to easily jump around, or review the list that I've included for +your convenience: + +${chapters} +If you prefer other headings or timestamps, please let me know!${caption-note} + +*Bio, community support links* + +People often want to learn more about speakers and show their +appreciation. If you'd like to include an author bio and any +social/support links to your talk page${plural} (${urls}), please +e-mail us the text that you'd like to include. You can also follow the +instructions at <https://emacsconf.org/edit/> to edit your talk +page${plural} directly yourself, if you want to.${wrap} + +Thanks again for all your contributions! + +Sacha + +** DONE Prepare for prerecs :zaeph: +CLOSED: [2022-10-29 Sat 09:58] DEADLINE: <2022-11-04 Fri> +:PROPERTIES: +:CUSTOM_ID: prepare-prerec-process +:END: +*** DONE Optimize ffmpeg incantation +CLOSED: [2022-10-29 Sat 09:58] +Remember to update [[file:../prepare.md::Compression]] with the new incantation. + +**** Incantation from last year +#+begin_src sh :eval no +Q=32 +ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -aq-mode 2 -an -tile-columns 0 -tile-rows 0 -frame-parallel 0 -cpu-used 8 -auto-alt-ref 1 -lag-in-frames 25 -g 240 -pass 1 -f webm -threads 8 /dev/null && +ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -c:a copy -tile-columns 2 -tile-rows 2 -frame-parallel 0 -cpu-used -5 -auto-alt-ref 1 -lag-in-frames 25 -pass 2 -g 240 -threads 8 "$2" +#+end_src + +#+RESULTS: +:results: +:end: + +**** New candidate +Changelog: +- Disable adaptive quantization by setting aq-mode to 0 (TODO: compare samples) +- Add ~-row-mt 1~ needed to support ~tile-rows~ (2×2 is enough for 720p) +- Also use tiles for first pass +- Remove ~-frame-parallel 0~ because it’s disabled by default (see [[https://github.com/Kagami/webm.py/wiki/Notes-on-encoding-settings][Notes on encoding settings · Kagami/webm.py Wiki]]) +- Put number of CPU in variable and use it for ~cpu-used~ and ~threads~ +- Stick to default for ~auto-alt-ref~ +- Stick to default for ~lag-in-frames~ +#+begin_src sh :eval no +Q=32 +CPU=8 +ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -an -row-mt 1 -tile-columns 2 -tile-rows 2 -cpu-used $CPU -g 240 -pass 1 -f webm -threads $CPU /dev/null && + ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -c:a copy -row-mt 1 -tile-columns 2 -tile-rows 2 -cpu-used $CPU -pass 2 -g 240 -threads $CPU "$2" +#+end_src + +Other considerations: +- We might want to tweak the time before keyframes (~-g~). +*** DONE Figure out workflow for handling submitted prerecs +CLOSED: [2022-10-29 Sat 09:54] +We need time after the prerecs get submitted to: +- convert the videos and check that they've been reencoded properly by watching the re-encoded ones all the way to the end +- caption videos +- capture any extra info +- follow up with missing prerecs + +Make changes in [[#prerec-process]] + +** DONE Make something to display between talks :akshay196: +CLOSED: [2022-11-07 Mon 14:46] +:PROPERTIES: +:CREATED: [2022-10-03 Mon 07:50] +:CUSTOM_ID: intro +:END: + +Goals: +- Reassure people that they're in the right stream for the talk that they're looking for +- Direct them to the pad and Q&A for the talk + +What to show in between talks: +- Previous talk: title, speaker, pronouns, talk page, Q&A information (if still live) +- Next talk: title, speaker, pronouns, talk page, Q&A information, countdown + +https://media.emacsconf.org/2022/backstage/gen-in-between.pdf +https://media.emacsconf.org/2022/backstage/dev-in-between.pdf + +- Good: Static image, maybe created with LaTeX +- Better: Video with unobtrusive sound so people can doublecheck that their audio works +- Best: Emacs thing so that we can have a dynamic timer and last-minute announcements, and so that it's Emacs =) +- Even better than that: A compact view that can be overlaid on the Q&A session using OBS + +See break commercials +https://www.collabmagazine.com/organizing-a-multi-track-virtual-conference-with-microsoft-teams-live-events-a-technical-playbook-and-lessons-learned/ + +OBS scenes (maybe?): + +- splash-screen when we’re on break +- scene when broadcasting a talk (where we might want a logo and a bar or surrounding to broadcast messages like time left in + recording); and +- Q&A scene with host-webcam, optional speaker-webcam, and pad with questions. +- Q&A scene focusing on shared screen from speaker +- Q&A scene with IRC and pad + +Nothing is urgent, blocking it, or being blocked by it, so you can +play around with ideas. + +We're experimenting with two tracks this year, so we expect that some +people will join midway through a talk or Q&A session and +would like to reorient themselves. Some Q&A sessions may end +early, so we would like to reassure people that they're in +the right spot for the next talk. Most Q&As will be done +live, but some Q&As will be done over IRC, so we need to +point people to the right place. + +and if there's room for a little extra info like public e-mail +addresses or pronouns, that can help people when they discuss +things. That info will be in the pad and IRC, though, so it's +also okay to omit it + + + +We can programmatically replace strings in +SVG from Emacs, so we can easily use that as an overlay. + + +<zaeph> …Or, if you just want to focus on the look of +things, we can think of the content on our own. + +<sachac> oh yeah, totally, you can just focus on the design and use +placeholder text + +Overlay considerations: +- talk videos will likely have subtitles; no subtitles for Q&A +- zaeph doesn't like vertical text +*** DONE Generate talk banners :sachac: +CLOSED: [2022-11-07 Mon 14:46] +https://gitlab.com/akshay196/emacsconf-artwork/-/blob/main/2022/talk-banner/sample.svg + +** DONE Find volunteers for tech-checks :zaeph: +CLOSED: [2022-11-19 Sat 11:08] +:PROPERTIES: +:CUSTOM_ID: tech-checks +:END: +*** DONE Add entry in 2022/volunteer.md +*** DONE Write protocol for adding tech-checker volunteer +CLOSED: [2022-11-19 Sat 11:08] +- Invite volunteer to BBB (ask core organizers) +- Update [[file:prepare.md::Tech-check]] with new tech-checker info +- Coach tech-checker on the protocol +*** DONE Write the tech-checking protocol (formerly referred to as “tech-checklist”) +CLOSED: [2022-11-19 Sat 11:08] +From previous years: +#+begin_quote +- Can you speak and be heard? Is there echo? +- Can you hear the organizer? +- Can you share your screen? Is the screen readable? +- If you plan to show your keystrokes, is that display visible? +- If you want to share your webcam (optional), can you enable it? Is it visible? Will there likely be distractions in the background? +- Can you view the collaborative pad? Will you be comfortable reviewing questions on your own (perhaps by keeping it open beside your shared window), or will you need a volunteer to relay questions to you? +- Can you share contact information (ex: phone number) so that we can get in touch with you in case of technical issues or scheduling changes? +- Do you need help finding your way around IRC so that you can check into `#emacsconf-org`? What is your IRC nickname? +#+end_quote +** DONE Move conf.org management to orga@res.emacsconf.org :sachac: +CLOSED: [2022-11-06 Sun 15:27] +:PROPERTIES: +:CUSTOM_ID: conforg +:END: +so that more people can work with it during the conference +See the publish role in the ansible playbook + +** DONE Ask speakers for bios or support nudges to include on their talk pages :wiki: +CLOSED: [2022-11-19 Sat 11:09] +:PROPERTIES: +:CUSTOM_ID: speaker-bio +:END: +maybe after we get the prerecs +ex: liberapay, patreon, anyone looking for a job, etc. +** DONE Set up BBB rooms and update conf.org :sachac: +CLOSED: [2022-11-19 Sat 11:12] +:PROPERTIES: +:CUSTOM_ID: create-bbb +:END: + +1. Log on to bbb.emacsverse.org as an admin. +2. Create a room. Enable *Mute users when they join*. + + The code below doesn't quite work, but might be a good starting point for future automation. + + #+begin_src emacs-lisp :eval no +(setq list (seq-drop (emacsconf-bbb-room-title-list) 3)) ; skip some if needed +(progn + (setq name (pop list)) + (kill-new (format "name=\"%s\";$('#create-room-block').click();$('#create-room-name').val(name);$('#room_mute_on_join').click();$('.create-room-button').click();\n" + name)) + (sleep-for 1) + (shell-command "xdotool key alt+Tab sleep 3 key ctrl+v sleep 1 key Return")) +#+end_src + +console.log(JSON.stringify([...document.querySelectorAll('.delete-room')].map((o) => { return { name: o.getAttribute('data-name'), path: o.getAttribute('data-path') }}).filter((o) => o.name.match(/^ec22/)))) + +see conf.org for the rest of the process +*** DONE Add volunteers to the BBB rooms +CLOSED: [2022-11-08 Tue 09:48] DEADLINE: <2022-11-18 Fri> + +- vetrivln: sat-am-dev, sun-am-dev +- FlowyCoder: sat-pm-gen, sun-pm-gen +- jman: sun-pm-gen + +** DONE Coordinate and help volunteers :sachac: +CLOSED: [2022-11-19 Sat 11:14] +:PROPERTIES: +:CUSTOM_ID: coordinate-volunteers +:END: + +- [[../volunteer]] +- Figure out what information volunteers need in order to feel + comfortable signing up for tasks. ex: + https://wiki.debian.org/DebConf/21/VideoVolunteering +- Encourage people to sign up for [[#shifts]] + +*** DONE Plan training session(s), Q&A availability, recordings +CLOSED: [2022-11-19 Sat 11:14] +*** CANCELLED Hold Q&A session with volunteers +CLOSED: [2022-11-19 Sat 11:14] +:PROPERTIES: +:CUSTOM_ID: schedule-volunteer-qna +:END: +** DONE Investigate streaming options, maybe OBS in the cloud :sachac: +CLOSED: [2022-11-06 Sun 18:16] DEADLINE: <2022-11-20 Sun> +:PROPERTIES: +:CUSTOM_ID: streaming +:END: + +Current status: + +- res.emacsconf.org seems to be able to handle 2x (OBS + TigerVNC + MPV, should test with Firefox as well) +- corwin and jman will stream gen from OBS on res +- bandali will stream dev from his laptop +- let sachac know if you want manual control or more autopilot for the gen stream + +Goals: + +- [X] Be able to start a VNC server with OBS, MPV, and Firefox, connect to it, and stream +- [X] Have another session with the sound isolated +- [-] Split the audio so that we can join the Q&A room before the MPV ends - handled by automatic scene switcher detecting mpv, but we can't share just a window, so we might as well just wait +- [X] Control MPV from the commandline: track-mpv appears in the correct display, and it can also be controlled via the socket like this: echo '{ "command": ["loadfile", "test2.webm"] }' | socat - ~/mpv-socket-emacsconf-dev +- [ ] Share the window instead of the desktop? + +Prerequisites: + +- You need to be able to SSH out to res.emacsconf.org on port 46668 + and forward ports, so one of the main organizers needs to add your + SSH public key to the authorized_keys file. Please e-mail your SSH + public key to sacha@sachachua.com and test that port 46668 is not + blocked. +- For streaming from OBS in VNC, you will need a VNC viewer like + tigervnc-viewer. +- For streaming from your local computer, you will need OBS and FFmpeg. + +During the conference, you will: + +- play the talk video (unless it's automatically managed by the agenda) and update the overlays +- display intro/intermission information as needed +- open the Q&A windows, like the pad and the BBB room/IRC (unless it's automatically managed by the agenda) +- adjust the volume if needed +- arrange windows and focus the BBB room on the speaker's webcam if needed +- if you like, you can be responsible for managing the track from conf.org on orga@res.emacsconf.org + +Dry run checklist: + +- [ ] Connect to the server + ssh orga@res.emacsconf.org -p 46668 + emacsconf # runs emacsclient -c -a emacs +- [ ] Forward ports and connect via VNC +- [ ] Find the OBS or start it if it is not running +- [ ] Start recording +- [ ] Play a video +- [ ] Open two Firefox windows and arrange them +- [ ] Manage windows on the workspace +- [ ] Adjust the volume in OBS +- [ ] SSH to the server and play a video off-screen +- [ ] SSH to the server with X forwarding and adjust the volume off-screen + +*** Broadcasting from local OBS (option A) + - You can copy the profile from your track or look inside it for the icecast mount point details: + + - Gen: rsync -avze 'ssh -p 46668' emacsconf-gen@res.emacsconf.org:~/.config/obs-studio/basic/profiles/ ~/.config/obs-studio/basic/profiles/ + - Dev: rsync -avze 'ssh -p 46668' emacsconf-dev@res.emacsconf.org:~/.config/obs-studio/basic/profiles/ ~/.config/obs-studio/basic/profiles/ + + - Sacha will turn off the OBS recordings on res so that you can test streaming from your computer + - If you're doing this independently, you can jump ahead to "Connecting to VNC" in order to stop the recording yourself + + - Verify with MPV: + #+begin_example + mpv https://live0.emacsconf.org/emacsconf/gen.webm + mpv https://live0.emacsconf.org/emacsconf/dev.webm + #+end_example + + - With luck, the 480p streams will be up automatically as well + #+begin_example + mpv https://live0.emacsconf.org/emacsconf/gen-480p.webm + mpv https://live0.emacsconf.org/emacsconf/dev-480p.webm + #+end_example + +*** Connecting to VNC (option B) + + 1. Stop broadcasting locally if you were testing local OBS. + + 2. Install a VNC viewer on your system (ex: tigervnc-viewer). + + 3. Set up your local environment: + + - gen: export TRACK=gen; export TRACK_PORT=5905; export SSH_PORT=46668 + - dev: export TRACK=dev; export TRACK_PORT=5906; export SSH_PORT=46668 + + 4. Copy the password: + + scp emacsconf-$TRACK@res.emacsconf.org:~/.vnc/passwd vnc-passwd-$TRACK -p $SSH_PORT + + 5. Forward your local ports and connect via VNC viewer to the + appropriate forwarded port from your laptop: + + #+begin_example + ssh emacsconf-$TRACK@res.emacsconf.org -N -L $TRACK_PORT:127.0.0.1:$TRACK_PORT -p $SSH_PORT & + sleep 5 # Give it time to establish the tunnels + xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK & + #+end_example + + (If this doesn't find a VNC server to connect to, you can start it with ~ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc~) + + 6. Start *recording* (not streaming). If you don't see OBS when you connect, it's probably on workspace 2, so you can switch with Alt-2. If you still don't see it there, you can open a terminal with Alt-Enter and then run ~track-obs~. After you start recording, confirm that it is now broadcasting to the stream. + + 7. Verify with MPV on your local system: + #+begin_example + mpv https://live0.emacsconf.org/emacsconf/$TRACK.webm & + #+end_example + + 8. With luck, the 480p streams will be up automatically as well. On your local system: + #+begin_example + mpv https://live0.emacsconf.org/emacsconf/$TRACK-480p.webm & + #+end_example + + 9. Play a video. It should display the video and update the overlays. If you need to update the overlays manually, you can copy files from ~/data/emacsconf/overlays~ onto ~$HOME/other.png~ and ~$HOME/video.png~. + + You can play a video with ~play video-id~ (ex: ~play meetups~), or you can specify the filename (ex: ~play ~/stream/emacsconf-2022-meetups*.webm). + + termit: Ctrl-Shift-t makes a new tab + + i3 cheat sheet: + - Alt-Enter creates a terminal + - Alt-d runs a command + - Alt-e toggles horizontal/vertical split + - Alt-f toggles full-screen + - Alt-w switches to tabbed view + - Alt-1 switches to workspace 1, Alt-2 switches to workspace 2 + - Alt-Shift-2 moves things to workspace 2 + - Alt-Shift-Left moves the current window to the left + - Alt-Shift-Right moves the current window to the right + + 10. Test Q&A. You can either wait for the video to finish or quit it with "q". + You can paste in the URLs or use + ~firefox /data/emacsconf/2022/index-$TRACK.html~ + + 11. Test adjusting the audio + + - ~ssh emacsconf-$TRACK@res.emacsconf.org -p 46668~ + - Then use ~qa-louder~, ~qa-quieter~, or ~qa-vol vol%~ (ex: ~qa-vol 90%~) + + Other notes and tips: + + - You can use Emacs for emergency or ad-hoc announcements. + - Use OBS or ~pavucontrol~ to adjust the volume of BBB as needed. You might be able to manage ~pavucontrol~ off-screen with ~ssh emacsconf-$TRACK@res.emacsconf.org -X -p $SSH_PORT pavucontrol~. + - You can also ~ssh emacsconf-$TRACK@res.emasconf.org -p 46668~ and start new processes from the command-line, such as using ~track-mpv~. If you specify commands when you call SSH instead of using an interactive shell, you may need to also specify DISPLAY=:5 (for the gen track) or DISPLAY=:6 (for the dev track), since ssh won't pick up the variables from ~.bashrc~. + - If you have a Wayland-only desktop without any X11 compatibility layer (example: [[https://swaywm.org][Sway]] with ~xwayland disable~) the suggested software (~tigervnc~) might no work. You can use instead for example ~gnome-remote-desktop~. The password for the VNC connection can be retrieved from the file ~vnc-passwd-$TRACK~ (3DES encrypted). + +*** Managing the stream from the agenda (option B2) + +ssh orga@res.emacsconf.org -p $SSH_PORT +emacsconf # runs emacsclient -c -a emacs + +You can then use + +- emacsconf-stream-play-video +- emacsconf-stream-open-qa-windows-on-change +- emacsconf-agenda-by-track +- emacsconf-agenda + +If things are going well, you can use C-c C-t on the agenda view to change a talk to PLAYING, CLOSED_Q, or OPEN_Q, and various things should happen in the background. If they don't happen in the background, use emacsconf-add-org-after-todo-state-change-hook to add the todo state change hook, then try again. + +Task state shortcuts for C-c C-t: + +- m (mpv) :: PLAYING - -stream-play-video, emacsconf-stream-set-talk-info, publish the files to the media directory +- q (Q&A) :: CLOSED_Q +- o (open) :: update the BBB redirect URLs to let people into the room +- u (unstreamed) +- r (to archive) + +You can leave the emacsclient with ~C-x 5 0~ + + +**** Do Q&A + +From the emacsclient on orga@res.emacsconf.org, you can open various talk-related things: +- emacsconf-stream-open-pad +- emacsconf-stream-join-qa +- emacsconf-stream-join-chat + +Alternatively, you can switch to the VNC viewer and use the links in +file:///data/emacsconf/2022/index-gen.html or +file:///data/emacsconf/2022/index-dev.html . + +For Q&A, you may want to have the Etherpad on the left, the BBB Q&A or +IRC chat on the right, and the terminal and OBS windows on +workspace 2. + +*** Other tasks as needed + +**** Display emergency news / announcements + +M-x emacsconf-stream-broadcast to send a message to both streams +or M-x emacsconf-stream-set-news to send a message to one stream. + +If that doesn't work, edit the news file directly with: +~ssh emacsconf-$TRACK@res.emacsconf.org > ~/news.txt~ + +If that doesn't work, use the VNC session to switch to an Emacs window +and type your message in. + +**** Kill the VNC server: + +ssh emacsconf-$TRACK@res.emacsconf.org "vncserver -kill" + +| ~/bin/track-obs | start OBS with the track's profile and scene collection | +| ~/bin/track-mpv file.webm | play the file using the track's sink | + +**** Making OBS scenes + +Making OBS scenes is pretty straightforward as you can move the +different blocks on your scene in the preview window. However, it’s +important to make sure that your video-captures and your overlays are +snapping properly to the edges of the view-port. To do this, make sure +to right-click on the block inside the preview window, and try the +different fitting options (fit by width, height, etc.) until you find +one that works best. + +We’ll probably be streaming at 720p, but since we’re also considering +a 1080p update, try to create your overlays in a format or a resolution +that would support resizing. + +*** Other notes +There are sockets in the home directory for MPV control if you want to keep that process. +echo '{ "command": ["loadfile", "test2.webm"] }' | socat - ~/mpv-socket-emacsconf-dev +*** DONE Test and document command-line way of managing audio :sachac: +CLOSED: [2022-11-19 Sat 11:14] DEADLINE: <2022-11-20 Sun> + +*** DONE Move my conf.org setup to res so that we can control everything from there +CLOSED: [2022-11-03 Thu 14:10] +*** DONE Set timers for changing todo state +CLOSED: [2022-11-13 Sun 11:13] + +#+begin_src emacs-lisp :eval no + (defun emacsconf-schedule-test-buffer (info) + (mapcar (lambda (o) (plist-put o :buffer "1") o) info)) + (let ((emacsconf-schedule-strategies '(emacsconf-schedule-test-buffer))) + (emacsconf-stream-schedule-timers (emacsconf-schedule-prepare + (emacsconf-schedule-inflate-sexp + `(("Test gen" :start ,(format-time-string "%Y-%m-%d %H:%M" + (time-add (current-time) (seconds-to-time 60)))) + (journalism :time "1") + (school :time "2") + (handwritten :time "1") + ("Test dev" :start ,(format-time-string "%Y-%m-%d %H:%M" + (time-add (current-time) (seconds-to-time 60)))) + (treesitter :time "2") + (lspbridge :time "1") + (asmblox :time "1")))))) + #+end_src + +the dev one worked, but the gen one gets +Couldn’t find local shell prompt for /bin/sh +Tramp: Opening connection *Async Shell Command* for emacsconf-gen@res.emacsconf.org using ssh...failed + +Maybe I need to stagger them, or maybe I need to use a shell command. +Changed to call ssh directly instead of using tramp. + +*** DONE Figure out how to work with the layout +CLOSED: [2022-11-08 Tue 12:32] +https://i3wm.org/docs/layout-saving.html +*** DONE Allow per-track configuration of todo hooks :sachac: +CLOSED: [2022-11-08 Tue 12:49] +emacsconf-todo-hooks +*** CANCELLED [#C] Use xdotool to automate joining BBB in Firefox (signing in, clicking on listen only) +CLOSED: [2022-11-08 Tue 12:32] +*** CANCELLED [#C] Experiment with sharing part of the screen so that there's space for us to work a little off-screen +CLOSED: [2022-11-08 Tue 12:32] + +We might just have to rely on xdotool to move windows the way we want them +Window fixes that didn't work +- https://obsproject.com/forum/threads/solved-window-capture-black-screen.47082/ +- https://www.reddit.com/r/obs/comments/kas5ka/obs_window_capture_xcomposite_black_screen/ + +*** DONE Set up scenes and try them +CLOSED: [2022-10-30 Sun 21:54] +*** DONE Set up text source for URL +CLOSED: [2022-10-30 Sun 21:54] +*** DONE Create Ansible tasks for setting up sinks for MPV and Firefox for the streams, and adding the scenes appropriately +CLOSED: [2022-10-30 Sun 21:54] +*** DONE See if I can even Ansible-up the rest of the tasks +CLOSED: [2022-10-30 Sun 21:54] +like starting up Firefox and mpv and everything +*** CANCELLED obs-websocket control of OBS on the server +CLOSED: [2022-11-19 Sat 11:14] +so that the streamer can adjust volume offscreen? +*** DONE document such that someone else could use/fix it +CLOSED: [2022-11-19 Sat 11:15] +*** DONE recruit at least one more person to help operate the "video bouncer" +CLOSED: [2022-11-19 Sat 11:15] +*** Other notes +- bandali doesn't have much cognitive bandwidth at the moment, so we can keep things simple with OBS on laptops + +- Issue: zaeph was dropping frames and couldn’t pay attention to as many things as he wanted +- Issue: corwin needs assistance to not be locked in his chair for the whole conf. Premptively, zaeph can do it by broadcasting OBS scenes via the rtmp (instead of just his webcam). +- With a long day, we may want to be able to schedule hosts/streamers/publishers in shifts +- Ideal: Easy reproducible setup to spin up an OBS VM with scenes set up, allowing multiple users to connect to it at the same time. Maybe x2go or vnc? VMs with 8 vCPUs and a vGPU cost more, so it would be good to figure out what's needed, spin it down, and then spin it up maybe the day before or something like that. +- Plus points if we can control the OBS via password-protected websocket so we can tell it to switch scenes (and even more points if we do so from Emacs, maybe via that obs-websocket.el ;) ). MPV is also controllable via IPC, so we can use the same MPV player and then switch videos around. Maybe mpvc? https://unix.stackexchange.com/questions/664728/how-can-i-control-mpv-in-command-line +- Probably Linode's Dedicated 32 GB + RTX6000 GPU x1 at $1.50 an hour for 2-3 days + dev time, since live.emacsconf.org is in Linode as well +- We should also look into normalization across the board, especially if we have BBB participants. pipewire + easyeffects on the box might be the easiest way to do it. + + + + +- https://docs.vdo.ninja/ +- Live Streaming using low configuration vps https://www.youtube.com/watch?v=3iBYYgkG1eM&t=953 +- https://snowmix.sourceforge.io/Examples/input.html +- https://www.google.com/url?sa=t&source=web&rct=j&url=https://m.youtube.com/watch%3Fv%3D1y-DUYiECWQ&ved=2ahUKEwjPru_TqOv6AhVMkokEHXL9Dm4QtwJ6BAgqEAI&usg=AOvVaw17mbCEiFL6dGVY4YEBufcy +- [[https://news.ycombinator.com/item?id=24633139][OBS Studio 26.0 | Hacker News]] +- https://github.com/mviereck/x11docker#sound +- https://vcs.fsf.org/?p=streamdesktop.git;a=tree +- https://opensource.com/article/20/5/conference-free-software +- https://github.com/soonum/hubangl +- https://obsproject.com/forum/threads/run-obs-on-vm-in-the-cloud.122543/ +** DONE [#C] Smoothen captioning workflow :sachac: +CLOSED: [2022-11-19 Sat 11:10] +:PROPERTIES: +:CUSTOM_ID: caption-workflow +:END: +It looks like OpenAPI needs a little less editing in terms of +capitalization and punctuation, but it produces longer captions +(likely a 30-second sliding window). I'll try to upload both YT and +OpenAPI captions so that people can decide what they like. +*** DONE Figure out why it's choking on SRV2 +CLOSED: [2022-10-30 Sun 00:13] +Can I use aeneas for alignment instead? + +Reflow the .txt file and reupload to res if needed +call ../run-aeneas.sh from the directory with the opus or ogg and the txt file + +sachac@res-emacsconf:~/current/meetups$ python3 -m aeneas.tools.execute_task emacsconf-2022-meetups--attending-and-organizing-emacs-meetups--bhavin-gandhi--main.opus reflowed.srt "task_language=eng|os_task_file_format=json|is_text_type=subtitles" output.json + +I might try out lhotse and torchaudio someday, but it's low priority. aeneas seems to do a reasonable job of +*** DONE [#C] Move publishing the backstage index to res so that we can trigger it after the files are uploaded +CLOSED: [2022-11-19 Sat 11:09] +:PROPERTIES: +:CREATED: [2022-10-21 Fri 16:45] +:END: + +*** DONE Compare large, medium, and small models +CLOSED: [2022-10-23 Sun 08:32] +12 threads + +Original file: 21:16 21 minutes +| | Hours | Mult | Notes | +| [[https://media.emacsconf.org/2022/backstage/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--large.vtt][Large]] | 2:49 | 8 | | +| [[https://media.emacsconf.org/2022/backstage/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--medium.vtt][Medium]] | 2:03 | 5.9 | | +| [[https://media.emacsconf.org/2022/backstage/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--small.vtt][Small]] | 0:40 | 2 | More run-on sentences | + +Large and medium might do better on a system with a GPU. I'll default to the small model for now. + +*** DONE Commit subed-tsv so that people can try a cleaner output +CLOSED: [2022-10-23 Sun 09:59] +:PROPERTIES: +:Effort: 1:00 +:QUANTIFIED: Emacs +:END: +:LOGBOOK: +CLOCK: [2022-10-23 Sun 08:32]--[2022-10-23 Sun 09:59] => 1:27 +:END: +*** DONE Investigate more granular timestamps for the output from OpenAPI Whisper +CLOSED: [2022-10-25 Tue 11:14] + +https://git.emacsconf.org/emacsconf-ansible/tree/roles/caption/templates + +*** DONE Upload srv2 from YouTube for word-level +CLOSED: [2022-10-22 Sat 23:16] +:PROPERTIES: +:CREATED: [2022-10-22 Sat 14:38] +:END: +*** CANCELLED [#C] Compare with Google Cloud Speech API +CLOSED: [2022-10-29 Sat 09:58] +~/code/speech + +*** DONE E-mail for bringing new captioning volunteers onboard +CLOSED: [2022-10-29 Sat 09:58] +#+begin_src emacs-lisp +(defun emacsconf-mail-backstage-intro (volunteer &optional template) + (interactive (list (emacsconf-complete-volunteer))) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "backstage-intro")) + (assoc-default "EMAIL" volunteer 'string=) + (list + :backstage "https://media.emacsconf.org/2022/backstage/" + :backstage-user "emacsconf" + :backstage-password emacsconf-backstage-password + :conf-name emacsconf-name + :year emacsconf-year + :name (assoc-default "NAME_SHORT" volunteer 'string=) + :email (assoc-default "EMAIL" volunteer 'string=)))) +#+end_src +**** Template +:PROPERTIES: +:TO: ${email} +:FUNCTION: emacsconf-mail-backstage-intro +:EMAIL_ID: backstage-intro +:SUBJECT: ${conf-name} ${year}: Thanks for volunteering! +:END: + +Hi ${name}! + +Thank you for volunteering for ${conf-name} ${year}! + +We've set up ${backstage} as the backstage area where you can view the +videos and resources uploaded so far. You can access it with the +username "${backstage-user}" and the password "${backstage-password}". +Please keep the backstage password and other speakers' talk resources +secret. + +For some ideas on ways to help, you can check out +https://emacsconf.org/2022/volunteer/ . You can also suggest other +things you might be interested in. + +You can ask questions or chat with other volunteers by e-mailing the +mailing list at emacsconf-org@gnu.org or dropping by #emacsconf on the +libera.chat IRC network. You can also e-mail me or +emacsconf-org-private@gnu.org if you have private questions. + +Thank you again for your help! =) + +Sacha Chua + +*** DONE E-mail for bringing new captioning volunteers onboard +CLOSED: [2022-10-29 Sat 09:58] +#+begin_src emacs-lisp +(defun emacsconf-mail-captioning-intro (volunteer &optional template) + (interactive (list (emacsconf-complete-volunteer) + (emacsconf-mail-merge-get-template "captioning-intro"))) + (emacsconf-mail-prepare + (or template (emacsconf-mail-merge-get-template "captioning-intro")) + (assoc-default "EMAIL" volunteer 'string=) + (list + :backstage "https://media.emacsconf.org/2022/backstage/" + :backstage-user "emacsconf" + :backstage-password emacsconf-backstage-password + :conf-name emacsconf-name + :year emacsconf-year + :name (assoc-default "NAME_SHORT" volunteer 'string=) + :email (assoc-default "EMAIL" volunteer 'string=)))) +#+end_src +**** Template +:PROPERTIES: +:TO: ${email} +:FUNCTION: emacsconf-mail-captioning-intro +:EMAIL_ID: captioning-intro +:SUBJECT: ${conf-name} ${year}: Thanks for volunteering to help with captions! +:END: + +Hi ${name}! + +Thank you for volunteering to help with the captions for ${conf-name} +${year}! Last year, we were able to get almost all the talks captioned +in time for streaming. Participants found them very useful for +understanding different technical terms, names, accents, and so on. +We'd love to be able to pull that off again this year, and it would be +great to have you on board. + +We've set up ${backstage} as the backstage area where you can view the +videos and resources uploaded so far. You can access it with the +username "${backstage-user}" and the password "${backstage-password}". +Please keep the backstage password and resources secret. If you see a +talk that you'd like to caption, you can e-mail me at +sacha@sachachua.com and I can reserve it for you. Then you can correct +any misrecognized words, fix capitalizations, remove filler words as +needed, and so on. + +You'll probably want to work with either the VTT or the TXT versions +(VTT is WebVTT format and has timestamps), but you can check the other +talk resources in case the speaker has posted scripts or other useful +things. Both VTT and TXT are plain text, so feel free to use your +favourite text or subtitle editor. I've posted a brief demo of how I +edit captions at +https://media.emacsconf.org/2022/backstage/editing-captions.html , and +you can find more captioning tips at https://emacsconf.org/captioning/ +. You can convert it to whatever format you like. If you prefer to +work with plain text, we can figure out the timestamps afterwards. + +Let me know if you want to reserve a talk for captioning or if you have +any questions or suggestions. We're also in the #emacsconf-org channel +on the libera.chat IRC network, which you can connect to with your +favourite IRC client or through the web-based interface at +https://chat.emacsconf.org/ . + +Sacha Chua +*** DONE [#C] Support cue IDs in subed-vtt.el +CLOSED: [2022-11-11 Fri 08:58] +*** CANCELLED [#C] jiwer · PyPI - measure error rate +CLOSED: [2022-11-19 Sat 11:09] +:PROPERTIES: +:CREATED: [2022-10-22 Sat 20:59] +:END: + +https://pypi.org/project/jiwer/ + * Communications :PROPERTIES: :CUSTOM_ID: comms |