Mozilla Nederland LogoDe Nederlandse

Abonneren op feed Mozilla planet
Planet Mozilla -
Bijgewerkt: 4 maanden 1 dag geleden

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

di, 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

di, 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

di, 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

di, 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

di, 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

di, 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

di, 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

di, 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

ma, 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

ma, 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

ma, 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

ma, 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”

ma, 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

Mozilla GFX: WebRender newsletter #6

ma, 02/10/2017 - 18:30

Hi there, the 6th newsletter has arrived. Without further ado:

Notable WebRender changes
  • Glenn fixed rounded clips on rotated rectangles.
  • Glenn reduced the GPU allocations for intermediate render targets.
  • Glenn added color emoji support on mac.
  • Glenn fixed some of the filters to work with pre-multiplied alpha.
Notable Gecko changes
  • Kats, Ethan, Morris and Peter made Layers-free the default now.
  • Continuous repainting has been solved. This previously caused WebRender to get into a mode where it was always repainting which would ruin battery life.
  • Kats enabled rendering background-image with WebRender by default.
  • Michael converted nsDisplaySolidColorRegion to WebRender display items.
  • Nical improved the allocation of video frames (improves memory usage and reduce the CPU time spent re-building scenes in WebRender).
  • Morris landed support for the backface-visibilty property.

Categorieën: Mozilla-nl planet

Firefox Test Pilot: Kicking the tires on A/B testing

ma, 02/10/2017 - 17:53

We just concluded our first A/B test on Firefox Send and we’d like to share our results. This being our first test we wanted to start with something super simple just to get comfortable with the tools and reporting. To be totally honest the change we ended up making was so minor, in my mind, that I didn’t expect to learn anything interesting and fully expected both the control group and experiment group to show nearly identical behavior. Annoyingly, I did end up learning a few things.

The Experiment

We wanted to see if we could increase our upload rate with a tweak to the UI. Here’s what the original, control group, page looks like…

We made a slight change to two styles on the main page. We increased the thickness of the dotted line border around the file drop area and made the file selection button slightly bigger with bolder text. The hypothesis was that the increased “beefiness” of these elements would make it easier for folks to notice what to do next, thereby increasing the rate they successfully upload a file versus just leaving the page. Here’s the experiment UI…

We use Google Analytics (GA) to run our experiments and to collect anonymous usage statistics to help guide us in improving the service so I want to take a moment to explain how we try to use it respectfully. We keep a list of all the types of events and data we gather, limiting what we collect to things directly helpful to improving the service. If you’re opposed to sharing this data with us the easiest way to opt-out is to use Send in Private Browsing Mode. We also respect the Do Not Track (DNT) browser setting. Consequently, doing so will also exclude you from experiments like this one. We care about making our products better but we also care about your privacy.

We launched this experiment on September 13th, but due to a configuration snafu on my part we didn’t start getting good data until the 14th. This was one of the minor annoyances with setting up, and getting used to, GA’s version of A/B experiments. It takes about a day to see any new data so it took a day to notice the mistake and correct it. Once the experiment was running smoothly the rest was mostly just a waiting game to see how each variant performed.

The Results

Early results showed the Beefy variant outperforming the control by a fairly significant margin but by the end they were performing pretty close to the same in terms of visit to upload conversion rate. The lesson here is to not declare a winner too soon.

Overall the Beefy UI had a conversion rate of 37.47% compared to the original at 36.18%, a 3.58% increase. Not mind-blowing but respectable.

In addition we used Data Studio to analyze some other behavior. The most interesting to me was the method of upload, being either drag & drop or a click on the button.

In the first few days of the experiment Beefy had a 14% increase in drag & drop compared to the control. Over time, as with the upload conversion rate, it started to even out, but it maintained about a 4% increase at the end. From a conversion standpoint it doesn’t matter how users are choosing to upload, but it is interesting that the change in the border thickness that I thought was barely noticeable even side-by-side, actually had a measurable effect. Small changes can make a difference.


Since Beefy performed slightly better we’ll be using it as the default UI in our next release. We learned a bit about our tools, our workflow, and our users. We plan on doing some more, and more exciting, experiments in the near future and are excited to see what we learn and to share our progress with y’all.

Kicking the tires on A/B testing was originally published in Firefox Test Pilot on Medium, where people are continuing the conversation by highlighting and responding to this story.

Categorieën: Mozilla-nl planet

Asa Dotzler: Some of the Press Coverage of Firefox 57 Beta (Quantum)

ma, 02/10/2017 - 01:46

Firefox takes a Quantum leap forward with new developer edition  by Peter Bright at Ars Technica

Firefox 57 beta arrives with major visual overhaul and next-generation browser engine by Emil Protalinski at VentureBeat

Mozilla release Firefox 57 beta (Quantum): It’s 2x faster than Firefox 52 by Brad Linder at Liliputing

Mozilla’s Firefox Quantum browser is ridiculously fast by Matthew Hughes at TNW

Mozilla announces Firefox Quantum, the next major update with new UI and huge performance improvements by Pradeep at MSPoweruser

Mozilla Gives Firefox a ‘Quantum’ Speed Boost by Angela Moscaritolo at PCMag

Firefox Quantum challenges Chrome in browser speed by Stephen Shankland at CNET

New Firefox Beta Released With New User Interface, New Core Engine by Catalin Cimpanu at BleepingComputer

Firefox Announces New ‘Quantum’ Browser With 2X Faster Speeds, Coming November 14 by Mitchel Broussard at MacRumors

Firefox Quantum Next Generation Web Browser Launches November 14, Beta Out Now by Marius Nestor at Softpedia News

Mozilla Firefox 57 rebranded as Firefox Quantum by Paul Hill at

Download the super-speedy Firefox Quantum beta today by Cat Ellis at TechRadar

Firefox 57 Hits Beta, is Renamed to Firefox Quantum by Paul Thurrott at

Mozilla’s Firefox Quantum next-generation browser is ready for you to try out by Mark Hachman at PCWorld

‘Project Quantum’ Doubles Firefox’s Performance In Latest Beta by Lucian Armasu at Tom’s Hardware

Mozilla is Making a New Firefox That’s Twice as Fast by Lee Mathews at Forbes

Mozilla whips out Rusty new Firefox Quantum (and that’s a good thing) by Shaun Nichols at The Register

Firefox Quantum is the latest browser to challenge Google Chrome  by Jacob Siegal at BGR

Firefox Quantum beta promises to double your browser speeds by Rachel England at Engadget

Mozilla: Firefox 57 is so fast we’re calling it Firefox Quantum by Liam Tung at ZDNet

Mozilla Accelerates Firefox 57 with Quantum Speed Boost by Sean Michael Kerner at eWeek

Mozilla previews its faster ‘Firefox Quantum’ browser by Gregg Keizer at Computerworld

Loyal to Google Chrome? Firefox Quantum might change that. by Monica Chin at Mashable

You Can Now Try the New Firefox Quantum Beta by Dave Parrack at MakeUseOf

Faster and even more minimalist, Firefox Quantum makes Chrome look old by Jayce Wagner at Digital Trends

It’s time to give Firefox another chance by Frederic Lardinois at TechCrunch

Categorieën: Mozilla-nl planet

Asa Dotzler: Some Nice Things People Said About Firefox 57 Beta (Quantum)

ma, 02/10/2017 - 00:48

“Super impressed by @firefox quantum. I’ve been using it for a few days now and I’m switching permanently. Noticeably faster than Chrome.” Erik Reppel

“Firefox Quantum is blazing fast! Good job, Mozilla!” Oleksandr Shpak

“Using the new Firefox beta. it is much faster then the old one. It is as fast as Chrome. maybe faster. #fb” alex

“Firefox Quantum… really is an amazing overhaul of Firefox. It is hella fast.” rrees

“Trying out Firefox 57 beta – Quantum, And its been great so far. Far better than Chrome in speed, and hardly any bugs. Thanks @mozilla” Abhishek

“Wow, very impressed by @firefox ‘s beta version speed increase. I literally just ditched Chrome just now.” Florian Monfort

“I’m not sure what @mozilla did, but Firefox Quantum is fantastic. Easily made me switch back to Firefox :-o” Chris King

“The new Firefox Quantum (57 beta) is really nice, good job @mozilla. I think I might like it better than Chrome first time in a decade.” Axel Gneiting

“@mozilla i am using the latest firefox developer version quantum and has to say its just awesome very smooth in performance. HATS OFF TO U” Manhar sodhi

“I mostly moved from Firefox to Chrome about a year ago, but I’ve desperately waiting for FF Quantum to get back in… And it’s awesome!” Davide Borsatto

“Delightful experience with FF Nightly 57. Quantum + photon is love. Welcome back Firefox, you’ve been gone for too long.” Ahmad Albakri Zabri

“Anyone here using firefox quantum? It’s like a breath of fresh air, and so quick. It completely blows chrome out of the water on speed.” Jayesh M

“Been using @firefox beta on my laptop for days now! It’s one of the best browser experience ever!” Zan Cerne

“Holy shit, Firefox 57 is so much faster. Can’t wait for it to come out of beta.” Will Johansson

“After trying @firefox beta, I don’t want to go back to stable.” Saša Stamenkovic

“Just downloaded the Firefox Quantum Beta and it’s faaast. Beating the pants off Chrome right now” Tony Haile

“I know I’ve spent only one day with it so far, but the Firefox beta is quick and easy on the eyes. Might switch back to Firefox full-time” Daniel D. Beck

“So the #Firefox #quantum beta is absolutely phenomenal. I’m super excited for the full release so I can finally switch back from chrome.” David Burns

“holy shit, @firefox beta is killing me, it’s so much smoother than Chrome at almost everything” ghastly geist

“Been using the new @Firefox Quantum all day at work. Got home and tried to use Chrome, wayyyy too slow. Time to download Quantum!” Rich Burton

“Pleased with the speed and customization options in @firefox 57 beta. Got everything I want to see on screen in the tab bar and address bar.” Derrick Rossignol

“Been testing @Firefox Quantum these past few days. Cannot believe how damn fast it load web pages. Very exciting! Hopefully Chrome follows!” Jeremy Krantz


Categorieën: Mozilla-nl planet

Mozilla Open Innovation Team: Ready to Launch! Building an Open Source Student Network in the US

vr, 29/09/2017 - 17:37

In Spring 2017 Mozilla’s Open Innovation team conducted research to better understand the current state of open source on US Campuses. Through that study we discovered a high level of interest around open source but also a knowledge gap and a pressing need for well-supported, networked, informal structures that could help bring people to the open source movement that was already blossoming on campuses in the US.

Based on that research we began developing an idea that would become the Open Source Student Network. A pilot program to create and support a network of clubs on university campuses to learn about, create and contributing to open source.

In parallel to developing a website as a platform for facilitating updates, interactions and knowledge sharing, we initiated a process to structurally support club leaders. This included identifying dedicated students who were passionate about open source and excited to develop their own clubs as part of a larger network.

To find our student leaders, we worked with the Professor’s Open Source Software Experience (POSSE) to ask professors from across the country to nominated students who they thought had the leadership capabilities, passion and entrepreneurial attitude to guide and shape the launch of an open source program. After reviewing dozens of applications we identified 20 students from 7 different countries, at schools in 10 different states. 50% identified as female.

<figcaption>Students & Mentors at the first Open Source Student Leader Weekend at Drexel University</figcaption>

Learning from Mentors

On August 10th, after weeks of virtual trainings, meetings, and independent work, Mozilla’s first ever Open Source Student Leader cohort came together at Drexel University campus in Philadelphia to meet their fellow leaders face to face and to further develop the skills they’d need to bring the Open Source Student Network to their campuses in the fall. Throughout the weekend in Philadelphia, the students had the opportunity to learn from six mentors, each experts in their respective fields.

<figcaption>Katrina Owen from GitHub shares her tips for maintaining welcoming open source projects</figcaption>

These mentors ran workshops and gave talks on a series of topics designed to empower and inspire. Highlights included Don Marti, Open Innovation Experimenter at Mozilla, who had participants laughing and thinking in his presentation Why Open Source Matters that delivered an “off message”, thought provoking history of the open source movement(s) and the factors that threatened its past and its future.

As well, Emma Irwin, who leads Diversity & Inclusion for Participation at Mozilla, held a workshop on Overcoming Imposter Syndrome which guided participants through a deep examination of their own privilege and opportunities, while delivering practical advice for fostering diverse, safe spaces within a club environment.

“Each of the workshops was incredibly insightful, and in addition to the practical knowledge I gained, it was a breath of fresh air to be able to connect with other likeminded students in a safe and open environment.” — Jeffrey Qiu, UCLA

Meet The Leaders

As the school year kicks off each of these student leaders are now starting or advancing clubs on their campuses. You can learn more about the clubs and follow along with their progress on the open source student network website.

Joining the Network

If you’re a US university student with an open source or technical club who is interested in becoming a part of this network, you can register your club on the website:

Ready to Launch! Building an Open Source Student Network in the US was originally published in Mozilla Open Innovation on Medium, where people are continuing the conversation by highlighting and responding to this story.

Categorieën: Mozilla-nl planet

Chris H-C: Data Science is Hard: Dangerous Data

vr, 29/09/2017 - 15:36

I sit next to a developer at my coworking location (I’m one of the many Mozilla staff who work remotely) who recently installed the new Firefox Quantum Beta on his home and work machines. I showed him what I was working on at the time (that graph below showing how nicely our Nightly population has increased in the past six months), and we talked about how we count users.

Screenshot-2017-9-28 Desktop Nightly DAU MAU for the Last Six Months by Version

=> “But of course we’ll be counting you twice, since you started a fresh profile on each Beta you installed. Actually four times, since you used Nightly to download and install those builds.” This, among other reasons, is why counting users is hard.

<= “Well, you just have to link it to my Firefox Account and then I’ll only count as one.” He figured it’d be a quick join and then we’d have better numbers for some users.

=> “Are you nuts?! We don’t link your Firefox Account to Telemetry! Imagine what an attacker could do with that!”

In a world with adversarial trackers, advertising trackers, and ever more additional trackers, it was novel to this pseudo-coworker of mine that Mozilla would specifically not integrate its systems.

Wouldn’t it be helpful to ourselves and our partners to know more about our users? About their Firefox Accounts? About their browsing history…

Mozilla doesn’t play that game. And our mission, our policies, and our practices help keep us from accidentally providing “value” of this kind for anyone else.

We know the size of users’ history databases, but not what’s in them.

We know you’re the same user when you close and reopen Firefox, but not who you are.

We know whether users have a Firefox Account, but not which ones they are.

We know how many bookmarks users have, but not what they’re for.

We know how many tabs users have open, but not why. (And for those users reporting over 1000 tabs: WHY?!)

And even this much we only know when you let us:


Why? Why do we hamstring our revenue stream like this? Why do we compromise on the certainty that having complete information would provide? Why do we allow ourselves to wonder and move cautiously into the unknown when we could measure and react with surety?

Why do we make Data Science even harder by doing this?

Because we care about our users. We think about what a Bad Actor could do if they had access to the data we collect. Before we okay a new data collection we think of all the ways it could be abused: Can it identify the user? Does it link to another dataset? Might it reveal something sensitive?

Yes, we have confidence in our security, our defenses in depth, our privacy policies, and our motivations to work for users and their interests.

But we are also confident that others have motivations and processes and policies that don’t align with ours… and might be given either the authority or the opportunity to gain access in the future.

This is why Firefox Send doesn’t know your encryption key for the files you share with your friends. This is why Firefox Accounts only knows six things (two of them optional) about you, and why Firefox Sync cannot read the data it’s storing for you.

And this is why Telemetry doesn’t know your Firefox Account id.


Categorieën: Mozilla-nl planet

Firefox Test Pilot: Screenshots is Shipping in Firefox 56

vr, 29/09/2017 - 13:09

Let’s start with the big news: we just shipped Firefox Screenshots with Firefox 56. Screenshots began life as the Test Pilot experiment Page Shot, and this marks the first time an experiment from Test Pilot has graduated into Firefox.

This is a big deal for Firefox users and a big deal for the Test Pilot team who have worked on this project for the last eighteen months or more, but most of all this is a huge moment for all of our brave Test Pilot participants. Your feedback, usage and support have changed Firefox for millions and millions of people. We couldn’t be more proud or more grateful.

What was Page Shot?<figcaption>The page shot selection interface.</figcaption>

Page Shot was a smart screenshotting experiment. Screenshots are pretty much ubiquitous these days, and even though there are a lot of options in the market on desktop, we knew from user research that we had an opportunity to innovate. Page Shot brought a few differentiating features into the mix:

  1. Smart selection: Page Shot was built for the web and let users intelligently select individual elements on a web page for shooting. Want to capture a specific image? Just click it and Page Shot will do the rest.
  2. Smart search: We built Page Shot to not only capture screenshots, but to capture lots of metadata as well. Page Shot extracted text and other attributes from underlying pages (within the shot area) and stored it along with each screenshot. In practice, this meant that shots of text were fully searchable.
  3. Full page shooting: Page Shot could take shots of full websites (up to 5000px), and not just visible page content.
  4. Expiring shots: Page Shot let users save shots to the web, but these saves expired after two weeks. We let users modify expiration dates on shots if they liked so they disappeared more quickly or stuck around longer.
Why Ship in Firefox?

In terms of sheer user-adoption, Page Shot has been our most popular Test Pilot experiment to date. Over the duration of its active run in Test Pilot, Page Shot had nearly twice as many daily enrollees as any of our other experiments. The difference in adoption made us pay special attention to Page Shot from the start.

<figcaption>Page Shot had nearly double the daily active enrollees as the next experiment. Also interesting to note is how many of our participants disappear around the New Year holiday.</figcaption>

Just as importantly, we saw sustained usage throughout the life of the experiment. Test Pilot doesn’t put a ton of focus on marketing since we believe our audience is sizable and diverse enough to give us the kinds of feedback we need to judge success. We tend to look at retention (do people keep using an experiment) more than growth (are more people coming to an experiment over time) as a key metric, and Page Shot retained users extremely well. People took shots and continued taking them.

<figcaption>Given a stable user base, we saw strong overall retention for screenshots.</figcaption>

We learned that Page Shot had significant network effects beyond Firefox. Because shots were sharable, we saw lots of people viewing shots across lots of different contexts. While Page Shot was a desktop-only experiment, we saw lots of shot views on mobile devices.

<figcaption>Sessions other than those initiated by taking a shot by device over the last six months of the experiment.</figcaption>

Further, while Page Shot was only available on Firefox, we saw significant traffic from other browsers like Chrome, Internet Explorer and Safari. The graph below shows that while Firefox normally accounted for the majority of Page Shot sessions, there were specific instances where other browsers spiked dramatically. We hypothesize that these spikes occurred around specific screenshots that went viral.

<figcaption>Viral events led to big spikes in sessions on other browsers.</figcaption>

While we don’t have any direct evidence that Page Shot led to growth for the Firefox product, we nevertheless really like the idea that Page Shot gave people a way to express their use of Firefox in public through social sharing.

Ultimately, the decision to move Page Shot to Firefox was made because of the combination of all of the above factors. Positive signals around adoption, retention and network effects all played a part in the decision. We also just thought Page Shot was really cool.

How is Firefox Screenshots Different from Page Shot?

Since last spring, our team has focused on the (herculean) task of transforming Page Shot into Firefox Screenshots. There has been a massive amount of behind-the-scenes engineering work from the Test Pilot, Firefox and Add-ons teams to make this possible.* On the product side, instead of adding new features before launch, we stripped out features with a focus on simplifying user experience, improving user interface polish and ensuring Screenshots works across all locales.

So What’s Changed?<figcaption>First things first, we changed the icon.</figcaption>

The UI in Screenshots is significantly more polished than it was for Page Shot. We touched up colors, animations, transitions, layouts and icons across the application. We also added a beautiful landing page and a new onboarding flow to introduce users to the experience.

<figcaption>Crucial beziers!</figcaption>

Users in Test Pilot loved Page Shot’s smart selection tool, so we drastically improved the overall polish of that feature. We also added googly eyes.

<figcaption>The Screenshots selection interface.</figcaption>

At the same time, we decided to temporarily remove full page and visible shooting features from Screenshots. Not only were these features not performant enough to make the final cut, but we did not include the option to directly download full/visible page captures without uploading to the Page Shot servers. In order to respect the privacy of our users, we backed out these features while a new user experience could be evaluated. As the graph below shows, people were definitely using these features in Page Shot, but not as much as saving and downloading cropped shots.

<figcaption>The yellow and green lines represent full and visible page saves.</figcaption>

Additionally, we added a cloud icon next to the save button on the shot selection screen. Again, we did this in order to promote transparency about saving to the web and better signal that Screenshots is backed by a service.

<figcaption>The Save icon before and after</figcaption>

We also removed smart search from Screenshots. While we still like the feature, we wanted to take time to reason about the privacy implications of capturing page metadata. Page Shot showed us that our audience didn’t search much anyway, which made the decision easier. Compared to the more than a quarter-million shots taken in the last six months of the experiment, there were only 1100 total interactions with the search bar.

<figcaption>Nobody searched so we killed the feature for launch.</figcaption>What’s Next

While we’re launching Screenshots today in Firefox 56, our other area of focus for the last six months has been on Firefox Quantum. Quantum is a brand new Firefox coming this November that drastically improves the performance and style of the browser. As we’ve built Screenshots for the 56 release, we’ve also had to track and implement many interface changes so that we fit seamlessly into the next generation of Firefox.

When Quantum launches this November, you’ll notice that Screenshots fits beautifully into the new interface. Quantum’s design language is all about decluttering your browser, and Screenshots will take its place alongside bookmarks, Pocket saves, synced tabs and other things you collect and share while browsing with Firefox.

<figcaption>Don’t worry, you’ll be able to pin Screenshots to the search bar with a right click.</figcaption>

For Quantum, we’re also bringing back full and visible-page shooting. Thanks to great work by Neha Khanna over the summer, we have a far more flexible design than before. Instead of saving shots to the web by default, Screenshots will preview the shot and prompt users to save to the web or download directly. We’ve also resolved some performance issues by using JPEGs instead of PNGs for very large images.

Beyond Quantum, we’ll continue to add more features to Screenshots. On our latest development builds we have two more features under active development:

  • Accounts integration so that users can connect Screenshots to their Firefox Accounts and access them on all of their devices.
  • Annotation tools for doodling on, meme-ifying, and otherwise marking-up screenshots.

We’ve already started rolling out Screenshots to some users in Firefox 55, and we’ve seen downloaded shots edge past saves to the web. We’re eager to conduct further user research around the order and design of the download and save buttons and hope to add more options like saving images directly to clipboard.

<figcaption>Screenshots users in Firefox 55 split evenly between uploads and downloads, but recently downloads have pushed ahead.</figcaption>

As we officially launch Firefox Screenshots, we’ll continue to actively solicit feedback from our new users to figure how to keep improving. We chose to keep the Beta label on Firefox Screenshots to signify that this is the beginning of something and not the end.

We’re excited to get to work!

*The saga of the technical transformation from Page Shot to Firefox Screenshots is another really excellent story. We’ll tell that one here as well.

Screenshots is Shipping in Firefox 56 was originally published in Firefox Test Pilot on Medium, where people are continuing the conversation by highlighting and responding to this story.

Categorieën: Mozilla-nl planet