Mozilla Nederland LogoDe Nederlandse

Doug Belshaw: Future Infrastructure, Future Skills, Future Mindsets (ALL DIGITAL Summit, October 2017)

Mozilla planet - wo, 04/10/2017 - 07:49

Future Infrastructure, Future Skills, Future Mindsets (Barcelona, October 2017)



Today I’m presenting at the ALL DIGITAL Summit in Barcelona. It’s in the aftermath of the Catalan referendum on independence that was held at the weekend and, indeed, there was a general strike yesterday in protest at the way the Spanish government dealt with the whole affair.

This is by way of context to my presentation, which initially was going to feature the ‘social cooling’ effects of surveillance society - especially when it comes to so-called ‘Smart Cities’. Instead, I decided to re-focus on the technologies used by the Catalan separatists to allow the website used to co-ordinate their activities to be censorship-resistant.

From there, I go on to talk about my work on digital literacies, Open Badges, and co-operativism. You can find the slides for my presentation here.

Categorieën: Mozilla-nl planet

Karl Dubost: Work Gamification And Leaderboard

Mozilla planet - wo, 04/10/2017 - 07:49

When we want to encourage participation, reward is a common technique. Basically you accumulate good karma for your contributions. It's exactly the same as the carrott for the donkey, the bonus salary at the end of the month, the good score at school with the diplomas at the end, etc. These all are of the same family more or less. They can be very poor or very good depending on the process which drives them.

One (recent? in terms of centuries) additional twist on that is the gamification. Humans love to play, let's manipulate them a bit more into doing more work through gamification and let's establish a leaderboard. The leaderboard is the pinnacle of what is wrong with gamification. People are not driven by the game, but are driven by the top of the poster. Their name in shiny gold letters. It rewards often quantity over quality.

What can we do about it?

If you create a leaderboard or a gamification for getting results, focus first on what you brought to the participants of the game. Basically the score should be a mirror on your ability to have made the participants better at what they are supposed to accomplish. What does the organizer bring for the self accomplishment of the participants as individuals or a team?

It's never about volume. All your score system should be based on the data quality. It's often good to introduce negative scoring which removes the will to create volumes. Naively speaking, let's say +1 for the action providing the data, -2 if the data were of bad quality.

It should also be a process where you can't accumulate wealth. Basically, old participants become de facto the top of the leaderboard if month over month, they accumulate their score. This can be mitigated by the score in the last 10 days (choose the meaningful scale for your project). The importance is not the all time score, the importance is to be able to have a regular participation.

Your Leaderboard Guidelines
  • Proficiency over success
  • Quality over quantity
  • Regularity over history


Categorieën: Mozilla-nl planet

Mozilla Open Design Blog: Share with us what it means to be a German Conscious Choosers!

Mozilla planet - ti, 03/10/2017 - 23:09

Hamburg! Leipzig! Munich! Are you interested in helping us make the Internet more healthy, open and accessible?


This October, the Mozilla Audience Insights team, supported by Roberta Tassi and will be in Germany to understand the German Conscious Choosers – a group of people whose commitment to clear values and beliefs are driving their behavior and choices in terms of brands, companies and organizations they support and use. Similar to our objective in the USA, we would like to learn more about their experiences and the role that the internet and technology play in their life. This is an important group for Mozilla to understand because we believe people who think this way can also help us with our mission to keep the Internet open, accessible and healthy.


We would love to meet folks in person in:

Hamburg: October 5-9, 2017

Leipzig: October 10-14, 2017

Munich: October 15-19, 2017


We are looking for people who might be Conscious Choosers to conduct 2 hour interviews in their homes. If you are a Conscious Chooser and know someone who might be, please fill up this form to see if you qualify!


Also, please reach out to us by email if:

# You are interested in a group discussion on the role of the Internet in our daily life, as individuals and societies, and why it’s important to keep it healthy.


# You are a group of volunteers, a community or a non-profit organization that believes in creating a healthier internet and/or are targeting the Conscious Chooser audience,

We would like to come visit you and know more about what you do at the local level.


Send us an email at:, we’ll love to meet you in-person!

The post Share with us what it means to be a German Conscious Choosers! appeared first on Mozilla Open Design.

Categorieën: Mozilla-nl planet

Mozilla Addons Blog: Legacy Add-on Support on Firefox ESR

Mozilla planet - ti, 03/10/2017 - 23:08

Earlier this year, we shared with you our compatibility plan for Firefox. As anticipated, Firefox 57 will be released in late November, only allowing add-ons using the WebExtensions API. However, we have received some questions from developers on how this timeline applies to the Firefox Extended Support Release (ESR).

To clarify how legacy extensions will work with the ESR release:

  • ESR 52 will be the last ESR release that supports legacy add-ons. Support for ESR 52 officially ends on June 2018.
  • The following ESR release (59), and any subsequent release, will not support legacy add-ons. There will be no override provided for this behavior.
AMO Support

AMO ( will continue to support legacy add-on listings throughout the ESR 52 cycle. However, AMO will primarily focus on WebExtension add-on listings. This means some legacy features may also change during this time period. There are big changes coming to AMO, including a completely new design. Stay put for more updates on this.

The post Legacy Add-on Support on Firefox ESR appeared first on Mozilla Add-ons Blog.

Categorieën: Mozilla-nl planet

Air Mozilla: Intern Presentations: Round 8: Tuesday, October 3rd

Mozilla planet - ti, 03/10/2017 - 22:00

 Tuesday, October 3rd Intern Presentations 2 presenters Time: 1:00PM - 1:30PM (PDT) - each presenter will start every 15 minutes 1 PDX, 1 London

Categorieën: Mozilla-nl planet

Air Mozilla: Intern Presentations: Round 8: Tuesday, October 3rd

Mozilla planet - ti, 03/10/2017 - 22:00

 Tuesday, October 3rd Intern Presentations 2 presenters Time: 1:00PM - 1:30PM (PDT) - each presenter will start every 15 minutes 1 PDX, 1 London

Categorieën: Mozilla-nl planet

Mozilla Open Policy & Advocacy Blog: Vulnerability disclosure should be part of new EU Cybersecurity Strategy

Mozilla planet - ti, 03/10/2017 - 20:44

The European Commission recently released its new European Cybersecurity Strategy, which includes both a report and a legislative proposal. This new strategy comes four years after the Commission published its first cybersecurity strategy and a year after the first EU-wide legislation on cybersecurity, The Directive on Security of Network and Information Systems (NIS Directive), came into force. While much of the strategy focuses on creating a unified framework for cybersecurity standards and important work to uplevel the European Union Agency for Network and Information Security (ENISA) into a permanent “European Cybersecurity Agency,” the Commission’s strategy gives little attention to the critical topic of government vulnerability disclosure.

The Commission’s strategy emphasizes the need for stronger defenses to mitigate the increasing number of cybersecurity threats. Given that many attacks today have cross-border effects and can disrupt essential services across the EU, the Commission argues that “this requires effective EU level response and crisis management”.

Essential to building stronger defenses against the nearly daily barrage of cybersecurity attacks, hacks, and breaches is ensuring that governments have better systems in place for reviewing and coordinating the disclosure of the vulnerabilities that they learn about. We need only look at the recent WannaCry ransomware, for example, to see the power of a vulnerability to significantly affect hospitals, business, government agencies, and individual users. Complicating the government responsibility role further, the exploit at the heart of WannaCry was reportedly originally developed by the U.S. National Security Agency (NSA).

Mozilla has long called for governments to codify and improve their policies and processes for handling vulnerability disclosure, including speaking out strongly in favor of the Protecting Our Ability to Counter Hacking Act (PATCH Act) in the United States. Mozilla also recently joined the Centre for European Policy Studies’ Software Vulnerability Task Force, a multistakeholder effort dedicated to advancing thinking on this important topic, including mapping current practices and developing a model for vulnerability disclosure.

Governments often have unique insight into vulnerabilities, and so ensuring that governments have strong policies for reviewing and coordinating the disclosure of vulnerabilities is a critical norm that should be advanced within the EU. Yet, it appears most Member States currently lack a process for reviewing vulnerabilities that they learn about in order to decide whether to share those vulnerabilities with affected companies (allowing the companies to patch these vulnerabilities) or withhold them for operational purposes. Governments typically obtain vulnerabilities through their own research and development, by purchasing them, through intelligence work, or by reports from third parties.

Disclosing these vulnerabilities to affected companies allows companies to:

  • patch them quickly;
  • increase the security, privacy, and safety of their systems and users;
  • reduce conflict and improve trust between companies and government; and,
  • especially for organizations with limited cybersecurity resources, benefit from external discovery of vulnerabilities in their products and systems that they may not otherwise have the resources to find.

Recognizing the key role that vulnerabilities play in cybersecurity, the NIS Directive aimed to facilitate information sharing from companies to governments. However, this was never supposed to be a one-way street. We must also ensure that there are robust, accountable, and transparent systems in place to ensure that governments are sharing information about vulnerabilities back out to affected companies.

This new European Cybersecurity Strategy and corresponding proposed regulation, offers a unique opportunity to advance the norm that Member States should have robust, accountable, and transparent vulnerability disclosure processes thereby fostering greater cooperation, coordination, and resilience in Europe.

As the Commission notes in its strategy: “in the current context and looking at future scenarios, it appears that to increase collective cyber-resilience, of the Union, individual actions by EU Member States and a fragmented approach to cybersecurity will not be sufficient.”

We believe the European Commission and a newly strengthened ENISA can be powerful players in helping Member States to develop government vulnerability disclosure mechanisms and share best practices. A lot has changed in the world of cybersecurity in the last four years, and it’s clear that now more than ever governments and companies need be working better together if we are to keep Europeans and European infrastructure as secure as possible.


The post Vulnerability disclosure should be part of new EU Cybersecurity Strategy appeared first on Open Policy & Advocacy.

Categorieën: Mozilla-nl planet

The Mozilla Blog: Mozilla Awards Over Half a Million to Open Source Projects

Mozilla planet - ti, 03/10/2017 - 20:28

At Mozilla we were born out of, and remain a part of, the open source and free software movement. Through the Mozilla Open Source Support (MOSS) program, we recognize, celebrate, and support open source projects that contribute to our work and to the health of the Internet.

Our major initiative in the past few months has been the launch of “Global Mission Partners: India”, a pilot scheme to bring the Mission Partners track of MOSS to particular regions of the globe which have strong open source communities. The initial application period has just closed, and our India committee will shortly begin the work of assessing the over a dozen applications we have received.

We’ve also received updates from earlier awardees who have finished their work. We made an award last year to the Tor Project to improve their metrics; they’ve written a blog post and final report (PDF) on how that went. The Kea DHCP server project finished their configuration API, and ReadTheDocs have significantly improved the Python documentation ecosystem. Now that MOSS has been in action for a while, we are starting to amass a significant collection of ecosystem improvements which would not have happened without our support.

Additionally, since our last update, we have made a total of $539,000 in additional awards.

The biggest amount ($194,000) went to Ushahidi, an open source software platform for crowdsourcing, monitoring, visualizing, and responding to reports from people caught up in political turmoil or subject to governmental or vigilante abuse. They are working on making it easier to securely submit reports, and documentation on how to deploy Ushahidi while minimising risk to the hosts.

We have also agreed to support some other projects we believe will advance a free and healthy Internet:

  • $125,000 to the webpack project, a popular JavaScript module loader, to help them make the cross-browser WebAssembly format a first-class citizen in their ecosystem;
  • $100,000 to RiseUp, a coordination platform used by activists across the political spectrum, to improve the security of their email service;
  • $50,000 to Phaser, the open source HTML5 games engine, to allow them to complete the development of version 3;
  • $70,000 for creating mod_md, an Apache module which speaks ACME, the automated certificate issuance protocol, to make it easier for websites to deploy and use secure HTTP.

Under the Secure Open Source arm of MOSS, it’s been a good few months from a security perspective. We ran audits on the codebases of expat (an XML parser), and GNU libmicrohttpd (an embedded HTTP server). In neither of these cases did we find an issue more severe than Medium.

We also managed an audit on chrony, which is another NTP daemon, following on from our previous audits of ntp and ntpsec. This audit was funded by the Core Infrastructure Initiative, who have done a comparative write-up of the results from their perspective.

The experienced security auditors who evaluated chrony were particularly impressed, writing a ringing endorsement in their report: “Withstanding eleven full days of testing … means that Chrony is robust, strong, and developed with security in mind. The software boasts sound design and is secure across all tested areas. … While the functional scope of the software is quite wide, the actual implementation is surprisingly elegant and of a minimal and just necessary complexity. In sum, the Chrony NTP software stands solid and can be seen as trustworthy.”

Applications for “Foundational Technology”, “Mission Partners”, and “Global Mission Partners: India” remain open, with the next batch deadline being the end of October 2017 (January 2018 for India). Please consider whether a project you know of could benefit from a MOSS award.  Encourage them to apply! You can also submit a suggestion for a project which might benefit from an SOS audit.

The post Mozilla Awards Over Half a Million to Open Source Projects appeared first on The Mozilla Blog.

Categorieën: Mozilla-nl planet

The Firefox Frontier: New Firefox Add-on Awesomeness Is On The Way

Mozilla planet - ti, 03/10/2017 - 17:40

The New Firefox is coming in November, and it’s going to be awesome! Faster. More Stable. More technically evolved! New Firefox’s mission:awesomeness required us to improve and modernize a lot … Read more

The post New Firefox Add-on Awesomeness Is On The Way appeared first on The Firefox Frontier.

Categorieën: Mozilla-nl planet

Hacks.Mozilla.Org: An overview of Containers for add-on developers

Mozilla planet - ti, 03/10/2017 - 17:03

Containers enable users to log in to multiple accounts on the same site simultaneously, and give users the ability to segregate site data for improved privacy and security. At Firefox, we have been working on Containers for quite some time.

We started with platform work in the browser itself and added a basic user interface, then we moved on to a Test Pilot experiment, in which we expanded the feature in an extension. Now we are graduating from Test Pilot and moving our extension, Firefox Multi-Account Containers to

In addition, we have updated the Firefox platform so that Containers can be managed by extensions.  This means that developers have access to the necessary APIs to create new Container extensions. You can build new extensions on top of Container APIs to meet your needs and use cases! This already happening, with a number of new extensions popping up on

This post introduces the contextualIdentities API, and walks through an example Container add-on with developers in mind.

What are Containers?

Containers work by giving users the ability to place barriers on the flow of data across sites by isolating cookies, indexedDB, localStorage, and caches within discrete browsing contexts. For instance, the browser storage associated with a user’s Personal Container is separated from the user’s Work Container. In this way, users can take on different identities depending on the context they are in – we refer to this as contextual identity.

The Cookie Store is a key WebExtension API concept that represents storage isolation in the browser. In other browsers, the Cookie Store is used to differentiate private windows from regular windows. In Firefox, the Cookie Store will now also differentiate containers from each other.

Containers are unique to Firefox. These new APIs empower all developers to create new Privacy, Security and Tab management experiences that aren’t available in other browsers today.

Setting up your manifest

To use the contextualIdentities API, add the “contextualIdentities” and “cookies” permissions to your manifest.json so your extension can create Container Tabs associated with a Cookie Store.

"permissions": [ "cookies", "contextualIdentities" ] Managing Container Tabs

The cookies permission provides access to the cookieStoreId property needed for container tab management. The contexualIdentities API methods return the cookieStoreId that can be used for methods like tab.create.

const containers = await browser.contextualIdentities.query({}); browser.tabs.create({ cookieStoreId: container[0].cookieStoreId, url: "" });

This code creates a new tab that requests using the cookieStoreId associated with the user’s first container.

We can also use the cookieStoreId to find all open Container Tabs associated with it:

browser.tabs.query({cookieStoreId}); Monitoring for changes

Firefox and Container add-ons have the ability to create, update and remove containers. Extensions can now monitor these changes, alerting them to update their layout or management interfaces when the list of containers has changed.

To monitor for changes an extension can use the onCreated, onUpdated and onRemoved listeners that are passed the modified container object.

const rebuildEvent = () => { this.rebuildMenu(); }; browser.contextualIdentities.onRemoved.addListener((container) => { this.removeContainer(container.cookieStoreId); rebuildEvent(); }); browser.contextualIdentities.onUpdated.addListener(rebuildEvent); browser.contextualIdentities.onCreated.addListener(rebuildEvent); this.rebuildMenu();

Ensure that you use the onRemoved listener to monitor for containers being removed by the user or by other extensions. This is especially important if your extension programmatically creates Container Tabs. For example, an extension may be configured to open a Shopping tab at 5pm every Friday to order beer from the local pub. But, if the user had previously deleted the Shopping tab, then their extension would likely be broken if it did not monitor for the remove event. A sad outcome.

Keeping a consistent UI with colors & icons

We noticed that some Container add-ons uploaded to were using different icons and looked very different than Firefox. In order to make life a little easier for extension developers, and more harmonious for users, we are now exposing the color code and an icon URL you can use to keep the colors you choose consistent with our palette. We think it’s a win-win.

On Firefox and across our Container extensions, we’ve optimized our color palette. Firefox designers have worked hard to choose colors that are visible within dark and light themes for accessibility reasons. When developers use CSS color keywords like “pink” and “blue” the result looks very different from the native colors Firefox provides.

Our updated APIs provide a public icon URL and Hex color code for the container’s color. Please use the “colorCode” property within your extension, since in the future we may update the color codes to match changes in Firefox.

Consistency across Firefox and Container extensions is important to prevent bugs and provide a pleasing user experience. So, as with the color palette, we also provide URLs for our icons in the iconUrl property. We encourage you to work with our assets to provide an easy-to-navigate user interface as we build together with Containers. And we thank you in advance.

In an extension, you can query for the current active containers like this:

const containers = await browser.contextualIdentities.query({}); containers.forEach((container) => { console.log(container); /* Object { name: "Personal", icon: "fingerprint", iconUrl: "resource://usercontext-content/fingerprint.svg", color: "blue", colorCode: "#37adff", cookieStoreId: "firefox-container-1" } */ }); Building an example Container add-on

To demonstrate how the Web Extension APIs for Containers can be used,  I’ll now walk you through a Container extension I made. This add-on gives the user the option to automatically redirect HTTP traffic to HTTPS based on a per container preference.

A user may decide to turn on HTTPS for the Banking Container, as seen above. Then when the user is in a Banking tab and visits, they will see that their tab actually ends up visiting the HTTPS page instead:

In the extension I wrote, I have the following functions:

createIcon(container) { const icon = document.createElement("div"); icon.classList.add("icon"); const iconUrl = container.iconUrl || "img/blank-tab.svg"; = `url(${iconUrl}) top left / contain`; = container.colorCode || "#000"; return icon; } async createRow(container) { const li = document.createElement("li"); li.appendChild(this.createIcon(container)); ... } async rebuildMenu() { const containers = await browser.contextualIdentities.query({}); ... containers.unshift({ cookieStoreId: "firefox-default", name: "Default" }); const rowPromises = []; containers.forEach((container) => { rowPromises.push(this.createRow(container)); }); ... }

In my rebuildMenu function I query for all the containers the user has. Then I add an item for default Firefox tabs. When the code calls createIcon with a container object, the iconUrl and colorCode properties can be used to get the associated icon. I use the icon as an SVG mask in CSS for the div, which results in the background color being used for the icon color, as it does in native Firefox menus.

Making Container APIs reliable

Containers is a platform feature that has been disabled by default in Firefox Beta and general release. Until now, extension developers have had to inform the user to enable Containers in about:preferences in order to use the Container APIs. This changes with the release of Firefox Quantum (now in Developer Edition). In Firefox Quantum, if you are a developer creating a Containers extension, your extension enables Containers. So now, when the user installs your extension, they don’t have that additional step. If they try to disable Containers, they will need to first disable your extension.

This provides an assurance to extension developers that the Containers APIs will work when the extension is installed. In the past, users could disable Containers at any point and break all Container-dependent extensions. Now they must disable the extension itself first, in order to disable Container Tabs.

We also made changes to the existing “query”, “get”, “update” and “remove” methods to be more “promise friendly”. Rather than resolving the promise with null or false values, we now reject promises when there are errors. In a situation where a container can’t be found or there is some internal error, we reject the promise of the API, so wrapping API calls in try...catch blocks allows your code to handle these errors:

async getContainer(cookieStoreId) { let container; try { container = await browser.contextualIdentities.get(cookieStoreId); } catch (e) { /* Containers may be disabled, the API might have failed or the container has been deleted. */ this.warnUser(e); } return container; } Adding containers to existing extensions

Extensions often implement options for their users that aren’t ideal for all browsing activities. Specific extensions may provide privacy, security, or other user interface benefits and enhancements. Maybe the extension is a simple timer to track how often you look at cat gifs in social media during your work day. You might not need it after you’re done with your Work Container. Most extensions require the user to initiate an interaction, and it’s probably not necessary or beneficial for your extension to be “always on.”

Using Containers instead as an indicator of “context” simplifies the user experience of your extension. Extensions that add new features when a specific container is open, are more likely to be actively used because they hook into existing containers. For instance, HTTPS Everywhere’s “always https” option breaks many websites, but it’s always relevant and in context if it’s implemented by default when you’re in the Banking Container.

Whilst extensions can already change their behaviour based on URL, we feel that the security and privacy benefits of containers create new incentive for users to configure settings.

Ideas for new Container extensions

We’re excited about the possibilities of Container extensions for providing context-based enhancements to browsing. When a user wants to be in a Work tab, an extension might be configured to block not safe for work pages. When a user doesn’t want to be reminded of work while at home, an extension may be configured to auto-delete a user’s Work history, but remember the Personal history.

For instance, extensions could:

  • Autoload social pages into a Social tab
  • Remove cookies on tab close when in a Work tab
  • Block key logging scripts when in a Shopping tab
  • Create unique containers for pinned tabs
  • Load multiple versions of a website for QA testing, whilst still providing history and development tools embedded in the browser (instead of headless browser testing).

For example, we have already seen a number of Container extensions created:

  • Containers on the go – gives users a temporary container that lasts for the lifetime of a tab.  The temporary container simulates a private tab as containers are isolated from each other. As soon as the tab is thrown away, the container is deleted, which removes the cookies and other storage associated with it.
  • Cookie AutoDelete – has been modified to be progressively enhanced when containers are enabled, giving users the ability to change cookie deletion settings per container.
  • Conex – a containers implementation of the panorama extension
  • And many more

The Container WebExtension APIs allow developers to rewrite containers themselves. Developers can fork our extension and build improvements on top of it. If you’re looking for ideas, we have a large list of open enhancement requests that extension developers could solve in their own extension using the provided APIs.

As you can see from all these changes and updates, we truly have embraced the use of containers for tab management.

Where next for Container extensions

We have a few more enhancements to make to our APIs.  Here’s what’s in the queue:

Publishing your extension Terminology

When creating a container extension, we would recommend using “Container Tabs” as a term to explain the add-on instead of using the API name contextualIdentities.

Privacy best practices

If you’ve built an extension that uses Containers, but does so in a way that compromises user privacy, please disclose this. Let users know that your extension doesn’t meet the isolation criteria designed for Containers. For example, moving tabs between containers introduces the risk of exposing the user to additional trackers.

Fixing issues with existing extensions

For your browser extensions to work in Firefox, please remember to check for the cookieStoreId when creating and querying tabs. Some of the reported extension breakage that we’ve seen is due to extensions that copy tab urls and reopen them later without considering the cookieStoreId the tab pertains to. Here’s an example of the issue as reported on Github

I want to thank the countless users, testers, coders and staff that have worked on Containers.

Hit us up with feedback: or on Discourse.

Categorieën: Mozilla-nl planet

Tanvi Vyas: An Update on Firefox Containers

Mozilla planet - ti, 03/10/2017 - 17:00

Containers is now available as a Firefox Extension, accessible to all Firefox users. Download Firefox Multi-Account Containers here.

Back in June 2016, we started experimenting with “Containers” as a way to explore Contextual Identities on the web. Firefox Containers are a way for users to isolate their online identities and tasks from one another. In addition to the privacy benefits of containers, containers allow users to be logged into multiple accounts at once without requiring them to use multiple browsers or constantly sign in and out.

After our initial Nightly implementation, we went through various rounds of user research, design iterations, experiments, and finally a Test Pilot launch to help determine what our users wanted and how containers could meet those needs. We received positive feedback, numerous feature requests, and bug reports. As the Test Pilot phase comes to an end, we have converted containers into a Firefox Extension called Firefox Multi-Account Containers, accessible to all Firefox users! The extension comes with the latest UI and containers experience, including a number of features that weren’t available last year.

What’s new?

Underline: After numerous complaints and bugs with the previous overline tab experience, container tabs are now underlined with the appropriate container color.

Shows underlined container tab instead of previous overline.

Menu: There is a new Container Menu button that is accessible in the toolbar with many container options. You can open a tab in a given container by clicking on the name of the container you want to open. You can create, delete, and edit containers. You can change the color or icon associated with a container or change the container name.

Assignment: You can now assign a website to a container, so that a specific website will always open in a specific container. This helps protect from accidents, stopping you from accidentally visiting a shopping site in your banking container, for example.

Assign a site to a specific Container

Hide and Show: Assume you use your browser for both Work and Personal tasks. When you come home at the end of the day, you don’t want to be thinking about “Work” anymore, but your browser is full of Work tabs. You can “Hide” your Work tabs and proceed with your Personal tasks. Then the next day, when you are back at work, you can “Hide” your Personal tabs and “Show” your Work tabs.

Select a Container and click Hide to hide the associated tabs

Note that these hidden tabs are actually currently closed. They aren’t open in the background, eating up CPU power and bandwidth. However, that also means that if you are halfway through filling out a form, your form data will be lost when you re-show the tab. We hope to fix this in the future so that your form data isn’t lost.

Sort: The Container Menu has a “Sort Tabs” option and a “Move tabs to a new window” option. Sort Tabs will put all your tabs of the same container type next to each other in a given browser window. So if you have “Work” and “Personal” tabs interleaved within each other, you can easily sort them to help organize your tasks (as seen below). “Move tabs to a new window” will take all the container tabs in your current window and move them to a fresh window.

Personal and Work tabs in random order, ready to Sort

Personal and Work Tabs after they are sorted

I wish Containers could do more!

During the last year, we received tons of feature requests for containers. We found that many feature requests conflicted with each other. For example, if you are in a Work Container, and open a new tab, should the new tab be in the Default Container or the Work Container? Or, if you click a link in a Banking Container, should the link open in the Default Container or the Banking Container? We realized that different users want to use containers in different ways with numerous different use cases. Instead of creating a complicated, feature rich, and potentially confusing product, we created Web Extension APIs. With these APIs, developers can create new Container addons that work for exactly the use case they have in mind. You can learn more about these here.

There are a number of different container related extensions that have already emerged, including Containers On The Go, Conex, Context-plus, and Cookie AutoDelete.

Quick Tips for Container Tab Management

We have received a lot of requests from users seeking easier ways to open tabs or links within a specific container. Many of these already exist, but are unfortunately a bit hard to discover. Here are some quick tips that might help an avid containers user:

I am in Container X and want an easy way to open another tab in Container X.

With the plus button (or ctrl+T), you will get a tab in the Default Container. To get a new tab in Container X, hold down the control key and press the Plus Button with your mouse at the same time. This will open another Container X tab right next to your previous Container X tab. (Note that Mac users will need to use the command key instead of control.)

Plus button plus control key inherits the Container type from the existing tab

Alternatively, if you have a mouse with a middle click button on it, middle clicking the plus button will give you a new tab in Container X.

You can also hold down the control key and press the Refresh button with your mouse at the same time. This will open another tab in Container X with the same website loaded. So you will have two side by side Container tabs visiting the same site.

I want to open a container without using my mouse.

Clicking the control button and the period button (ctrl+.) will open up the Container Menu. You can tab through the different container names until you get the one you want to open. Once you have it selected, press Enter and you will get the container you desire.

I am in Container X and want to open a link in Container Y.

Right click the link to expose the Context Menu. Select “Open Link in New Container Tab” and choose which container you would like to use.

Right click to open context menu and select which container you want to open the link in

I want the plus button to show me a list of options instead of just opening a Default Container.

Go to the plus button with your mouse, click the button and hold down your mouse key for a second or two. “Long pressing” on the plus button exposes a list of containers you could select for your new tab.

Long press on plus button to see list of containers you can choose from

I want to always open in the Banking Container and nowhere else.

Use the assignment feature described above. Open a Banking Container tab. Go to Click the Container Menu and select “Always open in Banking”. The next time you go to in a container other than Banking, the browser will ask you if you would like to use the Banking Container instead. This helps protect you from making mistakes and visiting the wrong website in the wrong context.

I created a container for my online Christmas shopping, but Christmas is over and I don’t need the container anymore.

You can easily delete a container by clicking the Container Menu, selecting Edit Containers, and then clicking the trash can image next to the container you would like to delete. This will close any tabs that are open in that container, and also delete any saved cookies, cache, localstorage, and indexeddb from that container. Note that it will not delete websites you visited in that container from your history. History is currently global and shared across containers.

The post An Update on Firefox Containers appeared first on Tanvi Vyas.

Categorieën: Mozilla-nl planet

Onno Ekker: Add-On Bracelet

Mozilla planet - ti, 03/10/2017 - 13:26

My 14-year-old son bought a 3D-Printer from the money he earned with his newspaper job and he made me this bracelet.

add-on bracelet

It suits me well, since I develop the add-on extension Mail Redirect for Thunderbird and SeaMonkey. If you are interested, here is a picture I took from the bead design, but I can probably also ask my son to publish it somewhere, if there’s demand for it…

bead design

Categorieën: Mozilla-nl planet

Mozilla Reps Community: Rep of the Month – September 2017

Mozilla planet - ti, 03/10/2017 - 11:14

Please join us in congratulating Kushagra Varade, our Rep of the Month for September 2017!

Kushagra is a web developer from Bhopal, India and has joined the Reps program in the first Webinar we ever organized back in April.



Since joining the Reps program, he has attended several events in his region. Most of these events focused on WebVR such as the Geek Night in Hyderabad. He organized a WebVR event in July. Right after joining Reps he attended a MozCoffee to discuss onboarding strategies and MozActivate.

Thank you Kushagra, keep rocking the open Web! :tada: :tada:

Join us on Discourse to congratulate him!

Categorieën: Mozilla-nl planet

This Week In Rust: This Week in Rust 202

Mozilla planet - ti, 03/10/2017 - 06:00

Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust or send us a pull request. Want to get involved? We love contributions.

This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR.

Updates from Rust Community News & Blog Posts Crate of the Week

Sadly, no one suggested a crate for the week.

Submit your suggestions and votes for next week!

Call for Participation

Always wanted to contribute to open-source projects but didn't know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!

Some of these tasks may also have mentors available, visit the task page for more information.

If you are a Rust project owner and are looking for contributors, please submit tasks here.

Updates from Rust Core

100 pull requests were merged in the last week

New Contributors
  • Badel2
  • Ben Cressey
  • Daniel Klauer
  • Jeroen Bollen
  • Matthias Devlamynck
  • Sean Prashad
  • Tomas Nilsson
  • Vitaly Vi Shukela
Approved RFCs

Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:

Final Comment Period

Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now. This week's FCPs are:

New RFCs
  • impl-only-use. The use …::{… as …} syntax can now accept _ as alias to a trait to only import the implementations of such a trait.
Upcoming Events

If you are running a Rust event please add it to the calendar to get it mentioned here. Email the Rust Community Team for access.

Rust Jobs

Tweet us at @ThisWeekInRust to get your job offers listed here!

Quote of the Week

The compiler is grumpy for you so you don’t have to be

— Élisabeth Henry @RustFest Zürich

Thanks to llogiq for the suggestion.

Submit your quotes for next week!

This Week in Rust is edited by: nasa42 and llogiq.

Categorieën: Mozilla-nl planet

Mozilla Marketing Engineering & Ops Blog: MozMEAO SRE Status Report - October 3, 2017

Mozilla planet - ti, 03/10/2017 - 02:00

Here’s what happened on the MozMEAO SRE team from September 26th - October 3rd.

Current work MDN Migration to AWS

We’ve successfully completed a series of tests against MDN hosted in AWS, but we have a few more to complete before moving to AWS.

  • A successful MDN maintenance mode test was performed on Tuesday October 3rd 2017, at 2pm eastern / 11 pacific.
Migration work
  • Restrict URLs for untrusted (files / samples) and CDN domains. PR 529

  • New Relic support has been added to the MDN Kubernetes deployments in these PRs: 549, 548, 547, 542

  • MDN K8s crontasks have been updated to change the process user:group to kuma, add Deadmanssnitch support, and some optimizations to prevent aws s3 sync from timing out. PR 533

  • Unused MDN S3 buckets have been deleted, with some manual cleanup due to versioning enabled on the buckets. PR 531

Upcoming Portland Deis 1 cluster decommissioning

Applications are being moved off Deis 1 to support decommissioning the Deis 1 cluster in Portland.

Categorieën: Mozilla-nl planet

Mozilla Addons Blog: October’s Featured Extensions

Mozilla planet - mo, 02/10/2017 - 21:53

Firefox Logo on blue background

Pick of the Month: Tab Center Redux

by Edouard Oger
Move your tabs to the side of the browser window.

“Second only to an adblocker in my must-have extensions.”

Featured: IMGoogle Reverse Image Search

by erosman
A very streamlined and effective image search tool.

“Thank you so much. Perfect add-on!”

Featured: Tab2QR

by James Shih
Send the desktop web page you’re viewing to your mobile device.

“I would say it’s the best extension of this kind.”

Featured: Video Speed Controller

by codebicycle
Speed up, slow down, fast forward and rewind HTML5 video with the help of quick shortcuts.

“I love it. Helps me save hours and hours of time, works great.”

Featured: YouTube in HD

by James Fray
Watch videos in full high-def.

“YouTube often selected 720p or sometimes lower settings, even on a 100mbit connection with a 1440p panel, so I kept having to manually select the quality with every video, but now I don’t have to! :).”

Nominate your favorite add-ons

Featured add-ons are selected by a community board made up of add-on developers, users, and fans. Board members change every six months. Here’s further information on AMO’s featured content policies.

If you’d like to nominate an add-on for featuring, please send it to amo-featured [at] mozilla [dot] org for the board’s consideration. We welcome you to submit your own add-on!

The post October’s Featured Extensions appeared first on Mozilla Add-ons Blog.

Categorieën: Mozilla-nl planet

Air Mozilla: Mozilla Weekly Project Meeting, 02 Oct 2017

Mozilla planet - mo, 02/10/2017 - 20:00

Mozilla Weekly Project Meeting The Monday Project Meeting

Categorieën: Mozilla-nl planet

Air Mozilla: Mozilla Weekly Project Meeting, 02 Oct 2017

Mozilla planet - mo, 02/10/2017 - 20:00

Mozilla Weekly Project Meeting The Monday Project Meeting

Categorieën: Mozilla-nl planet

Hacks.Mozilla.Org: Multi-user experiences with A-Frame

Mozilla planet - mo, 02/10/2017 - 19:26

Multi-user experiences on the Internet have come a long way since the emergence of online chat and the rise of social networks. Advances in virtual reality are making the Web a more immersive and interactive environment. Neal Stephenson envisioned this set of shared, persistent, and interconnected 3D virtual spaces and called it the metaverse; today we are building it with HTML, JavaScript, and A-Frame.

Given the gentle learning curve of HTML, A-Frame is the perfect choice for those who want to create virtual spaces on the Web with a few lines of HTML and JavaScript. With the implementation of link-traversal by browsers, we are a step closer to teleporting from one experience to another without commuting in the real world. However, a collaboration model to facilitate information exchange between the inhabitants of the metaverse is still missing. WebRTC plays a key role in enabling this exchange.

Peer-To-Peer communications with WebRTC

WebRTC is a Web API, present in the majority of browsers (including Safari as of this September), that allows the interchange of information without intermediaries, in a peer-to-peer fashion. With WebRTC, it is possible to implement the necessary infrastructure for persisting the experiences integrating the metaverse.

The biggest complexity of WebRTC arises from session management, peer discovery and signaling, all necessary to identify the connections between browsers. Once peer identities have been established, the standard can provide end-to-end channels for sharing media and data.

The sharedspace component

To bring the power of WebRTC to A-Frame users, I’ve been developing the sharedspace component. The component provides a collaboration model where participants can join or leave a named space, share audio and state, and send JSON-serializable objects to other peers.

The component does not deal with the WebRTC API directly. Instead, it uses a modified version of webrtc-swarm as a wrapper library. I chose it for its simplicity, footprint, clarity of the source code, and ease of use.

You can experiment with some VR chat on Glitch or browse the project to learn more about the sharedspace component. The repository includes extensive documentation with explanations and examples of other common use cases.
The sharedspace component is not a general network solution for A-Frame and it does not come with a straightforward way of sharing entities among multiple instances of an application. However, the ability to send data means it’s possible to create new forms of collaboration built on top of this component.

For a more general network component, take a look at the networked-aframe component by Hayden Lee.


The sharedspace component requires a browser with WebRTC support which means any recent version of the most popular mobile and desktop browsers. Chrome also requires the page supporting WebRTC to be served on HTTPS unless you are serving from localhost.

How does it work?

This is the minimal HTML code you need to implement a shared space:

<!-- Inside head --> <script src=""></script> <script src=""></script> <script src=""></script> <!-- Inside body --> <a-scene> <a-entity sharedspace avatars> <!-- Actually, this is not needed but convenient to have some reference points --> <a-entity environment="preset: forest"><a-entity> </a-entity> </a-scene> <template> <a-sphere radius="0.1" color=”#ff0000”></a-sphere> </template>

However, the code above will always connect to a room named room-101 and the avatar representations will be red spheres, which are not an effective representation of human participants. Let’s customize the settings to change this.

You can follow along with me as I customize the code using this same minimal setup on Glitch: remix the project.

A forest with a red sphere in the middle representing the other peer

Important: To test your progress, you will need at least two clients connected to the same room. While testing, you will notice the peers are connected because the camera resets and the app no longer allows you to move the avatar around. When this happens, look for a red ball: this is the other peer.

Click to see the effect of connection on the camera.

Randomly generated room names

The sharedspace component will try to connect to the room as soon as the A-Frame scene is ready. Once the component has connected, changing its properties has no effect. To prevent the component from connecting the server, set the hold property to true:

<a-entity sharedspace="hold: true" avatars></a-entity>

Prepare a script to modify the scene once it has finished loading. Add the following script tag just before the closing tag of body:

<script> var scene = document.querySelector('a-scene'); (function start() { if (!scene.hasLoaded) { scene.addEventListener('loaded', start); return; } // Now it’s safe to change the scene components... }()); </script>

Replace the comment with the following JavaScript, which will check the current URL to find a room to connect to. If no room is found, the app will generate a new room and replace the URL in the address bar to let the user invite their friends to it:

var prefix ='.')[0] + '-'; var currentUrl = new URL(window.location); var roomName =; if (!roomName) { roomName = prefix +; = roomName; history.pushState({}, '', currentUrl.href); } var room = document.querySelector('[sharedspace]'); room.setAttribute('sharedspace', { room: roomName, hold: false });

The most important part is the last line where you set the name of the room and reset the hold property to false, allowing the component to connect.

Suppose I want to have a VR talk with a friend. I enter the bare URL in Firefox, on the left and the webpage automatically appends the room name and connects. Now I share the new URL with my friend who pastes it in Chrome, on the right.

Custom avatars

The avatars component is available when installing the sharedspace component. It manages the A-Frame scene to provide an avatar representation to each participant. By default, the avatars component will search for a template tag and use its content for instantiating the avatar.

Replace the content of the template tag with the following primitives:

<template> <a-entity> <a-sphere radius="0.1" color="#ffffff"></a-sphere> <a-sphere position="0.05 0.03 -0.08" radius="0.02" segments-width="8" segments-height="8" color="#000000"></a-sphere> <a-sphere position="-0.05 0.03 -0.08" radius="0.02" segments-width="8" segments-height="8" color="#000000"></a-sphere> <a-sphere class="themable" position="0 -0.07 -0.1" scale="1 1 0.5" segments-width="4" segments-height="4" radius="0.02" color="#11fd3e"></a-sphere> <a-cone class="themable" position="0.03 -0.07 -0.1" rotation="0 0 90" scale="1 1 0.5" segments-radial="8" segments-height="1" height="0.03" radius-bottom="0.03" color="#1cff3c"></a-cone> <a-cone class="themable" position="-0.03 -0.07 -0.1" rotation="0 0 -90" scale="1 1 0.5" segments-radial="8" segments-height="1" height="0.03" radius-bottom="0.03" color="#1cff3c"></a-cone> </a-entity> </template>

Click and see how looking around on the right tab moves the avatar on the left tab.

Fixing orientation

Not knowing where the camera is pointing when you connect can be annoying. Let’s fix that. When a participant joins the room, the avatars component instantiates the avatar template and emits an avataradded event on its entity. This allows dynamic configuration of the template.

Locate the line where you get the room element and add the following code right there, (before setting hold to false):

room.addEventListener('avataradded', function onAdded(evt) { var avatar = evt.detail.avatar; if (!avatar.hasLoaded) { avatar.addEventListener('loaded', onAdded.bind(null, evt)); return; } var avatarY = avatar.getAttribute('position').y; avatar.object3D.lookAt(new THREE.Vector3(0, avatarY, 0)); var radToDeg = THREE.Math.radToDeg; var rotation = avatar.object3D.rotation; rotation.y += Math.PI; avatar.setAttribute('rotation', { x: radToDeg(rotation.x), y: radToDeg(rotation.y), z: radToDeg(rotation.z) }); });

Notice that avataradded does not guarantee that the avatar entity has loaded. You should wait for the avatar to completely load before it’s safe to alter other components. The code uses the underlying Three.js API to calculate the correct orientation of the avatar.

Positional audio

Using WebRTC to stream audio is so common that the sharedspace component, in collaboration with the avatars component, makes it very straightforward. Simply set the audio property to true:

<a-entity sharedspace="hold: true; audio: true" avatars>

The next time you load the experience, the browser will ask for permission to share your microphone.

If the participants grant permission, the positional audio for the A-Frame avatars will be automatically managed by the avatars component. Positional audio means the sound will be panned left or right according to the relative position of the listener (i.e., the camera). Wearing headphones or earbuds enhances this effect.

Sharing position

You may have noticed that the avatar representing the user has a special treatment. Because its avatar ‘carries’ the camera, when you look around your orientation is shared by the other participants. By default, avatars will add some specific components to the user’s avatar.

You can control which components should be applied to the user’s avatar using A-Frame mixins. Mixins are component containers, and entities can set the mixin attribute to a list of mixin ids to inherit their components.

Add an a-assets tag just after the a-scene tag with a mixin inside and set its id to users:

<a-assets> <a-mixin id="user" visible="false" look-controls wasd-controls share="position, rotation"></a-mixin> </a-assets>

The share component (also available after registering sharedspace) indicates which components should be kept in sync among other peers.

By setting the property onmyself of sharedspace to the id of the mixin, you’re instructing avatars to add that mixin to the user’s avatar.

<a-entity sharedspace="hold: true; audio: true" avatars="onmyself: user"> Sending and receiving messages

The sharedspace component allows the user to send messages to other peers. You’ll use this feature to force a change into the preset environment when pressing the spacebar.

Locate the line where you added the listener to the avataradded event and insert the following code for managing the environment presets:

var presets = [ 'contact', 'egypt', 'checkerboard', 'forest', 'goaland', 'yavapai', 'goldmine', 'threetowers', 'poison', 'arches', 'tron', 'japan', 'dream', 'volcano', 'starry', 'osiris' ]; var environment = document.querySelector('[environment]'); function setEnvironment(preset) { environment.setAttribute('environment', { preset: preset }); } function getNextPreset() { var currentPreset = environment.getAttribute('environment').preset; var index = presets.indexOf(currentPreset); return presets[(index + 1) % presets.length]; } // Here comes the code to send and receive message….

Finally, replace the comment with the code for receiving and sending messages:

window.addEventListener('keydown', function (evt) { if (evt.keyCode === 32 /* spacebar */) { var preset = getNextPreset(); setEnvironment(preset); room.components.sharedspace.send('*', { type: 'environment', preset: preset }); } }); room.addEventListener('participantmessage', function (evt) { if (evt.detail.message.type === 'environment') { var preset = evt.detail.message.preset; setEnvironment(preset); } }); What’s next?

This article shows how to evolve a minimal shared space setup into an appealing multi-user outdoor experience. But this is just the beginning. If you want to continue improving the demo, here are some things you can try:

The component repository includes an extensive explanation of the components API and a template VR Chat project on Glitch, including a source guide to get you familiarized with the components quickly.

Looking for more ideas? Here is another multi-user application powered by sharedspace in the Unbirthday Room.


Multi-user applications are not limited to chats: other participatory experiences fit the sharedspace model. Even if the proposed participation model is limited, other components can build on top of it to enable new interactions.

Now it is your turn to build a multi-user experience: install A-Frame and sharespace, hack, capture a demo, and let us all know about it by mentioning @aframevr on Twitter. Join the active Slack channel and tell us about your collaborative experience.

Categorieën: Mozilla-nl planet

Support.Mozilla.Org: “Marcia, I have found a bug” or “Tales from SF All Hands”

Mozilla planet - mo, 02/10/2017 - 18:40

Hello, SUMO Nation!

This is going to be a long (and thrilling to read!) post with a great report from Paul/Seburo, so instead of boring you with an overlong introduction… Enjoy!

[Reposted with permission from here]

“’Twas the day before All Hands, and all through the house
nothing was stirring, not even a mouse.

But from across the globe, Mozillians were travelling with care,
for soon in San Francisco they would be there.

They come from near and travelled from far,
they came by train, most by air, maybe one or two by car.

Planning to work and collaborate and meet,
(I hope everyone manages to get some sleep).

They will have no time to stand and stare,
for when they return home to continue their work on the open web
(having got some rest in the tucked up in their own comfy beds),
they will be able to say to all that care:

San Francisco All Hands 2017 – I was there.”

It has been a while since that amazing week in San Francisco, but it is only now that I have decided to put fingers to keyboard and tell the tale of All Hands. Partly this has been because of the work that I have been doing off the back of All Hands and partly because it has taken a long (and slightly emotional) while to get my head round what we did. I guess the best place to start is vaguely near the beginning…

The thing is that I try to live a simple life whilst at the same time trying to do things that make the world a better place. When it comes to Mozilla, I feel very fortunate to have done what I have and to work on an amazing team with awesome people, as well as get to use great software. And I have been fortunate to attend two (hopefully three) Mozilla Festivals and All Hands in Orlando and in London.

The Orlando All Hands was a bit nuts. I had never done anything like that before and I was exposed to a world that was so much bigger and more vibrant than I could have imagined. I spent a week working with people that are just like I had seen on Air Mozilla on subjects that I could never have imagined discussing with anyone…ever. Further to this I was invited to London at which I replaced the travel with working hard…almost too hard. Frustrated at hearing that some fellow contributors regarded an invite to All Hands as a tourist thing, I worked hard to prove that we are there to work…and returned home to a nightmare world of stress and burnout. It was a great week, but I worked too hard and damaged myself.

So the email that arrived on “Good Friday” 2017 was a genuine shock. Mozilla was inviting me to attend All Hands in San Francisco. I had never travelled so far, been in a plane for so long, to work for a cause and team that I care so much about at such a key point in Mozilla’s ongoing history. I would not be going as a new contributor, or as a local, but as someone that kind of knows their way around Mozilla a little. A big and amazing opportunity not to be wasted.

With there being a number of us contributors having been invited by the SUMO team, the awesome staff that we have opened a document for us to start pencilling in the things we would want to try and cover over the course of the week…which is a really short space of time when you put Monday to one side for “arrival day” and give space for mandatory and staff only sessions with the wider Marketing function. That said, we not only managed to fill the schedule, but also had two lunch meetings booked.

At the same as this was coming together, there was rumours of a ban on laptops in the cabin of flights from the UK, which led me to be a news junkie – trying to follow the story and the developments and meetings that were taking place. Having bought a laptop that is a bit more travel friendly and loaded it with TeaLinuxOS (a GNU/Linux distro built by group that includes a few Mozillians), I was very keen to take it with me for the work that I planned to do…but had no intention of it going in the hold. No padding would protect it from the greatest ever threat to mobile computing – baggage handling! (Luckily the ban did not come to pass.)

Meanwhile, things were building up to All Hands. The focus of the week was clear in the moving of the Monday/Friday plenary sessions to a series of Town Halls broadcast on Air Mozilla. Some of them are really good and they set the tone for the week if not by their content than by their existence. This was reinforced by the removal of the optional “drop in” style sessions from the planning for the week – everything was going to be done to maximise the together time in San Francisco in the build up to Firefox 57.

The months turned into weeks and finally into days. The bags were packed, the limerick that opened this post was put on Telegram, my laptop was loaded with everything I would need. As the taxi drove me to London Heathrow I knew I was on my way to an adventure. I had done everything I could to make sure I was prepared to get the most out of the week and now I was off to the home of Mozilla and a city that I had heard so much about.

On getting to Heathrow (and checking in) I had a pint of very nice beer (Fuller’s Summer Ale) at 0800 in the morning before boarding my direct flight to San Francisco. 11 hours is a long time to spend at 35000 feet and the in-flight entertainment was not up to much, but they did show the film Invisible Figures…which I recommend that everyone reading this watches (I am not going to spoil the film but there is a moment in that film where Kevin Costner’s character does something really cool). Given that Mozillians do some our best work out of hours, the cabin crews intention that the lights go out and people sleep failed given it was the perfect opportunity to catch up for long conversations with a couple of fellow contributors on the flight. I was also able to give the Linux using passenger next to me some help in loading his Amazon Kindle with Fennec. Yup, even at 35000 feet, I was helping users.

On landing (having flown over “Silicon Valley”), passing through security and getting my bag (did anyone else notice the screen at reclaim that had gone BSOD?) I joined a number of Mozillians for the coach to the hotel. Putting aside that we were travelling on an elevated freeway (earthquake zone anyone…?) it was very cool to think that we were following so many others that had come this same route over the years.

On checking in, and dropping my case in my room, I headed out on the mean streets of San Franciso to get a coffee and a small bite to eat with a fellow Brit before taking in the “meet and greet” at the hotel and welcome reception. There really is not much like it, Mozillians who have travelled for so long and far meeting up. It is like a massive family gathering with over a thousand people that you do not really know but are so glad to see again. A few of us decided to go for a tour outside…but by about 2200 I “hit the wall” and was exhausted. I headed by to my room and collapsed.

I would like to say that I slept well but as comfy and quiet as the room was, my mind was already focussed on the next day. I was awake early and as soon as was sensible, I was up and out heading down to breakfast before the contributor briefing session at 0815. Breakfasts at All Hands (or any Mozilla event) are special. Even if you are not talking to people and just prefer a little quiet time, you will see plenty of faces that you will recognise from across the organisation. There is something special about sharing a meal with people, even if it is a quick “grab and go” before the first meeting of the day.

For us contributors, that first meeting was the briefing session. With contributors having come from so many teams it was good to get us together briefly to have a few reminders posted, to have a group photo and to have a recap of the Community Participation Guidelines. I am sure that some people may find the CPG boring and a bit silly, but it is vital to us all being able to work together. I am sure that if you looked over what I normally do, you would not think I am too interested in that kind of HR-fluffy-people-stuff but diversity but I think that the CPG is important and is so easy to understand. If you are unsure, here are two reminders:

  1. Be diverse.
  2. Be awesome to one another.


And so, with the initial formalities out of the way, we headed out into conference and meeting rooms across the two hotels to make the web great again. The first SUMO meeting was not a dull one, with the news that the migration from Kitsune was not going ahead (read the full story here). Not much I can add to the news apart from to say there was a profound sense of a burden having been lifted from the shoulders of the staff present (and who dialled in). There are no “winners” or “losers” in such a big decision, but as someone that had been very conscious of the impact it was having on the health and well-being of staff on the team, it was a happy moment.

Having expected to be spending the week dealing partly with migration related work, the shackles were removed and we could focus on our core goal of helping users. Over the course of the week we looked into how we can support the SUMO community, what we need to do to support Kitsune and some planning around the 57 release. We discussed the Internet awareness work stream and how we might be able to use video to help users. On top of this we gained a better understanding of Mitchell’s Worldview and the goals for Marketing.

During some “staff only time”, I led a small raiding party over to the other hotel to meet Sebastian on the mobile team. Although I have been a Firefox user for many years, it was as user of Fennec that led to me being a contributor and I have a fondness for the product. Having felt a little disconnected from the team further to some headcount changes it good to use the opportunity to discuss a few issues and user requested features.

(True story – After having returned from a night out after that meeting, I came back to my room and was checking my email and found an email from Sebastian advising that bookmark management had been turned on in Nightly. That was a very cool it-happened-at-All-Hands moment.)

Whilst we are all different people with different backgrounds, the SUMO volunteers made good use of staff time to chat about our own SUMO worlds. The Sun never sets on the work that we do, but working as we do in semi-isolation, we all have similar and different experiences shaped by the work that we are involved in and the countries in which we are based. It was great to share and laugh and help and consider the different ways in which we work and help people.

An example of this is the side session that (a fellow SUMO contributor) philipp ran on crash interpretation. A useful skill that will help us to help users. Understanding crash reports is not always quick or easy, but when you get it right, you look like a magical wizard genius. (Even if you have not met philipp, you have probably used or seen some of his work.)

Another example is the presentation given by @Jhonatas and @cynthiapereira on the amazing work they have been doing in the Brasil community to increase user and community engagement in Mozilla and Firefox through social media. The work that they are doing is really good and I believe could be adapted to be used in other locales.

I also had the opportunity to meet some great staff. You may not know or have heard of willkg, but he was one of the people that built Standups and also the soloist IRC channel, both of which can connect those that feel a bit isolated with a crowd of like-minded Mozillians. These services helped me greatly to avoid burnout and isolation last and I cannot commend his work enough. My soloist sticker will be displayed with pride.

I also met kbrosnan, a staff member, but also a key contributor to the Firefox for Android support forum. There is no competition between us and I hope that we will have the opportunity to trade more war stories in the future.

Even before I made it to the welcome session, I had a stand up chat with Asa, a man whose enthusiasm and love for the work that the organisation does has no end. I extremely fortunate to catch up with Asa a couple of time during the week on a number of matters and it was a privilege every time.

Whilst I am in a people thanking mode I guess I should mention my room-mate Andre. Whilst I had hoped that I would share a room with a fellow SUMO contributor, having a room-mate from a different team was actually very cool. We came from different countries and work on different parts of Mozilla, but we got on well. Possibly helped by the fact that we are Linux users of a Ubuntu persuasion, we were able to find a middle ground and talk as Mozillians do about a range of subjects. I learnt a little about the SpiderMonkey team and I hope he learnt about SUMO.

As a team, SUMO met with the entire Sync/FXA team for lunch and a casual opportunity to share thoughts and ask questions as Sync is complicated product and possibility one of the most challenging things we support. We also met with Emma, Mozilla’s resident “Bugmaster” to learn more about how to file good bugs. Having felt a little down that I had had a few bugs marked as duplicates, I learned that this is a good thing and that a duplicate actually highlights that an issue effects more people.

I also took the opportunity to catch up with bwinton further to conversation on IRC as part of the work SUMO has been doing in readiness for Firefox 57. He showed me some of the mock-ups for the photon interface and the on-boarding process (both of which are more or less complete in Nightly).

On the subject of Nightly, Activate Nightly went live during All Hands. This was the culmination of many months work from a cross jurisdiction team of people including SUMO (me!), Reps and staff and it was great to see it made available for people to use. Whilst it was overtaken a little by a couple of branding changes, I hope that it can serve as a template for Activate campaigns in the future.

Further to what I mentioned earlier about it not being a holiday, I will admit that we did have a number of enjoyable evenings out. The first of which was at the Walt Disney Family museum that had been booked by the Marketing function. Which I decided to walk to. On paper the route was not that far, and it would allow me to see some of the real San Francisco in person instead of being in a car or a bus. But part of the “real San Francisco” is the hills which were just like the film “Bullitt”. You turn a corner and you see the road rise up at a steep angle in front of you and when you are the top, you look down baffled at how anyone could think that this is good place to put a road. It is like the city planners sough as their inspiration a sine wave. (I also managed to see the Yoda fountain outside the Lucasfilm building, which as a Star Wars fan was pretty awesome to find.)

The team kind of forgot about me and left me behind the next night when we went to a rooftop bar. But some quick research gave me a route through the “Tenderloin” area to the “Mission District” that I was able to walk. Whilst it was not necessarily going to feature on any tourist routes and despite what others may have said/warned to the contrary, I felt perfectly safe walking there (far more interesting neighbourhoods in London…). It was great to go to a local bar full of local people and see a bit more of the real San Francisco.

After some of these trips out, I also managed to have an ice cream sundae at the Ghirardelli ice cream parlour and see SF Office and the Mozilla Monument after hours, visit the bar on the 40th floor of the hotel and dip a foot in the Pacific Ocean. (I should clarify that all these trips took place after the working day was finished and were a great source of team bonding.)

Friday at All Hands is an odd day. By this point in the week you have got into a great working routine, but at the same time you know that all good things will come to an end. Not long after lunch the final meetings are taking place which for SUMO was a stand up meeting with the Pocket support team. They are great people and I hope we can share ideas and thoughts about how do to things in the future. I must admit that further to the Town Hall prior to All Hands and meeting some Pocketeers during, I have become a fan of the service. Yes I know that some people may have felt slightly aggrieved by its mandatory inclusion in Firefox, but it really is very clever and useful and I recommend that people give it a second chance.

Part of the reason for the earlier finish on the Friday is to give people an opportunity to get ready for the Friday night party which was being held at the California Academy of Sciences. Looking a little like the main building from “Jurassic Park” (there was even a T-Rex skeleton in the main entrance!) in had enough room for an aquarium, swamp, projection theatre and room for the full complement of All Hands attendees. I really enjoyed the rainforest section, walking up and into the different layers that make up the habitat. I have never seen butterflies so big that they glided between trees before. For the more code related of you, there was also a Gecko and I managed to point out a “bug” to Marcia (hence the title of this blog entry).

The next day, having breakfasted and checked out of my room, I joined a small band of SUMO contributors, who (led by our fearless leader guigs) were taken on a tour of the north coast of the city. Having spent so much time in a largely grey part of the city, to see so much vibrant colour was quite something, both at the Saturday market at the Ferry Building and at Pier 39. We saw Alcatraz from the shore and (after a nice walk in the sun) we got a great view of the Golden Gate Bridge before heading back to the city proper for an early evening meal.

I was genuinely very sad to be leaving San Francisco (slightly sunburnt) for home. After an internal flight to Newark (next to someone that did not really appreciate delimited personal space), I boarded a flight to Heathrow where I finally got some seat back entertainment. I would like to apologise to the person who had to sit next to me watching the second Jack Reacher movie, Deadpool and xXx, but they were a vital part of my decompression from All Hands. I had been somewhere that was so Mozilla and was about to be somewhere that was so “home”, I kind of needed something that was neither.

Arriving home after such a trip does bring with it a certain amount of misery, not only at the amount of laundry work you have to do to get your wardrobe back in order, but also in awareness that you have been and done stuff that the people walking past you in the street will struggle to grasp. At this time it was great to be able to focus on the tasks that I had brought back with me to do. All Hands may seem like a week, but it is really a trigger to make use of what you have learned to be able to do more on your return. After MozLondon I had some very valid feedback that I could have been more open with what I had been working on, and I hope this has not been the case this time. A more or less complete list of what I have done has been included as an update to my profile on and is included below:

  • Write and publish a SUMO KB article on Screenshot
  • Update Fennec mobile bookmarks common response
  • Write article for Discourse to encourage Mozillian to test bookmark management in Fennec Nightly
  • Write to the guy I sat next to on the plane with the updated Fennec Kindle article
  • Help a Pocketeer to use Mozilla IRC
  • Follow up with a Mozilla staff member about submitting a session for MozFest
  • Write to the NHSbuntu team about MozFest.
  • Write to fellow SUMO contributor to help them get back into coding.
  • Update Discourse town hall posts.
  • Write to a member of staff to explain what SUMO and what we do.
  • Write to the Sync team to better understand how the mobile bookmarks folder will work under Fx 57
  • Send pictures to SUMO people of SUMO people.
  • Catch up with Asa about a few different things
  • Write to a SUMO contributor about about volunteering at MozFest
  • Further to Activate Nightly, draft an idea for a new Activate campaign
  • Think about setting up a UK Community on Standups
  • Send a photo of a Tb sticker sheetlet for bwinton’s awesome Moz sticker image account.
  • Forward round to a few people a great tech diversity article.
  • Write some feedback for a Pocketeer about Pocket Beta.
  • Try to get some of the All Hands videos declassfied for the wider community.

….as well as continuing to test three Mozilla apps (recently increased to four…), working on helping SUMO get ready for Firefox 57 and continuing to help users on the SUMO Support Forum.

I am sure that some of those things could be seen as a little frivolous, but I consider them the whimsical aspect of being a Mozillian. I do not write any of this to brag or show off. Compared to many of the people reading this article I feel that I play a very small part in the wider community. I am not one of the amazing contributors who write code and fix bugs in Mozilla software. I am not a Rep and do not run sessions to help users all over the world make good use of the abilities that the web has given us. I cannot speak a second language and am not able to use that skill to help people all over the world embrace the open web. I truly am (to paraphrase a quote from Star Wars) a simple Mozillian just trying to make his way in the world.

I guess that this could be the formal end of my work from San Francisco, but I sincerely hope that is not really ever going to be the case. Sure, I have just about finished my “to do” list and am now hoping to focus on Firefox 57, MozFest, and maybe one or two smaller things, but I also know that I am not the person (or Mozillian!) who went. My view of Mozilla and its place in the world is bigger as I have seen what we have done, but also what we can all do together and I want to be involved in making this happen. Even if you were not in San Francisco, I hope that you will be able to get involved in some of the projects that will be able to trace their lineage back to All Hands as I am sure that your contribution (as it is already, whoever you are and whatever you do) is currently valued.

Before I close off with a limerick composed and published at All Hands, I would like to ask you to do two things. Firstly, if you have read what I have been involved in and would like to get involved in some of it, drop me a note (please include a link to your profile on No guarantees I will be able to help, but I would like the opportunity to try.

Secondly, it really would be the greatest privilege to help another Mozillian who is invited to such an event (or any other big Mozilla event that may take place) get the most from their time. To travel so far and be among so many great people is mind blowing and I would like the opportunity to help someone make as good use of it as I have tried. It was hard work but I was very fortunate to have such a humbling experience.

Thank you.

“And now, the end is near,
And so we face our final meetings.
My friend, I’ll say it clear,
I’ll state my case, of which I’m certain.
We’ve lived a week that’s full,
(and we all have installed Mozilla Nightly).
But more, much more than this,
We did it the Mozillian way.”

Categorieën: Mozilla-nl planet