Notes from FOSDEM 2017
13 Feb 2017Riding the tram you hear the word “Linux” pronounced in four different languages. Stepping out into the grey drizzle, you instantly smell fresh waffles and GitHub-sponsored coffee, and everywhere you look you see a FSF t-shirt. That’s right kids, it’s FOSDEM time again! The beer may not be free, but the software sure is.
Last year I got my first taste of this most epic of FLOSS conferences, back when I was an unemployed ex-grad-student with not even 5 pull requests to my name. This year, as a bona fide open source contributor, Mozillian, and full-time professional software engineer, I came back for more. Here are some things I learned:
- Open source in general - and, anecdotally, FOSDEM in particular - has a diversity problem. (Yes, we already knew this, but it still needs mentioning.)
- …But not for long, if organizations like Mozilla and projects like IncLudo have anything to say about it.
- Games are a powerful tool to introduce programming, promote diversity, and build 21st-century literacy skills.
- Speech applications built on open technologies are not just a pipe dream!
- How browsers render the web is super interesting and something I want to get a clue about.
- FoxPuppet is making automating & testing Firefox even easier than with our beloved Marionette!
- The Mozilla Tech Speakers are straight killin’ it.
— "How do you say “@mozTechSpeakers rocked @FOSDEM today!” in fox?
— Flaki (@slsoftworks) February 4, 2017
— … 😉#mozdem pic.twitter.com/KStl9R8QLM
Open data for bike sharing programs in >400 cities around the world! 💚🚲💚 https://t.co/liu6MOI8Nc @ctbikes #FOSDEM pic.twitter.com/QHJyx3QzAm
— Anjana Vakil (@AnjanaVakil) February 5, 2017
Wrapped up the day with some VR painting in the browser (!!!) at the @mozilla stand - see you next year #FOSDEM ✌️ pic.twitter.com/d23v7sRY9a
— Anjana Vakil (@AnjanaVakil) February 5, 2017
See the notes below for more!
Disclaimer: The (unedited!!!) notes below represent my impressions of the content of these talks, jotted down as I listened. They may or may not be totally accurate, or precisely/adequately represent what the speakers said or think. If you want to get it from the horse’s mouth, follow the links to the FOSDEM schedule entry to find the video, slides, and/or other resources!
Mozilla Dev Room, Saturday
Firefox Nightly
Pascal Chevrel
- Nightly users are crucial for early detection of regressions and bugs introduced by new features (especially important with the advent of Quantum)
- Nightly users aren’t as diverse as stable users:
- 86% Windows, 6% Linux, 5% Mac
- Around 70% come from just 15 countries (USA, Germany, Russia at top)
- Over 80% are using en-US locale
-
Generally, Nightly users are tech-savvy (though not necessarily devs) - this means the bugs they report are generally higher-quality, more helpful
- Nightly Reboot Status: Project started in 2016 to encourage Nightly use and bring better integration with release process
- Download pages: now you can download Nightly! :D
- Nightly-specific default bookmarks
- Locale-specific about:home page with e.g. info about local events, links to translated articles
- Nightly IRC channel
- Nightly blog (e.g. mconley’s “These weeks in Firefox”)
- @FirefoxNightly on Twitter
- Help out!
- Use Nightly as your main browser
- Translate information & help bug reporters that aren’t comfortable with English
- Help triage bugs - too many for Mozilla staff to handle
- Q&A
- A lot of former Nightly users have moved over to Aurora - this means they find the bugs later, and Aurora isn’t more stable/as stable as people expect
Firefox DevTools
Alex “Laka” Lakatos (@lakatos88)
- Opening DevTools:
- Right click > Inspect Element
- Tools menu
- Element inspector:
- Search box: can search for CSS selectors
- CSS rules:
- use filter box to find e.g. every ‘color’ selector
- Colors
- Shift-Click on colored circle to switch between hex/RGB/named representation
- Click on it to get color picker
- Debugger
- Click line to set breakpoint
- Can view all variables at the point where execution is paused
- Network
- Shows every request you make
- Shows two sizes: Size during transport and size on disk - helps you minimize transfer time
- DevTools in Nightly
- New features rolled out constantly
- Disable HTTP Cache when DevTools is open - super useful while you’re developing and the cache drives you insane!
- If you’re nostalgic, can use the Firebug theme
- Moving DevTools to add-on instead of built in to Firefox - Will help ship faster
WebExtensions
Daniele Scasciafratte
- Firefox is famous for extensions - it’s the most customizable browser out there
- Extensions sometimes become features of Ffx itself
- WebExtensions is “One API to Rule Them All”
- Standard HTML/CSS/JS (not XUL)
- compatibility with Chrome
- Content scripts allow extensions to run in pages
- Background scripts allow them to maintain long-term state from the moment they’re installed to the moment they’re removed
- Fully customizable “browser actions” (buttons on top right) with their own menus etc.
The Firefox Puppet Show
Dave Hunt (& Henrik the Foxy Puppet)
- Selenium
- Tool for browser automation
- Never maintained by Mozilla
- Works for multiple browsers, including Firefox
- Limited to the content space; has no control over browser chrome
- FirefoxDriver
- Deprecated due to add-on signing from Ffx 48
- Marionette (Woo!!!)
- Introduced 2012, originally for FirefoxOS
- Directly integrated into Gecko
- Controls chrome and content (whereas Selenium is content-based)
- GeckoDriver
- Proxy for W3C WebDriver & Gecko
- WebDriver spec should be a recommendation by end of Q1 2017
- Idea: any browser implementing the spec can be automated
- Has been adopted by all major browser vendors
- Thanks to WebDriver, Selenium (or any automation client) doesn’t have to worry about how to automate all the browsers: just has to implement the spec, and can then control any compliant browser
- GeckoDriver not feature complete yet, partly bc the spec is still in late stages of development
- FoxPuppet
- Python package w/ simple API for finding & interacting with the Firefox UI
- Allows you to interact with Firefox in Selenium, builds on top of Selenium
- Ultimately going to be used to test Ffx itself
- Marionette can do more than what just Selenium offers (chrome); FoxPuppet takes it the next step by making it much simpler to write automation code using Selenium+Marionette
- At the moment supports window management, interaction with popups, soon interaction with tabs…
Excited about FoxPuppet @ #mozdem! It's even easier to automate & test @Firefox now: https://t.co/apmdCW3ZMC @davehunt82 @whimboo pic.twitter.com/RRnJoE49sO
— Anjana Vakil (@AnjanaVakil) February 4, 2017
- Q&A:
- Can it run headlessly?
- No, because there’s no true headless mode for Firefox, though you can make it effectively headless via e.g. running in Docker
- Can it work with WebGL?
- The problem is similar to with canvas - if we just have one element, we can’t look inside of it unless there’s some workaround to expose additional information about the the state of the app specifically for testing
- Excecuting async JS?
- Selenium has functionality to handle this, and since FoxPuppet builds on Selenium, the base Selenium functionality is still available
- Can it run headlessly?
WebRender
Nicolas Silva
- Servo
- Mostly research, for trying out new ideas more quickly than we could in Ffx (without worrying about putting it in front of users)
- How do rendering engines work? (Using Gecko as a reference)
- layout: DOM Tree layout is computed and transformed into a Frame Tree (has other names in e.g. WebKit)
- invalidation: From the Frame Tree we get a display list - pretty flat structure of things we need to render
- painting: We then render the display list into a Layer Tree
- like layers in Photoshop
- Intermediate surfaces containing rendered elements
- compositing: mirror the layer tree on the compositor process, for scrolling etc. at a high frame rate
- WebRender
- attempts to move away from this type of architecture and do something different
- designed to work around the GPU, like a game rendering engine
- drops the distinction between painting/compositing, and just render everything to the window directly
- take the page content & turn it into a series of primitives we can send to the GPU (??)
- written in Rust
- using OpenGL for now, though in the future other backends would be possible
- doesn’t understand arbitrary shapes, but rather only a simple set of shapes that are common on the web (e.g. rectangles, rounded rects)
- Working fast on a GPU
- GPUs are very stateful things, so switching state/state changes have a big impact
- Batching is the key
- Transferring data to/from the CPU is expensive
- Memory bandwidth is really costly, especially on mobile devices - so try to avoid touching too many pixels/touching the same pixels too many times (aka “overdraw”)
- Rendering back-to-front, you have to draw e.g. the whole background even if most of it is covered by other things
- Rendering front-to-back means you can avoid drawing any parts of layers other than those that will ultimately be seen
How Rust is being developed
@jgbarah Jesus M. Gonzalez-Barahona, Bitergia
- Analytics dashboard with contribution data: https://rust-analytics.mozilla.community
Code Invaders: Learning to code with IoT games and HTML/CSS/JS
István “Flaki” Szmozsánszky @slsoftworks
- Happy Code Friends
- Tech needs more diversity, we need more people to learn to code
- But we need to spark people’s interest - games!
- Arduboy
- Kickstarter project funded about 1-2 years ago
- Basically puts a micro Arduino, screen, buttons in a nice little (cheap) package
- But unfortunately you had to write programs for it in C through the Arduino IDE - not very beginner friendly
- Code Invaders
- Teaching people the basics of programming (functions, variables, …) while building their own game
- Code is written in JS and compiled to C by pushing a button in the IDE
- Makes Arduboy programming accessible for beginners
@slsoftworks invaded spaces at #mozdem, showing us how beginners can learn to code #arduboy games in JS! pic.twitter.com/WKNrGUpAvv
— Anjana Vakil (@AnjanaVakil) February 4, 2017
Diversity in Open Source
Kristi Pogri @KristiPogri
Hard truths about (lack of) diversity in FOSS as @mozTechSpeakers own @KristiProgri opens eyes at #mozdem pic.twitter.com/VzAZEofTQT
— Anjana Vakil (@AnjanaVakil) February 4, 2017
- Horrendenously low %s of open-source developers are women
- Open source isn’t really open unless it’s open to everyone
- Organizations/initiatives like WoMoz and Outreachy are actively trying to change this
Diversity user research
Gloria Dwomoh
- Listening is a skill, one which we don’t study enough in comparison with e.g. reading, writing, speaking
- Hearing vs. Listening:
- Hearing is perceiving sounds
- Listening is concentrating on them
- Body language is important for listening - showing that you’re bored makes the speaker cut themselves off
- Active listening
- Reflection: when someone tells you something, you try to reflect back what they’re saying - to show that you understood, e.g. “so you mean that….”
- Funneling: you try to ask for more general or more specific information
- Empathy: important for building trust with the speaker
- Sympathy is “oh, that must have been hard, I’m sorry”
- Empathy is also “I understand what you mean, because I had a similar experience when ….” - show that you deeply understand the speaker’s experience
Active listening: reflect, summarize, clarify, show empathy. @mozTechSpeakers own Gloria Dwomoh reminds us we should all get better at this pic.twitter.com/UzemrL5YZ1
— Anjana Vakil (@AnjanaVakil) February 4, 2017
Don’t break the internet! Mozilla Copyright Campaign in Europe
Raegan MacDonald
- We need to bring copyright into the 21st century
- Bring in flexibility
- Encourage creativity & expression online
- Copyright reform is happening, but unfortunately it’s not the kind of reform we need
- Doesn’t focus on the interests of users on the internet
- Instead of protecting & encouraging innovation & creativity online, may in some cases undermine that
- Mozilla wants to ensure that the internet remains a “global public resource open & accessible to all”
- not trying to get rid of copyright
- but rather encourage copyright laws that support all actors in the web ecosystem
- Issues in the current copyright directive
- Upload filters:
- platforms that are holding large amounts of copyrighted content would need agrements with rights holders
- ensuring that they uphold those agreements would require them to implement upload filters that may end up restricting users’ ability to post their own content
- Neighboring rights - aka “snippet tax” or “google tax”
- proposal to extend copyright to press publishers
- press publications would get to charge aggregators for e.g. posting a snippet of their article, the headline, and a hyperlink
- already been attempted in Germany and Spain, where it had negative effects on startup aggregators and entrenched the power of established aggregators (Google)
- Text & Data Mining (TDM)
- there would be restrictions on ingesting copyrighted data for the purposes of data mining
- there would only be exceptions for research institutions
- Upload filters:
- The fight right now is unfortunately quite binary: The big Silicon Valley companies/aggregators (Google etc.) vs. the Publishing/Music/Film industry
- We need it to involve the full spectrum of stakeholders on the web, especially users, independent content creators
- Get involved!
- changecopyright.org
- raegan@mozilla.com
- Series of events across Europe
- Q&A:
- Since filtering requires monitoring, and monitoring is unconstitutional in the EU, are there plans to fight this if it passes?
- Yes, there is absolutely a contradiction there, and we plan to fight it. We want to bring the proposal in line with existing law and channel activism against these filters.
- Previous events/campaigns were focused on Freedom of Panorama (copyright exception that allows you to take photographs of e.g. buildings, art and post them online). Will new events be focused on the 4 areas you discussed?
- Yes, this is sort of our 2nd wave of activism on this issue, and we’ll be organizing and encouraging more advocacy around these issues.
- Do you coordinate with the media?
- Yes. There are a number of organizations working on a modern version of copyright that looks forward, not backwards. The C4C (copyright for creativity) brings together a lot of players (e.g libraries, digital rights NGOs), and that serves as a sort of umbrella. A lot of folks have similar issues and we work together as much as possible to amplify & support certain voices.
- What is the purpose of another wave? Are we starting over?
- EU policy making is a very slow game. This reform has been under discussion for over 5 years, and the process of it going through negotiations to reach a final EU parliament agreement will be at least a year. If we want to have an impact & mobilize different voices, it has to be a sustained, long-term effort, which was not the case in the 1st wave because we didn’t have the proposal yet. Now that we have it, we have more focus on what to encourage people to speak out about, which is potentially game-changing.
- It seems that the education exception excludes all informal sources of education
- This exception applies to cases where licensed materials can’t be acquired. But that’s not really the problem; the problem is the cost. There’s now a campaign copyrightforeducation.org. It’s something we’re following closely, and we’re mostly relying on our partners who are experts in this area.
- When will this be decided by parliament?
- There will be votes on committee opinions next month, but the main opinion will be deliberated in March, and they want it to be voted by end of summer 2017. So the next 6 months could be game-changing, it’s an important time to contact your representatives.
- Would the TDM exception implicate privacy concerns?
- This doesn’t deal with privacy-protected content, but rather would allow people that have lawfully acquired works/texts to create e.g. a visualization. It doesn’t get into privacy issues about mining people’s metadata and all that - it’s a separate issue from privacy and wouldn’t override it.
- Since filtering requires monitoring, and monitoring is unconstitutional in the EU, are there plans to fight this if it passes?
Other rooms, Saturday-Sunday
WebRTC and speech recognition with Adhearsion
Luca Pradovera @lucaprado - MojoLingo
- Spoken dialog system built entirely on open tools
- PocketSphinx for recognition (understands stock grammar of ~100 words)
- Rasa NLU for interpretation
- Flite for TTS (voice a bit robotic but gets the job done)
- FreeSwitch - switching platform with good WebRTC support. Asterisk is an alternative
- Adhearsion is the main control layer
- Ruby framework for voice apps
- handles things like picking up the call, transferring, answering, recording, etc.
- Connects to FreeSwitch or Asterisk
- Uses actor model - treats each call as an actor, handles it in isolation (so if one call fails, the whole system doesn’t fail)
- Case studies
- RingRx HIPAA-compliant phone system
- LiveConnect for broadcasting surgical procedures
Can open source open minds? IncLudo games for workplace diversity
Jesse Himmelstein
"Diversity is an institutional advantage." WORD. @himmelattack & @IncludoProject are trying to ++ workplace diversity with games 🤘 #FOSDEM pic.twitter.com/ynqIgnxoKq
— Anjana Vakil (@AnjanaVakil) February 5, 2017
- Diversity is an institutional advantage
- But it’s difficult to implement - “we are feeling beings who think, not thinking beings who feel”
- some research suggests that our ability to reason may exist to convince others of our ideas, rather than to make decisions
- IncLudo project created a variety of games to improve workplace diversity in India
- some teach about biases
- some (esp. board games) encourage conversation & exchange of experiences/stories among players
- Process
- Game jams are a good way to try out new ideas
- Paper prototypes are great for experimenting, though clients don’t always accept them so easily
- Having a diverse team helps
- Q&A
- You mentioned a game where you have to hide your bias from others
- You pretend you’re management at a company, and you have to hire someone for a position. Everyone has a secret bias card (“don’t want to hire [women, muslims, …]”). Your goal is to fight for the candidate you (don’t) want, but without being so obvious about it as to reveal your secret bias to the other managers. There were some really funny conversations coming out of it.
- How do you measure the impact?
- That’s really hard. There’s a few different things: you can try to measure what people learned from the game, which is difficult in itself. The other attempt is to see what the organizations actually do in real live - that’s what (our partner) ZMQ is going to do: see if the orgs actually change their practices.
- How do your games relate to competitive vs. collaborative games
- I wouldn’t agree that competition is bad by itself - it motivates us and as long as we understand that we’re competing in the game and not once it’s over. Our games are competitive, with the exception of Pirat Partage which wasn’t competitive but then the players started asking us for a scoring system so that they could see who’s winnign
- Aren’t competition and diversity contradictory?
- If you’re trying to bring diversity into an existing social structure made of companies that are competing, it makes sense to sell it to them that way.
- You mentioned a game where you have to hide your bias from others
Hellink, an educational game about open data
Thomas Planques
- Game for 1st year uni students that aims to
- teach information literacy: critical thinking about info sources
- raise awareness about open data
- The game talks about process of creation of scientific knowledge
- Who pays for scientific knowledge?
- Unis pay Scientists’ salaries
- Unis must also pay publishers, the publishers don’t pay the scientists
- Unis also pay to buy the journal, to buy back the knowledge
- So we say in scientific knowledge domain, people (taxpayers) pay 3 times
- What keeps this system going?
- each scientist has an H index based on their publications that’s important for their career
- the publishers own the journals, i.e. the means for scientists to advance their careers
- monopoly by big scientific publishers make knowledge less accessible
- One big solution would be the open data movement
- publishing not in private journals, but open source archives
- but scientists often think this will strip them of their work
- but it’s the other way around
- This is the subject of our game: we believe in the goal of open knowledge
- the goal is to raise awareness about this problem
- and also that checking the sources of your info is very important
- We chose to use the same humorous tone as Ace Attorney (manga-like Japanese game where you play a lawyer, trial is like Dragonball-Z)
- you’re sent to investigate a massive plot linked to who owns info & data in the uni/scientific publishing world
- you have one person who tells you a false assertion backed by false info sources
- like in Papers Please, you need to point out what is false in the info source & link it with a publishing rule that the source is supposed to respect
- What we learned
- procedural rhetoric: the game itself must convey the message
- a lot of educational games involve a little playing and a lot of reading
- the goal here is that you actually learn by playing
- making a game about notions like this that have gray areas is a lot harder than making games about hard science/math/programming etc. & needs more time invested
- what should ed games aim to do?
- games in general are not very good at conveying a very complex message/complex domain of learning
- what they’re good at is piquing interest and raising awareness
- ed games shouldn’t aim to teach everything to the player, but rather to give them the interest to go look into the topic themselves
- we tried to make our game one that’s actually fun in itself
- the game is for 1st year uni students, who by that point are used to playing a lot of “serious games” that are not up to the standard of entertainment games
- ours aims not just to be a “serious game” for education, but one that’s actually fun to play in and of itself
- procedural rhetoric: the game itself must convey the message
- The game will be released (for free) in April 2017
- Who pays for scientific knowledge?
Tablexia: app for children with dyslexia
Andrea Sichova, cz.nic
- Cognitive training for children with dyslexia
- focused on older children, 11-15 years
- teachers told us: we can give a lot of lessons, but with older children the problem is motivation
- so we developed a game to address that
- available on Android/iOS
- available in schools & counseling facilities, but we also encourage students to use it indepedently
- Available in Czech, Slovak, and German language
- What’s dyslexia?
- specific learning disability
- problems with reading/writing caused by cognitive functions (attention, working memory)
- dyslexic people have different learning strategies to cope
- App development
- focused on mobile (Android)
- testing: tried to put it in front of students as much as possible, ask questionnaires etc
- difficulty: needs to be at the right level so that they’re neither bored nor frustrated
- tasks:
- attention/working memory: need to read instructions and remember how they relate to previous ones
- spacial reasoning: map tiles
- phonological recognition/analysis: see a word, hear different options, choose the right one
- visual memory: have to click on the right things at the right time
- visual recognition: recognizing “alien” writing symbols, some of which are similar to others
- phonological memory: remember the content/order of sounds you heard
- also includes “badges” for completing exercises, statistics view of progress, and “encyclopedia” with info about dyslexia (which also has voice recordings of all texts)
- Does it work?
- studying it is difficult: we need a lot of children diagnosed with dyslexia, and let them play the game for some time
- children are not going to school regularly - problems with attendance
- Language
- We focused on Czech
- Dyslexia is closely related to the language
- aspects that dyslexic children struggle with are different from e.g. Czech to German