Mr. Snowden: or how I learned to stop worrying and love GStreamer
At the time of LibrePlanet 2016, I may have been the newest FSF employee but I was not a newcomer to the conference itself. In the previous four years, my participation involved talks on Trisquel and GNU IceCat, and were excellent experiences each time. Every year, the recordings and streaming of the talks seemed to improve, but still fall short of expectations. When I joined the tech team, it became a personal goal of mine to improve LibrePlanet's video production process. The first step was to make the most out of our equipment. We use Libreboot powered laptops and Elphel cameras, which come with freely licensed hardware specs and GPLed source code. The devices then connect to servers running fully free software. This makes for excellent freedom standards, but it comes with some technical challenges. The Elphel cameras provide high quality video at the expense of extra post-processing on the laptops – which are not that powerful – so a lot of experimenting and optimizing had to be done to get to a pipeline with low latency, good image quality and low CPU usage. This was quite the tall order, but we made great progress with it and our intern David Testé even wrote a great graphical interface!
We doubled down on our commitment by booking Edward Snowden to give the opening keynote as a live interview from Moscow. To make it more fun, we made the decision to record the interview and stream it live. We tested different options and landed on using a WebRTC instance, plus GStreamer and IceCast for broadcasting. With this new toy coming together, we tripled down on our commitment by helping Snowden migrate his stack to free software. We began by researching how to replace his nonfree video compositing program (that ran on Windows), and eventually built a hack using even more GStreamer, a video compositing tool, a local Real-Time Messaging Protocol feed, a virtual webcam device, and... well, way too many things for it to sound like a good idea. But we went to MIT's Stata Center the two weekends before the conference and tested the whole thing, network and all. It worked nicely. You can read about and discuss our setup.
Then the day arrived... LibrePlanet.
We got to the venue at 7 a.m., with three hours to unpack all the hardware, set up, have a muffin, and go live with the event (well, that was the plan anyway). Daniel Kahn Gillmor, the interviewer of Snowden, arrived at 8 a.m. and we started to set things up. Quickly we started to realize the network smelled funny. The MIT network has a captive portal: to access the Internet you must register your device and wait a couple minutes for the system to let you through. Since we were bringing a bunch of laptops, we registered them in advance to avoid problems, but the captive portal was still asking us to register. So we did, we waited (while the room started to fill up), and the network continued to fail for every machine, and even for MIT registered staff. We urgently asked the IT department to look into it, and they quickly fixed the issue. We had Internet!
With the room now quite full and only five minutes to spare, we connected with Snowden on the videoconference. To our dismay, his screen blacked out. After some more testing we decided to try a different browser on Snowden's end. He moved to Iceweasel and things were working again. This ate so much of our setup time that not only were we already past the start time, we still had to set and test the recording and streaming... which were also failing!
With my nerves running thin, and trying not to raise my gaze to the nearly four hundred people in the room that were looking at my frantic typing, I finally managed to get it working. We were delayed enough that no testing could be done, so we just declared it ready. I sat nervously next to Daniel, and let the keynote start. It worked like a charm!