summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2024-11-14 10:23:07 -0500
committerSacha Chua <sacha@sachachua.com>2024-11-14 10:23:07 -0500
commit3ddf955b120d6e138e0888c87c873a2021f3b076 (patch)
treef616152ee7de1ac140af8b34decdd9e7613097b6
parentf2eee0e0e11479b7b2a2aec54cd58be28cf215b0 (diff)
downloademacsconf-wiki-3ddf955b120d6e138e0888c87c873a2021f3b076.tar.xz
emacsconf-wiki-3ddf955b120d6e138e0888c87c873a2021f3b076.zip
Update org notebook
Diffstat (limited to '')
-rw-r--r--2024/organizers-notebook.md50
-rw-r--r--2024/organizers-notebook/index.org2
-rw-r--r--organizers-notebook.md397
-rw-r--r--organizers-notebook/index.org72
4 files changed, 455 insertions, 66 deletions
diff --git a/2024/organizers-notebook.md b/2024/organizers-notebook.md
index 4fb8981f..e501f8e6 100644
--- a/2024/organizers-notebook.md
+++ b/2024/organizers-notebook.md
@@ -15,18 +15,18 @@ You might also like the [general organizers' notebook](/organizers-notebook) and
- [Phases](#phases)
- [Draft CFP](#cfp)
- [Draft schedule](#draft-schedule)
-- [Check EmacsConf infrastructure](#org8ba949b):project:
- - [bbb.emacsverse.org replacement](#org0424b5e)
- - [IRC web client](#org5a0fcc3)
- - [IRC announcements](#orgfc5854f)
- - [Media](#org34eea83)
- - [Publishing resources to the wiki](#orgbbb5ff7)
- - [Publishing videos to the media server](#orgd35db12)
- - [Playing videos, switching to windows](#org921edcd)
- - [Etherpad](#org31ad763)
- - [Do a dry run](#org11fdfb4)
-- [Processes and notes](#orgca4be3d)
- - [ERC](#orga534b2b)
+- [Check EmacsConf infrastructure](#org5b05724):project:
+ - [bbb.emacsverse.org replacement](#orgf90c350)
+ - [IRC web client](#org47f1067)
+ - [IRC announcements](#org8966827)
+ - [Media](#org75bdf93)
+ - [Publishing resources to the wiki](#orgb420d40)
+ - [Publishing videos to the media server](#org4e0acb2)
+ - [Playing videos, switching to windows](#org40b9e70)
+ - [Etherpad](#org1040525)
+ - [Do a dry run](#org215b633)
+- [Processes and notes](#org73e9be9)
+ - [ERC](#orgedf8032)
- [Decisions](#decisions)
- [BigBlueButton replacement](#bbb)
- [Support code](#support-code)
@@ -272,7 +272,7 @@ Notes:
- [learning](https://emacsconf.org/2024/talks/learning "Survival of the skillest: Thriving in the learning jungle"), [sharing](https://emacsconf.org/2024/talks/sharing "So you want to be an Emacs-fluencer?"), [literate](https://emacsconf.org/2024/talks/literate "Literate programming for the 21st Century") will probably be good for a general audience
-<a id="org8ba949b"></a>
+<a id="org5b05724"></a>
# TODO Check EmacsConf infrastructure :project:
@@ -288,7 +288,7 @@ Notes:
- [ ] YouTube
-<a id="org0424b5e"></a>
+<a id="orgf90c350"></a>
## WAITING bbb.emacsverse.org replacement
@@ -303,7 +303,7 @@ Notes:
### TODO Create meeting rooms for each speaker
-<a id="org5a0fcc3"></a>
+<a id="org47f1067"></a>
## IRC web client
@@ -311,7 +311,7 @@ Notes:
### WAITING Ask libera.chat to increase connections allowed from chat.emacsconf.org on Dec 7 and 8
-<a id="orgfc5854f"></a>
+<a id="org8966827"></a>
## IRC announcements
@@ -322,7 +322,7 @@ Notes:
### TODO Confirm automated IRC announcements from res
-<a id="org34eea83"></a>
+<a id="org75bdf93"></a>
## Media
@@ -336,19 +336,19 @@ Notes:
You can generate the index with `emacsconf-publish-update-media`.
-<a id="orgbbb5ff7"></a>
+<a id="orgb420d40"></a>
## TODO Publishing resources to the wiki
ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags publish
-<a id="orgd35db12"></a>
+<a id="org4e0acb2"></a>
## TODO Publishing videos to the media server
-<a id="org921edcd"></a>
+<a id="org40b9e70"></a>
## Playing videos, switching to windows
@@ -359,7 +359,7 @@ ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags publish
### TODO Document how to get that set up again
-<a id="org31ad763"></a>
+<a id="org1040525"></a>
## Etherpad
@@ -370,7 +370,7 @@ ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags publish
### TODO Generate the main index
-<a id="org11fdfb4"></a>
+<a id="org215b633"></a>
## TODO Do a dry run
@@ -381,12 +381,12 @@ ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags publish
### TODO Test connecting to VNC and streaming via OBS
-<a id="orgca4be3d"></a>
+<a id="org73e9be9"></a>
# Processes and notes
-<a id="orga534b2b"></a>
+<a id="orgedf8032"></a>
## ERC
@@ -473,7 +473,7 @@ Some options:
- Let&rsquo;s plan for a week at high capacity. (\* 0.22 24 7) USD 36.96
- and a month of 10GB, possibly up to 30GB. USD 3
- That&rsquo;s probably small enough that it doesn&rsquo;t make as much sense to try to fully spin down for a week in between now and the conference (\* 0.04 24 7) - which would save USD 6.72 but require figuring out backing up, etc.
- - **Option B: Run a slightly larger shared CPU instance from now until shortly after the conference** in case BBB does not work for installation/testing with less memory; block storage probably not needed
+ - **Option B: Run a slightly larger shared CPU instance from now until shortly before the conference, then scale up** in case BBB does not work for installation/testing with less memory; block storage probably not needed
- (\* 0.07 24 7 3) USD 35.28 for 8GB, total (+ 35.28 36.96) USD 72.24
- (\* 0.14 24 7 3) USD 70.56 for 16GB, total (+ 70.56 36.96) USD 107.52
diff --git a/2024/organizers-notebook/index.org b/2024/organizers-notebook/index.org
index 72b38de7..bbb1032a 100644
--- a/2024/organizers-notebook/index.org
+++ b/2024/organizers-notebook/index.org
@@ -1,4 +1,4 @@
-# [[elisp:(progn (memoize 'emacsconf-get-talk-info "5 seconds") (org-md-export-to-markdown) (memoize-restore 'emacsconf-get-talk-info))][Export this file to Markdown]]
+# [[elisp:(progn (memoize 'emacsconf-get-talk-info "5 seconds") (org-md-export-to-markdown) (memoize-restore 'emacsconf-get-talk-info))][EPpxport this file to Markdown]]
#+TAGS: emacsconf
# [[elisp:(memoize 'emacsconf-get-talk-info "5 seconds")][Memoize emacsconf-get-talk-info]] - [[elisp:(memoize-restore 'emacsconf-get-talk-info)][Unmemoize]]
#+todo: TODO(t) SOMEDAY STARTED INPROGRESS(i) WAITING(w) STANDBY(s) BLOCKED(b) | DONE(x) CANCELLED(c)
diff --git a/organizers-notebook.md b/organizers-notebook.md
index f5d6206b..7e338275 100644
--- a/organizers-notebook.md
+++ b/organizers-notebook.md
@@ -20,11 +20,32 @@ This document is the general organizers' notebook that can be used as a starting
- [Create the public organizers&rsquo; notebook in the wiki](#starting-up-the-conference-planning-process-create-the-public-organizers-notebook-in-the-wiki)
- [Phases and lessons learned](#phases-and-lessons-learned)
- [Draft CFP](#phases-and-lessons-learned-draft-cfp)
- - [Process proposals](#orge2fe34a)
- - [Accept proposals](#orgac059dd)
+ - [Announce](#org3608282)
+ - [Process proposals](#orgf94fb47)
+ - [Accept proposals](#org74dc473)
- [Draft schedule](#draft-schedule)
+ - [Set up backstage and upload](#org4d60026)
+ - [Post the schedule](#org42db0c4)
+ - [Process uploaded files](#org60f6486)
+ - [Generate assets](#org6e66fc5)
+ - [Prepare the infrastructure](#org6983794)
+ - [Getting ready for captions](#orga1601de)
+- [General infrastructure](#orga2c0410)
+ - [Icecast](#icecast)
+ - [Watching pages](#watch)
+ - [VNC](#vnc)
+ - [Streaming with OBS](#org0a63f1c)
+ - [IRC web client](#orgaffe686)
+ - [Etherpad](#org628c2fe)
+ - [Publishing media to the server and to the wiki](#media)
+ - [Automated IRC announcements](#org3ca9756)
+ - [Manual IRC announcements](#org4cbb72c)
+ - [Low-res stream](#org84b7e1e)
+ - [Restream to YouTube](#org1e5d62e)
+ - [Restream to Toobnix](#orga5282bc)
- [Other process notes](#other)
- [Adding another user to BBB](#bbb-user)
+ - [Ansible](#org8ae0b84)
<a id="starting-up-the-conference-planning-process"></a>
@@ -125,7 +146,15 @@ Put inside double square brackets: `!template id=pagedraft`
- Put the speaker introduction right after the talk description for easier web page copying.
-<a id="orge2fe34a"></a>
+<a id="org3608282"></a>
+
+## Announce
+
+- Post CFP to emacsconf-discuss, reddit.com/r/emacs, and in Emacs News
+- Submit to <https://foss.events/>
+
+
+<a id="orgf94fb47"></a>
## Process proposals
@@ -154,7 +183,7 @@ When proposals come in:
PUBLIC\_EMAIL
-<a id="orgac059dd"></a>
+<a id="org74dc473"></a>
## Accept proposals
@@ -187,6 +216,359 @@ For each talk:
- Add missing items to plan
+<a id="org4d60026"></a>
+
+## Set up backstage and upload
+
+See <a href="https://git.emacsconf.org/emacsconf-ansible/tree/README.org">README.org</a>.
+
+Lessons learned:
+
+- Next year, let&rsquo;s get upload.emacsconf.org in place as the domain name so that people don&rsquo;t try to FTP files to it.
+
+
+<a id="org42db0c4"></a>
+
+## Post the schedule
+
+- <elisp:(setq emacsconf-publishing-phase 'schedule)>
+- <elisp:emacsconf-publish-info-pages>
+- <elisp:emacsconf-publish-schedule-org-files>
+- <elisp:emacsconf-ical-generate-all>
+- Update talks.md to refer to watch.md as well
+
+
+<a id="org60f6486"></a>
+
+## Process uploaded files
+
+Basic setup:
+
+1. Set up the media server and symlinks: <a href="https://git.emacsconf.org/emacsconf-ansible/tree/README.org">README.org</a> (Media).
+2. Set up the prerec processing areas on res: <a href="https://git.emacsconf.org/emacsconf-ansible/tree/README.org">README.org</a> (Processing prerecs).
+3. Set up the caption processor on res: <a href="https://git.emacsconf.org/emacsconf-ansible/tree/README.org">README.org</a> (Captioning).
+
+Process:
+
+1. Review uploaded files with <elisp:emacsconf-upload-dired>
+2. Open the JSON for the file you want to process and use <elisp:emacsconf-upload-copy-from-json> .
+ If more than one file uses the same extension, provide a suffix to disambiguate them.
+3. On res:
+ 1. Create a directory ~/current/files/$slug.
+ 2. Copy the uploaded file from ~/cache as `$video_slug--original.$extension`, or use `rename-original.sh $slug $file`.
+ 3. Call `process-prerec.sh $file`.
+4. When the screens are finished, do locally:
+ 1. update-cache on my computer.
+ 2. <elisp:emacsconf-publish-cache-video-data> or <elisp:emacsconf-cache-all-video-data>
+ 3. <elisp:emacsconf-publish-backstage-index>
+
+
+<a id="org6e66fc5"></a>
+
+## Generate assets
+
+
+### In-between pages
+
+- Make the $year/assets/in-between directory and copy the template.svg from the previous year.
+- <elisp:emacsconf-stream-generate-in-between-pages>
+
+
+### Intros
+
+- In an empty VTT file, <elisp:emacsconf-subed-intro-subtitles>
+- Record the audio and get captions
+- Splice together into a file that will be processed with subed-record-compile-video.
+
+
+<a id="org6983794"></a>
+
+## Prepare the infrastructure
+
+Checklist:
+
+- [ ] IRC
+ - [ ] Manual announcements
+ - [ ] Automated announcements
+- [ ] Web conference
+- [ ] Streaming assets
+ - [ ] Overlays
+ - [ ] Intros
+- [ ] OBS
+- [ ] VNC
+- [ ] Publishing to the wiki
+- [ ] Publishing to the media server
+- [ ] Etherpad
+- [ ] Mumble
+- [ ] Icecast
+
+
+<a id="orga1601de"></a>
+
+## Getting ready for captions
+
+Onboarding:
+
+- Add captioner to conf.org with the `:caption:` tag, under a Volunteers heading with the `volunteer` tag. Make sure the `EMAIL` property is set.
+- Add captioner to emacsconf-org mailing list.
+- Send backstage information <elisp:emacsconf-mail-backstage-info-to-volunteer> . (Can be sent to all captioning volunteers with <elisp:emacsconf-mail-backstage-info-to-captioning-volunteers>)
+
+
+<a id="orga2c0410"></a>
+
+# General infrastructure
+
+
+<a id="icecast"></a>
+
+## Icecast
+
+Success: You can use [OBS+VNC to record](#obs-instructions), and the results can be viewed by mpv.
+
+- [X] Gen
+- [X] Dev
+
+Also, recordings are available in /data.
+
+New year:
+
+1. Reprovision with
+
+ ansible-playbook -i inventory.yml prod-playbook.yml --tags stream
+
+ so that the year is updated in the configuration.
+2. SSH to live0.emacsconf.org and run `/etc/init.d/emacsconf stop`. Confirm that icecast has stopped with `ps | grep emacsconf`; if not, kill the process.
+ Start it again with `/etc/init.d/emacsconf start`
+3. To test, you can use FFmpeg like this for the gen stream:
+
+ ffmpeg -y -f lavfi -i testsrc=size=1280x720:rate=10 -i background-music.opus \
+ -c:v libvpx -b:v 500K -crf 25 -b:a 128k \
+ -content_type video/webm "icecast://emacsconf:$EMACSCONF_ICECAST_SOURCE_PASSWORD@live0.emacsconf.org:8001/gen.webm"
+
+ For dev:
+
+ ffmpeg -y -f lavfi -i testsrc=size=1280x720:rate=10 -i background-music.opus \
+ -c:v libvpx -b:v 500K -crf 25 -b:a 128k \
+ -content_type video/webm "icecast://emacsconf:$EMACSCONF_ICECAST_SOURCE_PASSWORD@live0.emacsconf.org:8001/dev.webm"
+
+ and then view it with
+
+ mpv https://live0.emacsconf.org/gen.webm
+
+
+<a id="watch"></a>
+
+## Watching pages
+
+Success: You can watch at <https://live.emacsconf.org>.
+
+- [X] <https://live.emacsconf.org> goes to the current year&rsquo;s page.
+- [X] gen stream works in the browser
+- [X] dev stream works in the browser
+- [X] Schedule is correct
+
+New year:
+
+1. ansible-playbook -i inventory.yml prod-playbook.yml &#x2013;tags live
+2. Republish with <elisp:emacsconf-publish-watch-pages>.
+3. Update front:/var/www/live.emacsconf.org.
+
+Set up test streams (see ffmpeg instructions from [Icecast](#icecast)) and then:
+
+
+<a id="vnc"></a>
+
+## VNC
+
+We use VNC to connect to the X servers on res.emacsconf.org so that we can stream from it.
+
+Success:
+
+- [X] Confirm that you can connect to emacsconf-gen via VNC
+- [X] Confirm that you can connect to emacsconf-dev via VNC
+
+Setting up
+
+- <elisp:emacsconf-publish-res-index>
+
+
+<a id="vnc-instructions"></a>
+
+#### Instructions
+
+NOTE: VNC+OBS doesn&rsquo;t work well if you have a window manager that
+automatically resizes windows, like i3. Please configure your window
+manager so that the VNC window is not resized.
+
+1. Install a VNC viewer on your system (ex: tigervnc-viewer).
+
+2. 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
+
+3. Copy the password:
+
+ scp emacsconf-$TRACK@res.emacsconf.org:~/.vnc/passwd vnc-passwd-$TRACK -p $SSH\_PORT
+
+4. Forward your local ports and connect via VNC viewer to the
+ appropriate forwarded port from your laptop:
+
+ 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 &
+
+If you get the following error:
+
+ channel 2: open failed: connect failed: Connection refused
+ CConn: End of stream
+ CConn: The connection was dropped by the server before the session could
+ be established.
+
+then the VNC server hasn&rsquo;t started yet. You can start it with
+
+ ssh emacsconf-$TRACK@res.emacsconf.org -p $SSH_PORT /home/emacsconf-$TRACK/bin/track-vnc
+
+and then connect with:
+
+ xvncviewer 127.0.0.1:$TRACK_PORT -shared -geometry 1280x720 -passwd vnc-passwd-$TRACK &
+
+
+<a id="org0a63f1c"></a>
+
+## Streaming with OBS
+
+Success: Confirm that you can stream
+
+- [X] gen
+- [X] dev
+
+New year: reprovision with
+
+ ansible-playbook -i inventory.yml prod-playbook.yml --tags obs
+
+so that the year is updated in the shell scripts.
+
+
+<a id="obs-instructions"></a>
+
+#### Instructions
+
+1. [Connect to the VNC session for the track.](#vnc-instructions)
+
+2. Start **recording** (not streaming). If you don&rsquo;t see OBS when you connect, it&rsquo;s probably on workspace 2, so you can switch with Alt-2. If you still don&rsquo;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.
+
+3. Verify with MPV on your local system:
+
+ mpv https://live0.emacsconf.org/$TRACK.webm &
+
+
+### Icecast
+
+Success: You can use [OBS+VNC to record](#obs-instructions), and the results can be viewed by mpv.
+
+- [ ] gen
+- [ ] dev
+
+New year: reprovision with
+
+ ansible-playbook -i inventory.yml prod-playbook.yml --tags stream
+
+so that the year is updated in the configuration.
+
+This is on live.emacsconf.org and can be restarted with `/etc/init.d/emacsconf restart`.
+
+
+<a id="orgaffe686"></a>
+
+## IRC web client
+
+Success:
+
+- [X] You can join from <https://chat.emacsconf.org>
+- [X] You can join from <https://live.emacsconf.org> and the channels end up as the latest ones
+
+Remember to schedule a task to ask libera.chat to increase the number of users it will accept from chat.emacsconf.org to avoid connection exhaustion errors.
+
+Message I&rsquo;ve posted to support@libera.chat:
+
+Thank you for running libera.chat. We&rsquo;re looking forward to using IRC
+(#emacsconf-gen, #emacsconf-dev) for the discussions for the upcoming
+EmacsConf (Dec 7-8, <https://emacsconf.org>). In the past, we&rsquo;ve needed to
+coordinate with Libera staff to increase the number of connections
+allowed from chat.emacsconf.org during conference days in order to avoid
+connection exhaustion errors. Is that something we can plan now or would
+you like me to bring it up a few days before the conference?
+
+
+<a id="org628c2fe"></a>
+
+## Etherpad
+
+Success:
+
+- [X] pad.emacsconf.org redirects to this year&rsquo;s entry
+- [X] Each talk has its own Etherpad
+
+
+<a id="media"></a>
+
+## Publishing media to the server and to the wiki
+
+Start of year:
+
+1. Set `media_protect_root` to true in Ansible `group_vars/all.yml`.
+2. `ansible-playbook -i inventory.yml prod-playbook.yml --tags media`
+3. Generate the index with `emacsconf-publish-update-media`
+
+Confirm by setting a submitted talk to `PLAYING` and testing with
+<elisp:emacsconf-publish-media-files-on-change> . The public media
+directory should have the files and the entry should be in the index.
+Switching it back to `TO_STREAM` and calling
+<elisp:emacsconf-publish-media-files-on-change> should remove it.
+
+
+### TODO Switch public media to unprotected root before the conference
+
+1. Clear public media directory.
+2. Set `media_protect_root` to false in Ansible `group_vars/all.yml`.
+3. `ansible-playbook -i inventory.yml prod-playbook.yml --tags media`
+
+You can generate the index with `emacsconf-publish-update-media`.
+
+
+<a id="org3ca9756"></a>
+
+## Automated IRC announcements
+
+Success:
+
+- [ ] When a talk starts playing, it is announced in the relevant channel
+
+
+<a id="org4cbb72c"></a>
+
+## Manual IRC announcements
+
+Success:
+
+- [X] You can /opall, /conftopic, and /broadcast
+
+
+<a id="org84b7e1e"></a>
+
+## Low-res stream
+
+
+<a id="org1e5d62e"></a>
+
+## Restream to YouTube
+
+
+<a id="orga5282bc"></a>
+
+## Restream to Toobnix
+
+
<a id="other"></a>
# Other process notes
@@ -199,3 +581,10 @@ For each talk:
ssh bbb.emacsverse.org
docker exec -it greenlight-v2 bundle exec rake user:create["USERNAME","EMAIL","PASSWORD","user"]
+
+<a id="org8ae0b84"></a>
+
+## Ansible
+
+ git clone git@git.emacsconf.org:pub/emacsconf-ansible
+
diff --git a/organizers-notebook/index.org b/organizers-notebook/index.org
index 59c73611..f8a67d44 100644
--- a/organizers-notebook/index.org
+++ b/organizers-notebook/index.org
@@ -287,7 +287,6 @@ New year:
#+begin_src sh
mpv https://live0.emacsconf.org/gen.webm
#+end_src
-
** Watching pages
:PROPERTIES:
:CUSTOM_ID: watch
@@ -306,40 +305,6 @@ New year:
Set up test streams (see ffmpeg instructions from [[#icecast][Icecast]]) and then:
-
-** IRC web client
-
-Success:
-- [X] You can join from https://chat.emacsconf.org
-- [X] You can join from https://live.emacsconf.org and the channels end up as the latest ones
-
-Remember to schedule a task to ask libera.chat to increase the number of users it will accept from chat.emacsconf.org to avoid connection exhaustion errors.
-
-Message I've posted to support@libera.chat:
-
-Thank you for running libera.chat. We're looking forward to using IRC
-(#emacsconf-gen, #emacsconf-dev) for the discussions for the upcoming
-EmacsConf (Dec 7-8, https://emacsconf.org). In the past, we've needed to
-coordinate with Libera staff to increase the number of connections
-allowed from chat.emacsconf.org during conference days in order to avoid
-connection exhaustion errors. Is that something we can plan now or would
-you like me to bring it up a few days before the conference?
-** Etherpad
-
-Success:
-
-- [X] pad.emacsconf.org redirects to this year's entry
-- [X] Each talk has its own Etherpad
-
-** Manual IRC announcements
-
-Success:
-
-- [ ] You can /opall, /conftopic, and /broadcast
-
-
-** Automated IRC announcements
-
** VNC
:PROPERTIES:
:CUSTOM_ID: vnc
@@ -451,7 +416,30 @@ ansible-playbook -i inventory.yml prod-playbook.yml --tags stream
so that the year is updated in the configuration.
This is on live.emacsconf.org and can be restarted with =/etc/init.d/emacsconf restart=.
-** Public media
+** IRC web client
+
+Success:
+- [X] You can join from https://chat.emacsconf.org
+- [X] You can join from https://live.emacsconf.org and the channels end up as the latest ones
+
+Remember to schedule a task to ask libera.chat to increase the number of users it will accept from chat.emacsconf.org to avoid connection exhaustion errors.
+
+Message I've posted to support@libera.chat:
+
+Thank you for running libera.chat. We're looking forward to using IRC
+(#emacsconf-gen, #emacsconf-dev) for the discussions for the upcoming
+EmacsConf (Dec 7-8, https://emacsconf.org). In the past, we've needed to
+coordinate with Libera staff to increase the number of connections
+allowed from chat.emacsconf.org during conference days in order to avoid
+connection exhaustion errors. Is that something we can plan now or would
+you like me to bring it up a few days before the conference?
+** Etherpad
+
+Success:
+
+- [X] pad.emacsconf.org redirects to this year's entry
+- [X] Each talk has its own Etherpad
+** Publishing media to the server and to the wiki
:PROPERTIES:
:CUSTOM_ID: media
:END:
@@ -475,6 +463,18 @@ elisp:emacsconf-publish-media-files-on-change should remove it.
3. =ansible-playbook -i inventory.yml prod-playbook.yml --tags media=
You can generate the index with =emacsconf-publish-update-media=.
+** Automated IRC announcements
+
+Success:
+
+- [ ] When a talk starts playing, it is announced in the relevant channel
+
+** Manual IRC announcements
+
+Success:
+
+- [X] You can /opall, /conftopic, and /broadcast
+
** Low-res stream
** Restream to YouTube
** Restream to Toobnix