summaryrefslogtreecommitdiffstats
path: root/2021
diff options
context:
space:
mode:
Diffstat (limited to '2021')
-rw-r--r--2021/captions/emacsconf-2021-omegat--emacs-manuals-translation-and-omegat--jean-christophe-helary--main--chapters.vtt31
-rw-r--r--2021/captions/omegat.md600
-rw-r--r--2021/organizers-notebook.md10
-rw-r--r--2021/organizers-notebook.org32
-rw-r--r--2021/playbook.md1411
-rw-r--r--2021/playbook.org1194
-rw-r--r--2021/playbook/restream-flv.sh2
-rw-r--r--2021/playbook/restream-lowres.sh2
-rw-r--r--2021/playbook/restream-youtube.sh2
-rw-r--r--2021/playbook/stream-desktop-and-audio.sh1
-rw-r--r--2021/talks/binary.md31
11 files changed, 3284 insertions, 32 deletions
diff --git a/2021/captions/emacsconf-2021-omegat--emacs-manuals-translation-and-omegat--jean-christophe-helary--main--chapters.vtt b/2021/captions/emacsconf-2021-omegat--emacs-manuals-translation-and-omegat--jean-christophe-helary--main--chapters.vtt
new file mode 100644
index 00000000..51d6ae42
--- /dev/null
+++ b/2021/captions/emacsconf-2021-omegat--emacs-manuals-translation-and-omegat--jean-christophe-helary--main--chapters.vtt
@@ -0,0 +1,31 @@
+WEBVTT
+
+00:01.280 --> 00:00:45.600
+Introduction
+
+00:45.600 --> 00:01:04.559
+State of the manuals
+
+01:04.559 --> 00:02:15.680
+gettext and po4a
+
+00:02:15.680 --> 00:03:39.760
+OmegaT
+
+03:39.760 --> 00:05:21.440
+OmegaT demo
+
+05:21.440 --> 00:06:38.560
+Protected strings
+
+06:38.560 --> 00:06:57.199
+Entering strings
+
+06:57.199 --> 00:07:25.199
+Validation
+
+07:25.199 --> 00:08:39.760
+Collaboration
+
+08:39.760 --> 00:09:06.760
+Conclusion
diff --git a/2021/captions/omegat.md b/2021/captions/omegat.md
index 6cbfb9e9..e6f68e57 100644
--- a/2021/captions/omegat.md
+++ b/2021/captions/omegat.md
@@ -298,3 +298,603 @@
[[!template text="so don't hesitate to send me" start="00:08:59.200" video="mainVideo" id=subtitle]]
[[!template text="questions and remarks." start="00:09:00.480" video="mainVideo" id=subtitle]]
[[!template text="Thank you again, and see you around." start="00:09:02.080" video="mainVideo" id=subtitle]]
+
+# Transcript (Japanese)
+
+[[!template new="1" text="皆さん、こんにちは。" start="00:00:01.280" video="mainVideo" id="subtitle"]]
+[[!template text="エラリー ジャンクリストフといいます。" start="00:00:02.560" video="mainVideo" id="subtitle"]]
+[[!template text="今日はEmacsのマニュアルの翻訳と" start="00:00:04.400" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTについてお話しします。" start="00:00:05.680" video="mainVideo" id="subtitle"]]
+[[!template text="セッションに参加いただき、ありがとうございます。" start="00:00:08.320" video="mainVideo" id="subtitle"]]
+[[!template text="自由ソフトウェアの世界では" start="00:00:10.960" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳は本当に大きな意味を持ちます。" start="00:00:12.880" video="mainVideo" id="subtitle"]]
+[[!template text="ほとんどのLinuxディストリビューション、" start="00:00:15.040" video="mainVideo" id="subtitle"]]
+[[!template text="ソフトウェアパッケージ" start="00:00:17.119" video="mainVideo" id="subtitle"]]
+[[!template text="ウェブサイトが" start="00:00:18.720" video="mainVideo" id="subtitle"]]
+[[!template text="異なるプロセスやファイル形式を使い、" start="00:00:19.920" video="mainVideo" id="subtitle"]]
+[[!template text="多くのコミュニティによって" start="00:00:22.320" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳されていることをすでにご存知でしょう。" start="00:00:23.439" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳とローカライゼーションについては" start="00:00:24.880" video="mainVideo" id="subtitle"]]
+[[!template text="ノウハウと経験がかなり蓄積されています。" start="00:00:27.359" video="mainVideo" id="subtitle"]]
+[[!template text="しかし、Emacsコミュニティについては" start="00:00:29.599" video="mainVideo" id="subtitle"]]
+[[!template text="必ずしもそうではありません。" start="00:00:30.400" video="mainVideo" id="subtitle"]]
+[[!template text="色々と複雑で、" start="00:00:32.160" video="mainVideo" id="subtitle"]]
+[[!template text="またリソースがないため、" start="00:00:34.079" video="mainVideo" id="subtitle"]]
+[[!template text="ローカライゼーションプロセスが" start="00:00:35.200" video="mainVideo" id="subtitle"]]
+[[!template text="まだ確立していません。" start="00:00:35.920" video="mainVideo" id="subtitle"]]
+[[!template text="しかし、マニュアルの翻訳は可能ですし、" start="00:00:37.600" video="mainVideo" id="subtitle"]]
+[[!template text="マニュアルの翻訳によって、" start="00:00:39.920" video="mainVideo" id="subtitle"]]
+[[!template text="Emacsコミュニティ全体に" start="00:00:41.200" video="mainVideo" id="subtitle"]]
+[[!template text="多くの利益がもたらされるでしょう。" start="00:00:42.399" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="では、マニュアルはどうなっているのでしょうか?" start="00:00:45.600" video="mainVideo" id="subtitle"]]
+[[!template text="今日現在、182のファイルが" start="00:00:47.920" video="mainVideo" id="subtitle"]]
+[[!template text=".texi や.org 形式で作成されています。" start="00:00:51.199" video="mainVideo" id="subtitle"]]
+[[!template text="単語数は200万以上です。" start="00:00:54.160" video="mainVideo" id="subtitle"]]
+[[!template text="文字数は、" start="00:00:56.559" video="mainVideo" id="subtitle"]]
+[[!template text="5000万以上です。" start="00:00:57.360" video="mainVideo" id="subtitle"]]
+[[!template text="これはかなりの量ですし、" start="00:00:59.039" video="mainVideo" id="subtitle"]]
+[[!template text="当然ながら、一人でできる仕事ではありません。" start="00:01:00.559" video="mainVideo" id="subtitle"]]
+[[!template new="1" text=".texi ファイルを開くと、" start="00:01:04.559" video="mainVideo" id="subtitle"]]
+[[!template text="何が出てくるのでしょうか?" start="00:01:06.159" video="mainVideo" id="subtitle"]]
+[[!template text="実は、翻訳者が翻訳する必要が" start="00:01:07.760" video="mainVideo" id="subtitle"]]
+[[!template text="ないものが" start="00:01:09.439" video="mainVideo" id="subtitle"]]
+[[!template text="たくさんあるのです。" start="00:01:10.560" video="mainVideo" id="subtitle"]]
+[[!template text="ここでは、一番最後の" start="00:01:12.400" video="mainVideo" id="subtitle"]]
+[[!template text="セグメント、一番最後の" start="00:01:13.680" video="mainVideo" id="subtitle"]]
+[[!template text="文だけが翻訳する" start="00:01:15.040" video="mainVideo" id="subtitle"]]
+[[!template text="必要があります。" start="00:01:16.400" video="mainVideo" id="subtitle"]]
+[[!template text="このようなメタ的なものは" start="00:01:18.080" video="mainVideo" id="subtitle"]]
+[[!template text="すべて翻訳者の目に" start="00:01:19.360" video="mainVideo" id="subtitle"]]
+[[!template text="触れる必要はありません。" start="00:01:20.240" video="mainVideo" id="subtitle"]]
+[[!template text="このような場合はどう対処すればいいのでしょうか?" start="00:01:24.479" video="mainVideo" id="subtitle"]]
+[[!template text="ソースファイルの場合、" start="00:01:26.720" video="mainVideo" id="subtitle"]]
+[[!template text="gettext というユーティリティーがあり、" start="00:01:27.680" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳可能な文字列を" start="00:01:29.360" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳可能な形式に変換します。" start="00:01:30.640" video="mainVideo" id="subtitle"]]
+[[!template text="それが .po 形式になります。" start="00:01:32.079" video="mainVideo" id="subtitle"]]
+[[!template text="この .po 形式はどこにでもあり、" start="00:01:33.840" video="mainVideo" id="subtitle"]]
+[[!template text="自由ではないソフトウェア" start="00:01:35.520" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳業界でも広く使われています。" start="00:01:36.400" video="mainVideo" id="subtitle"]]
+[[!template text="ドキュメントについては" start="00:01:38.720" video="mainVideo" id="subtitle"]]
+[[!template text="別のツールがあります。" start="00:01:39.520" video="mainVideo" id="subtitle"]]
+[[!template text="po4a と呼ばれるもので、" start="00:01:40.720" video="mainVideo" id="subtitle"]]
+[[!template text="これは「po for all」の略です。" start="00:01:42.000" video="mainVideo" id="subtitle"]]
+[[!template text="po4aを182.texiと" start="00:01:45.119" video="mainVideo" id="subtitle"]]
+[[!template text=".org ファイルに用いると" start="00:01:46.399" video="mainVideo" id="subtitle"]]
+[[!template text="どうなるでしょうか?" start="00:01:49.200" video="mainVideo" id="subtitle"]]
+[[!template text="先ほどよりずっといいものができました。" start="00:01:50.479" video="mainVideo" id="subtitle"]]
+[[!template text="これで分節が3つができました。" start="00:01:52.640" video="mainVideo" id="subtitle"]]
+[[!template text="ご覧の通り、" start="00:01:54.799" video="mainVideo" id="subtitle"]]
+[[!template text="最初の2つの分節は" start="00:01:55.759" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳の必要がないので、" start="00:01:56.399" video="mainVideo" id="subtitle"]]
+[[!template text="完璧ではありません。" start="00:01:57.280" video="mainVideo" id="subtitle"]]
+[[!template text="ですから、まだ" start="00:01:58.880" video="mainVideo" id="subtitle"]]
+[[!template text="改善の余地があります。" start="00:01:59.520" video="mainVideo" id="subtitle"]]
+[[!template text="さて、このファイルセットを" start="00:02:02.479" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTに入れると翻訳対象単語数が" start="00:02:04.960" video="mainVideo" id="subtitle"]]
+[[!template text="かなり減ります。" start="00:02:07.119" video="mainVideo" id="subtitle"]]
+[[!template text="単語数が50%、" start="00:02:08.800" video="mainVideo" id="subtitle"]]
+[[!template text="文字数が23%減りましたが、" start="00:02:11.360" video="mainVideo" id="subtitle"]]
+[[!template text="まだかなりの仕事量です。" start="00:02:14.239" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="では、ここでOmegaTについて、" start="00:02:15.680" video="mainVideo" id="subtitle"]]
+[[!template text="そして、OmegaTがどこに役立つかを見てみましょう。" start="00:02:17.599" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTは、GPL3+ Java8+ のソフトで" start="00:02:22.239" video="mainVideo" id="subtitle"]]
+[[!template text="コンピューター支援翻訳ツールです。" start="00:02:25.440" video="mainVideo" id="subtitle"]]
+[[!template text="Computer Aided Translationと呼ばれます。" start="00:02:27.599" video="mainVideo" id="subtitle"]]
+[[!template text="CATは翻訳者にとって、" start="00:02:29.440" video="mainVideo" id="subtitle"]]
+[[!template text="プログラマーにとってのIDEのようなものです。" start="00:02:30.720" video="mainVideo" id="subtitle"]]
+[[!template text="CATは、コンピュータの力を利用して" start="00:02:33.280" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳者の仕事を自動化します。" start="00:02:35.040" video="mainVideo" id="subtitle"]]
+[[!template text="例えば、参考翻訳の検索や" start="00:02:36.480" video="mainVideo" id="subtitle"]]
+[[!template text="ファジーマッチ、自動入力" start="00:02:38.400" video="mainVideo" id="subtitle"]]
+[[!template text="などのようなものです。" start="00:02:40.800" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTは最近のものありません。" start="00:02:44.080" video="mainVideo" id="subtitle"]]
+[[!template text="来年で20年になり、" start="00:02:46.319" video="mainVideo" id="subtitle"]]
+[[!template text="現時点では" start="00:02:48.319" video="mainVideo" id="subtitle"]]
+[[!template text="SourceForgeのサイトから" start="00:02:48.959" video="mainVideo" id="subtitle"]]
+[[!template text="150万件前後のダウンロードがあります。" start="00:02:51.440" video="mainVideo" id="subtitle"]]
+[[!template text="これにはローカライズや" start="00:02:53.200" video="mainVideo" id="subtitle"]]
+[[!template text="マニュアルに使用されるファイルが" start="00:02:54.080" video="mainVideo" id="subtitle"]]
+[[!template text="多少含まれるので、" start="00:02:55.040" video="mainVideo" id="subtitle"]]
+[[!template text="それほど意味はありませんが、" start="00:02:56.480" video="mainVideo" id="subtitle"]]
+[[!template text="それでもかなり大きな数字です。" start="00:02:57.920" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTは、多くのLinux" start="00:02:59.599" video="mainVideo" id="subtitle"]]
+[[!template text="ディストリビューションに含まれますが、" start="00:03:00.720" video="mainVideo" id="subtitle"]]
+[[!template text="ここで見られるように" start="00:03:02.400" video="mainVideo" id="subtitle"]]
+[[!template text="ほとんどがWindowsでダウンロードされています。" start="00:03:03.680" video="mainVideo" id="subtitle"]]
+[[!template text="なぜなら、翻訳者は" start="00:03:05.920" video="mainVideo" id="subtitle"]]
+[[!template text="ほとんどWindows上で作業しているからです。" start="00:03:06.800" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTにもかっこいいロゴと" start="00:03:09.680" video="mainVideo" id="subtitle"]]
+[[!template text="かっこいいサイトがあります。" start="00:03:11.120" video="mainVideo" id="subtitle"]]
+[[!template text="ぜひ一度ご覧ください。" start="00:03:12.080" video="mainVideo" id="subtitle"]]
+[[!template text="サイトはomegat.orgで、" start="00:03:13.920" video="mainVideo" id="subtitle"]]
+[[!template text="すべての必要な情報が見られます。" start="00:03:16.159" video="mainVideo" id="subtitle"]]
+[[!template text="また、Javaの有無の関わらず、" start="00:03:17.280" video="mainVideo" id="subtitle"]]
+[[!template text="Linuxバージョンもダウンロードできます。" start="00:03:19.040" video="mainVideo" id="subtitle"]]
+[[!template text="では、OmegaTによって何が変わるのでしょうか?" start="00:03:22.080" video="mainVideo" id="subtitle"]]
+[[!template text="プロの翻訳者が提供しなければいけないのは、" start="00:03:24.799" video="mainVideo" id="subtitle"]]
+[[!template text="速く、一貫性があり" start="00:03:26.560" video="mainVideo" id="subtitle"]]
+[[!template text="品質の高い翻訳です。" start="00:03:27.680" video="mainVideo" id="subtitle"]]
+[[!template text="それを実現するためには、" start="00:03:29.519" video="mainVideo" id="subtitle"]]
+[[!template text="適切なツールが必要です。" start="00:03:30.720" video="mainVideo" id="subtitle"]]
+[[!template text="po-modeがツールボックスの一部であればいいのですが、" start="00:03:32.159" video="mainVideo" id="subtitle"]]
+[[!template text="そうはなっていません。" start="00:03:34.239" video="mainVideo" id="subtitle"]]
+[[!template text="残念ながら。" start="00:03:35.120" video="mainVideo" id="subtitle"]]
+[[!template text="ですから、そのようなCATツールを使わなければなりません。" start="00:03:36.560" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="このデモのために作成したプロジェクトを" start="00:03:39.760" video="mainVideo" id="subtitle"]]
+[[!template text="開くと、OmegaTがどのように表示されるか" start="00:03:41.440" video="mainVideo" id="subtitle"]]
+[[!template text="お見せしましょう。" start="00:03:43.120" video="mainVideo" id="subtitle"]]
+[[!template text="表示はかなりややこしいですが、" start="00:03:45.200" video="mainVideo" id="subtitle"]]
+[[!template text="実際には、必要に応じてすべての" start="00:03:46.640" video="mainVideo" id="subtitle"]]
+[[!template text="ウィンドウを変更できます。" start="00:03:47.760" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTがどんなものなのか" start="00:03:49.519" video="mainVideo" id="subtitle"]]
+[[!template text="理解していただくために" start="00:03:50.400" video="mainVideo" id="subtitle"]]
+[[!template text="一度にすべてをお見せしたいと思います。" start="00:03:51.120" video="mainVideo" id="subtitle"]]
+[[!template text="さまざまな色やウィンドウがあり、" start="00:03:53.680" video="mainVideo" id="subtitle"]]
+[[!template text="それらスペースには" start="00:03:55.200" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳者を支援する" start="00:03:55.920" video="mainVideo" id="subtitle"]]
+[[!template text="さまざまな機能がありますが、" start="00:03:57.120" video="mainVideo" id="subtitle"]]
+[[!template text="皆さんにはあまり" start="00:03:58.560" video="mainVideo" id="subtitle"]]
+[[!template text="馴染みがないかもしれません。" start="00:03:59.360" video="mainVideo" id="subtitle"]]
+[[!template text="今からそのインターフェースを" start="00:04:02.879" video="mainVideo" id="subtitle"]]
+[[!template text="ご紹介します。" start="00:04:04.080" video="mainVideo" id="subtitle"]]
+[[!template text="まずは、エディターですね。" start="00:04:05.680" video="mainVideo" id="subtitle"]]
+[[!template text="エディターは2つの部分から成ります。" start="00:04:07.519" video="mainVideo" id="subtitle"]]
+[[!template text="番号に関連づけられた" start="00:04:09.439" video="mainVideo" id="subtitle"]]
+[[!template text="現在の分節と、" start="00:04:10.480" video="mainVideo" id="subtitle"]]
+[[!template text="もうひとつは上下にあるすべての" start="00:04:12.319" video="mainVideo" id="subtitle"]]
+[[!template text="分節です。" start="00:04:13.519" video="mainVideo" id="subtitle"]]
+[[!template text="ウィンドウの一番上には" start="00:04:15.840" video="mainVideo" id="subtitle"]]
+[[!template text=".poファイルにあった最初の3つの分節が" start="00:04:16.720" video="mainVideo" id="subtitle"]]
+[[!template text="表示されています。" start="00:04:18.720" video="mainVideo" id="subtitle"]]
+[[!template text="ここの最後の4つ目の分節には" start="00:04:20.799" video="mainVideo" id="subtitle"]]
+[[!template text="ファジーマッチが自動挿入されています。" start="00:04:22.880" video="mainVideo" id="subtitle"]]
+[[!template text="このようなレガシー翻訳は" start="00:04:28.720" video="mainVideo" id="subtitle"]]
+[[!template text="「翻訳メモリ」と呼ばれます。" start="00:04:30.880" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTがこれを自動挿入したのは、" start="00:04:32.720" video="mainVideo" id="subtitle"]]
+[[!template text="私がそうするように設定したからです。" start="00:04:35.280" video="mainVideo" id="subtitle"]]
+[[!template text="また、私自身のセキュリティのために、" start="00:04:37.120" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳の検証のために" start="00:04:38.560" video="mainVideo" id="subtitle"]]
+[[!template text="削除しなければならない規定の" start="00:04:40.639" video="mainVideo" id="subtitle"]]
+[[!template text="[fuzzy] がついています。" start="00:04:41.919" video="mainVideo" id="subtitle"]]
+[[!template text="次の機能は、用語集機能です。" start="00:04:44.880" video="mainVideo" id="subtitle"]]
+[[!template text="今回のプロジェクトには" start="00:04:47.919" video="mainVideo" id="subtitle"]]
+[[!template text="たくさんの用語集データがあります。" start="00:04:48.479" video="mainVideo" id="subtitle"]]
+[[!template text="関連のあるものもあれば、そうでないものもあります。" start="00:04:50.160" video="mainVideo" id="subtitle"]]
+[[!template text="今翻訳している分節では" start="00:04:52.560" video="mainVideo" id="subtitle"]]
+[[!template text="下線が引かれた項目が" start="00:04:53.919" video="mainVideo" id="subtitle"]]
+[[!template text="あります。" start="00:04:55.199" video="mainVideo" id="subtitle"]]
+[[!template text="右側のポップアップメニューでは" start="00:04:57.520" video="mainVideo" id="subtitle"]]
+[[!template text="入力中に用語を入れることができます。" start="00:04:59.040" video="mainVideo" id="subtitle"]]
+[[!template text="これは自動挿入システムのようなもので、" start="00:05:02.240" video="mainVideo" id="subtitle"]]
+[[!template text="履歴予測や定型文などと" start="00:05:04.639" video="mainVideo" id="subtitle"]]
+[[!template text="いったような入力補完に対応しています。" start="00:05:07.039" video="mainVideo" id="subtitle"]]
+[[!template text="右側の部分には、" start="00:05:14.479" video="mainVideo" id="subtitle"]]
+[[!template text=".poと.texiのファイルから" start="00:05:15.440" video="mainVideo" id="subtitle"]]
+[[!template text="直接得られた" start="00:05:17.120" video="mainVideo" id="subtitle"]]
+[[!template text="参照情報があります。" start="00:05:18.240" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="また、パートナーの翻訳者と" start="00:05:21.440" video="mainVideo" id="subtitle"]]
+[[!template text="共有できるメモもあり、" start="00:05:23.440" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳完了までに" start="00:05:25.759" video="mainVideo" id="subtitle"]]
+[[!template text="あと143,000分節あることを示す" start="00:05:28.080" video="mainVideo" id="subtitle"]]
+[[!template text="数字も表示されています。" start="00:05:31.199" video="mainVideo" id="subtitle"]]
+[[!template text="しかし、どうしても" start="00:05:35.280" video="mainVideo" id="subtitle"]]
+[[!template text="入力したくない文字列がたくさんあります。" start="00:05:37.120" video="mainVideo" id="subtitle"]]
+[[!template text="例えば、これらの文字列は" start="00:05:40.000" video="mainVideo" id="subtitle"]]
+[[!template text="典型的な .texi の文字列で、" start="00:05:42.160" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳者が入力する" start="00:05:43.840" video="mainVideo" id="subtitle"]]
+[[!template text="必要はありません。" start="00:05:45.039" video="mainVideo" id="subtitle"]]
+[[!template text="これについて" start="00:05:46.479" video="mainVideo" id="subtitle"]]
+[[!template text="どうにかしなければなりません。" start="00:05:47.360" video="mainVideo" id="subtitle"]]
+[[!template text="そのためには、正規表現を使い" start="00:05:50.400" video="mainVideo" id="subtitle"]]
+[[!template text="保護された文字列を作成し、" start="00:05:51.600" video="mainVideo" id="subtitle"]]
+[[!template text="ソース分節では" start="00:05:52.479" video="mainVideo" id="subtitle"]]
+[[!template text="文字列をすぐに視覚化し、" start="00:05:54.400" video="mainVideo" id="subtitle"]]
+[[!template text="ターゲット分節で" start="00:05:56.800" video="mainVideo" id="subtitle"]]
+[[!template text="半自動的に入力し、" start="00:05:59.120" video="mainVideo" id="subtitle"]]
+[[!template text="整合性を" start="00:06:00.479" video="mainVideo" id="subtitle"]]
+[[!template text="チェックできるようにしましょう。" start="00:06:01.680" video="mainVideo" id="subtitle"]]
+[[!template text="処理したい文字列を定義するのに" start="00:06:04.479" video="mainVideo" id="subtitle"]]
+[[!template text="考えた正規表現は" start="00:06:06.479" video="mainVideo" id="subtitle"]]
+[[!template text="このようなものです。" start="00:06:08.160" video="mainVideo" id="subtitle"]]
+[[!template text="正規表現のプロではないので、" start="00:06:09.600" video="mainVideo" id="subtitle"]]
+[[!template text="皆さんからのご指摘もあると思います。" start="00:06:11.120" video="mainVideo" id="subtitle"]]
+[[!template text="しかし、この表現は" start="00:06:13.360" video="mainVideo" id="subtitle"]]
+[[!template text="Orgモードの構文を" start="00:06:14.560" video="mainVideo" id="subtitle"]]
+[[!template text="まだ含んでいないにもかかわらず" start="00:06:15.919" video="mainVideo" id="subtitle"]]
+[[!template text="十分な定義になっています。" start="00:06:17.919" video="mainVideo" id="subtitle"]]
+[[!template text="これで、触ってはいけない" start="00:06:20.960" video="mainVideo" id="subtitle"]]
+[[!template text=".texi 特有のものが" start="00:06:22.344" video="mainVideo" id="subtitle"]]
+[[!template text="すべてグレーで" start="00:06:23.440" video="mainVideo" id="subtitle"]]
+[[!template text="表示されるようになりました。" start="00:06:24.960" video="mainVideo" id="subtitle"]]
+[[!template text="実は、お気づきかもしれませんが" start="00:06:26.100" video="mainVideo" id="subtitle"]]
+[[!template text="少しズルをしました。" start="00:06:27.680" video="mainVideo" id="subtitle"]]
+[[!template text="先ほどの正規表現に「年」と" start="00:06:28.479" video="mainVideo" id="subtitle"]]
+[[!template text="「Free Software Foundation」の名前を追加しました。" start="00:06:30.319" video="mainVideo" id="subtitle"]]
+[[!template text="なぜなら、どんな種類の文字列でも" start="00:06:32.000" video="mainVideo" id="subtitle"]]
+[[!template text="保護できることを" start="00:06:34.000" video="mainVideo" id="subtitle"]]
+[[!template text="示したかったからです。" start="00:06:35.520" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="これで、" start="00:06:38.560" video="mainVideo" id="subtitle"]]
+[[!template text="触れたくない文字列を" start="00:06:39.520" video="mainVideo" id="subtitle"]]
+[[!template text="可視化することができましたが、" start="00:06:41.360" video="mainVideo" id="subtitle"]]
+[[!template text="それでもすべての文字列を翻訳に" start="00:06:43.440" video="mainVideo" id="subtitle"]]
+[[!template text="入力しなければなりません。" start="00:06:45.440" video="mainVideo" id="subtitle"]]
+[[!template text="そのために、先ほどの用語集で使った" start="00:06:46.880" video="mainVideo" id="subtitle"]]
+[[!template text="ポップアップメニューがあれば、" start="00:06:48.319" video="mainVideo" id="subtitle"]]
+[[!template text="編集メニューの中にも" start="00:06:50.400" video="mainVideo" id="subtitle"]]
+[[!template text="不足しているタグを" start="00:06:51.520" video="mainVideo" id="subtitle"]]
+[[!template text="簡単に挿入するための" start="00:06:52.400" video="mainVideo" id="subtitle"]]
+[[!template text="ショートカットも用意されています。" start="00:06:53.919" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="最後に忘れてはならないのが" start="00:06:57.199" video="mainVideo" id="subtitle"]]
+[[!template text="入力の検証が可能なことです。" start="00:06:58.800" video="mainVideo" id="subtitle"]]
+[[!template text="ここで、OmegaTは7つの保護された文字列を" start="00:07:00.800" video="mainVideo" id="subtitle"]]
+[[!template text="見逃したことをきちんと見せてくれます。" start="00:07:02.479" video="mainVideo" id="subtitle"]]
+[[!template text="私は1998年だけを入力しましたが、" start="00:07:05.759" video="mainVideo" id="subtitle"]]
+[[!template text="5つの異なる年があり、" start="00:07:07.599" video="mainVideo" id="subtitle"]]
+[[!template text="著作権の文字列と" start="00:07:09.280" video="mainVideo" id="subtitle"]]
+[[!template text="FSF名の文字列がありました。" start="00:07:10.479" video="mainVideo" id="subtitle"]]
+[[!template text="この極めてネイティブに近い" start="00:07:14.240" video="mainVideo" id="subtitle"]]
+[[!template text="Texinfo対応により、" start="00:07:15.970" video="mainVideo" id="subtitle"]]
+[[!template text="入力するものがずっと少なくなり、" start="00:07:16.960" video="mainVideo" id="subtitle"]]
+[[!template text="エラーの可能性も" start="00:07:18.880" video="mainVideo" id="subtitle"]]
+[[!template text="ずっと低くなりました。" start="00:07:19.919" video="mainVideo" id="subtitle"]]
+[[!template text="とはいえ、まだまだ大変な作業であることは間違いありません。" start="00:07:21.120" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="今、私たちが望んでいるのは、" start="00:07:25.199" video="mainVideo" id="subtitle"]]
+[[!template text="仲間の翻訳者と一緒に仕事をすることです。" start="00:07:26.319" video="mainVideo" id="subtitle"]]
+[[!template text="ここでわからないければならないのは、" start="00:07:27.840" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTが実際に隠れ" start="00:07:28.720" video="mainVideo" id="subtitle"]]
+[[!template text="svn/gitクライアントであり、" start="00:07:29.840" video="mainVideo" id="subtitle"]]
+[[!template text="チームプロジェクトがsvn/gitプラットフォームで" start="00:07:32.080" video="mainVideo" id="subtitle"]]
+[[!template text="ホスト可能であることです。" start="00:07:34.240" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳者は、VCSについて" start="00:07:36.319" video="mainVideo" id="subtitle"]]
+[[!template text="何も知る必要はありません。" start="00:07:37.199" video="mainVideo" id="subtitle"]]
+[[!template text="ただ、アクセス認証を必要とし、" start="00:07:38.880" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTは翻訳者の代わりにコミットします。" start="00:07:40.720" video="mainVideo" id="subtitle"]]
+[[!template text="このようにして、" start="00:07:42.400" video="mainVideo" id="subtitle"]]
+[[!template text="醜くて不十分なウェブベースの" start="00:07:44.080" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳システムを使う必要なく、" start="00:07:45.759" video="mainVideo" id="subtitle"]]
+[[!template text="強力なオフラインのプロフェッショナルツールを" start="00:07:47.199" video="mainVideo" id="subtitle"]]
+[[!template text="使うことができるのです。" start="00:07:48.800" video="mainVideo" id="subtitle"]]
+[[!template text="この翻訳プロジェクトを" start="00:07:51.440" video="mainVideo" id="subtitle"]]
+[[!template text="ホストしているプラットフォームを見ると、" start="00:07:52.479" video="mainVideo" id="subtitle"]]
+[[!template text="このように見えます。" start="00:07:54.160" video="mainVideo" id="subtitle"]]
+[[!template text="最後の更新は、このスライドを作成した" start="00:07:55.919" video="mainVideo" id="subtitle"]]
+[[!template text="20日と30秒前のもので、" start="00:07:57.199" video="mainVideo" id="subtitle"]]
+[[!template text="同じファイルセットで" start="00:07:58.639" video="mainVideo" id="subtitle"]]
+[[!template text="一緒に作業したパートナーが" start="00:08:00.720" video="mainVideo" id="subtitle"]]
+[[!template text="いたことがわかります。" start="00:08:02.479" video="mainVideo" id="subtitle"]]
+[[!template text="私たちは翻訳をプラットフォームに" start="00:08:04.639" video="mainVideo" id="subtitle"]]
+[[!template text="コミットしたように見えますが、" start="00:08:05.520" video="mainVideo" id="subtitle"]]
+[[!template text="それは私たちでなく、" start="00:08:06.879" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTでした。" start="00:08:07.680" video="mainVideo" id="subtitle"]]
+[[!template text="すべての面倒臭い仕事はOmegaTが行います。" start="00:08:11.039" video="mainVideo" id="subtitle"]]
+[[!template text="定期的にサーバーに保存し、" start="00:08:13.599" video="mainVideo" id="subtitle"]]
+[[!template text="サーバーから同期します。" start="00:08:15.039" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳者は、仲間の翻訳した内容を" start="00:08:16.879" video="mainVideo" id="subtitle"]]
+[[!template text="定期的に得られます。" start="00:08:18.720" video="mainVideo" id="subtitle"]]
+[[!template text="そして必要に応じて" start="00:08:20.479" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaTは、簡単な" start="00:08:21.680" video="mainVideo" id="subtitle"]]
+[[!template text="コンフリクト解決のためのウインドーを表示します。" start="00:08:23.360" video="mainVideo" id="subtitle"]]
+[[!template text="翻訳者は、svnやgitを使って" start="00:08:25.440" video="mainVideo" id="subtitle"]]
+[[!template text="何かをする必要はありません。" start="00:08:27.039" video="mainVideo" id="subtitle"]]
+[[!template text="そして今、私たちは、" start="00:08:29.360" video="mainVideo" id="subtitle"]]
+[[!template text="マニュアルが翻訳され、" start="00:08:30.800" video="mainVideo" id="subtitle"]]
+[[!template text="最終的にはEmacsに含まれるという" start="00:08:31.599" video="mainVideo" id="subtitle"]]
+[[!template text="そう遠くはない未来を" start="00:08:33.120" video="mainVideo" id="subtitle"]]
+[[!template text="思い描くことができますが、" start="00:08:34.159" video="mainVideo" id="subtitle"]]
+[[!template text="それはこのプレゼンテーションとは" start="00:08:35.279" video="mainVideo" id="subtitle"]]
+[[!template text="別の話になります。" start="00:08:36.080" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="というわけで、セッションの終わりになりました。" start="00:08:39.760" video="mainVideo" id="subtitle"]]
+[[!template text="ご参加いただいた皆様、本当にありがとうございました。" start="00:08:42.080" video="mainVideo" id="subtitle"]]
+[[!template text="たくさんのトピックについて" start="00:08:44.240" video="mainVideo" id="subtitle"]]
+[[!template text="触れないと約束しましたが、" start="00:08:45.600" video="mainVideo" id="subtitle"]]
+[[!template text="約束は守れたのではないでしょうか。" start="00:08:46.880" video="mainVideo" id="subtitle"]]
+[[!template text="Q&Aもありますが、" start="00:08:50.000" video="mainVideo" id="subtitle"]]
+[[!template text="実は、先週の土曜日に" start="00:08:51.600" video="mainVideo" id="subtitle"]]
+[[!template text="Redditでこのセッションに関するスレッドも" start="00:08:52.517" video="mainVideo" id="subtitle"]]
+[[!template text="立ち上げました。" start="00:08:53.600" video="mainVideo" id="subtitle"]]
+[[!template text="emacs-helpやemacs-develのメーリングリストでも" start="00:08:55.519" video="mainVideo" id="subtitle"]]
+[[!template text="私の名前を見つけることができますので、" start="00:08:57.279" video="mainVideo" id="subtitle"]]
+[[!template text="ご質問やご意見がありましたら、" start="00:08:59.200" video="mainVideo" id="subtitle"]]
+[[!template text="遠慮なくお寄せください。" start="00:09:00.480" video="mainVideo" id="subtitle"]]
+[[!template text="それでは、またお会いしましょう。" start="00:09:02.080" video="mainVideo" id="subtitle"]]
+
+# Transcript (French)
+
+[[!template new="1" text="Bonjour tout le monde." start="00:00:01.280" video="mainVideo" id="subtitle"]]
+[[!template text="Je m’appelle Jean-Christophe Helary," start="00:00:02.560" video="mainVideo" id="subtitle"]]
+[[!template text="et aujourd’hui je vais vous parler" start="00:00:04.400" video="mainVideo" id="subtitle"]]
+[[!template text="de la traduction des manuels Emacs avec OmegaT." start="00:00:05.680" video="mainVideo" id="subtitle"]]
+[[!template text="Merci de vous joindre à moi aujourd’hui." start="00:00:08.320" video="mainVideo" id="subtitle"]]
+[[!template text="La traduction dans le monde du logiciel libre" start="00:00:10.960" video="mainVideo" id="subtitle"]]
+[[!template text="est un phénomène très important. Vous savez déjà" start="00:00:12.880" video="mainVideo" id="subtitle"]]
+[[!template text="que la plupart des distributions Linux," start="00:00:15.040" video="mainVideo" id="subtitle"]]
+[[!template text="la plupart des logiciels," start="00:00:17.119" video="mainVideo" id="subtitle"]]
+[[!template text="la plupart des sites web" start="00:00:18.720" video="mainVideo" id="subtitle"]]
+[[!template text="sont traduits par des dizaines de communautés" start="00:00:19.920" video="mainVideo" id="subtitle"]]
+[[!template text="à l’aide de processus" start="00:00:22.320" video="mainVideo" id="subtitle"]]
+[[!template text="et de formats de fichiers tous différents." start="00:00:23.439" video="mainVideo" id="subtitle"]]
+[[!template text="La traduction et la localisation" start="00:00:24.880" video="mainVideo" id="subtitle"]]
+[[!template text="sont des choses que nous connaissons bien." start="00:00:27.359" video="mainVideo" id="subtitle"]]
+[[!template text="C’est un peu différent" start="00:00:29.599" video="mainVideo" id="subtitle"]]
+[[!template text="pour la communauté Emacs." start="00:00:30.400" video="mainVideo" id="subtitle"]]
+[[!template text="Nous n’avons pas de processus de localisation" start="00:00:32.160" video="mainVideo" id="subtitle"]]
+[[!template text="parce que c’est encore trop complexe" start="00:00:34.079" video="mainVideo" id="subtitle"]]
+[[!template text="et parce que nous n’avons pas" start="00:00:35.200" video="mainVideo" id="subtitle"]]
+[[!template text="encore les ressources nécessaires." start="00:00:35.920" video="mainVideo" id="subtitle"]]
+[[!template text="Néanmoins, nous pourrions traduire les manuels," start="00:00:37.600" video="mainVideo" id="subtitle"]]
+[[!template text="et traduire les manuels" start="00:00:39.920" video="mainVideo" id="subtitle"]]
+[[!template text="apporterait probablement beaucoup" start="00:00:41.200" video="mainVideo" id="subtitle"]]
+[[!template text="à la communauté Emacs dans son ensemble." start="00:00:42.399" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="Quel est donc l’état des manuels ?" start="00:00:45.600" video="mainVideo" id="subtitle"]]
+[[!template text="À ce jour, nous avons 182 fichiers" start="00:00:47.920" video="mainVideo" id="subtitle"]]
+[[!template text="aux formats .texi et .org." start="00:00:51.199" video="mainVideo" id="subtitle"]]
+[[!template text="Nous avons plus de 2 millions de mots." start="00:00:54.160" video="mainVideo" id="subtitle"]]
+[[!template text="Nous avons plus de" start="00:00:56.559" video="mainVideo" id="subtitle"]]
+[[!template text="50 millions de caractères." start="00:00:57.360" video="mainVideo" id="subtitle"]]
+[[!template text="C’est donc beaucoup de travail," start="00:00:59.039" video="mainVideo" id="subtitle"]]
+[[!template text="et il est clair qu’une personne ne suffira pas." start="00:01:00.559" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="Quand on ouvre un fichier .texi" start="00:01:04.559" video="mainVideo" id="subtitle"]]
+[[!template text="qu’est-ce qu’on y trouve ?" start="00:01:06.159" video="mainVideo" id="subtitle"]]
+[[!template text="Eh bien, beaucoup de choses en fait" start="00:01:07.760" video="mainVideo" id="subtitle"]]
+[[!template text="que les traducteurs" start="00:01:09.439" video="mainVideo" id="subtitle"]]
+[[!template text="ne devraient pas avoir à traduire." start="00:01:10.560" video="mainVideo" id="subtitle"]]
+[[!template text="Ici, on peut voir que seul" start="00:01:12.400" video="mainVideo" id="subtitle"]]
+[[!template text="le tout dernier segment," start="00:01:13.680" video="mainVideo" id="subtitle"]]
+[[!template text="la toute dernière phrase" start="00:01:15.040" video="mainVideo" id="subtitle"]]
+[[!template text="doit être traduite." start="00:01:16.400" video="mainVideo" id="subtitle"]]
+[[!template text="Toutes ces choses « méta »" start="00:01:18.080" video="mainVideo" id="subtitle"]]
+[[!template text="ne devraient pas être sous" start="00:01:19.360" video="mainVideo" id="subtitle"]]
+[[!template text="les yeux du traducteur." start="00:01:20.240" video="mainVideo" id="subtitle"]]
+[[!template text="Comment faire face à cette situation ?" start="00:01:24.479" video="mainVideo" id="subtitle"]]
+[[!template text="Pour les fichiers de code, nous avons" start="00:01:26.720" video="mainVideo" id="subtitle"]]
+[[!template text="l’utilitaire gettext qui convertit" start="00:01:27.680" video="mainVideo" id="subtitle"]]
+[[!template text="toutes les chaînes de traduisibles" start="00:01:29.360" video="mainVideo" id="subtitle"]]
+[[!template text="dans un format traduisible," start="00:01:30.640" video="mainVideo" id="subtitle"]]
+[[!template text="qui est le format .po." start="00:01:32.079" video="mainVideo" id="subtitle"]]
+[[!template text="Ce format .po est omniprésent," start="00:01:33.840" video="mainVideo" id="subtitle"]]
+[[!template text="même dans l’industrie de la traduction" start="00:01:35.520" video="mainVideo" id="subtitle"]]
+[[!template text="des logiciels non-libres." start="00:01:36.400" video="mainVideo" id="subtitle"]]
+[[!template text="Pour la documentation," start="00:01:38.720" video="mainVideo" id="subtitle"]]
+[[!template text="nous avons quelque chose de différent" start="00:01:39.520" video="mainVideo" id="subtitle"]]
+[[!template text="qui s’appelle po4a," start="00:01:40.720" video="mainVideo" id="subtitle"]]
+[[!template text="l’abréviation de « po for all » (po pour tous)." start="00:01:42.000" video="mainVideo" id="subtitle"]]
+[[!template text="Quand on utilise po4a" start="00:01:45.119" video="mainVideo" id="subtitle"]]
+[[!template text="sur ces 182 fichiers .texi et .org," start="00:01:46.399" video="mainVideo" id="subtitle"]]
+[[!template text="qu’est-ce qu’on obtient ?" start="00:01:49.200" video="mainVideo" id="subtitle"]]
+[[!template text="On obtient quelque chose de bien mieux." start="00:01:50.479" video="mainVideo" id="subtitle"]]
+[[!template text="Maintenant on a trois segments." start="00:01:52.640" video="mainVideo" id="subtitle"]]
+[[!template text="Ce n’est pas parfait, car," start="00:01:54.799" video="mainVideo" id="subtitle"]]
+[[!template text="comme vous pouvez le voir," start="00:01:55.759" video="mainVideo" id="subtitle"]]
+[[!template text="les deux premiers segments" start="00:01:56.399" video="mainVideo" id="subtitle"]]
+[[!template text="ne sont pas à traduire." start="00:01:57.280" video="mainVideo" id="subtitle"]]
+[[!template text="Donc on peut encore" start="00:01:58.880" video="mainVideo" id="subtitle"]]
+[[!template text="améliorer les choses." start="00:01:59.520" video="mainVideo" id="subtitle"]]
+[[!template text="Quand on met ces fichiers" start="00:02:02.479" video="mainVideo" id="subtitle"]]
+[[!template text="dans OmegaT, on réduit considérablement" start="00:02:04.960" video="mainVideo" id="subtitle"]]
+[[!template text="le nombre total de mots." start="00:02:07.119" video="mainVideo" id="subtitle"]]
+[[!template text="On a maintenant 50 % de mots en moins" start="00:02:08.800" video="mainVideo" id="subtitle"]]
+[[!template text="et 23 % de caractères en moins à taper," start="00:02:11.360" video="mainVideo" id="subtitle"]]
+[[!template text="mais c’est toujours encore beaucoup de travail." start="00:02:14.239" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="Je vais donc vous parler d’OmegaT maintenant" start="00:02:15.680" video="mainVideo" id="subtitle"]]
+[[!template text="pour voir où il peut nous être utile." start="00:02:17.599" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaT est un logiciel GPL3+, Java8+." start="00:02:22.239" video="mainVideo" id="subtitle"]]
+[[!template text="C’est un outil de Traduction Assistée par Ordinateur." start="00:02:25.440" video="mainVideo" id="subtitle"]]
+[[!template text="On abrège ça TAO." start="00:02:27.599" video="mainVideo" id="subtitle"]]
+[[!template text="La TAO est aux traducteurs" start="00:02:29.440" video="mainVideo" id="subtitle"]]
+[[!template text="ce que les EDI sont aux programmeurs." start="00:02:30.720" video="mainVideo" id="subtitle"]]
+[[!template text="Elle exploite la puissance de l’ordinateur" start="00:02:33.280" video="mainVideo" id="subtitle"]]
+[[!template text="pour automatiser notre travail," start="00:02:35.040" video="mainVideo" id="subtitle"]]
+[[!template text="qui consiste en recherche de références," start="00:02:36.480" video="mainVideo" id="subtitle"]]
+[[!template text="de correspondances, insertions automatiques," start="00:02:38.400" video="mainVideo" id="subtitle"]]
+[[!template text="et d’autres choses comme ça." start="00:02:40.800" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaT n’est plus si jeune." start="00:02:44.080" video="mainVideo" id="subtitle"]]
+[[!template text="Il aura 20 ans l’année prochaine," start="00:02:46.319" video="mainVideo" id="subtitle"]]
+[[!template text="et à ce stade" start="00:02:48.319" video="mainVideo" id="subtitle"]]
+[[!template text="nous avons environ 1,5 million de téléchargements" start="00:02:48.959" video="mainVideo" id="subtitle"]]
+[[!template text="sur le site SourceForge" start="00:02:51.440" video="mainVideo" id="subtitle"]]
+[[!template text="ce qui ne veut pas dire grand-chose" start="00:02:53.200" video="mainVideo" id="subtitle"]]
+[[!template text="parce que cela inclut" start="00:02:54.080" video="mainVideo" id="subtitle"]]
+[[!template text="les fichiers utilisés pour la localisation" start="00:02:55.040" video="mainVideo" id="subtitle"]]
+[[!template text="les manuels, mais quand même" start="00:02:56.480" video="mainVideo" id="subtitle"]]
+[[!template text="c’est un chiffre quand même important." start="00:02:57.920" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaT est inclus dans" start="00:02:59.599" video="mainVideo" id="subtitle"]]
+[[!template text="beaucoup de distributions Linux," start="00:03:00.720" video="mainVideo" id="subtitle"]]
+[[!template text="mais comme vous pouvez le voir ici," start="00:03:02.400" video="mainVideo" id="subtitle"]]
+[[!template text="il est surtout téléchargé sur Windows" start="00:03:03.680" video="mainVideo" id="subtitle"]]
+[[!template text="car les traducteurs" start="00:03:05.920" video="mainVideo" id="subtitle"]]
+[[!template text="travaillent principalement sous Windows." start="00:03:06.800" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaT a un logo sympa" start="00:03:09.680" video="mainVideo" id="subtitle"]]
+[[!template text="et un site sympa aussi," start="00:03:11.120" video="mainVideo" id="subtitle"]]
+[[!template text="et je vous invite vraiment à le visiter." start="00:03:12.080" video="mainVideo" id="subtitle"]]
+[[!template text="L’URL est omegat.org et vous y trouverez" start="00:03:13.920" video="mainVideo" id="subtitle"]]
+[[!template text="toutes les informations dont vous avez besoin" start="00:03:16.159" video="mainVideo" id="subtitle"]]
+[[!template text="ainsi que les téléchargements des versions Linux," start="00:03:17.280" video="mainVideo" id="subtitle"]]
+[[!template text="avec ou sans Java inclus." start="00:03:19.040" video="mainVideo" id="subtitle"]]
+[[!template text="Alors, qu’est-ce qu’OmegaT nous apporte ?" start="00:03:22.080" video="mainVideo" id="subtitle"]]
+[[!template text="Les traducteurs professionnels doivent fournir" start="00:03:24.799" video="mainVideo" id="subtitle"]]
+[[!template text="des traductions rapides, cohérentes," start="00:03:26.560" video="mainVideo" id="subtitle"]]
+[[!template text="et de qualité," start="00:03:27.680" video="mainVideo" id="subtitle"]]
+[[!template text="et nous devons disposer d’outils appropriés" start="00:03:29.519" video="mainVideo" id="subtitle"]]
+[[!template text="pour y parvenir." start="00:03:30.720" video="mainVideo" id="subtitle"]]
+[[!template text="J’aimerais que po-mode fasse partie de nos outils," start="00:03:32.159" video="mainVideo" id="subtitle"]]
+[[!template text="mais ce n’est pas le cas," start="00:03:34.239" video="mainVideo" id="subtitle"]]
+[[!template text="et c’est bien dommage." start="00:03:35.120" video="mainVideo" id="subtitle"]]
+[[!template text="Nous devons donc utiliser ces outils de TAO." start="00:03:36.560" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="Laissez-moi vous montrer à quoi ressemble OmegaT" start="00:03:39.760" video="mainVideo" id="subtitle"]]
+[[!template text="quand j’ouvre ce projet que j’ai créé" start="00:03:41.440" video="mainVideo" id="subtitle"]]
+[[!template text="pour cette présentation." start="00:03:43.120" video="mainVideo" id="subtitle"]]
+[[!template text="La fenêtre est assez impressionnante," start="00:03:45.200" video="mainVideo" id="subtitle"]]
+[[!template text="mais vous pouvez en fait modifier" start="00:03:46.640" video="mainVideo" id="subtitle"]]
+[[!template text="toutes les parties selon vos besoins." start="00:03:47.760" video="mainVideo" id="subtitle"]]
+[[!template text="Je veux juste vous montrer" start="00:03:49.519" video="mainVideo" id="subtitle"]]
+[[!template text="tout en même temps" start="00:03:50.400" video="mainVideo" id="subtitle"]]
+[[!template text="pour vous donner une idée rapide de l’ensemble." start="00:03:51.120" video="mainVideo" id="subtitle"]]
+[[!template text="Vous avez différentes couleurs, fenêtres," start="00:03:53.680" video="mainVideo" id="subtitle"]]
+[[!template text="et tous ces espaces" start="00:03:55.200" video="mainVideo" id="subtitle"]]
+[[!template text="ont des fonctions différentes" start="00:03:55.920" video="mainVideo" id="subtitle"]]
+[[!template text="qui aident le traducteur," start="00:03:57.120" video="mainVideo" id="subtitle"]]
+[[!template text="et qui probablement ne vous sont" start="00:03:58.560" video="mainVideo" id="subtitle"]]
+[[!template text="pas familières." start="00:03:59.360" video="mainVideo" id="subtitle"]]
+[[!template text="Je vais vous présenter" start="00:04:02.879" video="mainVideo" id="subtitle"]]
+[[!template text="l’interface maintenant." start="00:04:04.080" video="mainVideo" id="subtitle"]]
+[[!template text="Tout d’abord, nous avons l’éditeur." start="00:04:05.680" video="mainVideo" id="subtitle"]]
+[[!template text="L’éditeur est composé de deux parties :" start="00:04:07.519" video="mainVideo" id="subtitle"]]
+[[!template text="le segment courant," start="00:04:09.439" video="mainVideo" id="subtitle"]]
+[[!template text="qui est associé à un numéro," start="00:04:10.480" video="mainVideo" id="subtitle"]]
+[[!template text="et tous les autres segments," start="00:04:12.319" video="mainVideo" id="subtitle"]]
+[[!template text="au-dessus ou en dessous." start="00:04:13.519" video="mainVideo" id="subtitle"]]
+[[!template text="En haut de la fenêtre," start="00:04:15.840" video="mainVideo" id="subtitle"]]
+[[!template text="vous pouvez voir les trois premiers segments" start="00:04:16.720" video="mainVideo" id="subtitle"]]
+[[!template text="qui étaient dans le fichier .po." start="00:04:18.720" video="mainVideo" id="subtitle"]]
+[[!template text="Le dernier ici, le quatrième, inclut" start="00:04:20.799" video="mainVideo" id="subtitle"]]
+[[!template text="une insertion automatique de correspondance." start="00:04:22.880" video="mainVideo" id="subtitle"]]
+[[!template text="On appelle ce type de traductions" start="00:04:28.720" video="mainVideo" id="subtitle"]]
+[[!template text="des « mémoires de traduction »." start="00:04:30.880" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaT a inséré celle-ci automatiquement" start="00:04:32.720" video="mainVideo" id="subtitle"]]
+[[!template text="parce que j’ai paramétré comme ça," start="00:04:35.280" video="mainVideo" id="subtitle"]]
+[[!template text="et pour ma sécurité, elle est insérée avec" start="00:04:37.120" video="mainVideo" id="subtitle"]]
+[[!template text="le préfixe prédéfini « fuzzy »" start="00:04:38.560" video="mainVideo" id="subtitle"]]
+[[!template text="que je devrai retirer" start="00:04:40.639" video="mainVideo" id="subtitle"]]
+[[!template text="pour valider la traduction." start="00:04:41.919" video="mainVideo" id="subtitle"]]
+[[!template text="La fonctionnalité suivante est le glossaire." start="00:04:44.880" video="mainVideo" id="subtitle"]]
+[[!template text="Dans ce projet," start="00:04:47.919" video="mainVideo" id="subtitle"]]
+[[!template text="on a beaucoup de glossaires." start="00:04:48.479" video="mainVideo" id="subtitle"]]
+[[!template text="Certains sont pertinents, d’autres non." start="00:04:50.160" video="mainVideo" id="subtitle"]]
+[[!template text="Dans le segment que je suis en train de traduire" start="00:04:52.560" video="mainVideo" id="subtitle"]]
+[[!template text="en ce moment, vous pouvez voir" start="00:04:53.919" video="mainVideo" id="subtitle"]]
+[[!template text="des éléments soulignés." start="00:04:55.199" video="mainVideo" id="subtitle"]]
+[[!template text="Ce menu contextuel à droite" start="00:04:57.520" video="mainVideo" id="subtitle"]]
+[[!template text="me permet d’entrer les termes au fur et à mesure que j’écris." start="00:04:59.040" video="mainVideo" id="subtitle"]]
+[[!template text="C’est une sorte de système d’insertion automatique" start="00:05:02.240" video="mainVideo" id="subtitle"]]
+[[!template text="qui propose aussi des prédictions de l’historique," start="00:05:04.639" video="mainVideo" id="subtitle"]]
+[[!template text="des chaînes prédéfinies et d’autres choses comme ça." start="00:05:07.039" video="mainVideo" id="subtitle"]]
+[[!template text="Dans la partie à droite," start="00:05:14.479" video="mainVideo" id="subtitle"]]
+[[!template text="on a des informations de référence" start="00:05:15.440" video="mainVideo" id="subtitle"]]
+[[!template text="qui viennent directement" start="00:05:17.120" video="mainVideo" id="subtitle"]]
+[[!template text="des fichiers .po et .texi." start="00:05:18.240" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="On a également des notes à partager" start="00:05:21.440" video="mainVideo" id="subtitle"]]
+[[!template text="avec des collègues traducteurs," start="00:05:23.440" video="mainVideo" id="subtitle"]]
+[[!template text="et nous avons des chiffres qui me disent" start="00:05:25.759" video="mainVideo" id="subtitle"]]
+[[!template text="qu’il me reste encore 143 000 segments à traduire" start="00:05:28.080" video="mainVideo" id="subtitle"]]
+[[!template text="avant de terminer cette traduction." start="00:05:31.199" video="mainVideo" id="subtitle"]]
+[[!template text="Comme on le voit, il y a beaucoup de chaînes" start="00:05:35.280" video="mainVideo" id="subtitle"]]
+[[!template text="que nous ne voulons vraiment pas avoir à saisir." start="00:05:37.120" video="mainVideo" id="subtitle"]]
+[[!template text="Par exemple, ces chaînes" start="00:05:40.000" video="mainVideo" id="subtitle"]]
+[[!template text="sont des chaînes .texi typiques" start="00:05:42.160" video="mainVideo" id="subtitle"]]
+[[!template text="que le traducteur" start="00:05:43.840" video="mainVideo" id="subtitle"]]
+[[!template text="ne devrait vraiment pas avoir à saisir." start="00:05:45.039" video="mainVideo" id="subtitle"]]
+[[!template text="Nous allons donc devoir" start="00:05:46.479" video="mainVideo" id="subtitle"]]
+[[!template text="faire quelque chose pour gérer ça." start="00:05:47.360" video="mainVideo" id="subtitle"]]
+[[!template text="On va devoir créer des" start="00:05:50.400" video="mainVideo" id="subtitle"]]
+[[!template text="chaînes protégées" start="00:05:51.600" video="mainVideo" id="subtitle"]]
+[[!template text="à l’aide d’expressions régulières," start="00:05:52.479" video="mainVideo" id="subtitle"]]
+[[!template text="afin que les chaînes puissent être visualisées" start="00:05:54.400" video="mainVideo" id="subtitle"]]
+[[!template text="immédiatement dans le segment source," start="00:05:56.800" video="mainVideo" id="subtitle"]]
+[[!template text="saisies de manière semi-automatique" start="00:05:59.120" video="mainVideo" id="subtitle"]]
+[[!template text="dans le segment cible," start="00:06:00.479" video="mainVideo" id="subtitle"]]
+[[!template text="et validables." start="00:06:01.680" video="mainVideo" id="subtitle"]]
+[[!template text="L’expression régulière que j’ai trouvée" start="00:06:04.479" video="mainVideo" id="subtitle"]]
+[[!template text="pour définir la plupart des chaînes" start="00:06:06.479" video="mainVideo" id="subtitle"]]
+[[!template text="est celle-ci," start="00:06:08.160" video="mainVideo" id="subtitle"]]
+[[!template text="et je ne suis pas un pro des regex" start="00:06:09.600" video="mainVideo" id="subtitle"]]
+[[!template text="donc certains d’entre vous pourront me corriger." start="00:06:11.120" video="mainVideo" id="subtitle"]]
+[[!template text="Mais cette expression me donne" start="00:06:13.360" video="mainVideo" id="subtitle"]]
+[[!template text="une définition suffisante" start="00:06:14.560" video="mainVideo" id="subtitle"]]
+[[!template text="même si elle n’inclut pas encore" start="00:06:15.919" video="mainVideo" id="subtitle"]]
+[[!template text="la syntaxe org-mode." start="00:06:17.919" video="mainVideo" id="subtitle"]]
+[[!template text="Donc maintenant on a toutes ces" start="00:06:20.960" video="mainVideo" id="subtitle"]]
+[[!template text="chaînes spécifiques à .texi" start="00:06:22.344" video="mainVideo" id="subtitle"]]
+[[!template text="que nous ne voulons pas toucher" start="00:06:23.440" video="mainVideo" id="subtitle"]]
+[[!template text="affichées en gris." start="00:06:24.960" video="mainVideo" id="subtitle"]]
+[[!template text="En fait, vous avez peut-être remarqué" start="00:06:26.100" video="mainVideo" id="subtitle"]]
+[[!template text="que j’ai un peu triché," start="00:06:27.680" video="mainVideo" id="subtitle"]]
+[[!template text="car ici j’ai ajouté les années" start="00:06:28.479" video="mainVideo" id="subtitle"]]
+[[!template text="et le nom de la Free Software Foundation" start="00:06:30.319" video="mainVideo" id="subtitle"]]
+[[!template text="à la regex précédente" start="00:06:32.000" video="mainVideo" id="subtitle"]]
+[[!template text="pour vous montrer que vous pouvez protéger" start="00:06:34.000" video="mainVideo" id="subtitle"]]
+[[!template text="vraiment n’importe quel type de chaîne." start="00:06:35.520" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="On obtient maintenant" start="00:06:38.560" video="mainVideo" id="subtitle"]]
+[[!template text="une visualisation des chaînes de caractères" start="00:06:39.520" video="mainVideo" id="subtitle"]]
+[[!template text="que nous ne voulons pas toucher," start="00:06:41.360" video="mainVideo" id="subtitle"]]
+[[!template text="mais on doit encore les saisir toutes" start="00:06:43.440" video="mainVideo" id="subtitle"]]
+[[!template text="dans la traduction." start="00:06:45.440" video="mainVideo" id="subtitle"]]
+[[!template text="Pour ça, on a le menu contextuel" start="00:06:46.880" video="mainVideo" id="subtitle"]]
+[[!template text="que j’ai utilisé plus tôt avec le glossaire," start="00:06:48.319" video="mainVideo" id="subtitle"]]
+[[!template text="et on a également des rubriques" start="00:06:50.400" video="mainVideo" id="subtitle"]]
+[[!template text="dans le menu d’édition" start="00:06:51.520" video="mainVideo" id="subtitle"]]
+[[!template text="qui sont accompagnés de raccourcis" start="00:06:52.400" video="mainVideo" id="subtitle"]]
+[[!template text="pour faciliter l’insertion des balises manquantes." start="00:06:53.919" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="Enfin, et ce n’est pas le moins important," start="00:06:57.199" video="mainVideo" id="subtitle"]]
+[[!template text="nous pouvons maintenant valider nos entrées." start="00:06:58.800" video="mainVideo" id="subtitle"]]
+[[!template text="Ici, OmegaT me dit correctement" start="00:07:00.800" video="mainVideo" id="subtitle"]]
+[[!template text="que j’ai raté 7 chaînes protégées." start="00:07:02.479" video="mainVideo" id="subtitle"]]
+[[!template text="Je n’ai entré que 1998," start="00:07:05.759" video="mainVideo" id="subtitle"]]
+[[!template text="mais il y avait cinq autres années," start="00:07:07.599" video="mainVideo" id="subtitle"]]
+[[!template text="la chaîne de copyright," start="00:07:09.280" video="mainVideo" id="subtitle"]]
+[[!template text="et le nom de la FSF." start="00:07:10.479" video="mainVideo" id="subtitle"]]
+[[!template text="Avec ce support presque natif" start="00:07:14.240" video="mainVideo" id="subtitle"]]
+[[!template text="du format Texinfo," start="00:07:15.970" video="mainVideo" id="subtitle"]]
+[[!template text="on a beaucoup moins de choses à saisir," start="00:07:16.960" video="mainVideo" id="subtitle"]]
+[[!template text="et il y a beaucoup moins" start="00:07:18.880" video="mainVideo" id="subtitle"]]
+[[!template text="d’erreurs potentielles." start="00:07:19.919" video="mainVideo" id="subtitle"]]
+[[!template text="Mais on est d’accord, c’est encore beaucoup de travail." start="00:07:21.120" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="Ce qu’on aimerait maintenant" start="00:07:25.199" video="mainVideo" id="subtitle"]]
+[[!template text="c’est de collaborer avec des collègues traducteurs," start="00:07:26.319" video="mainVideo" id="subtitle"]]
+[[!template text="et là, on doit savoir" start="00:07:27.840" video="mainVideo" id="subtitle"]]
+[[!template text="qu’OmegaT est en fait" start="00:07:28.720" video="mainVideo" id="subtitle"]]
+[[!template text="un client svn/git dissimulé," start="00:07:29.840" video="mainVideo" id="subtitle"]]
+[[!template text="et que les projets en équipe peuvent être hébergés" start="00:07:32.080" video="mainVideo" id="subtitle"]]
+[[!template text="sur des plates-formes svn/git." start="00:07:34.240" video="mainVideo" id="subtitle"]]
+[[!template text="Les traducteurs n’ont pas besoin" start="00:07:36.319" video="mainVideo" id="subtitle"]]
+[[!template text="de connaître le contrôle de version." start="00:07:37.199" video="mainVideo" id="subtitle"]]
+[[!template text="Ils ont juste besoin d’identifiants d’accès," start="00:07:38.880" video="mainVideo" id="subtitle"]]
+[[!template text="et OmegaT va commiter pour eux." start="00:07:40.720" video="mainVideo" id="subtitle"]]
+[[!template text="De cette façon, nous n’avons pas besoin d’utiliser" start="00:07:42.400" video="mainVideo" id="subtitle"]]
+[[!template text="d’interfaces de traduction web laides" start="00:07:44.080" video="mainVideo" id="subtitle"]]
+[[!template text="et peu ergonomiques" start="00:07:45.759" video="mainVideo" id="subtitle"]]
+[[!template text="puisqu’on peut utiliser un outil" start="00:07:47.199" video="mainVideo" id="subtitle"]]
+[[!template text="hors ligne professionnel." start="00:07:48.800" video="mainVideo" id="subtitle"]]
+[[!template text="Voici donc à quoi ressemble" start="00:07:51.440" video="mainVideo" id="subtitle"]]
+[[!template text="la plateforme" start="00:07:52.479" video="mainVideo" id="subtitle"]]
+[[!template text="où j’héberge ce projet." start="00:07:54.160" video="mainVideo" id="subtitle"]]
+[[!template text="Les dernières mises à jour datent d’il y a" start="00:07:55.919" video="mainVideo" id="subtitle"]]
+[[!template text="20 jours et 30 secondes" start="00:07:57.199" video="mainVideo" id="subtitle"]]
+[[!template text="quand j’ai créé cette présentation," start="00:07:58.639" video="mainVideo" id="subtitle"]]
+[[!template text="et vous pouvez voir que j’ai un partenaire" start="00:08:00.720" video="mainVideo" id="subtitle"]]
+[[!template text="qui a travaillé avec moi sur le même ensemble de fichiers." start="00:08:02.479" video="mainVideo" id="subtitle"]]
+[[!template text="Bien qu’il semble que" start="00:08:04.639" video="mainVideo" id="subtitle"]]
+[[!template text="que nous avons effectivement commité la traduction" start="00:08:05.520" video="mainVideo" id="subtitle"]]
+[[!template text="sur la plateforme," start="00:08:06.879" video="mainVideo" id="subtitle"]]
+[[!template text="ce n’était pas nous, mais OmegaT." start="00:08:07.680" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaT fait le gros du travail." start="00:08:11.039" video="mainVideo" id="subtitle"]]
+[[!template text="Il effectue régulièrement des sauvegardes et" start="00:08:13.599" video="mainVideo" id="subtitle"]]
+[[!template text="se synchronise avec les serveurs." start="00:08:15.039" video="mainVideo" id="subtitle"]]
+[[!template text="Les traducteurs reçoivent régulièrement" start="00:08:16.879" video="mainVideo" id="subtitle"]]
+[[!template text="les mises à jour de leurs collègues," start="00:08:18.720" video="mainVideo" id="subtitle"]]
+[[!template text="et quand il le faut," start="00:08:20.479" video="mainVideo" id="subtitle"]]
+[[!template text="OmegaT affiche un simple" start="00:08:21.680" video="mainVideo" id="subtitle"]]
+[[!template text="dialogue de résolution des conflits." start="00:08:23.360" video="mainVideo" id="subtitle"]]
+[[!template text="Les traducteurs n’ont jamais à manipuler" start="00:08:25.440" video="mainVideo" id="subtitle"]]
+[[!template text="svn ou git, jamais." start="00:08:27.039" video="mainVideo" id="subtitle"]]
+[[!template text="Et maintenant, nous pouvons envisager un avenir" start="00:08:29.360" video="mainVideo" id="subtitle"]]
+[[!template text="pas si lointain" start="00:08:30.800" video="mainVideo" id="subtitle"]]
+[[!template text="où les manuels seraient traduits" start="00:08:31.599" video="mainVideo" id="subtitle"]]
+[[!template text="et éventuellement inclus" start="00:08:33.120" video="mainVideo" id="subtitle"]]
+[[!template text="dans la distribution," start="00:08:34.159" video="mainVideo" id="subtitle"]]
+[[!template text="mais c’est un sujet" start="00:08:35.279" video="mainVideo" id="subtitle"]]
+[[!template text="pour une autre présentation." start="00:08:36.080" video="mainVideo" id="subtitle"]]
+[[!template new="1" text="J’ai atteint la fin de cette session." start="00:08:39.760" video="mainVideo" id="subtitle"]]
+[[!template text="Merci encore d’y avoir participé." start="00:08:42.080" video="mainVideo" id="subtitle"]]
+[[!template text="Il y a beaucoup de sujets" start="00:08:44.240" video="mainVideo" id="subtitle"]]
+[[!template text="que j’avais promis de ne pas aborder," start="00:08:45.600" video="mainVideo" id="subtitle"]]
+[[!template text="et je pense avoir tenu ma promesse." start="00:08:46.880" video="mainVideo" id="subtitle"]]
+[[!template text="Il va y avoir des questions-réponses maintenant" start="00:08:50.000" video="mainVideo" id="subtitle"]]
+[[!template text="et j’ai aussi commencé" start="00:08:51.600" video="mainVideo" id="subtitle"]]
+[[!template text="un fil de discussion sur cette session" start="00:08:52.517" video="mainVideo" id="subtitle"]]
+[[!template text="samedi dernier, sur Reddit." start="00:08:53.600" video="mainVideo" id="subtitle"]]
+[[!template text="Vous pouvez me trouver sur les listes emacs-help" start="00:08:55.519" video="mainVideo" id="subtitle"]]
+[[!template text="et emacs-devel," start="00:08:57.279" video="mainVideo" id="subtitle"]]
+[[!template text="alors n’hésitez pas à m’envoyer" start="00:08:59.200" video="mainVideo" id="subtitle"]]
+[[!template text="vos questions et remarques." start="00:09:00.480" video="mainVideo" id="subtitle"]]
+[[!template text="Merci encore, et à bientôt !" start="00:09:02.080" video="mainVideo" id="subtitle"]]
diff --git a/2021/organizers-notebook.md b/2021/organizers-notebook.md
new file mode 100644
index 00000000..1234cf00
--- /dev/null
+++ b/2021/organizers-notebook.md
@@ -0,0 +1,10 @@
+<!-- organizers-notebook.md is exported from organizers-notebook.org, please modify that instead. -->
+[[!toc levels=4]]
+
+
+# Notes for next time
+
+- sachac: It might be more inclusive to call it a "Call for
+ Participation" instead of a "Call for Proposals", since we're
+ inviting more than proposals.
+
diff --git a/2021/organizers-notebook.org b/2021/organizers-notebook.org
index ede3ed28..7cca07a0 100644
--- a/2021/organizers-notebook.org
+++ b/2021/organizers-notebook.org
@@ -1,3 +1,33 @@
+#+todo: TODO(t) INPROGRESS(i) | DONE(d) CANCELLED(c)
+#+OPTIONS: h:6 toc:nil
+#+PROPERTY: header-args :results silent :exports code :tangle yes
+
+#+begin_export md
+<!-- organizers-notebook.md is exported from organizers-notebook.org, please modify that instead. -->
+[[!toc levels=4]]
+#+end_export
+
+* COMMENT How to export this file :noexport:
+
+- [[elisp:(progn (org-md-export-to-markdown) (org-babel-tangle))][Export and tangle]]
+- [[elisp:(org-babel-execute-buffer)][Execute buffer]]
+
* Notes for next time
-- sachac: It might be more inclusive to call it a "Call for Participation" instead of a "Call for Proposals", since we're inviting more than proposals.
+- sachac: It might be more inclusive to call it a "Call for
+ Participation" instead of a "Call for Proposals", since we're
+ inviting more than proposals.
+
+** COMMENT Copyright & License
+
+ Copyright (C) 2020, 2021 Sacha Chua
+
+ The EmacsConf 2021 organizers' notebook 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.
diff --git a/2021/playbook.md b/2021/playbook.md
new file mode 100644
index 00000000..cbee525a
--- /dev/null
+++ b/2021/playbook.md
@@ -0,0 +1,1411 @@
+
+# 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&#x2026;](#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
+
diff --git a/2021/playbook.org b/2021/playbook.org
new file mode 100644
index 00000000..fe9968d1
--- /dev/null
+++ b/2021/playbook.org
@@ -0,0 +1,1194 @@
+#+PROPERTY: header-args:emacs-lisp :tangle playbook/emacsconf-playbook.el :eval no
+#+OPTIONS: toc:4
+#+begin_export md
+<!-- This file was automatically generated from playbook.org. Instead of editing the .md, please edit the .org and republish. Thanks! -->
+#+end_export
+
+* Commands :noexport:
+
+- [[elisp:(progn (org-md-export-to-markdown) (org-babel-tangle))][Export and tangle]]
+
+* Roles/values
+:PROPERTIES:
+:CUSTOM_ID: roles
+:END:
+
+| B | | bandali |
+| CHECK | check-ins | sachac |
+| HOST | hosting, streaming, intros, reading, moving questions/answers around | zaeph |
+
+| ${protected} | [[/ssh:front:/var/www/media.emacsconf.org/2021/protected/]] |
+| ${stream-status} | [[/ssh:front:/var/www/live.emacsconf.org/index.html]] |
+| ${upcoming} | upcoming.org shared over CRDT |
+| ${conf} | conf.org shared over CRDT |
+| ${playbook} | playbook.org shared over CRDT |
+| ${dump} | [[/ssh:live:/data/]] |
+| ${media} | [[/ssh:front:/var/www/media.emacsconf.org/2021/]] |
+| ${live-main} | [[/ssh:front:/var/www/live.emacsconf.org/main.html]] |
+| ${live-480p} | [[/ssh:front:/var/www/live.emacsconf.org/main-480p.html]] |
+| ${live-index} | [[/ssh:front:/var/www/live.emacsconf.org/index.html]] |
+| ${live-alt} | [[/ssh:front:/var/www/live.emacsconf.org/alt.html]] |
+| ${profile} | [[/ssh:live:~/.profile]] |
+| ${emacsconf-el} | https://git.emacsconf.org/emacsconf-el/ |
+| | |
+* After the conference
+** Update captions
+
+- Merge them into the video with =add-captions.sh=
+ #+begin_src sh :eval no
+ #!/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 *'
+ #+end_src
+- 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.
+** Update
+** Send thanks :email:
+:PROPERTIES:
+:CUSTOM_ID: thanks
+:END:
+
+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!
+
+* Thursday or Friday before the conference
+:PROPERTIES:
+:CUSTOM_ID: days-before
+:END:
+
+- STREAM: Download prerecorded videos from ${protected}
+ #+begin_src sh :eval no
+ rsync -avzue ssh front:/var/www/media.emacsconf.org/2021/protected/*--main.webm .
+ #+end_src
+* On the day of the conference
+:PROPERTIES:
+:CUSTOM_ID: day-of
+:END:
+** Set up
+:PROPERTIES:
+:CUSTOM_ID: setup
+:END:
+*** Arrange screens
+:PROPERTIES:
+:CUSTOM_ID: screens
+:END:
+
+- 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
+ #+begin_src sh :eval no :tangle playbook/backup-pad.sh
+ 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
+ #+end_src
+ - Computer for alternate streaming:
+ - Open browser for joining BBB
+ - Open MPV for playing http://live0.emacsconf.org:8000/main.webm
+- HOST:
+ - rsync the newest --main.webm from front: rsync -avze ssh front:/var/www/media.emacsconf.org/2021/protected/*--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
+
+*** Start streaming :stream:
+:PROPERTIES:
+:CUSTOM_ID: start-streaming
+:END:
+
+- 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]]=.
+ #+begin_src sh :eval no :tangle "playbook/restream-lowres.sh"
+ 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
+ #+end_src
+- CHECK: Start Youtube and Toobnix streams. Call this with $YOUTUBE1PASS, $YOUTUBE2PASS, or $TOOBNIX as the parameter
+ #+begin_src sh :eval no :tangle "playbook/restream-flv.sh"
+ 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
+- 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/
+
+** Talk process
+:PROPERTIES:
+:CUSTOM_ID: talk
+:END:
+*** Check in a speaker
+:PROPERTIES:
+:CUSTOM_ID: check-in
+:END:
+
+Exception: [[*CHECK is unavailable][CHECK is unavailable]]
+
+- 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.
+
+**** bandali's check-in steps
+
+- please leave webcam quality on 'medium'
+- please read each audience question out loud before responding
+- please mute stream on your machine if you're watching
+- would you like to stay around for a longer q&a?
+- would you like to share your webcam or screen? (quickly mention how)
+
+*** Present talk
+:PROPERTIES:
+:CUSTOM_ID: present
+:END:
+
+- 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 prerecording submission]]
+ - Exception: [[*Last-minute caption update][Last-minute caption update]]
+ - [[*Publish information][CHECK publishes information]]
+ - [[*Handle Q&A][HOST gets a head start on handling Q&A]]
+ - When prerec finishes, HOST switches the OBS scene to show BBB.
+- [? live]
+ - Exception: [[*Speaker does not have a prerec and has not checked in][Speaker does not have a prerec and has not checked in]]
+ - 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][Technical issues during a live presentation]]
+ - [? talk needs to be wrapped up]
+ - HOST nudges speaker verbally.
+
+*** Publish information
+:PROPERTIES:
+:CUSTOM_ID: publish
+:END:
+
+ - 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:
+ #+begin_example
+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}
+ #+end_example
+ - 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
+
+*** Handle Q&A
+:PROPERTIES:
+:CUSTOM_ID: questions
+:END:
+
+Exceptions:
+- [[*Speaker has not checked in][Speaker has not checked in]]
+
+- [? 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 talk][Present next talk]]
+
+** Break time
+:PROPERTIES:
+:CUSTOM_ID: break
+:END:
+
+- 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
+
+** End of stream
+:PROPERTIES:
+:CUSTOM_ID: end
+:END:
+
+- 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
+
+** In case of...
+:PROPERTIES:
+:CUSTOM_ID: exceptions
+:END:
+*** Last-minute prerecording submission
+:PROPERTIES:
+:CUSTOM_ID: last-minute-prerec
+:END:
+
+- 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.
+
+*** Last-minute caption update
+:PROPERTIES:
+:CUSTOM_ID: last-minute-captions
+:END:
+
+- CHECK uploads the --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=
+
+*** Speaker has not checked in
+:PROPERTIES:
+:CUSTOM_ID: missing
+:END:
+- 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
+*** Speaker does not have a prerec and has not checked in
+:PROPERTIES:
+:CUSTOM_ID: really-missing
+:END:
+- 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...
+ - 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
+*** Speaker whose talk was reallocated shows up and has a prerec
+:PROPERTIES:
+:CUSTOM_ID: reallocated-prerec
+:END:
+- 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
+*** Speaker whose talk was reallocated shows up and wants to do it live
+:PROPERTIES:
+:CUSTOM_ID: reallocated-live
+:END:
+- 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
+*** Alternate stream volunteer wants to stream (nice to have, at risk)
+:PROPERTIES:
+:CUSTOM_ID: alternate
+:END:
+- 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 ([[file:playbook/stream-desktop-and-audio.sh]]:
+ #+begin_src sh :eval no :tangle 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
+ #+end_src
+ 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] [[#sound][Set up sinks for 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
+
+*** Pad malfunction or mess-up
+:PROPERTIES:
+:CUSTOM_ID: pad-broken
+:END:
+
+- PAD resets the pad using https://etherpad.wikimedia.org/p/emacsconf-2021/timeslider
+- [? still not recovered]
+ - PAD reimports the pad from backup
+
+*** CRDT malfunctions
+:PROPERTIES:
+:CUSTOM_ID: crdt-broken
+:END:
+
+- HOST notifies CHECK and tries reconnecting
+- [? still doesn't work]
+ - Switch to backup Etherpad
+
+*** Conduct guidelines issue
+:PROPERTIES:
+:CUSTOM_ID: conduct
+:END:
+
+- HOST addresses it (on-camera if needed) with a reminder and/or a kick or a ban
+
+*** CHECK is unavailable
+:PROPERTIES:
+:CUSTOM_ID: check-gone
+:END:
+
+- 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
+
+*** HOST is unavailable
+:PROPERTIES:
+:CUSTOM_ID: host-gone
+:END:
+
+- STREAM joins the BBB room and streams directly from there (or streams the prerecs).
+- STREAM will do the hosting.
+
+*** Technical issues during a live presentation
+:PROPERTIES:
+:CUSTOM_ID: live-issues
+:END:
+
+- 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
+
+*** Big technical issues with streaming
+:PROPERTIES:
+:CUSTOM_ID: stream-issues
+:END:
+
+- 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
+
+*** live0 can't handle the load or is close to network transfer limit
+:PROPERTIES:
+:CUSTOM_ID: network
+:END:
+
+- 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)
+
+* Before the conference
+:PROPERTIES:
+:CUSTOM_ID: before
+:END:
+** Send calls for proposals
+:PROPERTIES:
+:CUSTOM_ID: cfp-mails
+:END:
+*** [ANN] EmacsConf 2021 Call for Proposals :email:
+:PROPERTIES:
+:CUSTOM_ID: first-cfp
+:END:
+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
+:PROPERTIES:
+:SUBJECT: [ANN] EmacsConf 2021 Call for Proposals
+:END:
+
+#+begin_src org
+#+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
+
+#+end_src
+*** Second (and final) call for proposals (closing Sep 30) :email:
+:PROPERTIES:
+:CUSTOM_ID: second-cfp
+:END:
+Sent Sept 27, 2021 to the same lists as the CFP
+Included inline Markdown and attached Org version of the CFP
+
+**** E-mail text
+:PROPERTIES:
+:SUBJECT: [ANN] EmacsConf 2021 Second (and final) Call for Proposals (closing Sep 30)
+:END:
+
+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!
+** Accept talks :email:
+:PROPERTIES:
+:CUSTOM_ID: accept
+:END:
+*** 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.
+
+** Thank speakers for submissions :email:
+:PROPERTIES:
+:CUSTOM_ID: acknowledge-submission
+:END:
+*** 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!
+*** 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!
+** Help speakers with tech checks
+:PROPERTIES:
+:CUSTOM_ID: tech-checks
+:END:
+- 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
+** Follow up with speakers we haven't heard from :email:
+:PROPERTIES:
+:CUSTOM_ID: follow-up-silence
+:END:
+
+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!)
+** Send check-in instructions :email:
+:PROPERTIES:
+:CUSTOM_ID: check-in-instructions
+:END:
+*** 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
+
+*** 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!
+
+*** 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!
+** Announce schedule and watching instructions :email:
+:PROPERTIES:
+:CUSTOM_ID: announce-schedule
+:END:
+Sent Nov 20, 2021
+
+*** 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
+** Follow up regarding prerecorded videos :email:
+:PROPERTIES:
+:SUBJECT: [need answer by Friday noon EST] EmacsConf 2021: Don't have a prerec from you yet, aaah!
+:CUSTOM_ID: follow-up-prerecs
+:END:
+
+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
+** Offer speakers the opportunity to go live if they really really want to :email:
+:PROPERTIES:
+:CUSTOM_ID: go-live-maybe
+:END:
+Sent November 25
+*** 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)
+
+--- Presenting live? ---
+
+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!
+
+** Compress video
+
+Usage: =compress-video.sh original-file output-file=:
+
+#+begin_src sh :eval no :tangle compress-video.sh
+Q=32
+ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -aq-mode 2 -an -tile-columns 0 -tile-rows 0 -frame-parallel 0 -cpu-used 8 -auto-alt-ref 1 -lag-in-frames 25 -g 240 -pass 1 -f webm -threads 8 /dev/null &&
+ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 0 -crf $Q -c:a copy -tile-columns 2 -tile-rows 2 -frame-parallel 0 -cpu-used -5 -auto-alt-ref 1 -lag-in-frames 25 -pass 2 -g 240 -threads 8 "$2"
+#+end_src
+
+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.
+
+** Experiment with setup to allow MPV / BBB sound isolation
+:PROPERTIES:
+:CUSTOM_ID: sound
+:END:
+
+Set MIC and OUTPUT appropriately.
+
+#+begin_src sh :eval no
+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
+#+end_src
+
+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.
+
+#+begin_src sh :eval no
+pacmd list-sink-inputs # notice the ID for the process you want to redirect
+pacmd move-sink-input 1 mpv
+#+end_src
+** 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
+
diff --git a/2021/playbook/restream-flv.sh b/2021/playbook/restream-flv.sh
new file mode 100644
index 00000000..dc632762
--- /dev/null
+++ b/2021/playbook/restream-flv.sh
@@ -0,0 +1,2 @@
+ 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
diff --git a/2021/playbook/restream-lowres.sh b/2021/playbook/restream-lowres.sh
new file mode 100644
index 00000000..bd6f5bfb
--- /dev/null
+++ b/2021/playbook/restream-lowres.sh
@@ -0,0 +1,2 @@
+ 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
diff --git a/2021/playbook/restream-youtube.sh b/2021/playbook/restream-youtube.sh
new file mode 100644
index 00000000..1cc2994b
--- /dev/null
+++ b/2021/playbook/restream-youtube.sh
@@ -0,0 +1,2 @@
+ KEY=$1
+ while true; do ffmpeg -loglevel 8 -f webm -reconnect_at_eof 1 -reconnect_streamed 1 -re -i http://localhost:8000/main.webm -f webm -c:a copy -c:v copy rtmp://a.rtmp.youtube.com/live2/$KEY; done
diff --git a/2021/playbook/stream-desktop-and-audio.sh b/2021/playbook/stream-desktop-and-audio.sh
new file mode 100644
index 00000000..d3a7e6f8
--- /dev/null
+++ b/2021/playbook/stream-desktop-and-audio.sh
@@ -0,0 +1 @@
+ 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
diff --git a/2021/talks/binary.md b/2021/talks/binary.md
deleted file mode 100644
index 8181050c..00000000
--- a/2021/talks/binary.md
+++ /dev/null
@@ -1,31 +0,0 @@
-[[!meta title="Turbo Bindat"]]
-[[!meta copyright="Copyright &copy; 2021 Stefan Monnier"]]
-[[!inline pages="internal(2021/info/binary-nav)" raw="yes"]]
-
-<!-- You can manually edit this file to update the abstract, add links, etc. --->
-
-
-# Turbo Bindat
-Stefan Monnier
-
-[[!inline pages="internal(2021/info/binary-schedule)" raw="yes"]]
-
-Bindat is an ELisp library to help manipulate binary data.
- This is a niche library that is used by packages such as Websocket,
- EMMS, and cpio-mode. Its implementation was repeatedly caught
- harassing hapless kitten while at the same time providing poor
- service slowly. For Emacs-28, Bindat was rewritten so as
- to make it more efficient and flexible while respecting the kitten.
- In this presentation I intent to show how we saved those.
- Not recommended for birds.
-
-- ~20 minutes:
- 5 min: Intro and presentation of Bindat
- 5 min: Showcase some of its problems
- 5 min: Present the new design
- 5 min: Examples of what can be done with it
-
-
-[[!inline pages="internal(2021/captions/binary)" raw="yes"]]
-
-[[!inline pages="internal(2021/info/binary-nav)" raw="yes"]]