summaryrefslogtreecommitdiffstats
path: root/2022/organizers-notebook/index.org
diff options
context:
space:
mode:
Diffstat (limited to '2022/organizers-notebook/index.org')
-rw-r--r--2022/organizers-notebook/index.org437
1 files changed, 271 insertions, 166 deletions
diff --git a/2022/organizers-notebook/index.org b/2022/organizers-notebook/index.org
index e25c13b3..db2de204 100644
--- a/2022/organizers-notebook/index.org
+++ b/2022/organizers-notebook/index.org
@@ -90,10 +90,17 @@ SCHEDULED: <2022-10-09 Sun>
Add your news and requests to this.
**** Template so far
+:PROPERTIES:
+:SUBJECT: Getting ready for EmacsConf ${year}
+:END:
+
+Hello, EmacsConf volunteers!
-- https://emacsconf.org/2022/organizers-notebook/#overall has an overall
+We're starting to gear up for EmacsConf ${year} and we would love your help!
+
+- https://emacsconf.org/${year}/organizers-notebook/#overall has an overall
prioritization matrix. If any of those options look interesting, you
- can volunteer to help move the needle!
+ can volunteer to help move the needle.
- sachac: Given the number of talks this year, we're going to try to
see if we can pull off two tracks. I've posted a draft schedule at
https://emacsconf.org/2022/draft-schedule/ and will e-mail speakers
@@ -123,17 +130,17 @@ Look for the TO_CONFIRM status in conf.org, probably include in schedule e-mail
:END:
| | Work | Speakers | Volunteers | Public |
-| [2022-09-30 Fri] | | acceptance, reply to confirm | | |
-| [2022-10-09 Sun] | | schedule, reply if not okay | overall priorities | |
+| [2022-09-30 Fri] | | [[#acceptance][acceptance, reply to confirm]] | | |
+| [2022-10-09 Sun] | | [[#check-sched][schedule, reply if not okay]] | [[#volunteer-2022-10-09][overall priorities]] | |
| [2022-10-16 Sun] | [[#upload][file upload]] | follow up with radio silence | infra update | |
| [2022-10-23 Sun] | [[#etherpad][Etherpad]], [[#upload][stream]] | file upload instructions, drop radio silence | training | |
| [2022-10-30 Sun] | [[#intro][intro, exit videos]] | | shifts | schedule, posters? |
| [2022-11-06 Sun] | [[#write-viewing][watch pages]] | prerec confirmation/reminder, caption progress | caption kickoff | |
-| [2022-11-13 Sun] | captions | tech check | | |
+| [2022-11-13 Sun] | dry run, captions | tech check | | |
| [2022-11-20 Sun] | captions | checkin instructions | | |
| [2022-11-27 Sun] | captions | last weekend before EmacsConf | | watching |
-*** TODO Send people schedule information and doublecheck their availability/Q&A preference :sachac:email:speakers:sched:
-SCHEDULED: <2022-10-08 Sat>
+*** DONE Send people schedule information and doublecheck their availability/Q&A preference :sachac:email:speakers:sched:
+CLOSED: [2022-10-09 Sun 09:38] SCHEDULED: <2022-10-08 Sat>
:PROPERTIES:
:CUSTOM_ID: check-sched
:END:
@@ -144,61 +151,147 @@ SCHEDULED: <2022-10-08 Sat>
GROUP is (email . (talk talk))"
(interactive (list (emacsconf-mail-complete-email-group)))
(require 'emacsconf-ical)
- (emacsconf-mail-prepare
- (or template (emacsconf-mail-merge-get-template "check-sched"))
- group
- (list
- :titles
- (mapconcat (lambda (o) (format "%s %s"
- (plist-get o :title)
- (format-time-string
- "%b %-e %I:%M %Z"
- (plist-get o :start-time)
- emacsconf-timezone)))
- (cdr group) " and ")
- :speakers-short
- (plist-get (cadr group) :speakers-short)
- :plural
- (if (= (length (cdr group)) 1) "" "s")
- :email
- (plist-get (cadr group) :email)
- :year
- (or (plist-get (cadr group) :year) emacsconf-year)
- :coordination-note
- (if (seq-find (lambda (o) (member (plist-get o :slug) '("journalism" "rolodex" "orgsuperlinks" "buttons" "hyperorg" "science")))
- (cdr group))
- "I've changed the order slightly from the coordination e-mail I sent you. The sequence is now journalism - science - rolodex - orgsuperlinks - buttons - hyperorg. science is now second instead of last, and the first two talks are on Sat while the last four are on Sun. That probably means you don't have to coordinate as much, but you can still do so if you would like to build on other people's talks."
- "")
- :schedule
- (mapconcat
- (lambda (o) (format "\"%s\" (%s) - %s track\n%s"
- (plist-get o :title)
- (plist-get o :slug)
- (plist-get o :track)
- (string-join
- (let ((emacsconf-timezones
- (if (plist-get o :timezone)
- (seq-uniq (list emacsconf-timezone (plist-get o :timezone) "UTC"))
- emacsconf-timezones)))
- (emacsconf-timezone-strings o))
- "\n")))
- (cdr group)
- "\n----------------------------------------------------------------\n")
- :timezone-note
- (if (plist-get (cadr group) :timezone)
- (format "I've included a conversion to the %s timezone. Let me know if you'd like me to use a different timezone in future e-mails."
- (plist-get (cadr group) :timezone))
- "I can translate times into your local timezone. Let me know what timezone you'd like me to use.")
- :availability-note
- (if (seq-find (lambda (o) (string-match "yes" (or (plist-get o :availability) ""))) (cdr group))
- (format "I think you've indicated that you're available during the conference.")
- (format "I think it respects your indicated availability, which we've noted as %s. "
- (string-join
- (seq-uniq
- (mapcar
- (lambda (o) (format "\"%s\"" (plist-get o :availability)))
- (cdr group)))
- " and "))))))
+ (let ((reply-by-date (date-to-time "2022-10-14"))
+ (draft-schedule (concat emacsconf-base-url emacsconf-year "/draft-schedule/")))
+ (emacsconf-mail-prepare
+ (or template (emacsconf-mail-merge-get-template "check-sched"))
+ group
+ (list
+ :titles
+ (mapconcat (lambda (o) (format "%s: %s"
+ (plist-get o :slug)
+ (format-time-string
+ "%b %-e %-I:%M %#p %Z"
+ (plist-get o :start-time)
+ emacsconf-timezone)))
+ (cdr group) "; ")
+ :draft-schedule
+ draft-schedule
+ :speakers-short
+ (plist-get (cadr group) :speakers-short)
+ :plural
+ (if (= (length (cdr group)) 1) "" "s")
+ :email
+ (plist-get (cadr group) :email)
+ :year
+ (or (plist-get (cadr group) :year) emacsconf-year)
+ :coordination-note
+ (if (seq-find (lambda (o) (member (plist-get o :slug) '("journalism" "rolodex" "orgsuperlinks" "buttons" "hyperorg" "science")))
+ (cdr group))
+ "I've changed the order slightly from the coordination e-mail I sent you. The sequence is now journalism - science - rolodex - orgsuperlinks - buttons - hyperorg. science is now second instead of last, and the first two talks are on Sat while the last four are on Sun. That probably means you don't have to coordinate as much, but you can still do so if you would like to build on other people's talks."
+ "")
+ :schedule
+ (mapconcat
+ (lambda (o) (format "* TODO Check time for \"%s\" (%s) :emacsconf:\nDEADLINE: %s\n(Not a hard deadline, just encouragement to e-mail us before that date if you can)\nPlease e-mail [[mailto:emacsconf-submit@gnu.org]] if you need it changed\n%s track\n%s\nIn context: %s"
+ (plist-get o :title)
+ (plist-get o :slug)
+ (format-time-string (car org-time-stamp-formats) reply-by-date emacsconf-timezone)
+ (plist-get o :track)
+ (string-join
+ (let ((emacsconf-timezones
+ (if (plist-get o :timezone)
+ (seq-uniq (append (list emacsconf-timezone)
+ (split-string (plist-get o :timezone) " ")
+ (list "UTC")))
+ emacsconf-timezones)))
+ (emacsconf-timezone-strings o))
+ "\n")
+ draft-schedule))
+ (cdr group)
+ "\n----------------------------------------------------------------\n")
+ :reply-by
+ (format-time-string "%b %-e (%a)" reply-by-date emacsconf-timezone)
+ :timezone-note
+ (if (plist-get (cadr group) :timezone)
+ (format "I've included timezone conversion to %s. Let me know if you'd like me to use a different timezone in future e-mails."
+ (plist-get (cadr group) :timezone) " ")
+ "I can translate times into your local timezone. Let me know what timezone you'd like me to use.")
+ :availability-note
+ (cond
+ ((seq-find (lambda (o) (string-match "yes" (or (plist-get o :availability) ""))) (cdr group))
+ (format "I think you've indicated that you're available during the conference."))
+ ((seq-find (lambda (o) (string-match "not indicated" (or (plist-get o :availability) ""))) (cdr group))
+ (format "I think you didn't indicate any particular availability constraints in your submission."))
+ (t (format "I think it respects your indicated availability, which we've noted as %s."
+ (string-join
+ (seq-uniq
+ (mapcar
+ (lambda (o) (format "\"%s\"" (plist-get o :availability)))
+ (cdr group)))
+ " and "))))))))
+
+(defun emacsconf-mail-schedule-update (group &optional template)
+ "Send draft schedule update.
+GROUP is (email . (talk talk))"
+ (interactive (list (emacsconf-mail-complete-email-group)))
+ (require 'emacsconf-ical)
+ (let ((reply-by-date (date-to-time "2022-10-14"))
+ (draft-schedule (concat emacsconf-base-url emacsconf-year "/draft-schedule/")))
+ (emacsconf-mail-prepare
+ (or template (emacsconf-mail-merge-get-template "check-sched"))
+ group
+ (list
+ :titles
+ (mapconcat (lambda (o) (format "%s: %s"
+ (plist-get o :slug)
+ (format-time-string
+ "%b %-e %-I:%M %#p %Z"
+ (plist-get o :start-time)
+ emacsconf-timezone)))
+ (cdr group) "; ")
+ :draft-schedule
+ draft-schedule
+ :speakers-short
+ (plist-get (cadr group) :speakers-short)
+ :plural
+ (if (= (length (cdr group)) 1) "" "s")
+ :email
+ (plist-get (cadr group) :email)
+ :year
+ (or (plist-get (cadr group) :year) emacsconf-year)
+ :coordination-note
+ (if (seq-find (lambda (o) (member (plist-get o :slug) '("journalism" "rolodex" "orgsuperlinks" "buttons" "hyperorg" "science")))
+ (cdr group))
+ "I've changed the order slightly from the coordination e-mail I sent you. The sequence is now journalism - science - rolodex - orgsuperlinks - buttons - hyperorg. science is now second instead of last, and the first two talks are on Sat while the last four are on Sun. That probably means you don't have to coordinate as much, but you can still do so if you would like to build on other people's talks."
+ "")
+ :schedule
+ (mapconcat
+ (lambda (o) (format "\"%s\" (%s)\n%s track\n%s\nIn context: %s"
+ (plist-get o :title)
+ (plist-get o :slug)
+ (plist-get o :track)
+ (string-join
+ (let ((emacsconf-timezones
+ (if (plist-get o :timezone)
+ (seq-uniq (append (list emacsconf-timezone)
+ (split-string (plist-get o :timezone) " ")
+ (list "UTC")))
+ emacsconf-timezones)))
+ (emacsconf-timezone-strings o))
+ "\n")
+ draft-schedule))
+ (cdr group)
+ "\n----------------------------------------------------------------\n")
+ :reply-by
+ (format-time-string "%b %-e (%a)" reply-by-date emacsconf-timezone)
+ :timezone-note
+ (if (plist-get (cadr group) :timezone)
+ (format "I've included timezone conversion to %s. Let me know if you'd like me to use a different timezone in future e-mails."
+ (plist-get (cadr group) :timezone) " ")
+ "I can translate times into your local timezone. Let me know what timezone you'd like me to use.")
+ :availability-note
+ (cond
+ ((seq-find (lambda (o) (string-match "yes" (or (plist-get o :availability) ""))) (cdr group))
+ (format "I think you've indicated that you're available during the conference."))
+ ((seq-find (lambda (o) (string-match "not indicated" (or (plist-get o :availability) ""))) (cdr group))
+ (format "I think you didn't indicate any particular availability constraints in your submission."))
+ (t (format "I think it respects your indicated availability, which we've noted as %s."
+ (string-join
+ (seq-uniq
+ (mapcar
+ (lambda (o) (format "\"%s\"" (plist-get o :availability)))
+ (cdr group)))
+ " and "))))))))
#+end_src
**** Template
@@ -207,6 +300,7 @@ GROUP is (email . (talk talk))"
:SUBJECT: EmacsConf draft schedule: ${titles}
:REPLY_TO: emacsconf-submit@gnu.org, ${email}
:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email}
+:CC: emacsconf-submit@gnu.org
:FUNCTION: emacsconf-mail-schedule
:END:
Hi, ${speakers-short}!
@@ -228,12 +322,37 @@ the draft schedule at https://emacsconf.org/${year}/draft-schedule/ .
The times may move around a bit as we update the schedule, so I'll
check in with you if things change a lot. ${coordination-note} ${wrap}
-Please let us know if the times don't work for you or if you think
-your talk would go better next to a different talk. We're aiming to
-publish the schedule by *Oct 15*, so we'd love to hear from you by
-then if we need to tweak things. We can shuffle things around even
-after that date if something comes up. ${timezone-note} Please keep
-emacsconf-submit@gnu.org in To or Cc when replying. Thanks!${wrap}
+We'd like to publish the schedule this month, so we'd love to hear
+from you by *${reply-by}* if the times don't work for you. (We can shuffle
+things around even after that date if something comes up.) Also, if
+you think your talk${plural} would go better next to a different talk, please
+let us know. ${timezone-note} Please keep emacsconf-submit@gnu.org in
+To or Cc when replying. Thanks!${wrap}
+
+Sacha
+**** Schedule change affecting dev
+:PROPERTIES:
+:SUBJECT: EmacsConf draft schedule update: ${titles}
+:REPLY_TO: emacsconf-submit@gnu.org, ${email}
+:MAIL_FOLLOWUP_TO: emacsconf-submit@gnu.org, ${email}
+:CC: emacsconf-submit@gnu.org
+:FUNCTION: emacsconf-mail-schedule-update
+:SLUGS: asmblox wayland localizing treesitter lspbridge dbus
+:EMAIL_ID: sched-change
+:END:
+
+Quick update!
+
+I tweaked the schedule to accommodate some schedule requests. Please
+check https://emacsconf.org/${year}/draft-schedule/ to see the current
+schedule for your talk. The main change is that the localizing talk is
+now on Sunday afternoon, so asmblox and wayland are on Saturday
+morning along with treesitter and lspbridge, and dbus has moved a
+little earlier on Sunday afternoon. Thanks for your patience!
+
+----------------------------------------------------------------
+${schedule}
+----------------------------------------------------------------
Sacha
@@ -399,7 +518,7 @@ can currently publish
**** TODO Get ansible to run against a clean docker
**** TODO Add ikiwiki template to ansible
-*** BLOCKED Make intro and exit videos
+*** BLOCKED Make intro and exit sequence
:PROPERTIES:
:CREATED: [2022-10-03 Mon 07:50]
:CUSTOM_ID: intro
@@ -415,8 +534,7 @@ Needs to wait for pad decision, or have friendly URLs redirect to the right pads
- Good: Static image, maybe created with LaTeX
- Better: Looping video with unobtrusive sound so people can doublecheck that their audio works
-- Best: Multiple versions to accommodate last-minute changes to Q&A
-- Bester? ;) : Voice-over contextualizing the talk? Pointers to related talks?
+- Best: Emacs thing so that we can have a dynamic timer and last-minute announcements, and so that it's Emacs =)
See break commercials
https://www.collabmagazine.com/organizing-a-multi-track-virtual-conference-with-microsoft-teams-live-events-a-technical-playbook-and-lessons-learned/
@@ -478,10 +596,35 @@ Also add to watch page
:PROPERTIES:
:CUSTOM_ID: publish-live
:END:
-*** TODO Set up talks on Toobnix and YouTube :sachac:
+*** BLOCKED Set up talks on Toobnix and YouTube :sachac:
:PROPERTIES:
:CUSTOM_ID: video-platforms
:END:
+so that people can find the videos on other video platforms
+waiting for prerecs
+*** TODO Set up stream events on Toobnix and YouTube :sachac:
+:PROPERTIES:
+:CUSTOM_ID: other-streams
+:END:
+
+so that people on other platforms can come across EmacsConf
+
+ #+begin_src sh :eval no :exports code
+ MOUNT=$1
+ while true; do ffmpeg -loglevel 24 -i http://localhost:8000/main.webm -cluster_size_limit 2M -cluster_time_limit 5100 -b:v 1M -crf 30 -g 125 -deadline good -threads 4 -vcodec libx264 -acodec libmp3lame -f flv $MOUNT; done
+ #+end_src
+*** TODO Prepare to announce talks on IRC
+:PROPERTIES:
+:CUSTOM_ID: irc-announce
+:END:
+
+- talks should be announced in their relevant tracks and in the hallways
+ - video starting in 5 minutes
+ - video starting now
+ - Q&A starting now & where
+- a small announcement might go into the other track as well
+- announcement can include talk page, pad, IRC nick, pronouns
+
*** TODO Ask speakers for bios or support nudges to include on their talk pages
:PROPERTIES:
:CUSTOM_ID: speaker-bio
@@ -489,6 +632,37 @@ Also add to watch page
maybe after we get the prerecs
ex: liberapay, patreon, anyone looking for a job, etc.
+*** BLOCKED Do a dry run
+:PROPERTIES:
+:CUSTOM_ID: dry-run
+:END:
+
+- Streams
+ - [ ] General stream
+ - [ ] Development stream
+ - [ ] 480p streams
+ - [ ] Toobnix streams
+ - [ ] YouTube streams
+- Scenes
+ - [ ] Intro
+ - [ ] Prerec
+ - [ ] Q&A: live
+ - [ ] Q&A: IRC
+ - [ ] Q&A: pad
+- [ ] IRC channels
+ - [ ] Announce
+ - [ ] Timers
+ - [ ] Question handling
+- [ ] Watching pages
+ - [ ] Before launch
+ - [ ] Streaming
+ - [ ] Emergency announcement
+- [ ] Pads
+- [ ] Wiki
+ - [ ] Schedule update
+ - [ ] Message on the schedule
+ - [ ] Prerec live
+- [ ] Wind everything down
*** TODO [#C] Figure out why ikiwiki is slow :infra:wiki:
:PROPERTIES:
:CUSTOM_ID: ikiwiki-regex
@@ -539,26 +713,27 @@ slider depending on who wants to volunteer and how much we can get
done. At some point, we'll figure out how to track our current status
so we know what we need to scramble to do.
-| | Good | Better | Best |
-|-------------------+----------------------------------+-----------------------------+------------------------------------------------------|
-| [[#sched-decision][schedule]] | one track | *DONE S: two tracks* | aligned times, full roster |
-| schedule view | text table | S: imagemap fallback | *DONE S: interactive SVG* |
-| [[#upload][upload]] | FTP | *S?: web-based* | auto-encoded, preview (SReview?) |
-| [[#streaming][streaming]] | ffmpeg from computer | DONE OBS | *Z: OBS in cloud, switchable hosts* |
-| [[#prepare-prerec-process][prerec]] | DONE play original with captions | Z: normalize audio | *S: post as soon as talk is live* |
-| host | no host, speaker reads pad | *host reads pad* | host monitors IRC and helps with BBB as well |
-| BBB Q&A | none | *DONE open to community* | moderated by speaker and host |
-| [[#write-viewing][watch page]] | tracks | *S: + IRC* | + talk info, maybe even pad |
-| [[#etherpad][pad]] | one pad for conf | one pad per talk, wikimedia | *one pad per talk, self-hosted* so we can access API |
-| [[#irc][IRC]] | #emacsconf, -org | *tracks, hallway, org* | IRC volunteer copying to pads; maybe even IRC bots |
-| IRC announcements | *ERC commands* | timer-based | |
-| [[#publishing-sched][sched update]] | *S: publish at start* | update main sched | update talk pages |
-| [[#publish-live][talk pages]] | S: link to stream, pad, IRC | *link to prerec when live* | embed stream, pad, IRC, prerec |
-| [[#other-streams][other streams]] | 480p | + Toobnix | *S: + YouTube* |
-| other platforms | *S: Toobnix & YT after event* | | S: Toobnix + YT when live |
-| [[#wiki-design][wiki]] | plain text, markdown | *S: some JS enrichment* | more JS and CSS, embeds, videoplayer |
-| intro and exit | *generic static image* | per-talk image | image variants, audio/video to help people check |
-| ansible | none | *some automation* | comprehensive, can also work against containers |
+| | Good | Better | Best |
+|-------------------+-------------------------------------+--------------------------------------+------------------------------------------------------|
+| [[#sched-decision][schedule]] | one track | *DONE S: two tracks* | aligned times, full roster |
+| schedule view | text table | S: imagemap fallback | *DONE S: interactive SVG* |
+| [[#upload][upload]] | FTP | *S?: web-based* | auto-encoded, preview (SReview?) |
+| [[#streaming][streaming]] | ffmpeg from computer | DONE OBS | *Z: OBS in cloud, switchable hosts* |
+| [[#prepare-prerec-process][prerec]] | DONE play original with captions | Z: normalize audio | *S: post as soon as talk is live* |
+| BBB rooms | about 5 rooms that we cycle through | | *one room per speaker* |
+| host | no host, speaker reads pad | *host reads pad* | host monitors IRC and helps with BBB as well |
+| BBB Q&A | none | *DONE open to community* | moderated by speaker and host |
+| [[#write-viewing][watch page]] | tracks | *S: + IRC* | + talk info, maybe even pad |
+| [[#etherpad][pad]] | one pad for conf | one pad per talk, wikimedia | *one pad per talk, self-hosted* so we can access API |
+| [[#irc][IRC]] | #emacsconf, -org | *tracks, hallway, org* | IRC volunteer copying to pads; maybe even IRC bots |
+| [[#irc-announce][IRC announcements]] | *ERC commands* | timer-based | |
+| [[#publishing-sched][sched update]] | *S: publish at start* | update main sched | update talk pages |
+| [[#publish-live][talk pages]] | S: link to stream, pad, IRC | *link to prerec when live* | embed stream, pad, IRC, prerec |
+| [[#other-streams][other streams]] | 480p | + Toobnix | *S: + YouTube* |
+| [[#video-platforms][other platforms]] | *S: Toobnix & YT after event* | | S: Toobnix + YT when live |
+| [[#wiki-design][wiki]] | plain text, markdown | *sachac: some JS and CSS enrichment* | more JS and CSS, embeds, videoplayer |
+| [[#intro][intro and exit]] | *generic static image* | per-talk image | Emacs thing so we can display info, countdowns, IRC |
+| [[#ansible][ansible]] | none | *sachac: some automation* | comprehensive, can also work against containers |
** How do we want to make the full schedule more manageable?
:PROPERTIES:
@@ -1931,8 +2106,11 @@ Thanks!
Sacha
-** DONE Early speaker notification :sachac:
+** DONE Acceptance :sachac:
CLOSED: [2022-09-30 Fri 18:13] DEADLINE: <2022-09-30 Fri>
+:PROPERTIES:
+:CUSTOM_ID: acceptance
+:END:
We can accept early or send people a note saying notification of acceptance will be on Oct 15, because of the extended CFP.
Right before this e-mail:
@@ -2077,79 +2255,6 @@ Thank you so much!
Sacha Chua
** Future
-*** Acceptance
-This is a copy of the previous
-**** Code
-#+begin_src emacs-lisp
-(defun emacsconf-draft-acceptance ()
- (interactive)
- (let* ((sched (org-timestamp-from-string (org-entry-get (point) "SCHEDULED")))
- (attrs
- (append (emacsconf-get-talk-info-for-subtree)
- :other-notes
- (if (org-entry-get (point) "ORG_NOTE") (concat "--- notes ---\n" (org-entry-get (point) "ORG_NOTE") "\n-----\n\n") "")))
- (avail (plist-get attrs :avail)))
- (plist-put attrs
- :availability
- (cond
- ((null avail) "I don't think you specified availability when submitting. Would this time be okay with you?")
- ((string-match "!avail" avail) "We know this isn't when you've indicated when you'd be available, but will this time be okay for presenting the talk? It's okay to follow up with questions after the event. If you happen to be available, we'd love to have you join us.")
- ((string-match "live" avail) "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.")
- ((string-match "IRC" avail) "Will you be able to join around this time to handle questions over IRC or the pad? If not, we can forward questions to you.")
- ((string-match "pad" avail) "Will you be able to join around this time to handle questions over the pad? If not, we can forward questions to you.")
- (t avail)))
- (plist-put attrs
- :time-explanation
- (if (<= (string-to-number (plist-get attrs :time)) (string-to-number (plist-get attrs :min-time)))
- "Thank you for suggesting an awesome talk of that length!"
- "This is less time than you requested, but we've had to make some tough choices to fit all these interesting talks into the schedule. Would it be possible for you to squeeze your talk into that time?"))
- (save-excursion
- (goto-char (org-find-entry-with-id "acceptance"))
- (plist-put attrs :subject (conf-replace-plist-in-string attrs (org-entry-get (point) "ITEM")))
- (org-end-of-meta-data)
- (plist-put attrs :body (buffer-substring-no-properties (point) (org-end-of-subtree))))
- (compose-mail
- (plist-get attrs :email)
- (plist-get attrs :subject)
- '(("Reply-To" . "emacsconf-submit@gnu.org")
- ("Mail-Followup-To" . "emacsconf-submit@gnu.org"))
- nil)
- (message-goto-body)
- (save-excursion (conf-replace-plist-in-string attrs (plist-get attrs :body)))))
-#+end_src
-
-**** Template
-:PROPERTIES:
-:ID: acceptance
-:SUBJECT: EmacsConf ${year} SUB${sub-id} accepted: ${title}
-:END:
-
-Dear ${name},
-
-We would love to have your talk "${title}" as part of EmacsConf
-${year}, and we've allocated ${time} minutes for it. ${time-explanation}
-
-Your talk is tentatively scheduled for ${scheduled}. The times
-may move around a bit as we update the schedule, so we'll check in
-with you if things change a lot. ${availability}
-
-${other-notes}Please plan to prerecord your ${time}-minute
-talk(s) by Sunday ${prere-date} 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.
-
-You can check out https://emacsconf.org/${year}/prepare/ for tips on
-preparing and recording your talk. If you have questions or concerns,
-please let us know.
-
-Thanks,
-
-Sacha Chua
-EmacsConf organization team
-
-P.S. Please keep emacsconf-submit@gnu.org in To or Cc when replying.
-
*** Acknowledge pre-rec submission
#+begin_src emacs-lisp