Louis-Philippe V ronneau: Hire me!

Dealing with the void during MiniDebConf Online #1
Between 28 and 31 May this year, we set out to create our first ever online MiniDebConf for Debian. Many people have been meaning to do something similar for a long time, but it just didn t work out yet. With many of us being in lock down due to COVID-19, and with the strong possibility looming that DebConf20 might have had to become an online event, we rushed towards organising the first ever Online MiniDebConf and put together some form of usable video stack for it.
I could go into all kinds of details on the above, but this post is about a bug that lead to a pretty nifty feature for DebConf20. The tool that we use to capture Jitsi calls is called Jibri (Jitsi Broadcasting Infrustructure). It had a bug (well, bug for us, but it s an upstream feature) where Jibri would hang up after 30s of complete silence, because it would assume that the call has ended and that the worker can be freed up again. This would result in the stream being ended at the end of every talk, so before the next talk, someone would have to remember to press play again in their media player or on the video player on the stream page. Hrmph.
Easy solution on the morning that the conference starts? I was testing a Debian Live image the night before in a KVM and thought that I might as well just start a Jitsi call from there and keep a steady stream of silence so that Jibri doesn t hang up.
It worked! But the black screen and silence on stream was a bit eery. Because this event was so experimental in nature, and because we were on such an incredibly tight timeline, we opted not to seek sponsors for this event, so there was no sponsors loop that we d usually stream during a DebConf event. Then I thought Ah! I could just show the schedule! .
DebConf20 Moves Online For DebConf, we usually show a sponsors loop in between sessions. It s great that we give our sponsors visibility here, but in reality people see the sponsors loop and think Talk over! and then they look away. It s also completely silent and doesn t provide any additional useful information. I was wondering how I could take our lessons from MDCO#1 and integrate our new tricks with the sponsors loop. That is, add the schedule, time, some space to type announcements on the screen and also add some loopable music to it. I used OBS before in making my videos, and like the flexibility it provides when working with scenes and sources. A scene is what you would think of as a screen or a document with its own collection of sources or elements. For example, a scene might contain sources such as a logo, clock, video, image, etc. A scene can also contain another scene. This is useful if you want to contain a banner or play some background music that is shared between scenes.
The Loopy Loop Music The two mini albums that mostly played during the first few days were just a copy and paste from the MDCO#1 music, which was:
For shoutout tracks, that were later used in the loop too (because it became a bit monotonous), most of the tracks came from freepd.com:Our thoughts about cooperation aspects of doing things together. Sometimes in Debian we do work together with others, and sometimes we are a number of people who work alone, and happen to all upload their work in the same place. In times when we have needed to take important decisions together, this distinction has become crucial, and some of us might have found that we were not as good at cooperation as we would have thought. This talk is intended for everyone who is part of a larger community. We will show concepts and tools that we think could help understand and shape cooperation.Video of the talk: The slides have extensive notes: you can use View Notes in LibreOffice Impress to see them. Here are the Inkscape sources for the graphs: Here are links to resources quoted in the talk:
pollo
asked:
How can we still have a good code review process without making it a "you need to be perfect" scenario? I often find picky code reviews help me write better code.Ulrike wrote a more detailed answer: Code reviews: from nitpicking to cooperation
== On-premise == == Online ==
Camera 1 Jitsi
v ---> Frontend v ---> Frontend
Slides -> Voctomix -> Backend -+--> Frontend Questions -> Voctomix -> Backend -+--> Frontend
^ ---> Frontend ^ ---> Frontend
Camera 2 Pre-recorded video
HLS | RTMP | |
---|---|---|
Pros |
|
|
Cons |
|
|
live.debconf.org
and redirect connections to the nearest server.
Sadly, 6 months ago MaxMind decided to change the licence on their
GeoLite2 database and left us scrambling. To fix this annoying issue, Stefano
Rivera wrote a Python program that uses the new database and reworked our
ansible frontend server role. Since the new database cannot be
redistributed freely, you'll have to get a (free) license key from MaxMind if
you to use this role.
Ansible & CI improvements
Infrastructure as code is a living process and needs constant care to fix bugs,
follow changes in DSL and to implement new features. All that to say a large
part of the sprint was spent making our ansible roles and continuous
integration setup more reliable, less buggy and more featureful.
All in all, we merged 26 separate ansible-related merge request during the
sprint! As always, if you are good with ansible and wish to help, we accept
merge requests on our ansible repository :)
ffmpeg
nor
gstreamer
support recording a live ssh pseudoterminal1.
Worse, neither weechat
nor irssi
run on X: they use ncurses... Although you
can capture an X11 window with ffmpeg -f x11grab
, I wasn't able to get them to
run with Xvfb.
Capturing the framebuffer
One thing I dislike with this method is the framebuffer isn't always easy to
access on remote machines. If you don't have a serial connection, you can try
using a VNC server that can.
I did my tests in a VM on an KVM hypervisor and used virt-manager
to access
the framebuffer.
I had a hard time setting the framebuffer resolution to a 16:9 aspect ratio. The
winning combination ended up passing the nomodeset
kernel parameter at boot
and setting up these parameters in /etc/default/grub
2:
GRUB_GFXMODE=1280x720
GRUB_GFXPAYLOAD_LINUX=keep
/etc/default/console-setup
file
that seemed to make the most sense:
# CONFIGURATION FILE FOR SETUPCON
# Consult the console-setup(5) manual page.
ACTIVE_CONSOLES="/dev/tty[1-6]"
CHARMAP="UTF-8"
CODESET="Lat15"
FONTFACE="TerminusBold"
FONTSIZE="12x24"
ffmpeg
. The magic command to record the framebuffer seems to be something
like:
ffmpeg -f fbdev -framerate 60 -i /dev/fb0 -c:v libvpx -crf 10 -b:v 1M -auto-alt-ref 0 output.webm
puppetlabs/firewall
module could come in handy here.
Once that is done, you can use the smash/jitsimeet
Puppet module on
a Debian 10 (Buster) server to spin up an instance. A basic configuration would
look like this:
class 'jitsimeet':
fqdn => 'jitsi.example.com',
repo_key => puppet:///files/apt/jitsimeet.gpg,
manage_certs => true,
jitsi_vhost_ssl_key => '/etc/letsencrypt/live/jitsi.example.com/privkey.pem'
jitsi_vhost_ssl_cert => '/etc/letsencrypt/live/jitsi.example.com/cert.pem'
auth_vhost_ssl_key => '/etc/letsencrypt/live/auth.jitsi.example.com/privkey.pem'
auth_vhost_ssl_cert => '/etc/letsencrypt/live/auth.jitsi.example.com/cert.pem'
jvb_secret => 'mysupersecretstring',
focus_secret => 'anothersupersecretstring',
focus_user_password => 'yetanothersecret',
meet_custom_options =>
'enableWelcomePage' => true,
'disableThirdPartyRequests' => true,
;
jitsimeet
module is still pretty young: it clearly isn't perfect and some
external help would be very appreciated. If you have some time, here are a few
things that would be nice to work on:
README
file in the package long description (#17).
send-later
functionality. [...]
py3versions -i
in autopkgtests and debian/rules
files. (#954763)py3versions -s
is used without a python3-all
dependency. (#954763)possible-missing-colon-in-closes
to also check for semicolons used in place of colons. (#954484)YYYYMMDD-1
) without a 0~
suffix. (#953036)duplicate-short-description
or duplicate-long-description
if they contain substitution variables. (#947168)Standards-Version
when uploading to the backports repository. [...]Checksums-Sha256
fields. (#954798)DEBIAN/md5sums
control files in udebs. (#954803)<!nocheck>
annotations; some packages are required to build successfully. (#954338)debian-rules-uses-installed-python-versions
tag. [...]CONTRIBUTING.md
file. [...]debian/changelog
entry. [...]debian-installer
component to allow all arguments from sources.list
files (such as [check-valid-until=no]
) in order that we can test the reproducibility of the installer images on the Reproducible Builds own testing infrastructure. (#13)
/bin/dash
and /bin/bash
), cloudkitty (due to a default value being taken from the number of CPUs on the build machine), font-manager (embedding the value of @abs_top_srcdir@
into the resulting binary), gucharmap (due to embedding the absolute build path when generating a comment in a header file), infernal (timestamps are injected into a Python example, which should not be shipped anyway), ndisc6 (embeds the value of CFLAGS
into the binary without sanitising any absolute build paths), node-nodedbi (embedded timestamp in binary) & pmemkv (does not respect SOURCE_DATE_EPOCH
when populating a YEAR
variable).
calendar.monthrange
Python method. [...]
138
to Debian:
readelf
. (#93)dumppdf
from the python3-pdfminer
if we do not see any other differences from pdftext
, etc. (#92).rdx
files directly as the get_member
method will return a file even if the file is missing. [...]--help
output or in the package long description. [...]--list-debian-substvars
when we want them for debian/tests/control
generation. [...]upstream-metadata-in-native-source
as "we" are upstream. [...]RequiredToolNotFound.get_package
method's functionality as it is only used once. [...]py36 = [..]
" argument in the pyproject.toml
file. [...]POST
method in the web-based scheduler as not only should HTTP GET requests be idempotent but this will allow many future improvements in the user interface. [...][...][...]
glibc
(CVE-2020-1751), jackson-databind
, libbsd
(CVE-2019-20367), libvirt
(CVE-2019-20485), netkit-telnet
& netkit-telnet-ssl
(CVE-2020-10188), pdfresurrect
(CVE-2020-9549) & shiro
(CVE-2020-1957), etc.
xtrlock
versions 2.8+deb9u1
(#949112) and 2.8+deb10u1
(#949113) was accepted to the Debian jessie and buster distributions.
snprintf(3)
.
twisted
to prevent a large number of HTTP request splitting vulnerabilities in Twisted, a Python event-based framework for building various types of internet applications.
libbsd
, a library of functions commonly available on BSD systems but not on others such as GNU.
2.2.11-1
& 3.0.4-1
) New upstream security releases. (#953102)
6.0~rc1-3
Install OpenSSL when running the testsuite as it is required for generating test certificates.6.0~rc2-1
New upstream beta release.2.13
) Add a warning that X11 does not support grabbing events under the Wayland display server protocol. (#953319)
20.0.4-4
) Ensure that the Python 3.x gunicorn
binary package replaces the now-legacy gunicorn3
that was removed in 19.9.0-2
upon installation. I also backported this version to buster-backports. (#953883)
0.14.1-1
) New upstream release.
1.00-7
) Fix build failures under Python 3.8. (#954287)
1.6.0-1
New upstream release.1.6.1-1
New upstream release.1.6.2-1
New upstream security release. (#954808)1.6-2
, 1.6-3
& 1.6-4
) Fix various build failures on kFreeBSD architectures.
4.0.24-1
) New upstream release.
2.4-6
) Remove a vague "pigeon holes" metaphor from package description.
pyptlib
package be removed from the archive (#953429) as well as uploading onionbalance (0.1.8-6
) to fix test failures under Pytest 3.x (#953535) and a new upstream release of nautilus-wipe.
Finally, I sponsored an upload of bilibop (0.6.1
) on behalf of Yann Amar.
https://zoom.us/j/123456789
https://zoom.us/wc/join/123456789
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
.exe
file. Cancel the download and you should now see the infamous
"join from your browser" link.
Upon closer inspection, it seem you can get to the web client by changing the
meeting's URL. The zoom meeting link you have probably look like this:
https://zoom.us/j/123456789
https://zoom.us/wc/join/123456789
Thanks to CRANberries, you can also look at a diff to the previous release. As always, even fuller details are on the Rcpp Changelog page and the Rcpp page which also leads to the downloads page, the browseable doxygen docs and zip files of doxygen output for the standard formats. A local directory has source and documentation too. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.Changes in Rcpp version 0.12.12 (2017-07-13)
- Changes in Rcpp API:
- The
tinyformat.h
header now ends in a newline (#701).- Fixed rare protection error that occurred when fetching stack traces during the construction of an Rcpp exception (Kirill M ller in #706).
- Compilation is now also possibly on Haiku-OS (Yo Gong in #708 addressing #707).
- Dimension attributes are explicitly cast to
int
(Kirill M ller in #715).- Unused arguments are no longer declared (Kirill M ller in #716).
- Visibility of exported functions is now supported via the R macro
atttribute_visible
(Jeroen Ooms in #720).- The
no_init()
constructor acceptsR_xlen_t
(Kirill M ller in #730).- Loop unrolling used
R_xlen_t
(Kirill M ller in #731).- Two unused-variables warnings are now avoided (Jeff Pollock in #732).
- Changes in Rcpp Attributes:
- Execute tools::package_native_routine_registration_skeleton within package rather than current working directory (JJ in #697).
- The R portion no longer uses
dir.exists
to no require R 3.2.0 or newer (Elias Pipping in #698).- Fix native registration for exports with name attribute (JJ in #703 addressing #702).
- Automatically register init functions for Rcpp Modules (JJ in #705 addressing #704).
- Add Shield around parameters in Rcpp::interfaces (JJ in #713 addressing #712).
- Replace dot (".") with underscore ("_") in package names when generating native routine registrations (JJ in #722 addressing #721).
- Generate C++ native routines with underscore ("_") prefix to avoid exporting when standard exportPattern is used in NAMESPACE (JJ in #725 addressing #723).
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
Series: | Thessaly #3 |
Publisher: | Tor |
Copyright: | July 2016 |
ISBN: | 0-7653-7902-3 |
Format: | Hardcover |
Pages: | 331 |
Series: | Thessaly #2 |
Publisher: | Tor |
Copyright: | June 2015 |
ISBN: | 0-7653-3267-1 |
Format: | Hardcover |
Pages: | 345 |
Series: | Thessaly #1 |
Publisher: | Tor |
Copyright: | 2014 |
Printing: | January 2015 |
ISBN: | 0-7653-3266-3 |
Format: | Hardcover |
Pages: | 368 |
Next.