summaryrefslogblamecommitdiffstats
path: root/playbook.md
blob: cbee525a1b87542b580a39a6810678634bcb3d55 (plain) (tree)
1
2
3
4
5
6
7
8


                   
                          



                                       



                                                            
                                                       
                             





                                           
                                         



                                                                                    

                                                                                                    









                                                                                             







                                                                                        
                                                      










                                                                                                        
                                                                          
                                                      
 
                                                                                                                                         
 
 
                  
 













                                                                                

                                












                                   
                                                                                              















                                                                                





                                                                                                                                                                   
                                                                                                                                                       
     














                                                       





                                                       








                                                                                                                                               























                                                                                                                                                               

















                                                                                                                       



        
                       



                      
                       
























                                                                                                                                                                                     
                       



         




























                                                                              
                        
 

                                          
                                                         
    
                                                                                         

 
                   
 


                              
                  
 


         
                    
 


                   
                                                                                           
                                                                                                                                                                  
                                       

                                                                                             


                                    
                                                                                                                          
                       
                
                                         
                                        
                                                                            
         
                                                                                                                                              








                                                                              
                                 

 
                            


                                
                                                                        
                                                                                   
                                                      
                                                                                              
                                                                                                                                                               

               
                                                                                                                                                                                                                                                                                                                     
                                                                                                                       
    

                                                                                                                                                                                                                                     
                                                                        

                                                         
                                                                                                     

                                                                          

 
                 
 
               
 
 
                     
 
                      
 
                                              

                                                                         
                                     
                                                                                        























                                                                                                                                                                                                                                                                                                                                                       






                                                                                
                                                                            

                                                                                                               
                                                               
                                                                          




                                                                         
                                                              
                                                         


                                                                

 
                    
 
                
 
                                                                                               
                           
              
                                                                                           



                                                                                 
                                                                      
            
                                                                                           
                                                                       
                                                               
                                           
                         
                                                                                  



                                         
                    






                                  

                                                                               
                                                                              






                                                                         
                  
            
                          

                                          
                                     
                          
                             
                                              
                     

                                                                                                                                          





                                                                                         
                      
 



              
                                          

            
                                                          

                                                                            
                                              
                                            

                                                                                                     


                                                                                                                         

                                                                   
                                                                                                                
               
                                            
                                                             
                                                                         
                                                                   



                                                                        
                                            


                                                                         
                                                                          

                                                                  
                                 

 

                  

             
                                                              

                                                                                      
                                                              

 

                

                
                                
                                          
                                          

                                            

                                      

 
                       
 


                     
                               
 


                                                                                            
                                                                                                
 
 
                                 
 






                                                                                                     
                    

                              







                                                                                                                                       
                           
 







                                                                                                                         
                                                                                                                                        
                                     
                                               

 
                               
 
                                                                




                                                                                          
                             
 
                                                                       







                                                                                                  

                      
                                                                       
 
                                                                              

                                                    
                                  

                                  



                                                                                                                                        




                                                                                                           
                                                                            
        
                                                                                                                                                                                                                                                                                                                                  


                                                                    




                                                                                                   

 

                       




                                                                                         

 

                        






                                              

                    

                            
                                                                                  

 
                       










                                                    

                      

                       

                                                                                       

 
                        





                                                         
                                                                                                          






                                                                        

                          

                                       
                                                                                         








                                      

                    



                                                                     
                               
                                                          
                                                                                 
                                                                                          

 

                   


                       


































































































































































































































































































































































                                                                                                                                                                                                                                                  
                        
 











                                                                                                                                                        
 




































































































































































































































































































                                                                                                                                                                                                               
                  





















                                                                                                                    
                                                                                

                               
 
                       







                                                                   

# Table of Contents

-   [Roles/values](#roles)
-   [After the conference](#org9010597)
    -   [Update captions](#org1ede55a)
    -   [Update](#org9a1dcfd)
    -   [Send thanks](#thanks):email:
-   [Thursday or Friday before the conference](#days-before)
-   [On the day of the conference](#day-of)
    -   [Set up](#setup)
        -   [Arrange screens](#screens)
        -   [Start streaming](#start-streaming):stream:
    -   [Talk process](#talk)
        -   [Check in a speaker](#check-in)
        -   [Present talk](#present)
        -   [Publish information](#publish)
        -   [Handle Q&A](#questions)
    -   [Break time](#break)
    -   [End of stream](#end)
    -   [In case of…](#exceptions)
        -   [Last-minute prerecording submission](#last-minute-prerec)
        -   [Last-minute caption update](#last-minute-captions)
        -   [Speaker has not checked in](#missing)
        -   [Speaker does not have a prerec and has not checked in](#really-missing)
        -   [Speaker whose talk was reallocated shows up and has a prerec](#reallocated-prerec)
        -   [Speaker whose talk was reallocated shows up and wants to do it live](#reallocated-live)
        -   [Alternate stream volunteer wants to stream  (nice to have, at risk)](#alternate)
        -   [Pad malfunction or mess-up](#pad-broken)
        -   [CRDT malfunctions](#crdt-broken)
        -   [Conduct guidelines issue](#conduct)
        -   [CHECK is unavailable](#check-gone)
        -   [HOST is unavailable](#host-gone)
        -   [Technical issues during a live presentation](#live-issues)
        -   [Big technical issues with streaming](#stream-issues)
        -   [live0 can't handle the load or is close to network transfer limit](#network)
-   [Before the conference](#before)
    -   [Send calls for proposals](#cfp-mails)
        -   [[ANN] EmacsConf 2021 Call for Proposals](#first-cfp):email:
        -   [Second (and final) call for proposals (closing Sep 30)](#second-cfp):email:
    -   [Accept talks](#accept):email:
        -   [E-mail text](#orgb8732b7)
    -   [Thank speakers for submissions](#acknowledge-submission):email:
        -   [Captions prepared](#orge92309b)
        -   [Captions pending](#org6bed7ae)
    -   [Help speakers with tech checks](#tech-checks)
    -   [Follow up with speakers we haven't heard from](#follow-up-silence):email:
    -   [Send check-in instructions](#check-in-instructions):email:
        -   [Unknown Q&A preference](#org4fa4a70)
        -   [Speakers will handle Q&A live](#org55b075e)
        -   [Speakers will handle questions after the event](#org544baed)
    -   [Announce schedule and watching instructions](#announce-schedule):email:
        -   [E-mail text](#org41b2906)
    -   [Follow up regarding prerecorded videos](#follow-up-prerecs):email:
    -   [Offer speakers the opportunity to go live if they really really want to](#go-live-maybe):email:
        -   [Email text](#orgb88fbb1)
    -   [Compress video](#orgbe5dce0)
    -   [Experiment with setup to allow MPV / BBB sound isolation](#sound)
    -   [Check for video encoding issues](#orgde63d42)

<!-- This file was automatically generated from playbook.org. Instead of editing the .md, please edit the .org and republish. Thanks! -->


<a id="roles"></a>

# Roles/values

<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">


<colgroup>
<col  class="org-left" />

<col  class="org-left" />

<col  class="org-left" />
</colgroup>
<tbody>
<tr>
<td class="org-left">B</td>
<td class="org-left">&#xa0;</td>
<td class="org-left">bandali</td>
</tr>


<tr>
<td class="org-left">CHECK</td>
<td class="org-left">check-ins</td>
<td class="org-left">sachac</td>
</tr>


<tr>
<td class="org-left">HOST</td>
<td class="org-left">hosting, streaming, intros, reading, moving questions/answers around</td>
<td class="org-left">zaeph</td>
</tr>
</tbody>
</table>

<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">


<colgroup>
<col  class="org-left" />

<col  class="org-left" />
</colgroup>
<tbody>
<tr>
<td class="org-left">${protected}</td>
<td class="org-left"><a href="file://ssh:front:/var/www/media.emacsconf.org/2021/protected/">file://ssh:front:/var/www/media.emacsconf.org/2021/protected/</a></td>
</tr>


<tr>
<td class="org-left">${stream-status}</td>
<td class="org-left"><a href="file://ssh:front:/var/www/live.emacsconf.org/index.html">file://ssh:front:/var/www/live.emacsconf.org/index.html</a></td>
</tr>


<tr>
<td class="org-left">${upcoming}</td>
<td class="org-left">upcoming.org shared over CRDT</td>
</tr>


<tr>
<td class="org-left">${conf}</td>
<td class="org-left">conf.org shared over CRDT</td>
</tr>


<tr>
<td class="org-left">${playbook}</td>
<td class="org-left">playbook.org shared over CRDT</td>
</tr>


<tr>
<td class="org-left">${dump}</td>
<td class="org-left"><a href="file://ssh:live:/data/">file://ssh:live:/data/</a></td>
</tr>


<tr>
<td class="org-left">${media}</td>
<td class="org-left"><a href="file://ssh:front:/var/www/media.emacsconf.org/2021/">file://ssh:front:/var/www/media.emacsconf.org/2021/</a></td>
</tr>


<tr>
<td class="org-left">${live-main}</td>
<td class="org-left"><a href="file://ssh:front:/var/www/live.emacsconf.org/main.html">file://ssh:front:/var/www/live.emacsconf.org/main.html</a></td>
</tr>


<tr>
<td class="org-left">${live-480p}</td>
<td class="org-left"><a href="file://ssh:front:/var/www/live.emacsconf.org/main-480p.html">file://ssh:front:/var/www/live.emacsconf.org/main-480p.html</a></td>
</tr>


<tr>
<td class="org-left">${live-index}</td>
<td class="org-left"><a href="file://ssh:front:/var/www/live.emacsconf.org/index.html">file://ssh:front:/var/www/live.emacsconf.org/index.html</a></td>
</tr>


<tr>
<td class="org-left">${live-alt}</td>
<td class="org-left"><a href="file://ssh:front:/var/www/live.emacsconf.org/alt.html">file://ssh:front:/var/www/live.emacsconf.org/alt.html</a></td>
</tr>


<tr>
<td class="org-left">${profile}</td>
<td class="org-left"><a href="file://ssh:live:~/.profile">file://ssh:live:~/.profile</a></td>
</tr>


<tr>
<td class="org-left">${emacsconf-el}</td>
<td class="org-left"><a href="https://git.emacsconf.org/emacsconf-el/">https://git.emacsconf.org/emacsconf-el/</a></td>
</tr>


<tr>
<td class="org-left">&#xa0;</td>
<td class="org-left">&#xa0;</td>
</tr>
</tbody>
</table>


<a id="org9010597"></a>

# After the conference


<a id="org1ede55a"></a>

## Update captions

-   Merge them into the video with `add-captions.sh`
    
        #!/usr/bin/zsh
        BASE="${1%.*}"
        BASE="${BASE%--main}"
        ffmpeg -y -i "$1" ${BASE}--main.vtt
        if [ -f "${BASE}--normalized.webm" ]; then
           ffmpeg -y -i "$1" -i "${BASE}--normalized.webm" -c:a copy -c:v copy "${BASE}--captioned.webm"
        else  
           ffmpeg -y -i "$1" -i "${BASE}--compressed.webm" -c:a copy -c:v copy "${BASE}--captioned.webm"
        fi
        cp ${BASE}--main.vtt ${BASE}--chapters.vtt ~/vendor/emacsconf-wiki/2021/captions
        scp "${BASE}--captioned.webm" "${BASE}--main.webm"
        scp "${BASE}--main.webm" front:~/protected
        scp "${BASE}--main.vtt" front:~/protected
        scp "${BASE}--chapters.vtt" front:~/protected
        ssh front 'cd protected; chmod ugo+r *'
-   Update Toobnix and Youtube captions with `conf-video-share`.
-   Update Toobnix and Youtube descriptions with chapters.
-   Update ${conf-year}/${captions}/${slug}.md in the wiki. To make this from scratch, use `M-x conf-prepare-transcript-directives` from the talk heading in the conference Org file.


<a id="org9a1dcfd"></a>

## Update


<a id="thanks"></a>

## Send thanks     :email:

Thank you so much for being part of EmacsConf ${conf-year}! Hundreds of people
enjoyed it, and I'm sure even more will come across the videos in the
days to follow.

Your prerecorded video is available on the talk page at ${url} , and
we've added the questions and comments that we've collected from
IRC/BBB/Etherpad. The recording of your Q&A session is also on the
talk page.

We've also uploaded your talk video to ToobNix (a PeerTube instance)
at ${toobnix-url} and YouTube at ${youtube-url} . If you
want to reupload the video to your own channel, feel free to do
so. You can add the subtitles by downloading them from the talk page
and uploading them to your video. If you let me know where you've
uploaded it, I can switch our playlist to include your version of the
video instead. That way, it might be easier for you to respond to
questions on videos. (Which some people have already been adding,
yay!)

If you would like to share more resources, you can add them to the
talk page or e-mail them to us and we can add them for you.

Thanks again for speaking at EmacsConf!


<a id="days-before"></a>

# Thursday or Friday before the conference

-   STREAM: Download prerecorded videos from ${protected}
    
        rsync -avzue ssh front:/var/www/media.emacsconf.org/2021/protected/*--main.webm .


<a id="day-of"></a>

# On the day of the conference


<a id="setup"></a>

## Set up


<a id="screens"></a>

### Arrange screens

-   CHECK:
    -   Share ${upcoming}, ${playbook}, and ${conf} via CRDT: `conf-crdt-connect-and-share`
        -   Current schedule, filenames/commands for playing, Q&A preference, IRC nick, pronunciation, intro notes, prerec duration, emergency contact information
        -   `conf-upcoming-add-subtree`
    -   Have #emacsconf-org, #emacsconf, #emacsconf-accessible, and #emacsconf-questions open
    -   Use `/opall` to get op privileges in all the channels
    -   Start backup process for pad
        
            while true; do
                curl https://etherpad.wikimedia.org/p/emacsconf-2021/export/html > emacsconf-$(date +"%Y%m%d-%H%M%S").html
              sleep 15m
            done
    -   Computer for alternate streaming:
        -   Open browser for joining BBB
        -   Open MPV for playing <http://live0.emacsconf.org:8000/main.webm>
-   HOST:
    -   rsync the newest &#x2013;main.webm from front: rsync -avze ssh front:/var/www/media.emacsconf.org/2021/protected/\*&#x2013;main.webm .
    -   Check OBS scenes for sharing windows/tabs as a virtual camera:
        -   chat.emacsconf.org with #emacsconf
        -   Etherpad
        -   Schedule
        -   next talk page
        -   Clock with current time on screen: `watch TZ=America/Toronto date`
    -   Set up backchannel for easy viewing
        -   ${upcoming}
        -   \#emacsconf-org and #emacsconf channels
    -   (?) Join organizer room S


<a id="start-streaming"></a>

### Start streaming     :stream:

-   HOST: Display getting-ready message and start streaming to main.webm
-   HOST: Confirm that the stream is live at <https://live.emacsconf.org/main.webm>
-   B: Update ${status} to say that the stream is live
-   CHECK: Start low-resolution stream, confirm at <https://live.emacsconf.org/main-480p.webm>
    Call this on live0 with $CONF480PASS as the first parameter. The Icecast configuration is on `live0` at <file:///ssh:live|sudo:/etc/icecast2/icecast.xml>=.
    
        PASS=$1
        while true; do ffmpeg -loglevel 24 -f webm -reconnect_at_eof 1 -reconnect_streamed 1  -re -i http://localhost:8000/main.webm -vf scale=854:480 -f webm -c:a copy -b:v 500k -maxrate 1M -bufsize 1M  -content_type video/webm -c:v libvpx icecast://ec2020main480pmu:$PASS@localhost:8000/main-480p.webm; done
-   CHECK: Start Youtube and Toobnix streams. Call this with $YOUTUBE1PASS, $YOUTUBE2PASS, or $TOOBNIX as the parameter
    
        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
-   CHECK: Verify YouTube and Toobnix streams and the CPU load on live0.
-   CHECK: Set the YouTube and Toobnix streams to public.
-   B: Verify with #emacsconf that the stream is active.
-   CHECK: Play main stream on alternate laptop. Start alternate stream and verify. Update ${status}.
-   CHECK: Announce on Twitter (@emacs, @emacsconf, @sachac) and in #emacs
    EmacsConf 2021 starting now: <https://emacsconf.org/2021/>


<a id="talk"></a>

## Talk process


<a id="check-in"></a>

### Check in a speaker

Exception: [CHECK is unavailable](#check-gone)

-   Speaker checks in on #emacsconf-org via IRC or via e-mail ~30m before
-   CHECK notes IRC nick for speaker.
-   CHECK confirms Q&A preference: live/IRC/Etherpad, preferred way of getting questions
-   [? unknown] Thanks for checking in! How would you like to handle Q&A
    today - live video, the collaborative Etherpad at
    <https://etherpad.wikimedia.org/p/emacsconf-2021> , or IRC (like
    this)?
-   [? IRC] Thanks for checking in! Feel free to keep an eye on
    \#emacsconf for questions and discussion, and we'll copy things from
    the pad to there. If the volume gets overwhelming, let us know and
    we can forward questions to #emacsconf-questions for you. If you'd
    like to try Q&A over live video or the collaborative pad instead, or
    if you need help, please let us know.
-   [? Etherpad] Thanks for checking in! The collaborative pad we'll be
    using for questions is at
    <https://etherpad.wikimedia.org/p/emacsconf-2021> . We'll collect
    questions from #emacsconf and put them there. If you'd like to jump
    to your part of the document, you might be able to keep an eye on
    questions. Please let us know if you need help, or if you want to
    switch to live Q&A.
-   [? live] Thanks for checking in! I'll send you some private messages
    with instructions, so please check there. Let me know if you don't
    get them.
    -   Private messages:
        -   (erc-message "PRIVMSG" (format "%s You can use this BBB room: %s . I'll join you there shortly to set up the room and do the last-minute tech check." nick room-url))
        -   (erc-message "PRIVMSG" (format "%s The collaborative pad we'll be using for questions is at %s . We'll collect questions from #emacsconf and put them there. If you'd like to jump to your part of the document, you might be able to keep an eye on questions. Alternatively, we can read questions to you." nick conf-collaborative-pad))
        -   (erc-message "PRIVMSG" (format "%s Leo Vivier will join when it's time, and he will give you the go-ahead when it's time to present. See you in the BBB room!" nick))
    -   CHECK directs speaker to available room with `/checkin <room> <nick>`
    -   Speaker joins talk room
    -   CHECK makes speaker presenter and moderator, does last-minute tech check
        -   Hello, thanks
        -   Speaker tries screen sharing and webcam (optional)
        -   check screen readability
        -   CHECK briefs speaker on process, including:
            -   live Q&A: reading questions themselves (can do in any order,
                can skip; coach possible responses for awkward things) or asking HOST to read questions to them
                -   HOST can share the pad or IRC; speaker shares screen only if doing demo
            -   encouragement of webcam, although it's optional
            -   how HOST will join shortly before the prerec ends and then
                give them the go-ahead
            -   closing any tabs watching the stream as their talk starts
                (otherwise the audio is confusing)
        -   If the speaker will be giving a live presentation, CHECK
            collects emergency contact information (in case of technical
            issues) and shares it with HOST in the CRDT buffer
        -   Okay to do other things until the prerec ends
    -   CHECK updates ${upcoming} with link to the talk room and
        preferences for Q&A-. CHECK will also /msg the relevant
        information.


<a id="present"></a>

### Present talk

-   CHECK announces the next talk on IRC and marks the previous talk as done. (`conf-announce`)
-   PAD clears pad colours.
-   [? prerec]
    -   HOST switches to MPV scene in OBS and plays the video (with captions if available).
        -   Exception: [Last-minute prerecording submission](#last-minute-prerec)
        -   Exception: [Last-minute caption update](#last-minute-captions)
    -   [CHECK publishes information](#publish)
    -   [HOST gets a head start on handling Q&A](#questions)
    -   When prerec finishes, HOST switches the OBS scene to show BBB.
-   [? live]
    -   Exception: [Speaker does not have a prerec and has not checked in](#really-missing)
    -   HOST joins the BBB room and double-checks that recording is on.
    -   CHECK-alternate joins the BBB room and pauses main MPV.
    -   HOST switches to OBS scene for BBB.
    -   Speaker presents.
        -   Exception: [Technical issues during a live presentation](#live-issues)
    -   [? talk needs to be wrapped up]
        -   HOST nudges speaker verbally.


<a id="publish"></a>

### Publish information

-   CHECK updates the schedule in:
    -   ${conf}
    -   ${upcoming}
    -   wiki
-   CHECK publishes the video to media.emacsconf.org using `conf-publish-files`
-   CHECK commits the wiki page and the captions for the talk.
-   CHECK publishes the video on YouTube and ToobNix using `conf-video-share`.
    -   Update description:
        
            This video is available under the terms of the
            Creative Commons Attribution-ShareAlike 4.0 International (CC
            BY-SA 4.0) license.
            
            You can view it using free and open source software at
            ${url}
            
            ${description}
    -   Mark it as public.
    -   Add it to EmacsConf 2021 playlist.
    -   Update title and description.
    -   Mark it as public.
    -   Doublecheck subtitles
    -   Add it to the EmacsConf 2021 playlist.
-   [? live sections]
    -   CHECK does a rough-cut of the recording from ${dump} to get the last X minutes or by time range. There's about a 1-2 minute delay.
        Ex: `(kill-new (conf-dump-get "alt" "10:24" "10:30" "qa_"))`
    -   When there's an opportunity to do so:
        -   CHECK finetunes the rough-cut recording (trim start and end) and posts it to:
            -   media.emacsconf.org/2021
            -   wiki page for talk


<a id="questions"></a>

### Handle Q&A

Exceptions:

-   [Speaker has not checked in](#missing)

-   [? live]
    -   CHECK-alternate joins the BBB room and pauses MPV.
    -   HOST joins the BBB room
    -   HOST starts recording in BBB or confirms that it's already recording
    -   HOST switches to the BBB scene in OBS.
    -   HOST describes how to ask questions.
    -   [? No questions yet]
        -   HOST thanks speaker, says nice things about talk, and asks a couple of prepared questions
    -   [? Awkward question]
        -   HOST can try rephrasing the question.
        -   HOST adds note to IRC/Etherpad that speakers can answer in any order, skip questions, answer afterwards, etc.
    -   [? Q&A needs to be wrapped up]
        -   HOST writes in Etherpad/IRC or nudges speaker verbally.
    -   CHECK notes the time that the live Q&A finished and switches back to the main stream on CHECK-alternate.
-   [? IRC/pad]
    -   HOST switches to pad/chat OBS scene.
    -   HOST describes Q&A method and shows it on the screen.
    -   While there's buffer time before the next talk, HOST can read out
        questions and answers, or transition to the next talk early
    -   HOST: It's time for the next talk, but if you want to keep
        discussing the previous talk, please feel free to continue doing
        so on IRC or the pad.
-   [? speaker will answer after the conference]
    -   HOST switches to pad/chat OBS scene.
    -   HOST says the speaker is not available right now, but we'll
        forward the questions to the speaker and we'll post the speaker's
        answers on the wiki page. Leave your contact information if you
        want to be notified, or subscribe to the emacsconf-discuss mailing
        list to get the announcement. Please feel free to continue
        discussing the talk on IRC or the pad.
-   [Present next talk](#present)


<a id="break"></a>

## Break time

-   CHECK marks the last talk as done. `conf-end-current-talk`
-   CHECK stops and restarts the Toobnix restreaming process, and re-checks the stream
-   CHECK uses `conf-upcoming-add-subtree` to add the afternoon talks to upcoming.org
-   HOST doublechecks network transfer limit and server health


<a id="end"></a>

## End of stream

-   CHECK removes live Q&A links
-   CHECK stops ffmpeg process for Youtube
-   CHECK stops ffmpeg process for Toobnix
-   CHECK stops ffmpeg process for main-480p
-   STREAM stops streaming
-   B updates the status pages
-   bandali figures out the downstream


<a id="exceptions"></a>

## In case of&#x2026;


<a id="last-minute-prerec"></a>

### Last-minute prerecording submission

-   CHECK will copy it from the FTP upload server to ${protected} and name it appropriately.
-   CHECK will notify STREAM with the scp command and the mpv command so that STREAM can choose.


<a id="last-minute-captions"></a>

### Last-minute caption update

-   CHECK uploads the &#x2013;main.vtt file to ${protected}
-   CHECK notifies STREAM via ${upcoming}
-   STREAM uses the provided commands to download the VTT file and load it into MPV with `--sub-file`


<a id="missing"></a>

### Speaker has not checked in

-   Let the previous talk run a little longer for Q&A; end at least in time for the prerec
-   After the previous Q&A wraps up, play the prerec
-   [? still not around after prerec finishes]
    -   HOST: Speaker might be having some difficulty connecting, but we'll collect your questions on the pad and send them afterwards.
    -   Can play next prerec a few minutes early


<a id="really-missing"></a>

### Speaker does not have a prerec and has not checked in

-   Let the previous talk do live Q&A/demo if ready
-   Close to the time of the missing talk:
    -   See if any of the previous speakers want to be set up for an impromptu talk/extension in a BBB room, just in case
    -   HOST: The next speaker might be having some difficulty connecting. In the meantime, let's&#x2026;
        -   OR:
            -   highlight ongoing discussions
            -   invite another speaker for an impromptu extension; mplsCorwin will keep a list of possible speakers who are still active
            -   replay a short prerec
            -   let mplsCorwin or zaeph fill in


<a id="reallocated-prerec"></a>

### Speaker whose talk was reallocated shows up and has a prerec

-   CHECK copies it to ${protected}
-   Plan to play prerec at the end of the day, or in any gaps if a live talk falls through


<a id="reallocated-live"></a>

### Speaker whose talk was reallocated shows up and wants to do it live

-   See if there's enough time if buffers are shuffled back; if so, set up for a live presentation
-   Check for alternate stream volunteers
-   [? not enough time] Offer to set up a BBB room for recording or to
    accept a prerecording afterwards, then include it on the site and in
    post-conference communication


<a id="alternate"></a>

### Alternate stream volunteer wants to stream  (nice to have, at risk)

-   CHECK gives ALTERNATE the BBB room URL for the talk they are interested in
-   ALTERNATE starts streaming to assigned end point
-   CHECK confirms stream
-   CHECK updates ${stream-status}
-   CHECK notifies STREAM and HOST
    -   After prerec plays:
        -   HOST: This talk has an extended demo/Q&A. You can go to ${alternate-url} to watch it, and we'll post a recording afterwards.
        -   HOST sends ${alternate-url} to IRC: Alternate stream for ${title}: ${alternate-url}
-   ALTERNATE notifies #emacsconf-org when the stream is done.
-   CHECK updates ${stream-status} to note that the alternate stream is finished.
    
    FFMPEG process for sending the desktop and audio to the $CONFALT mountpoint on Linux with X11 and Alsa:
    
    1.  Set the CONFALT environment variable to icecast://user:password@live0.emacsconf.org:8000/alt.webm
    2.  Install pavucontrol if you don't have it already.
    3.  Start the following command (<playbook/stream-desktop-and-audio.sh>:
        
            while true; do ffmpeg -loglevel 0 -ar 48000 -f alsa -channels 2 -sample_rate 48000 -i default -re -video_size 1280x720 -framerate 25 -f x11grab -i :0.0  -cluster_size_limit 2M -cluster_time_limit 5100 -content_type video/webm -c:v libvpx -b:v 1M -crf 30 -g 125 -deadline good -threads 4  -f webm $CONFALT; done
    4.  Use pavucontrol to set the recording source for the ffmpeg
        command to be the audio monitor, so you get system output as
        well.
        -   OR:
            -   [? splitting audio] [Set up sinks for sound](#sound)
            -   [? same audio]
        -   Set up audio monitor as the input for FFMPEG
        -   MPV goes to MPV sink, browser goes to recording sink, FFMPEG takes in recording monitor


<a id="pad-broken"></a>

### Pad malfunction or mess-up

-   PAD resets the pad using <https://etherpad.wikimedia.org/p/emacsconf-2021/timeslider>
-   [? still not recovered]
    -   PAD reimports the pad from backup


<a id="crdt-broken"></a>

### CRDT malfunctions

-   HOST notifies CHECK and tries reconnecting
-   [? still doesn't work]
    -   Switch to backup Etherpad


<a id="conduct"></a>

### Conduct guidelines issue

-   HOST addresses it (on-camera if needed) with a reminder and/or a kick or a ban


<a id="check-gone"></a>

### CHECK is unavailable

-   HOST does check-ins
-   HOST refers to conf.org for Q&A preference etc.
-   STREAM checks conf.org for prerec filenames etc.
-   Dropped goals:
    -   Publishing recordings ASAP
    -   Updating schedule/wiki on the fly


<a id="host-gone"></a>

### HOST is unavailable

-   STREAM joins the BBB room and streams directly from there (or streams the prerecs).
-   STREAM will do the hosting.


<a id="live-issues"></a>

### Technical issues during a live presentation

-   HOST tries to contact the speaker
-   [? back on track]
    -   [? can be squeezed into remaining time]: Continue
    -   [? need extra time]: CHECK fiddles with buffer of following talks in conf.org and updates schedule
    -   [? need too much extra time (ex: 10min)]: HOST acknowledges
        technical issues and says we may be able to follow up after the
        conference
-   [? can't resume]: HOST acknowledges technical issues and says we may
    be able to follow up after the conference


<a id="stream-issues"></a>

### Big technical issues with streaming

-   HOST notifies #emacsconf and #emacsconf-org and adds a note at the top of the ${pad}.
-   HOST updates the 2021.md wiki page
-   CHECK publishes prerecordings
    -   media.emacsconf.org
    -   wiki
    -   Toobnix
    -   Peertube
-   STREAM e-mails the mailing list


<a id="network"></a>

### live0 can't handle the load or is close to network transfer limit

-   OR:
    -   Redirect some viewers via asking in #emacsconf:
        -   watch via main-480p
        -   watch via Toobnix (if we can get that working)
    -   Consider dropping the restream to Toobnix (lower audience?) or to Youtube
    -   Add additional node to Linode account for shared transfer pool (TODO: doublecheck)


<a id="before"></a>

# Before the conference


<a id="cfp-mails"></a>

## Send calls for proposals


<a id="first-cfp"></a>

### [ANN] EmacsConf 2021 Call for Proposals     :email:

Sent on August 5, 2021 to emacsconf-discuss, emacs-devel, emacs-orgmode, emacs-tangents, Cc: emacsconf-org.
Included inline Markdown and attached Org version of the CFP

-   E-mail text

        #+title: EmacsConf 2021
        #+subtitle: Online Conference
        #+date: November 27 and 28, 2021
        #+options: author:nil
        
        [[https://emacsconf.org/2021/][EmacsConf 2021]] will be a virtual conference on *November 27 and 28,
        2021 (Sat-Sun)*.  If you'd like to present at the conference, please
        [[https://emacsconf.org/2021/cfp/][submit your proposal]] by *September 30, 2021*.
        
        EmacsConf 2021 is about the joy of [[https://www.gnu.org/software/emacs/][Emacs]] and Emacs Lisp.  Come share
        your experiments and adventures with the Emacs text editor / operating
        system / way of life!  We welcome speakers of *all backgrounds* and
        *all levels of experience*, including newcomers giving their first
        talk.  What have you found exciting about Emacs lately?  What do you
        wish someone had told you when you were starting out?  What part of
        your workflow might inspire someone to get into Emacs or go deeper?
        
        A great way to get started with writing a proposal is to start by
        exploring the programs from previous years: [[https://emacsconf.org/2020/schedule/][2020]], [[https://emacsconf.org/2019/schedule/][2019]], [[https://emacsconf.org/2015/schedule/][2015]], [[https://emacsconf.org/2013/#program][2013]].
        You might also find some neat ideas on the [[https://emacsconf.org/2021/ideas/][ideas]] page.  Feel free to
        add yours there too!  If you're still not sure, come by our IRC
        channel =#emacsconf= on =irc.libera.chat= and say hi.  You can join
        the chat using [[ircs://irc.libera.chat:6697/emacsconf][your favourite IRC client]], or by visiting
        [[https://chat.emacsconf.org][chat.emacsconf.org]] in your web browser.
        
        All kinds of people use Emacs for all kinds of things.  We'd love it
        if EmacsConf 2021 could highlight interesting perspectives and reflect
        the diversity of our community.  If you know someone who might have a
        good idea for a talk, please reach out to them and encourage them to
        submit a proposal.  Many people (especially from underrepresented
        groups such as women, people of colour, non-developers, etc.) might
        not consider themselves expert enough to share their thoughts.  If you
        let them know that you value their knowledge and maybe even suggest
        something that you think others would like to hear more about, they
        may realize that they have something worth sharing and that we would
        love to hear from them.
        
        * Important dates
        
        For EmacsConf 2021, we are planning for 9am to 5pm Toronto/EST
        (2pm-10pm UTC) on November 27 and 28.  Depending on people's
        availability, it might be two half-days.
        
        | CFP opens             | August 5, 2021           |
        | CFP closes            | September 30, 2021       |
        | Speaker notifications | October 15, 2021         |
        | Schedule published    | October 31, 2021         |
        | EmacsConf 2021!       | November 27 and 28, 2021 |
        
        If you are not available during the conference itself but you have a
        neat idea that you'd like to share, please propose it anyway!  You can
        always handle questions after the conference, and we might even be
        able to coordinate with other Emacs meetups for regional events (if
        you're an Emacs meetup organizer and would like to make this happen
        let's [[https://emacsconf.org/contact/][get in touch]]!).
        
        Please note that although we will try our best to stick to the above
        dates in the coming months, given the current state of the world, we
        may have to move things around a bit in case of unforeseen events.
        Thank you for your patience and understanding.
        
        * Talk formats
        
        We'd like EmacsConf 2021 to inspire lots of different people to
        explore lots of different things in Emacs.  We hope to put together a
        stream of quick ideas followed by lots of conversation over IRC and/or
        Q&A sessions, with occasional deep dives into topics that many people
        might find interesting or useful.
        
        As you think about your talk, consider what you can share in:
        
        - *Up to 10 minutes total:* What is the core idea?  What do you want
          people to do or remember?  You can show just enough to get people
          interested and then point them to where they can learn more
          afterwards.  You can answer questions over IRC, the pad, or the
          wiki, and there's no limit to how long that conversation can go.
        
        - *Up to 20 minutes total:* How would you flesh out some of the points
          from your 5-10 minute presentation?  How can you show the pieces
          working together?
        
        - *Up to 40 minutes total:* What would benefit from a deep dive?
          How do you keep it engaging?
        
        When writing your proposal, please write an outline of what you plan
        to talk about if you have 5-10 minutes.  If you'd like to propose a
        longer talk, outline what you might include if you had more time to
        present (up to 40 minutes, including Q&A).
        
        Here's an example for a potentially 40-minute talk:
        
        - 5-10 minutes: quick demo of the abc package working together with
          xyz package.
        - 20 minutes: same as above, with some customization options to
          accommodate a different workflow.
        - 40 minutes: all of the above, including modifying the behaviour of
          the package in order to add something new.
        
        This flexibility would help us in devising the conference schedule so
        that as many people as possible could get a chance to present their
        ideas, while still allowing for featuring longer deep dive talks.
        
        Other session formats such as tutorials, workshops, and hangouts are
        welcome as well, in case you would find those other formats preferable
        to a traditional talk format.  If you're interested in these or other
        session types, please let us know [[https://lists.gnu.org/mailman/listinfo/emacsconf-org][publicly]] or [[https://lists.gnu.org/mailman/listinfo/emacsconf-org-private][privately]].  We'll be
        happy to work something out with you.
        
        * Office hours
        
        We're aware that it can be intimidating to submit a proposal to a
        conference, so we thought we'd try to help!  This year, we're opening
        up the doors of our virtual offices for you to come talk to us about
        your proposals with hopes of helping you with any hurdles you may be
        facing with preparing your proposal.
        
        We'd like to publish a schedule of availabilities of volunteers for
        holding office hours.  Currently these volunteers consist of some of
        the EmacsConf organizers, but we'd love to have the help of other
        members of the Emacs community as well.  If you are a more experienced
        Emacs user and would like to help with this, please [[https://emacsconf.org/contact/][get in touch]]!
        
        Our first office hour this year is planned for Saturday, August 14,
        from 3pm to 4pm UTC with zaeph (Leo Vivier) at the following
        BigBlueButton room: https://bbb.emacsverse.org/b/ban-qye-fd1-5kw.
        
        * Submitting your proposal
        
        Once you're ready to submit your proposal, the [[https://emacsconf.org/2021/submit/][submit]] page has the
        instructions on how to submit your talk.
        
        We use an anonymized submission process to reduce bias and encourage
        contribution.  Identifying information will be removed from
        submissions by a conference organizer who will not participate in
        talk selection.  The anonymized submissions will then be reviewed by
        a selection committee.
        
        If your talk is approved, we'd love it if you could help us make sure
        the conference runs smoothly.  After we email you with the time
        allotted for your talk, we'll ask you to
        
        - prepare a prerecording of your talk, or record it with our help if
          that'd be easier for you; and
        - schedule a short tech-check if you'd like to be able to answer
          questions in a live session.
        
        Don't forget to subscribe to our main mailing list, [[https://lists.gnu.org/mailman/listinfo/emacsconf-discuss][emacsconf-discuss]],
        for discussion and announcements about the EmacsConf conference.
        
        We look forward to your ideas and submissions!
        
        * Getting involved
        
        If you would like to help with the conference (planning the sessions,
        reviewing proposals, helping with infrastructure, making sessions more
        accessible, editing video transcripts, etc.), see our [[https://emacsconf.org/2021/planning/][planning]] page
        and come say hi to us at =#emacsconf= on =irc.libera.chat=.
        
        In addition to the [[https://lists.gnu.org/mailman/listinfo/emacsconf-discuss][emacsconf-discuss]] list, feel free to subscribe to
        [[https://lists.gnu.org/mailman/listinfo/emacsconf-org][emacsconf-org]] as well, for discussions related to organizing the
        conference by the EmacsConf organizers and volunteers.
        
        We'd really appreciate your help in making EmacsConf 2021 the best one
        so far!
        
        * Commitment to freedom
        
        We remain fully committed to freedom, and we will continue
        using our infrastructure and streaming setup consisting entirely
        of [[https://www.gnu.org/philosophy/free-sw.html][free software]], much like previous EmacsConf conferences.
        An article describing our infrastructure and tools is underway,
        and will be announced on the emacsconf-discuss list when published.
        
        
        * COMMENT Copyright & License
        
        Copyright (c) 2020 Amin Bandali, Sacha Chua, David Bremner
        Copyright (c) 2021 Amin Bandali, Sacha Chua, Leo Vivier,
        Sebastian Crane
        
        The EmacsConf 2021 Call for Proposals is part of the EmacsConf wiki,
        and is dual-licensed under the terms of the Creative Commons
        Attribution-ShareAlike 4.0 International Public License; and the GNU
        General Public License as published by the Free Software Foundation,
        either version 3 of the License, or (at your option) any later
        version.
        
        A copy of these two licenses is available on the EmacsConf wiki, in
        the [[https://emacsconf.org/COPYING.CC-BY-SA][COPYING.CC-BY-SA]] and [[https://emacsconf.org/COPYING.GPL][COPYING.GPL]] files.
        
        * COMMENT How to export this file
        
        As of the time of writing this document (Org mode version 9.3.7), the
        Org links library (=ol.el=) does not yet recognize =ircs= link types,
        and will throw an error if you try to export a file containing them,
        such as this file.
        
        To work around that, you can use something along the lines of the
        Emacs Lisp code below, by either adding it to your init file, or by
        putting the point in the code block and hitting =C-c C-v e= (that is,
        hold Ctrl, then hit c followed by v, then release Ctrl, and hit e) to
        evaluate the code, working around the issue only for the current
        session.
        
        #+begin_src emacs-lisp :results silent
        (org-link-set-parameters
         "ircs"
         :export
         (lambda (link description format)
           "Export an ircs link.
        See `org-link-parameters' for details about LINK, DESCRIPTION and
        FORMAT."
           (let ((desc (or description link)))
             (pcase format
               (`html (format "<a href=\"ircs:%s\">%s</a>" link desc))
               (`md (format "[%s](ircs:%s)" desc link))
               (_ nil)))))
        #+end_src


<a id="second-cfp"></a>

### Second (and final) call for proposals (closing Sep 30)     :email:

Sent Sept 27, 2021 to the same lists as the CFP
Included inline Markdown and attached Org version of the CFP

-   E-mail text

    Dear fellow Emacsians,
    
    This is the second and final Call for Proposals for EmacsConf 2021,
    open until September 30.  Please see below for details on how to send
    in your proposal(s), or chat about them with us in the #emacsconf IRC
    channel on Libera.Chat.
    
    If you're considering submitting a proposal but think the remaining
    time is not enough, please reach out to me off-list as soon as
    possible and I'd be happy to try and work something out with you.
    
    I'll close this portion of this email with a big thank you to all the
    folks who have submitted their talk proposal(s) or will be doing so.
    Myself and the other EmacsConf organizers look forward to reading over
    them and getting back to you about them and about the next steps. :)
    
    Best,
    amin
    
    P.S. please direct any replies to this post either to myself or to the
    emacsconf-discuss list, so as to help avoid generating extra off-topic
    chatter in the other lists cc'd in this message.
    
    P.P.S. as a volunteer-run conference, we are always looking for new
    fellow volunteers and/or organizers to help with various aspects of
    organizing and running the conference, including reviewing proposal
    submissions.  If you're interested in getting involved, please come by
    our IRC channel or one of our public mailing lists (info below), or
    any of the current organizers directly and say hi.  We look forward to
    hearing from you!


<a id="accept"></a>

## Accept talks     :email:


<a id="orgb8732b7"></a>

### E-mail text

Dear ${name},

We would love to have your talk "${title}" as part of EmacsConf
${conf-year}, and we've allocated ${duration} minutes for
it. ${time-note}

Your talk is tentatively scheduled for ${schedule}.  The times may
move around a bit as we update the schedule, so we'll check in with
you if things change a lot.  We've scheduled a few minutes for live
questions and answers via web conference.  Will you be available
around this time?  If there are more questions, you can also continue
over Etherpad/IRC.

Please plan to prerecord your ${duration}-minute talk(s) by ${deadline}
at the latest.  If you can, please send it in as early as possible.
Submitting your video early lets us ask volunteers to help caption the
video, making your talk more accessible and searchable.

Please see <https://emacsconf.org/${conf-year}/prepare/> for tips and
instructions on preparing, recording, and sending in your talk.  If
you have any questions or concerns, please let us know.

Thanks,

Amin Bandali
EmacsConf organization team

P.S. Please keep emacsconf-submit@gnu.org in To or Cc when replying.


<a id="acknowledge-submission"></a>

## Thank speakers for submissions     :email:


<a id="orge92309b"></a>

### Captions prepared

Because you sent in your video early, we were able to caption it so
that more people can find and enjoy your talk. I've attached the
caption text file in case you want to review it, suggest any
corrections, or use the text in a blog post or elsewhere. Thanks again
for your contribution!


<a id="org6bed7ae"></a>

### Captions pending

Just a quick note to let you know that I've downloaded your submission for "${title}".

Now we have the following files starting with ${video-slug}:
${details}

A quick check shows that it's about ${video-duration} minutes long.

We'll be working on captioning it over the next few weeks. We'll e-mail
again a little closer to the conference with schedule updates and other
useful information. If you want to upload a new version, you can upload
it the same way you did the previous one.

Please feel free to e-mail us at emacsconf-submit@gnu.org if you need
help updating the talk wiki page at
${url} or if you have other questions.

Thank you so much for all the work you put into preparing a talk for
EmacsConf ${conf-year}, and thank you for submitting the prerecorded video
before the conference!


<a id="tech-checks"></a>

## Help speakers with tech checks

-   Explain process
-   Test audio, webcam, screensharing, collaborative pad
    -   Music demos and other things that use system audio will need to be prerecorded (or done through virtual loopback device, maybe? Technical risk.)
    -   Multi-monitor setups might not be handled well by BBB; share window instead of desktop
-   Check if comfortable checking into IRC: chat.emacsconf.org/?join=emacsconf,emacsconf-org
-   Get IRC nick, phone number for emergency contact, store in private wiki
-   Try to record name pronunciation
-   Encourage webcam for Q&A, although make it clear that it's totally optional
-   Possible picture-in-picture approach to maximize screen real estate


<a id="follow-up-silence"></a>

## Follow up with speakers we haven't heard from     :email:

I think we haven't heard from you since we accepted your EmacsConf 2021
proposal for "${title}" in early October.
EmacsConf is in less than two weeks, so I wanted to check in with you to
see how you're doing.

Could you please e-mail us to let us know if you're still working on
your prerecorded video, if you're planning to present live, or if you
can't make it this year? I know it's a strange time for everyone, so
no worries if other priorities have come up and you don't have the
time for a presentation.

If you've been having technical issues recording your presentation on
your computer, one of our volunteers could set up a BigBlueButton web
conference with you to record the presentation. You can find a list of
volunteers and their availability at
<https://emacsconf.org/2021/prepare/#tech-check> . It takes a little time
to get the recording out of BBB, so please plan to record your
presentation before Tuesday, November 23.

If you plan to present live, please go through the self-check at
<https://test.bigbluebutton.org/> . Some speakers have encountered
technical issues with BigBlueButton that they didn't have with Zoom or
Google Meet, so this is something we definitely want to look into
earlier rather than later. If that works for you, please e-mail us
back so that I can keep your timeslot. The tentative schedule for your
talk is on the talk page at ${url} .

**Please e-mail us your plans before ${deadline}.** I'm
planning to shift the schedule around to give more time to confirmed
speakers for Q&A and possibly live demos. If I don't hear from you by
then (maybe an over-enthusiastic spam filter has been swallowing up
all our mail?), I'll probably reallocate the 10 minutes that had
been set aside for your talk. We might be able to squeeze it back in
afterwards or play a video from you at the end of the conference day,
but it would be nice to get the schedule sorted out instead of
scrambling to fill gaps on the day of the conference.

Hope to hear from you by ${deadline}!

Sacha Chua

(Please use Reply to All to keep emacsconf-submit@gnu.org in the loop. Thanks!)


<a id="check-in-instructions"></a>

## Send check-in instructions     :email:


<a id="org4fa4a70"></a>

### Unknown Q&A preference

We're looking forward to having you join us at EmacsConf if you can! I
don't seem to have your Q&A preference in my notes, but if you can
join us at EmacsConf for questions and answers over video, IRC, or
Etherpad, that would be great. If not, that's cool, we can collect the
questions and forward them to you after the conference.

If you want to join us, you can get a rough idea of when your talk is
scheduled at ${url} . We'll probably keep
updating the schedule even on the day of the conference. You might want
to check it some time next week to get a rough sense of where it is, and
then check it again on the day of your talk.

Please check in at least 30 minutes before the scheduled start of your
prerecorded talk so that we can deal with small scheduling changes or
technical issues. You can find the check-in process at
<https://emacsconf.org/2021/speakers/> .

If something comes up, please let us know as soon as you can. Here's
our emergency contact information:

${emergency-contact-info}

Hope to see you soon if you can join us!

Sacha


<a id="org55b075e"></a>

### Speakers will handle Q&A live

We're looking forward to having you join us for questions and answers at
EmacsConf!

We'll probably keep updating the schedule even on the day of the
conference. You can get a rough idea of when your talk is scheduled at
${url} . You might want to check it some time next week to get a rough
sense of where it is, and then check it again on the day of your talk.

Please check in at least 30 minutes before the scheduled start of your
prerecorded talk so that we can deal with small scheduling changes or
technical issues. You can find the check-in process at
<https://emacsconf.org/2021/speakers/> .

If something comes up, please let us know as soon as you can. Here's
our emergency contact information:

${emergency-contact-info}

Looking forward to seeing you soon!


<a id="org544baed"></a>

### Speakers will handle questions after the event

Thank you so much for contributing a talk for EmacsConf 2021! We're
looking forward to collecting questions and forwarding them to you by
e-mail after the conference. We'll also post the prerecording at the
time that it gets streamed, so people will be able to access it at
${url} once it has gone live.

If it turns out that you can make it to the conference after all, feel
free to drop us a line at #emacsconf-org and we'll let people know
you're around. You can find the check-in process at
<https://emacsconf.org/2021/speakers/> .

Thank you so much for being part of EmacsConf 2021!


<a id="announce-schedule"></a>

## Announce schedule and watching instructions     :email:

Sent Nov 20, 2021


<a id="org41b2906"></a>

### E-mail text

Dear Emacsian friends,

This is it, the final stretch until EmacsConf 2021, coming up on
November 27 and 28 less than a week from now!  A few weeks ago,
we excitedly shared the EmacsConf 201 program with you.  We're now
happy to share the conference schedule with you, i.e. the program
plus each talk's (approximate) scheduled time slot:

<https://emacsconf.org/2021/schedule>

All of the times listed on the schedule are in EST (UTC-5).  You can
click on each talk's title to open its page for more information,
including its scheduled time in your local time (displaying local time
requires running a tiny bit of AGPLv3+-licensed free/libre JavaScript
code, included on the talk pages).  For prerecorded talks, this time
is also when the talk's video will be made available on the same page.
Please note the '~' tildes near the times, indicating that they are
approximations and not meant to be taken as exact times.

On November 27 and 28 you will be able to watch the livestreams via
<https://live.emacsconf.org>, which also has details on how to watch the
streams using media players that support streaming (like mpv and VLC).
Also, for Asia-Pacific folks, there will be an alternate stream by
LibreAustralia, at 11:00-17:30 UTC+11 on Sunday, November 28.  Please
see the  <https://libreau.org/upcoming.html#emacsconf21>  page on their
site for more details and how to tune into the alternate stream.

Last but not least, please see the  <https://emacsconf.org/2021>  page
of the EmacsConf wiki for more details on watching and participating
in the conference.

We hope to see you all around on November 27-28 for EmacsConf 2021!

Amin Bandali, Leo Vivier, and Sacha Chua,
On behalf of the EmacsConf 2021 organizers team


<a id="follow-up-prerecs"></a>

## Follow up regarding prerecorded videos     :email:

EmacsConf is in a few days and I don't think we have your prerecorded
video yet, so I'm getting miiiildly stressed about the schedule. And
you're probably stressing out about it too, so let's go figure out how
we can make this work.

Option A: If you happen to have the prerecording or can get it done by
tomorrow, we can probably squeeze it in. Please upload it to
ftp-upload.emacsconf.org by following the instructions in
<https://emacsconf.org/2021/prepare#ftp-upload> , or send us a link using
your favourite file-sharing service (especially if FTP is giving you
problems).

Option B: If you want to present live, it might be an option. I'm a little
worried about the potential for technical issues, since we've had
problems with that in previous EmacsConfs. The tight schedule means
there's not a lot of time to figure things out, and it can be hard to
make something as focused as a prerecorded video when you're doing it
live. We will definitely want to make sure that:

-   your self-serve tech check works: <https://test.bigbluebutton.org>
    at your convenience;
-   we have your emergency contact information in case of frozen
    Internet connection, etc. Please e-mail us the phone number we can
    use to call you. We promise to use it only for EmacsConf 2021
    emergency coordination; and
-   you check in as early as possible (at least 1 hour before, so we
    know if the speaker before you needs to extend) and let us know
    that you want to do it live <https://emacsconf.org/2021/speakers> .
    We keep adapting the schedule as things come up, so please check
    <https://emacsconf.org/2021/schedule/> on the day of the conference.

If there are technical issues or your talk runs a little over time, we
might have to stop streaming it on the main stream when it's time for
the next talk. We may be able to continue streaming it on the
alternate stream. If so, people can continue watching it there if they
wish to.

Option C: If you can't make it, that's okay. Life gets crazy
sometimes. Please let us know and we can update the wiki. If you
happen to be able to make a prerecorded video afterwards, we can add
that to the wiki, playlists, and announcements. We hope you can join
us next year.

Since EmacsConf is **this weekend** (aaaaaaah), please let us know by
tomorrow noon EST (Friday; 9AM PST, 5PM GMT, 6PM CET) so that we can
keep the time allocated for you in the schedule. If we don't hear from
you, we'll probably reallocate the ${duration} minutes reserved for you so
that other talks can have longer Q&A. If you can still make it, check
in early and let us know so that we can try to work out an alternate
stream for you.  Hope to hear from you soon!

Sacha


<a id="go-live-maybe"></a>

## Offer speakers the opportunity to go live if they really really want to     :email:

Sent November 25


<a id="orgb88fbb1"></a>

### Email text

Thank you so much for sending in your prerecording. We were able to
caption most of the talks, yay! That will help more people appreciate
the talks, and it'll make it easier for people to look up technical
terms too. The talks will be streamed with open captions, and the talk
pages will have the videos with closed captions when they're streamed.

We're still adapting the schedule as stuff comes up, so please check
the schedule again on the day of the conference and check in as early
as you can. (Check-in instructions: <https://emacsconf.org/2021/speakers>)

&#x2014; Presenting live? &#x2014;

If you really, really, really want to present live, we can keep the
prerecorded talk as a backup plan. I'm a little worried about the
potential for technical issues, since we've had problems with that in
previous EmacsConfs. The tight schedule means there's not a lot of
time to figure things out, and it can be hard to make something as
focused as a prerecorded video when you're doing it live. If you want
to present live, we will definitely want to make sure that:

-   your self-serve tech check works: <https://test.bigbluebutton.org>
    at your convenience;
-   we have your emergency contact information in case of frozen
    Internet connection, etc. Please e-mail us the phone number we can
    use to call you. We promise to use it only for EmacsConf 2021
    emergency coordination; and
-   you check in as early as possible (at least 30 minutes before) and
    let us know that you want to do it live
    <https://emacsconf.org/2021/speakers>

Going with the prerecorded video is probably the least-stress option
for everyone, but we wanted to offer you the option to go live just in case.

Looking forward to seeing you soon!


<a id="orgbe5dce0"></a>

## Compress video

Usage: `compress-video.sh original-file output-file`:

    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"

We tried using q56 before, but it was a little too aggressive. Q=32 is the default and is probably a reasonable space vs. quality compromise.


<a id="sound"></a>

## Experiment with setup to allow MPV / BBB sound isolation

Set MIC and OUTPUT appropriately.

    MIC=alsa_input.usb-046d_0819_A68D6BE0-02.mono-fallback
    OUTPUT=alsa_output.pci-0000_00_1b.0.analog-stereo
    if [ "$1" == "-u" ]; then
      pactl unload-module module-loopback
      pactl unload-module module-null-sink
    else
      pacmd load-module module-null-sink sink_name=recording sink_properties=device.description=recording channels=2
      pacmd load-module module-null-sink sink_name=mpv sink_properties=device.description=mpv
      pacmd load-module module-loopback source=$MIC sink=recording
      pacmd load-module module-loopback source=mpv.monitor sink=recording
      pacmd load-module module-loopback source=recording.monitor sink=$OUTPUT
    fi

You can probably then use `pavucontrol` (choose All Streams instead of
Applications on the Playback tab) or something like the following to
redirect the mpv output to the mpv sink.

    pacmd list-sink-inputs  # notice the ID for the process you want to redirect
    pacmd move-sink-input 1 mpv


<a id="orgde63d42"></a>

## Check for video encoding issues

Sometimes the compression may get cut off. You can use
`compile-media-verify-video-frames` from
<https://github.com/sachac/compile-media> to check that videos have
enough frames for their expected duration