hacks.mozilla.orgIntroducing AWSBOX, the DiY PaaS for Node.JS – A Node.js holiday season, part 12

This is episode 12, out of a total 12, in the A Node.JS Holiday Season series from Mozilla’s Identity team. It’s the last part, and covers awsbox.

Once you’ve written a server in Node.js, how do you deploy it?
Instead of using a pre-existing “Platform as a Service” (PaaS) provider, the Identity team at Mozilla chose to build custom infrastructure atop Amazon EC2, and we’d like to tell you more about it.

Meet awsbox, a minimalist PaaS layer for Node.js applications that’s currently handling nearly two dozen of the non-critical services that we support.
Awsbox was designed to deliver simple, PaaS-style deployment without sacrificing the flexibility of custom infrastructure.

Using awsbox

In order to deploy a Node.JS project with awsbox, you must make some tiny changes to your application, provide your amazon credentials in the environment, and then you can deploy via the command line.

In terms of app changes, you must:

  1. Create an .awsbox.json file that specifies how to start the server.
  2. add awsbox as a dependency in your package.json
  3. ensure your server binds to the port specified in the PORT environment variable

To provide your amazon credentials, you must set AWS_ID and AWS_SECRET in your environment, two values which you can obtain through the amazon management console.

With the initial application configuration complete, you can npm install which will install awsbox, and you’re ready to create your first server:

$ node_modules/.bin/awsbox create -n MyFirstAWSBOX
reading .awsbox.json
attempting to set up VM "MyFirstAWSBOX"
   ... VM launched, waiting for startup (should take about 20s)
   ... Instance ready, setting human readable name in aws
   ... name set, waiting for ssh access and configuring
   ... public url will be: http://<IP ADDRESS>
   ... nope.  not yet.  retrying.
   ... victory!  server is accessible and configured
   ... applying system updates
   ... and your git remote is all set up
   ... configuring SSL behavior (enable)
 
Yay! You have your very own deployment. Here are the basics:
 
  1. deploy your code:  git push MyFirstAWSBOX HEAD:master
  2. visit your server on the web: http://<IP ADDRESS>
  3. ssh in with sudo: ssh ec2-user@<IP ADDRESS>
  4. ssh as the deployment user: ssh app@<IP ADDRESS>

The final step to deploy your application is to git push:

$ git push MyFirstAWSBOX HEAD:master

And now your Node.JS application is hosted and running on an EC2 instance. At this point, you’ve spent about twenty minutes with awsbox. You’ve made minimal changes to your application. You’ve deployed a new server and gotten your application up and running in EC2. Finally, you’ve got an easy way to push changes that fits within your existing workflow (you just git push to a remote).

Now that you have a feel for how you use awsbox and the basic features it provides, let’s take a step back and look at what it actually is and how it works.

awsbox is … A Minimalistic Contract

Any hosting environment has certain expectations of the application that it will be running, the contract. For awsbox this contract includes the following:

What process(es) should be run are specified by the app in .awsbox.json. At its simplest, the file may look like this:

{
  "processes": [ "path/to/myprocess.js" ]
}

What software must be installed is specified by the app in package.json.

Which port to contact the server is delivered to the app via the PORT environment variable.

In building awsbox, a main goal was minimal invention, to make it easy to “port” an existing application.

awsbox is … A Machine Image

During the process of creating an instance, awsbox creates a machine instance from an “Amazon Machine Image”, which results in a running server that’s ready to accept your node.js application, install its dependencies, and run it. The image is built from the Amazon Linux AMI which is a custom linux distribution provided by amazon, and has access to popular rpm-based package repositories via yum. The ID of awsbox AMI is referenced in the awsbox javascript library.

This image is pre-configured with multiple user accounts. ec2-user is an account that has sudo access to the machine. proxy is an account that hosts an HTTP reverse proxy that with a few steps can serve as an SSL terminator to let you support HTTPS without modifying your application. Finally, the app user is the account that hosts all of your application code, your server logs, the server based git repository that you push to, and the git post-commit hook responsible for installing dependencies and starting your server after you push.

awsbox is … Command Line Tools and Libraries

At the time you npm install awsbox, a collection of javascript libraries and a command line tool are installed locally. The command line tool gives you a much faster way to deploy servers than available through Amazon’s web console, and handles most of the complexity of creating an instance in EC2 that is ssh and web accessible.

The awsbox command line tool also provides many command line verbs to perform basic administration of your awsbox, which can be listed with node_modules/.bin/awsbox -h.

The most interesting verb is create, which actually creates a virtual machine.

awsbox is … A Pile Of Features and Hooks

Finally, any non-trivial server requires more than just a Node.JS service. To support the unknown awsbox allows you to specify yum packages that should be installed at instance creation time. For more custom configuration you have two options:

SSH in and do whatever you need to: The goal of awsbox is to let you move as fast as possible, and sometimes the most expedient way to get a new instance of a service up is to perform required steps manually and write a README. But a more repeatable solution is available…

Write scripts to automatically configure software for you: Awsbox has the notion of hooks, which occur at various stages of instance creation or deployment. Using these hooks, it’s possible to configure mysql, install redis manually, or do whatever you need to in order to get your service running.

Is awsbox for Me?

Having a single consistent mechanism of deploying non-critical services has been an incredible efficiency benefit for our team. Collaboration is easier when you have a simple and well defined contract between application and environment. Diagnosis of issues is faster when you have a consistent set of deployment conventions. Finally, moving from experiment to production environment is less costly when an application has all of its dependencies explicitly expressed.

If you are looking for a deployment solution for your own experimental Node.JS services, give the ideas and design of awsbox a careful look.

Previous articles in the series

This was part twelve in a series with a total of 12 posts about Node.js. The previous ones are:

Mozilla Web DevelopmentFirefox Marketplace: May 3rd – May 16th

This is a regular post focusing on the status of the Firefox Marketplace.

  • Total bugs open: 552
  • Total bugs opened: 298
  • Total bugs closed: 218

Some specific changes of note:

  • APIs added for payment status and users permissions (868030 and 868252)
  • API to allow the setup of payments for apps (869572)
  • Allow a submission flow that checks app permissions (858306)
  • Enable the German and Polish translations (868888 and 868594)
  • Signing in after logging out fixed (869664)
  • Submitting reviews multiple times fixed (871871)
  • Webfighter demo gained payments (858289)
  • Forced issuers for payments re-enabled (850085)
  • Payments hooked up for the mMrketplace (867729)
  • Senior Themes reviewer group created (868053)
  • Move from pyes to pyelasticsearch (857156)
  • Scroll positions preserved between tabs in the marketplace (868249)
  • Stop Marketplace reverting to US after a phone reboot (865132)

The new Marketplace consumer user interface was pushed. The Marketplace is now a packaged app that uses the REST API to populate the app. This was a huge change and makes the site faster and more awesome. To checkout the packaged app see the Fireplace app on github.

The Marketplace was also moved out of Aurora status.

hacks.mozilla.orgFirefox Developer Tool Features for Firefox 23

Another uplift has left the building and it’s time to take a look at what’s in Firefox Developer Tools in Firefox 23 currently Aurora, our pre-beta channel. You can download it from the Aurora Download page today. Firefox 23 is currently scheduled to hit the release channel on Tuesday August 6th, 2013.

Episode XXIII is a barn-storming, hair-raising spectacle of incredible epicness that is sure to delight and amuse. If you want a sneak peak at features under active development, give Nightly a try.

Network Monitor

There’s a new tool in the toolbox: The Network Monitor. It’s a classic waterfall timeline view of network activity on a site. This data’s been available since Firefox 4 via the Web Console, albeit in a less visually pleasing way.

Please file bugs under the Developer Tools: Netmonitor component in Bugzilla.

Remote Style Editor

In Firefox 23, you can now edit styles via a Remote Connection on a suitably-enabled device. This should be great help for App Developers interested in testing and debugging styles on a mobile device over the remote protocol in real time.

As of the time of this writing, the Remote Style Editor should be compatible with Firefox for Android version 23, also scheduled for uplift to Aurora. We are working on incorporating the Style Editor Actors for the remote protocol into the Firefox OS Simulator and investigating what it will take to backport them to Firefox OS release.

Options Panel

We’ve added a Gear menu to the Toolbar containing an Options panel for turning tools on or off. As we add more stuff, this is going to be a popular place to manage preferences related to the Developer Tools.

Currently, there are options to turn on the Light or Dark theme for the tools and enable Chrome Debugging.

Initial SourceMap Support for Debugger Protocol

The first pieces of SourceMap support for the Debugger have landed and we are now able to serve up SourceMapped JS files for your debugging pleasure. Soon to follow will be column support for breakpoints allowing you to debug minified JS with a SourceMap.

Watch for the upcoming blog post by Nick Fitzgerald on Hacks explaining the magic.

Variables View Everywhere

Our Variables View is an improved Object Inspector and an integral part of our Debugger. Naturally, we wanted to put it in Everything. So now the Web Console and Scratchpad have a Variables View. Use the ESC key to close it.

Browser Console

If you have Chrome Debugging turned on, check out the Browser Console. It’s a replacement for the ancient Error Console and gives you a Chrome-context command line for executing JavaScript against the browser. It’s nice and should be enabled by default in Firefox 24.

GCLI Appcache Command

We finally have a little something for developers trying to use App Cache to store offline data. A new appcache command for the Graphical Command Line. You can read about it in Mike Ratcliffe’s The Application Cache is no longer a Douchebag.

Web Console in Debugger Frame

The Web Console is now fully-remoted (and has been since version 18). It now makes use of the Debugger’s current Frame if paused on a breakpoint.

Multiple Paused Debuggers

You can now debug multiple tabs at the same time using the Script Debugger. Previously, when attempting to use the debugger on two separate tabs, you’d be given a notification to resume the debugger in the other tab. Now you can debug as many tabs as you like.

There is one caveat to this awesome power, however. Due to the nested event loops each Debugger creates, you have to resume each tab in the order in which they were paused. Debug carefully and always carry a big stack.

You can see a comprehensive list of bugfixes in table form in Firefox 23 Developer Tools Fixes.

Meeting NotesMozilla Project: 2013-05-20

All-hands Status Meeting Agenda

Items in this section will be shared during the live all-hand status meeting.

Friends of the Tree

Upcoming Events

Monday, 20 May
  • WebRTC meetup at the Hacker Dojo in Mountain View, CA at 6:30pm – 8:30pm

    • Learn how to build your very first WebRTC web application!

    • Feel free to bring a laptop to follow along with the WebRTC application we will build in the presentation
Saturday, 25 May
Next Week
  • MDN sprint: Friday May 31 and Saturday June 1 in the San Francisco and Paris offices. Bay Area and Paris staff: please join us any time on Friday (or Saturday) to work on code examples or developer docs for your Mozilla product or area of the Mozilla project. More details in the wiki or contact Janet Swisher (jswisher@ or jms in IRC). Volunteers and remote participants are also welcome! See you in #devmo.

Product Status Updates (voice updates)

Grow Mozilla

Speaker Location: San Francisco

Help us build a history of Mozilla told by Mozillians. Please share your memories about this Mozilla milestone:

Speakers

Presenter Title Topic Location Share? Media More Details
Who Are You? What Do You Do? What are you going to talk about? Where are you presenting from? (Moz Space, your house, space) Will you be sharing your screen? (yes/no, other info) Links to slides or images you want displayed on screen Link to where audience can find out more information
Anika and Dia Members of the People team People team IRC channel irc://irc.mozilla.org#peoplepeople
Kate Firefox OS Camp Cartagena IRC: #fxoscamp wiki: https://wiki.mozilla.org/FirefoxOSLaunchCamp/LatAm2013

Introducing New Hires

New Hire Introduced by Speaker location New Hire location Will be working on
Peiying Mo Chris Hofmann Mountain View Mountain View Senior Localization Program Manager
Francesco Lodolo Chris Hofmann Mountain View Brescia, Italy Localization Engineer
Liza Fox Shezmeen Prasad Mountain View Brighton, UK Brand Events Team
Simone Sapin Jet Villegas Taipei UK Software Engineer Platform
Ryan Feeley Bryan Clark Mountain View Toronto UX Designer
Marc Feeley Azita Rashed Mountain View Mountain View Research Engineer

Introducing New Interns

New Intern Introduced by Speaker location New Hire location Will be working on
Ben Brittain Tim Terriberry MV MV Platform
Brandon S. Kase Bill Walker MV MV Labs
Eric Atkinson Dave Herman MV MV Research
Evan Shapiro Dylan Oliver MV MV FFX OS
Ivan Alagenchev Tanvi Vyas MV MV Security Eng
Michael Vitousek Luke Wagner MV MV Research
Shu Hao Wu Mike Cooper MV MV Web Dev
Tim Kuehn Dave Herman MV MV Research
Varunkumar Manohar Anurag Phadke MV MV Metrics
Jack Montgomery Zhenshuo Fang SF SF UX Design
Ryan Seys Ben Adida MV SF Identity
Shane Tully Brad Lassey/Chris Peterson SF SF Platform
Timothy Gaweco Laura Forrest SF SF Product Marketing, Desktop
Vlad Filippov Ben Adida/Chris Karlof SF SF Identity

<meta>

Notes and non-voice status updates that aren’t part of the live meeting go here.

Status Updates By Team (*non-voice* updates)

QA
WebQA

  • Dial-in: conference# 8600

    • US/International: +1 650 903 0800 x92 Conf# 8600

    • US toll free: +1 800 707 2533 (pin 369) Conf# 8600
    • Canada: +1 416 848 3114 x92 Conf# 8600
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 8600

about:communityHow to tell a Mozillian you love them.

Last week I visited the beautiful city of my birth, Toronto, Ontario, Canada.  The purpose of my trip was to visit three potential Summit sites, including a large convention space (because two of the hotels we had our eye one did not have actual event space).

Our first stop was the convention space.  It’s was an old building inside of the Exhibition grounds where I spent many summers.  The space was huge and sterile and certainly not for us.  I could tell right away it just wasn’t right.

And, neither were two of the hotels.

And, then we got to the Sheraton and here’s what was waiting for us:

IMG_2271 IMG_2283 IMG_2276 IMG_2278 IMG_2289

A lot of foxes, everywhere, all over, as we toured the hotel.   Not only was the space amazing, but these guys just got it.  In every way.  Plus, this hotel is a few blocks from our amazing Toronto space!  I was very happy with the experience and am certain the folks who travel to  Toronto for the Summit will be in for a treat.

InstantbirdInstantbird 1.4 Released!

Log Viewer showing dates in a tree

Get your copy of Instantbird 1.4, hot off the presses! We’ve made a lot of improvements (for full details, see the release notes):

  • Twitter:
    • The character counter should now be correct when tweeting links.
    • Twitter now uses the v1.1 API, this will allow Twitter to continue working past June 11th, 2013 (when the v1.0 API is disabled).
  • Invalid/self-signed/out-of-date SSL certificates can now be easily overridden for IRC accounts.
  • Logs are now organized by the date they were created, and smartly folded to easily find recent chats.

As we stated during the Instantbird 1.3 release, this version now requires Mac OS X 10.6 (Snow Leopard). Instantbird 1.4 is based off Mozilla 20 and libpurple 2.10.7, the newest versions available.

You might be asking “What’s next?” for Instantbird; we will be participating in Google Summer of Code 2013 (again through Mozilla). Through this and our other volunteers, we’ll continue improving Instantbird to make it a chat program you love to use. Hopefully we can integrate some cool new features from this year’s Google Summer of Code and finish integrating the Account Import Wizard from Google Summer of Code 2012! As always, if you see any issues, please file bugs!

Mozilla Add-ons BlogBecome a Marketplace App Reviewer!

This post originally appeared on the Apps blog, and we’re re-posting it for the AMO community in case anyone here is interested!

***

A majority of add-ons on AMO are reviewed by volunteer contributors, and they are a big reason why addons.mozilla.org is a safe, thriving place for submitting and downloading add-ons. With the launch of Firefox Marketplace, contributors will again play an important role in helping to shape and nurture a new community.

App reviewers ensure apps submitted to the Firefox Marketplace adhere to security and privacy policies, and meet quality and user experience standards. In return, reviewers enjoy perks such as invitations to special Mozilla events around the world, fast-tracked reviews of their own apps, and cool gear from the incentives program.

You’ll have front-row seats to the apps arriving in the Marketplace, and as one of the first reviewers, you’ll have an opportunity to mentor new reviewers, and have a voice in how the community evolves.

Did we pique your interest? Learn more about the program here, or apply today!

about:communityMilestone: The Mozilla Foundation is born

July 15, 2003: The Mozilla Foundation is born with start-up support from America Online and Mitch Kapor

2003_mofo_logo

Share in the comments any memories you have of this event, photos of any t-shirts from this period or any other interesting pieces from this time in Mozilla’s history. The information shared here will help us visually create the history of Mozilla as a community.

Mozilla L10NTeach yourself L20n at L20n.org

Language can be very difficult to capture within software localization. Each natural language in the world evolves at its own pace and in its own unique way, creating vibrant and rich means of expression. Sadly, simple static string translation is often ill-equipped to properly accommodate gender, conjugation, plural, or case changes required within the language by changing string variables and other run-time string composition issues. This is why we created L20n.

We’re super happy to announce that we’ve released an amazing tool to help localizers, engineers, and localization tool developers learn and practice L20n themselves! l20n.org contains a real-time text editor that allows you to edit L20n code and visually see how it impacts localization. The real-time editor is part of the “Learn” section of l20n.org dedicated to walk you through what L20n has to offer, feature by feature, and give you a chance to try these features out in real-time.

L20n is a localization framework (comprised of a pseudo-programming language) meant to transfer the ability to localize software using the fullness of any language from the developer to the localizer. L20n empowers localizers to be more independent of source language developers and have more control and flexibility in localizing software according to their native language’s demands.

l20n.org is live and running now! Go give it a try! Not only is it live, but its hosted on github for you to fork and contribute to. Enjoy testing out L20n!

 

Firebug BlogFirebug 1.12 alpha 6

getfirebug.com has Firebug 1.12 alpha 6

Firebug 1.12a6 fixes 11 issues
Firebug 1.12a6 is compatible with Firefox 20-23

 

Couple of highlights from this release

This feature allows referring various objects from the command line using new $p variable.

Use in Command Line

See also detailed description of this feature.

 

    • Precision for Console API %f log pattern (issue 6439)

Floats can be rounded by using the %.xf pattern inside the first console.log() argument. Here x denotes the number of decimal places the number should be rounded to.

Precision pattern

console.log("amount: %.2f", 4.3852)
will output
amount: 4.39

You may want to get to know about the other patterns available inside the Console API.

 

Please post feedback in the newsgroup, thanks

Jan ‘Honza’ Odvarko

 

QMOFirefox 22.0 Beta 2 Testday, May 24th

Greetings Mozilla contributors,

On Friday, May 24th we are organizing Firefox 22.0 beta 2 testday. We will focus on testing the overall functionality of the browser, with main focus on plugins.

We’ve set up an etherpad with all the details about the event.

No previous testday or testing experience is needed, so feel free to join us on the #testday IRC channel where our moderators will provide guidelines for you and answer your questions.

See you on Friday!

When: May 24, 2013.

BlueGriffonBlueGriffon EPUB Edition 1.7

I just released BlueGriffon EPUB v1.7 for all platforms. Purchasers of older versions can safely download and install it over their existing install, it will not reset profile or license credentials.

Note to Windows users: you may have to install the MSVC10 Redistributable Package since we moved to VC10. See the download page.

Mozilla SecurityMixed Content Blocking in Firefox Aurora

Firefox 23 moved from Nightly to Aurora this week, bundled with a new browser security feature. The Mixed Content Blocker is enabled by default in Firefox 23 and protects our users from man-in-the-middle attacks and eavesdroppers on HTTPS pages.

When an HTTPS page contains HTTP resources, the HTTP resources are called Mixed Content. With the latest Aurora, Firefox will block certain types of Mixed Content by default, providing a per-page option for users to “Disable Protection” and override the blocking.

What types of Mixed Content are blocked by default and what types are not? The browser security community has divided mixed content into two categories: Mixed Active Content (like scripts) and Mixed Passive Content (like images). Mixed Active Content is considered more dangerous than Mixed Passive Content because the former can alter the behavior of an HTTPS page and potentially steal sensitive data from users. Firefox 23+ will block Mixed Active Content by default, but allows Mixed Passive Content on HTTPS pages. For more information on the differences between Mixed Active and Mixed Passive Content, see here.

Mixed Content Blocker UI
Designing UI for security is always tricky. How do you inform the user about a potential security threat without annoying them and interrupting their task?

Larissa Co (@lyco1) from Mozilla’s User Experience team aimed to solve this problem. She created a Security UX Framework with a set of core principles that drove the UX design for the Mixed Content Blocker.

When a user visits an HTTPS page with blocked Mixed Active Content, they will see a shield icon in the location bar:

Shield Icon Doorhanger shown on HTTPS page with Mixed Active Content

Clicking on the shield, the user will see options to “Learn More”, “Keep Blocking”, or “Disable Protection on This Page”:

Shield Doorhanger Drop Down UI

If a user decides to “Keep Blocking”, the notification in the location bar will disappear:

If the user decides to Keep Blocking, the shield will disappear.

On the other hand, if a user decides to “Disable Protection on This Page”, all mixed content will load and the lock icon will be replaced with a yellow warning sign:

Yellow Warning Triangle appears after the user Disables Protection

When a user visits an HTTPS page with Mixed Passive Content, Firefox will not block the passive content by default. But since the page is not fully encrypted, the user will not see the lock icon in the location bar:
A page with Mixed Passive Content will show the Globe icon instead of the Lock icon.

Compatibility
We have a master tracking bug for websites that break when Mixed Active Content is blocked in Firefox 23+. In addition to websites that our users have been reporting to us, we are running automated tests on the Top Alexa websites looking for pages with Mixed Active Content. If you run into a compatibility issue with a website involving mixed content, please let us know in the master bug, or take a step further and contact the website to let them know. Chances are, their website is also broken on Chrome and/or Internet Explorer. Chrome and Internet Explorer also have Mixed Content Blockers, but their definitions of Mixed Active and Mixed Passive Content differ from slightly from Firefox’s definition.

Want to learn more?
Still curious and want to learn more details about the Mixed Content Blocker in Firefox? Check out this more detailed blog post or feel free to ask us questions on mozilla.dev.security.

Software CarpentryWrapping Up at UC Davis

Jenna Lang has posted a great wrap-up on the boot camp at UC Davis — with Python cookies!

cookies

Software CarpentryExperiences with the Oxford DTCs

Mario Antonioletti has posted his experiences on being a first-time instructor at our boot camp for the Oxford doctoral training centres, our second in Oxford, last week.

Mozilla ITRFO: DNSSEC Resolution failures (mozilla.org) 20130515@1800 PDT [872818]

On May 15 at 1800 PDT Nagios  alerted the start of sporadic DNS resolution failures.  This post summarizes the events, the impact and specific steps Mozilla IT is taking to avoid future disruptions of this nature.

This post is intended to be technical in nature.  DNSSEC is fairly technical and DNSSEC failures tend to be similarly technical. As we’ve done before, we hope to share the failures we encounter in production so you don’t have to experience the same.

SUMMARY

An SOA mismatch between SVN and the nameservers was caused by the DNSSEC signer refusing to sign with an expired ZSK. This was misdiagnosed as a KSK issue, leading to a DNS outage for DNSSEC-verifying resolvers.

DETAILS

In the afternoon of May 15, the nameservers refused to load SOA update 2013051500 for the mozilla.org DNSSEC-signed zone.

Investigation found that the DNSSEC signer was refusing to sign the zone, providing only the error “fatal: cannot find SOA RRSIGs“. In hindsight, this undocumented error indicates that the zone’s ZSK has expired.

Mozilla’s domain registrar publishes DS records for the mozilla.org KSK. When the expired key was found at 16:44, it was misunderstood to be a KSK, rather than a ZSK. A new KSK was generated and its DS record added to Mozilla’s domain registrar.

The new KSK did not resolve the signing errors. Mozilla’s domain registrar was found to rate-limit DS record changes, preventing the new KSK from being reverted. DNS lookups began showing invalid DS records from Mozilla’s domain registrar, but this was later found to be internal DNS only.

After examining the keys (both current and expired) more closely, the expired key was found to be a ZSK, rather than a KSK. Renewing the ZSK fixed the DNSSEC signer. The mozilla.org SOA 2013051500 was signed by both KSKs and the new ZSK, and then published.

Comcast users began reporting DNS resolution issues of mozilla.org, complicating access to various Mozilla properties. DNSSEC validation tools showed unexpected issues with the signed mozilla.org zone.

The DS records were confirmed to be correct externally, so the mozilla.org zone was re-signed without the old KSK, leaving only the new KSK and new ZSK. This resolved the validation issues for reasons unknown, and Comcast users reported DNS working correctly again.

Bugs have been filed to document the KSK/ZSK renewal process, to monitor the expiration times of those keys, and to monitor that the zones validate.

BUGS
  • 872818: mozilla.org SOA mismatch, DNSSEC signer refusing to sign
  • 872831: alarm when DNSSEC signing keys are expiring soon
  • 872884: document ZSK and KSK renewal/rollover process
  • 872832: regenerate mozilla.org DNSSEC ZSK (resolved)
  • 872885: regenerate mozilla.org DNSSEC KSK (resolved)
  • 872927: monitoring: add full validation of DNSSEC zones
TIMELINE (PST8PDT, UTC -0700)
  • 15:32 – SOA mismatch detected between nameservers 2013051402 and svn 2013051500.
  • 16:03 – Found DNSSEC signer refusing to sign mozilla.org 2013051500
  • 16:44 – Found expired key preventing signing of mozilla.org
  • 16:52 – Added new KSK to Mozilla’s domain registrar alongside existing KSK to renew expired key
  • 17:06 – Found that expired key was ZSK, not KSK as previously thought.
  • 17:27 – Signed mozilla.org with both KSKs and new ZSK
  • 17:45 - Mozilla’s domain registrar publishing incorrect hash for new KSK (misleadingly, for internal lookups only)
  • 18:00 – Comcast users reporting sporadic DNS resolution failures
  • 18:20 – Validation issue found with signed zones
  • 18:25 – Signed mozilla.org with new KSK and new ZSK
  • 18:30 – Comcast users reporting DNS resolving successfully
  • 18:35 – Validation issue confirmed resolved
NOTES
  • ZSK and KSK are “zone signing key” and “key signing key” for mozilla.org. DNSSEC permits multiple KSKs and autoselects the latest ZSK. We sign with a single KSK, outside of 17:30-18:25 above.
  • There is no filesystem difference between ZSKs and KSKs. The distinction is the word “zone” or “key” in the comment in the first line of the keyfile.

hacks.mozilla.orgBuilding a Notes App with IndexedDB, Redis and Node.js

In this post, I’ll be talking about how to create a basic note-taking app that syncs local and remote content if you are online and defaults to saving locally if offline.

notes app sample

Using Redis on the server-side

When adding records in Redis, we aren’t working with a relational database like in MySQL or PostgreSQL. We are working with a structure like IndexedDB where there are keys and values. So what do we need when we only have keys and values to work with for a notes app? We need unique ids to reference each note and a hash of the note metadata. The metadata in this example, consists of the new unique id, a creation timestamp and the text.

Below is a way of creating an id with Redis in Node and then saving the note’s metadata.

// Let's create a unique id for the new note.
client.incr('notes:counter', function (err, id) {
 
...
 
    // All note ids are referenced by the user's email and id.
    var keyName = 'notes:' + req.session.email + ':' + id;
    var timestamp = req.body.timestamp || Math.round(Date.now() / 1000);
 
    // Add the new id to the user's list of note ids.
    client.lpush('notes:' + req.session.email, keyName);
 
    // Add the new note to a hash.
    client.hmset(keyName, {
      id: id,
      timestamp: timestamp,
      text: finalText
    });
 
...
 
});

This gives us the following key pattern for all notes on the server-side:

  1. notes:counter contains all unique ids starting at 1.
  2. notes:<email> contains all the note ids that are owned by the user. This is a list that we reference when we want to loop through all the user’s notes to retrieve the metadata.
  3. notes:<email>:<note id> contains the note metadata. The user’s email address is used as a way to reference this note to the correct owner. When a user deletes a note, we want to verify that it matches the same email that they are logged in with, so you don’t have someone deleting a note that they don’t own.

Adding IndexedDB on the client-side

Working with IndexedDB requires more code than localStorage. But because it is asynchronous, it makes it a better option for this app. The main reason for why it is a better option is two-fold:

  1. You don’t want to wait around for all your notes to process before the page renders all elements. Imagine having thousands of notes and having to wait for all of them to loop through before anything on the page appears.
  2. You can’t save note objects as objects – you have to convert them to strings first, which means you will have to convert them back to objects before they are rendered. So something like { id: 1, text: 'my note text', timestamp: 1367847727 } would have to be stringified in localStorage and then parsed back after the fact. Now imagine doing this for a lot of notes.

Both do not equate to an ideal experience for the user – but what if we want to have the ease of localStorage’s API with the asynchronous features of IndexedDB? We can use Gaia’s async_storage.js file to help merge the two worlds.

If we’re offline, we need to do two things similar to the server-side:

  1. Save a unique id for the note and apply it in an array of ids. Since we can’t reference a server-side id created by Redis, we’ll use a timestamp.
  2. Save a local version of the note metadata.
var data = {
  content: rendered,
  timestamp: id,
  text: content
};
 
asyncStorage.setItem(LOCAL_IDS, this.localIds, function () {
  asyncStorage.setItem(LOCAL_NOTE + id, data, function () {
    ...
  });
});

The structure of the IndexedDB keys are very similar to the Redis ones. The pattern is as follows:

  1. All local ids are saved in a localNoteIds array
  2. All local note objects are saved in note:local:<id>
  3. All remote/synced ids are saved in a noteIds array
  4. All remote/synced note objects are saved in note:<id>
  5. Local notes use a timestamp for their unique id and this is converted to a valid server id once Redis saves the data

Once we’re online, we can upload the local notes, save the remote ones on the client-side and then delete the local ones.

Triggering note.js on the client-side

Whenever we refresh the page, we need to attempt a sync with the server. If we are offline, let’s flag that and only grab what we have locally.

/**
 * Get all local and remote notes.
 * If online, sync local and server notes; otherwise load whatever
 * IndexedDB has.
 */
asyncStorage.getItem('noteIds', function (rNoteIds) {
  note.remoteIds = rNoteIds || [];
 
  asyncStorage.getItem('localNoteIds', function (noteIds) {
    note.localIds = noteIds || [];
 
    $.get('/notes', function (data) {
      note.syncLocal();
      note.syncServer(data);
 
    }).fail(function (data) {
      note.offline = true;
      note.load('localNoteIds', 'note:local:');
      note.load('noteIds', 'note:');
    });
  });
});

Almost done!

The code above provides the basics for a CRD notes app with support for local and remote syncing. But we’re not done yet.

On Safari, IndexedDB is not supported as they still use WebSQL. This means none of our IndexedDB code will work. To make this cross-browser compatible, we need to include a polyfill for browsers that only support WebSQL. Include this before the rest of the code and IndexedDB support should work.

The Final Product

You can try out the app at http://notes.generalgoods.net

The Source Code

To view the code for this app feel free to browse the repository on Github.

Firefox FlicksFirefox Flicks 2013 Staff Pick - Tobi

The Flicks team gets to see every entry that comes in for the contest. While there’s still a few months left in the contest we thought we’d share some of our favorites. Being featured as a staff pick has no bearing on the Firefox Flicks voting process. It’s just Flicks we’ve seen come in that we think are really interesting and wanted to share them with Flicks fans. We hope you find them inspiring.


“I’m Tobi, part of the Firefox Flicks team. I work on the project in general and I help the community with their activities around Flicks 2013. I chose Scooter from the USA as my pick.

The idea seems a bit odd first of all. But I like it. The video is nicely produced as well. It gives a quite different perspective on things. I respect it a lot when people from older generations are still exploring new technologies. Actually it looks like he has a jailbroken iPhone running FirefoxOS. That’s bad ass. I can understand that when you get older you might not always want to go with the latest “trends” anymore. You might be tired of that. It’s a pitty. Mobile computing is really something that can make everyones’ life a little easier, no matter if you’re young or old. This man is doing everything right.

Having seen all the Flicks entries so far, I think we can be really happy about having such an engaged community. It takes a lot of effort to create a submission, so I already wanted to say thanks to everyone who contributed to far!”

Mozilla User ResearchHerding UX: How to Plan a Workshop for a Diverse Creative Team

A few weeks ago, the entire User Experience Team came together for our UX Summit to reflect on our work and our organization. As part of the week’s activities, I planned and led a day-long workshop around the goal of creating and shipping products that our users love.

Running a successful workshop for a large group of designers, researchers, prototypers, and UX managers who work on different products in Mozilla can be quite a challenge. This is my reflection on how I tried to help a diverse group such as ours discuss common challenges and begin creating a shared process.

Plan activities that are relevant to each person’s work

This suggestion seems obvious, but it’s often overlooked in many workshops, especially ones led by those who don’t know the participants well. It’s not uncommon to learn new skills in a great workshop then realize later on that you have no clue how to integrate that learning into your own product process.

I wanted to make sure that my colleagues would walk away feeling like they had something tangible to take back to the product teams they work with. Thus, many of my activities began with individual (or small team) reflections where I asked everyone to apply a framework or process I put together to their own product experiences. This approach provided us with some common tools and language to evaluate our impact as a UX team, while allowing each person to introspect on his or her own work.

Self reflection

Individual worksheets help our diverse team reflect on specific projects while discussing informally

Not everyone has to speak up to be an active participant

I’ve never liked workshops where each participant is forced to share, one after another. I understand the reasons for doing so (such as allowing each person to be heard, not just the majority voice), but it’s hard to scale this approach, introverts hate being required to speak up, and everyone’s answers tend to be verbose variations on the same theme. Besides, with a diverse organization such as ours, things that are meaningful to one product team can be irrelevant to another.

I still had a large group discussion at the end of each activity, but rather than asking everyone to report out, I made sure that it was only one of multiple ways that people could voice their thoughts and observations to the rest of the team. During the individual reflection portion of an exercise, participants had worksheets that they could fill out alone or talk to others about as they saw fit. This task gave people the opportunity to reflect specifically about the issues they cared about. Afterwards, I also asked each person to contribute their thoughts (on post-its or name tags) to a large group visualization. These maps gave everyone a chance to share their point-of-view and quickly see the bigger organizational picture from everyone else’s contributions.

In the end, I think the balance between reflecting on individual team needs and visualizing patterns within the larger UX organization created a richer discussion about issues that were relevant to the entire group.

Group mapping

About 40 participants share their ideas quickly through a group map

Scaffold difficult tasks (don’t shy away from them)

Not every activity in a workshop is going to be easy to explain or easy to do. Some activities are hard because they tap into uncomfortable/sensitive team issues. Others require complex thinking that cannot be compressed into the time you have for the workshop.

For my workshop, I wanted to do a particular activity that I knew was challenging but useful in the long run. So I tried to break it down into smaller tasks that were easier to understand. I also provided written instructions, examples, and worksheets to help my colleagues get started. Despite my preparation, people were still fairly confused in the beginning, but I persisted in explaining the task and why the activity was important, until eventually everyone tried it out. Later on, some participants told me that this challenging activity was one of the most useful components of my workshop for them.

Don’t shy away from activities that challenge the team; they often lead to the most meaningful changes. Instead, acknowledge the difficulty of what you’re asking people to do, give them enough time to do it, and (as cheesy as it sounds) have faith in your team’s ability to figure it out.

Practical Tip: I scheduled my hardest activity about an hour before lunch so that everyone had time to wake up but weren’t sluggish from having eaten or exhausted from thinking. I think the promise of a lunch break encouraged people to power through the challenging task. (Just don’t end late for lunch, or else you will have some very unhappy participants!)

C’est La Vie

I’m a planner so I spend a lot of time preparing for the workshops I lead. Planning the right activities and making sure they run smoothly ensure that a workshop meets its goals and isn’t just a waste of time for everyone involved.

But it’s also important to remember that a successful workshop isn’t one where you hit every bullet point in your agenda; it’s one where the participants get something valuable out of the time they spend with you. As a facilitator, you have to be responsive to the needs of the group as the workshop progresses. Let the discussion go longer if everyone’s energy seems to be there. Cut the activity short if people look like they’ve checked out. If it seems like the group isn’t getting to insights, modify the activity on the fly so that they do.

During breaks and individual activities, I like to get the temperature of the room by talking to individuals and seeing whether they still find the exercises relevant for their particular group. As much as I try to plan beforehand, my activities can still be slightly biased towards an interaction designer’s perspective. It’s important that I check my own assumptions about what other disciplines within the UX team need.

Drawing Insights

During breaks, people wandered over to the group maps and shared their insights informally

As a parting thought, remember that your workshop isn’t and shouldn’t be the only opportunity you have to accomplish whatever goals you set. Instead, it’s a starting point for later conversations and activities with individuals and smaller teams. The art  of facilitating the workshop is in figuring out where to focus the group’s energy  so that you build that great starting point for change to ripple through your organization.

Software CarpentryStanford Bootcamp Recap

On May 6th-7th, we hosted a bootcamp at Stanford University. Participants were students, post-docs and staff affiliated with the Center for Neurobiological and Cognitive Imaging and the Neuroscience Graduate Program and both units provided support for the workshop. Bob Dougherty, the research director at the CNI, helped raise a substantial portion of the funds to support the boot-camp (coffee!) and Prof. Miriam Goodman, from the Department of Molecular and Cellular Physiology, helped to get the neuroscience program on board and to secure additional funding from that program. Prof. Goodman was a participant in a SWC boot-camp at Berkeley last year and was eager to get SWC to Stanford. Instructors were Paul Ivanov, Bernhard Konrad and myself.

SWC at Stanford

Considering that the students were a rather homegenous group in terms of their scientific interests (the brain!), there were a variety of backgrounds in terms of their knowledge about computers. Matching instruction to the level of knowledge (based on a pre-workshop questionnaire) was a challenge. As were installation issues that plagued the first day. A large majority of participants failed to follow the instructions provided by the Anaconda Python distribution to configure their bash shell environment. I guess that just goes to show that they needed the workshop.

The instruction followed the standard boot-camp plan for most of the two days: unix shell, version control with git, python programming, and so forth. In the last two-hour session of the work-shop we conducted a little experiment. Adapting a lesson plan from Justin Kitzes' recent UC Berkeley bootcamp, we taught a session aimed at teaching the students how to combine all the components of the previous parts (shell, git and programming) to create a reproducible research project. To make things more interesting, we used a publically available neuroscience data set. We demonstrated how one would load the data from the files comprising this data-set into an IPython notebook and performed a rather basic calculation on it, visualizing various quantities as we went along.

Demonstrating one possible work-flow, we started by working interactively in the notebook, exploring the data as we went along. We demonstrated how bits of an exploratory data analysis session can turn into function definitions. Then, we showed how you would write modules based on these function, tests for the modules, commit them as a git repo and start putting together a push-button analysis. We reached the end of all this a little bit out-of-breath and it is not obvious that everyone managed to follow through every step of the session, but I do believe that the most important point came across: reproducible research is important and, with the help of the tools we teach, eminently possible.

We used this etherpad to comminucate with students througout the workshop and to gather feedback at the end of each half-day. You can see a list of the participants at the top and the feedback strewn throughout. At the very end of the workshop, we asked them to write down their feedback for the entire workshop. Many took the time to write some thoughtful comments (for which we are grateful!). I have selected a couple of interesting points from the feedback we got. This one is quite encouraging:

great workshop. i appreciated the backround and theory as well as the more practical examples. i think you did a nice job presenting this information to students of various levels. might be helpful to make it clear what level this class is for - some people had no coding backround, others were quite experienced. maybe a quick survey in the beginning and maybe some work in groups to accodmidate the different levels. i really appreciated your humor and positive attitude:)

On the other hand, this one is a bit discouraging:

I'm very grateful that you all volunteer your time to do this. But, I think you can/should be paid for it. There's money around for such things, many of our PIs would be happy to fork up a few hundred bucks, and in general I think the culture of doing good work for free in academia is deleterious to our collective financial well-bring.+4

The '+4' at the end of that comment represents the fact that four additional people expressed their support to that point. I wonder whether this notion is due to the local hyper-capitalistic culture surrounding Stanford, and I am curious to hear what other instructors think about this. My personal response, also in line with some other aspects of the local culture, is that Software Carpentry is just one more way to create more value than we capture.

When the workshop was over, Paul, Bernhard and I took a long walk. Prof. Goodman had kindly invited us to her house in Menlo Park for post-workshop pizza and socializing. On the way over, we took the opportunity to go over the sessions one-by-one and reflect on them. For each session, each one of us in turn said what they think worked and what didn't work. It was very useuful to get feedback from the other instructors, to rehash the mistakes and the successes and to be able to imagine what we would do differently in future workshops. One of the main sentiments in the air was that we were not sure whether we had really managed to "seal the deal", to get students to actually start using the things we had shown them in their day-to-day life. Fortunately, I have the email addresses of participants. In a couple of months, I will circle back and ask them to fill another set of evaluations and (assuming anyone responds) see whether they have adopted any of it into their day-to-day research life.

Software CarpentryAnnouncing Hack4ac

Hack4ac is a one-day hackathon in London, England, on July 6. Its goals are:

  • Demonstrate the value of the CC-BY licence within academia. We are interested in supporting innovations around and on top of the literature.
  • Reach out to academics who are keen to learn or improve their programming skills to better their research. We're especially interested in academics who have never coded before.

It looks like fun—if you're in the area and interested in getting involved, they'd be happy to have you there.

Mozilla Add-ons BlogAdd-ons Update – Week of 2013/05/15

I post these updates every 3 weeks to inform add-on developers about the status of the review queues, add-on compatibility, and other happenings in the add-ons world.

The Review Queues

  • Most nominations for full review are taking less than 3 weeks to review.
  • Most updates are being reviewed within 1 week.
  • Most preliminary reviews are being reviewed within 1 week.

These stats are taken from the last queue report:

  • 88 nominations in the queue awaiting review.
  • 59 updates in the queue awaiting review.
  • 57 preliminary review submissions in the queue awaiting review.

If you’re an add-on developer and would like to see add-ons reviewed faster, please consider joining us. Add-on reviewers get invited to Mozilla events and earn cool gear with their work. Visit our wiki page for more information.

Firefox 21 Compatibility

The compatibility blog post for Firefox 21 is up, and the the compatibility bump for AMO add-ons was run last week. Firefox 21 was released yesterday, so all compatibility updates should be uploaded to AMO as soon as possible, if they haven’t been already.

As usual we recommend using the Aurora and Beta branches to test your add-ons ahead of time.

ESR Compatibility

There are a couple of compatibility issues that are related to the ESR and other business deployments that are worth mentioning:

  • In Firefox 21, certain folders in the Firefox install directory where moved under browser/. You can read more about it on this bug. This affects installers that drop add-ons or other customizations in the install directory.
  • We’re planning on changing the version number scheme for ESR releases. The idea is that, if we have ESR 24, ESR version 24.1 would be the security upgrade that corresponds to Firefox 25. This way it is easier to associate an ESR version with its mainline equivalent in security patches. For add-ons, this means that maxVersions should always be in the form 24.*, rather than 24.0.*. This is especially important for add-ons with binary components, which don’t have default compatibility.

Hive Learning Network NYCWebmaking as Connected Learning

This is re-posted from Matt Thompson’s blog. Connected Learning wants to revolutionize the way people learn. How can Webmaker be a part of that movement? These new resources on Connected Learning are highly recommended reading for anyone interested in the … Continue reading

about:communityLetting go to make room for what’s next- New thoughts on Knowledge Share

Change.  For some it’s a bad word.  For some it’s exciting.  Lately I’ve been stuck, and now I see that change was the next step to stuck.  I had to get stuck in order to change.  Change will take some letting go.

So what’ the change?  Capture Mozilla is Air.Mozilla too.  Duh you say?  Sounds simple! Simple yes, easy no.  Capture Mozilla was a brain child of mine born from the need to scale knowledge and know how, not in the form of formal training, but in the voice of the Mozillians who are sharing.  Here are some things I’m learning that lead to a (change) wider view of knowledge share:

1) Ownership matters.

When we build a video, either really scrappy or really produced, we want some ownership. Maybe we don’t want to hand it over to the Capture Mozilla project.  Maybe we want to share it, but curate it from a place that is our own, that we have ownership in.

2) It’s hard to know what’s C-Mo.

There are 4 distinct channels for Capture Mozilla.  Well, what if YOUR knowledge share doesn’t fit?  Do we cram you into the C-Mo box?  Do we shape your share into the C-Mo mold?  No.  We follow you.  Like Mozillians ourselves, there are many variations of video knowledge share and putting us in a box is limiting.

3)  Making your own box makes sense.

Maybe your knowledge share fits into a C-Mo box.  Maybe you and your group or initiative, or subject deserves it’s own box.  And that box comes in the form of channels.   Checkout Air.Mozilla channels and see what I mean.  They are in their infancy and can only grow with your participation.  Someone’s got to go first, it could be you.

Notice all the “maybe’s” in my post?  That’s because I’m still thinking.  Less stuck, at the beginning of change and  thinking of all the “what’s possible” and “maybe’s”.  What I do know now is that Capture Mozilla is a project, not a place.  Making implicit knowledge explicit though video storytelling can and does happen in channels too.  By the way, changing the thrust of my work takes some letting go.  And that hurts a little.  Change, there’s that work again.

And so now I see that the first iteration of Capture Mozilla was the baby version.  The version that said all short videos live here.  The idea of  Capture Mozilla is growing up and it’s next stage is the freedom of channels.

It’s a project, an intention, not a place.  Whew.

no..this one“So, in a given time frame, plan to achieve something worthwhile in half the time, throw it away, then rebuild what has to be a better version, given the advantages of hindsight.” – from an essay in the MythicalManMonth

about:communityGrow Mozilla discussion this Thursday

If you’re interested in helping people get involved with Mozilla, join us tomorrow to discuss community building at Mozilla.

Firefox FlicksWhat Can You Win? — Firefox Flicks 2013 Prizes

You’ve spent days and nights planning the perfect flick. You’ve called in all your personal favors and created a winner. But what does winning Firefox Flicks actually get you? Fame, (a modest) fortune and opportunities to work with film industry luminaries — all this and more. We’re really excited to give you more details on the fantastic prizes you can win this year.

Just for participating, you’ll receive an exclusive, limited edition Firefox Flicks sticker sheet that was designed for the 2013 competition. That’s a little thank you from us. Keep reading for all the details.

People’s Choice Awards

People’s Choice is a new award category this year and will include flicks chosen by the public. The three People’s Choice winners will receive a limited edition Flicks 2013 prize package and have their videos promoted on our channels. They’ll also be featured in the Flicks gallery on Givit and on MovingArt channels.

Early Entry Awards

This year, we’re choosing three Early Entry Award winners. Each winning team will receive $1000 USD and have their flick promoted on our channels. They’ll also get a special edition 2013 prize pack and will automatically qualify for one of the 40 finalist spots.

The 40 Firefox Flicks finalists will have their films evaluated by our panel of judges and all finalists will receive SnagIt and Camtasia software licences from TechSmith (one per person).

Finalists

From the 40 finalists, the judges will choose four regional runners-up, four regional winners and a Grand Prize winner.

Regional Winners

The four regional runner-up teams will each receive $2500 USD, a one-year Shooting People membership for each team member, a special edition Flicks 2013 prize package and have their flick promoted on our channels.

The four regional winner teams will each receive $5000 USD, a one-year Shooting People membership for each team member, a limited edition Flicks 2013 prize pack and have their flick promoted on our channels. Their videos will also be featured in the Flicks gallery on Givit and on MovingArt channels. Additionally, the four regional winners will be flown to Toronto, Canada, for the 2013 Toronto International Film Festival for the award ceremony and celebration.

Grand Prize Winner

Finally, there is the Grand Prize winner. Make sure you’ve got your passport ready, because the Grand Prize winning team will fly to Los Angeles to work with Flicks judges Couper Samuelson (Producer) and Franklin Leonard (Founder, Black List), as well as representatives from Panavision, to professionally produce their winning entry using a comprehensive Panavision digital camera package. If timing allows, the winning team will also get a two-day training session at the Dolby Institute in LA, as well as an invitation to a movie premiere and after-party at the Dolby Theater.

The Grand Prize winner will also receive a one-year Shooting People membership for each team member, a limited edition Flicks 2013 prize pack and have their flick promoted on our channels. Their videos will also be featured in the Flicks gallery on Givit and on MovingArt channels. Additionally, the Grand Prize winner will be flown to Toronto, Canada, for the 2013 Toronto International Film Festival for the award ceremony and celebration.

Sound amazing? Want to win? You still have a few weeks to get your flick in for the next round of Early Entry Awards and before the contest closes on July 31, 2013.

The DenSpring Theme for Firefox

In the Northern Hemisphere, spring has sprung! People are basking in longer days, excited to be able to spend more time outside and taking time to smell the blooming flowers.

Speaking of flowers, there’s a featured Firefox theme that will be sure to make your browser bloom — it’s called Fine Fractal Flower. Even if it’s not spring where you are, this nature-inspired theme is sure to make you smile.

Here’s what the theme looks like:

Fine Fractal Flower Theme

And what it looks like once installed:

fractalflowerbrowser

If this theme isn’t for you, there are thousands more available!

Meeting NotesFirefox Status: 2013-05-14

General Topics

  • Work week agenda

Friends of the Firefox team

Give a shoutout/thanks to people for helping fix and test bugs.

  • mconley giving a shoutout to ge3k0s (Guillaume C.) for keeping us on our toes in Australis land. He’s doing great work filing bugs and catching regressions.

Stand ups

Suggested format:

  • What did you do last week?

  • What are working on this week?
  • Anything blocking you?

Please keep your update to under 1 minute!

gavin

  • reviews

  • work week organization
  • new hire stuff
next week
  • actually followup on test pilot

  • more work week/hiring

felipe

  • AddonRepository bug 853389: feedback from Blair implemented and going through tests now, met with Irving to discuss file writing stuff and with Irving and Mossop to discuss downgrade concerns

  • Fixed intermittent bug343515.js orange (bug 765192)
  • Reviewed all 31 GSoC applications once and two-pass reviews on the project I’m gonna mentor

markh

  • Landed a couple of “panel” features and patches to make Social use them.

  • Landed the async form history patch after fixing an orange which caused it to be backed out.
  • Getting my head around the e10s work and made a start on moving the form observer and autocomplete to an out-of-process message-based model.

mconley

  • Jamun branch is dead – Australis work is happening solely on UX branch now.

  • As per UX request, I’ve moved the star button back into the URL bar for now while I work on the new bookmark widget for Australis. Merged this change into UX.
  • Fixed strange appearance of popups on OSX
  • Been tackling randomly failing tests under browser/base/content/test. Very frustrating.
  • Laid out a rough roadmap for the rest of the Australis work – viewable from line 330 onwards here.
  • Started conversations with ZER0 from the Jetpack team about Australis impacts to the SDK
  • Lots of reviews

mikedeboer

Last week:

This week:

  • take as many Australis related bugs as…

  • Async perf meeting

gijs

Last week:

  • One public holiday

  • Australis
    • bug 855683 (JP tests) and bug 869939 (migrate stuff from addon bar to navbar) – blocked on decisions regarding addon-bar removal, talked with jetpack folks and mconley, posted to fx-dev, waiting on finalizing discussion there + ux feedback

    • landed bug 853083 (tabs left margin on windows without the app button)
    • lots of stuff about bug 853415 (weird overflow bug), seems we’re now going to able to fix it by never hiding the navbar
    • Started work on never hiding the navbar in bug 870545 and bug 752434.
    • behind the scenes stuff about bug 658467 (tab label fadeout rather than ellipsis), looking hard to make work in a performant manner
  • Other
    • landed bug 865316 (polish for OS X menubuttons)

    • still waiting for reviews on Fx reset tab restoring, and UX response from Limi on whether we care enough about tab groups

This week:

  • More Australis customization stuff (navbar, tab scrollbar fixes after that’s done)

  • Want to tackle UX orange/red and get it just as green as the trees outside my window.

MattN

Last week:

  • all Australis, all the time

    • bug 858089 = Tab stroke polish is very close. Little issues keep popping up.

    • Australis OS X LWT landed
    • Bug triage
  • Intern phone screen
  • Finish bug 858089 = Tab stroke polish

  • Fix bug 864608 – Tab drag placeholder
  • bug 857886 – HiDPI OS X tabs
  • More Australis follow-ups
  • Review Gijs’ clip-path patch

jaws

This past week:

  • Gave a presentation at Mobile Monday Detroit

    • Should have a video of the presentation uploaded to YouTube and blogged about
  • The UI for customization mode is near-finalized for Windows, OS X, and Linux. Some minor bugs here and there.
  • The location bar and search container now have a minimum width (on UX)

This week:

  • Look at GSoC proposals

  • Work on toolbar overflow for Australis
  • Lots of smaller but nice wins for Australis to work on (bug 870865, bug 870866, bug 870869)
  • Add some more functionality to the History widget (Clear recent history…, etc)

UX Updates

lco

  • Back from vacation, trying to catch up!

  • How many sites is Mixed Content actually breaking?

Details

  • Tuesdays – 10:00am Pacific, 1:00pm Eastern, 17:00 UTC

  • Dial-in: conference# 91337
    • US/International: +1 650 903 0800 x92 Conf# 91337

    • US toll free: +1 800 707 2533 (pin 369) Conf# 91337
    • Canada: +1 416 848 3114 x92 Conf# 91337
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 91337
  • irc.mozilla.org #fx-team for backchannel
  • “Firefox” Vidyo Room

Meeting NotesSeaMonkey: 2013-05-14

Agenda

  • Who’s taking minutes? -> Ratty

  • Nominees for Friends of the Fish Tank TBA

Action Items

(who needs to do what that hasn’t been recorded in a bug) We should assign people to the open items.

NEW

OPEN

  • Need to reward the nominees of the friends of the fish tank from this year!

CLOSED

Status of the SeaMonkey Buildbot Master and Tree

  • No Windows langpacks since 8th April on trunk. Needs investigating.

    • Comment from mcsmurf on this: Not clear what is meant by this, please clarify. xpi/win32/ folders on FTP server look fine. Also file a bug if something needs to be investigated/fixed.
  • The Java on Linux bug has been tracked down to being due to our (SM’s) build config. Basically our RelEng team needs to check whether we can switch to linking libstdc++ dynamically, like FF and TB do. See: bug 754622 Oracle/Sun Java jre1.7.0_04 and later does not work in SeaMonkey.
    • In the mean time, InvisibleSmiley has added the workaround to the 2.17 and 2.18 release notes.
  • Tinderbox is going to be EOLed. We need to move the SeaMonkey tinderboxpushlog off.
    • Mostly done now, just a few loose ends.

    • Callek has gotten up and running a newer version of TBPL (that doesn’t depend on tinderbox) for testing. This will be deployed eventually to replace the current TBPL code we are running.
    • Mcsmurf needs to talk to Callek to see if tbpl can get more memory (some PHP(?) setting?) as sometimes fetching a log fails due to not enough memory (See bug 845844).
  • Intermittent issue with Mac OSX64 Debug Leak log comprehension. Issue tracked in bug 774844. Also see possibly related Thunderbird bug 806492.
  • Two remaining machines on Parallels are the buildmaster (cb-seamonkey-linuxmaster-01) and Linux64 (cb-seamonkey-linux64-01). These need to be migrated to ESX. Specifically:
    • sea-vm-linux64-1 will replace cb-seamonkey-linux64-01 (and running jobs now).

    • sea-master1 will replace the current buildmaster.
    • Both our buildmaster and cb-seamonkey-linux64-01 are down due to hardware failure. This means no builds and no releases until they are replaced. After two days of help from DCOps, Callek has decided to cease all recovery operations and concentrate on setting up the puppetmaster to get the ball rolling on getting our new buildmaster out. Therefore, our 2.18b5 and our 2.18 release are cancelled. instead will go directly to the 2.19 series of betas.
  • bug 740633 set up seamonkey HPs in scl3. Hardware installed and iLO configured. CentOS 6.3 installed.
    • Awaiting puppetmaster fully prepared to instantiate as Linux Mock-Based slaves
  • sea-puppet (one of said hp machines) is ready to be configured as a puppet master (bug 827079), needs audit of the manifests and settings creation.
  • comm-* will be building out of mozilla-* eventually. Jcrammer is working on this.
  • release.mozilla.org does not track the SeaMonkey project anymore (bug 850339) [WONTFIX]. Instead SeaMonkey URLs pointing to releases.mozilla.org have been redirected to ftp.mozilla.org bug 871120.
  • bug 865976 Cannot build SeaMonkey on Linux since Bug 842927 (Implement DOM3 KeyboardEvent.key only for non-printable key, first)

Release Train

  • SeaMonkey 2.18b4 shipped May 3.

  • Due to hardware failure, SeaMonkey 2.18b5 and SeaMonkey 2.18 are cancelled.
  • Instead will go directly to 2.19 series of betas and by the 24th June, the 2.19 final. This means that users of 2.17.1 will be going directly to 2.19.
  • If Firefox decides to do a dot release, we might go for a 2.18 later.

Extensions Compatibility Tracking

  • See Basics page. Please only list current changes here.

  • Addon Compatibility Listings
  • There are now Lightning versions for both SM 2.17.x (Lightning 2.2b1) and SM 2.18 betas (Lightning 2.3b1) available on AMO.
    • Might need to point out in release notes that users needs to install the Lightning beta versions for the SeaMonkey releases (as Lightning follows Thunderbird 17.0.x release schedule)
  • Shipped extensions (DOMI, CZ, Venkman) compatibility:
    • Extensions are now compatible by default thus mitigating the issue. Although some people still disable c-b-d and run into issues.

    • SeaMonkey 2.18 will ship ChatZilla 0.9.90
  • Our build team needs to automate DOMI branch selection rather than having to tweak the client.py every 6 weeks. bug 763506
    • Meanwhile Callek made some changes to the tags that SM pulls (CZ, Venkman, DOMI) for comm-central. See comm-central changeset 347b255c4810.
  • Nightly Tester Tools is being actively developed by xabolcs (coder) and whimboo (reviewer) to make it more compatible with comm-central in general and SeaMonkey in particular. See Issues · mozilla/nightlytt · GitHub.

2.x (Last, Current, Next)

  • [From a previous meeting:] There is a problem with the metrics server, so no current data is available

  • See Basics page for the usual reminders.
2.17

open tracking (0)
tracking requests (1)
targeted (0)
fixed (10)

2.Next
  • Current breakages:

    • Nothing significant at the moment.
  • Mozilla-central bugs that affect us:
    • Note: Please file bugs if you notice any landing on mozilla-central that might break us. Please don’t depend on Ratty noticing such landings.

    • bug 769764 move proxy resolution to separate thread and remove sync api. Tracked in:
      • MailNews bug 791645 Rewrite calls to synchronous nsIProtocolProxyService::DeprecatedBlockingResolve with Async code before DeprecatedBlockingResolve disappears as well.
    • bug 737615 Remove use of synchronous cache API from unit tests. Tracked in:
      • bug 804972 Remove synchronous calls to nsICacheSession::openCacheEntry in SeaMonkey tests.

      • Mcsmurf says this is almost fixed but there was a test failure. He will close this bug and open a new one for the failure.
    • bug 793634 Force builds to be compatible with gtk 2.18/glib 2.22. Tracked in:
      • bug 795354 Migrate SeaMonkey Linux builders to CentOS 6.

      • bug 794772 Port |Bug 713802 – Build with GIO support (and drop GnomeVFS)|. This is dependent on bug 795354.
    • bug 795144 default –disable-gnomeui icon theme support
      • porting bug needed for the two configure.in changesets? Changes could be folded into bug 794772 above. *** IanN and Ewong are looking into this..
    • bug 839034 move markPageAsXXX methods to nsINavHistoryService. Tracked in:
      • bug 845895 Fix markPageAsXXX usage in Seamonkey.

Feature List, Planning

Private Browsing is now mostly complete and uplifted to 2.18. Most things should work but some edge cases have probably been missed. Hopefully any remaining bugs will be found before its release.

  • Testing would be appreciated! Please file bugs as blocking the meta bug 460895.

  • We need to figure out if we want a new about:privatebrowsing page which someone will have to write (bug 842439). We also don’t have any help content yet.

Bug statistics for the last two (full) weeks: 35 new, 14 fixed, 14 triaged.

  • Low-Medium triaging effort.

Open reviews/flags:
23 review
7 super-review
2 ui-review
6 feedback

  • bug 847546 Support Retina Display (HiDPI) on SeaMokney on MacOS X.

    • Ratty thinks we will need 2x PNGs as well as other changes. See Core Tracking bug 785330 for supporting HiDPI mode (Retina Display) on Mac OS X.
  • See Feature List page for major wanted/needed features.
    • Ratty suggests featuring one or more bugs from that page at each meeting.
  • Featured helpwanted bugs:

Good First Bugs

  • Note: The GFB list is open to all including our regular contributors.

  • Ratty is working on an updated GFB list, suggestions welcome.
  • New GFBs recently added:
  • Currently there are 24 GFBs open, 2 are being actively worked on. bug 735333 needs some help getting this running on the try-server. Mcsmurf is assisting.
  • List of Open mentored bugs.
    • Ratty notes that there are 23 bugs that are GFBs but without the mentor keyword. These need to be audited to see if they are really suitable as GFBs.
  • Mentors of stalled bugs should try to communicate with the assignees and if they can’t work on them any more to unassign/free up those bugs.

Roundtable – Personal Status Updates

Status Updates from developers – what are you working on, what’s the progress, any other comments? (feel free to add yourself to the list if your name is missing and you have interesting status).

Callek

Fixed:

  • bug 867870 Add SeaMonkey 2.18 Beta 4 to bouncer.

Working on:

  • bug 870191 Add SeaMonkey 2.18 Beta 5 to bouncer.

To Do:

  • bug 740633 set up seamonkey HPs in scl3.

  • bug 817383 SeaMonkey needs new (public) GPG key, in order to support signing releases properly.
  • bug 827079 Setup SeaMonkey PuppetMaster.
  • bug 827178 Update stage.m.o cron to match recent changes with ffxbld cron.
  • bug 845844 Deploy updated tbpl to tbpl.drapostles.org.
ewong
  • Fixed:
  • Review:

    • bug 739056 – Port |Bug 715099 – Convert nsProfileMigrator to JS so we can use JS modules on migration| to SeaMonkey
  • Working On:

    • bug 633937 – Port bug 562048 to suite.

    • bug 796994 – Use filepicker’s open() instead of the obsolete show() in /suite/*
    • bug 834690 – Port |Bug 569342 – Find bar should not be enabled in about:addons| to SeaMonkey
    • bug 834691 – Port |Bug 632233| to SeaMonkey (XULBrowserWindow.onLocationChange looks for a “disablefastfind” attribute in all content documents before ruling them out)
    • bug 837649 – [Tracking Bug] Stop OSX 10.5 support for SeaMonkey project
    • bug 837650 – Stop support for OSX 10.5 in suite/ tree
  • To Do:
IanN
  • Some testing, reviewing and commenting.

  • Fixed:
  • Checked in pending review:
  • Waiting for feedback/review:
  • Fixing review comments before checkin:
    • bug 757230 When using add button for permissions in Data Manager set a displayHost

    • bug 798147 Switch to correct pref pane if pref window already open
    • bug 778534 Use image instead of html:img in instant messaging
  • Working on:
    • Various SM Council documents.

    • bug 606683 Allow customization of toolbar in Composer and MailNews Composition
    • bug 639690 [META] Re-arrange code between editor and editorOverlay
    • bug 773979 [META] Switch to new drag and drop api in SeaMonkey
    • bug 657234 Move pasteQuote and pasteNoFormatting into contentAreaContextOverlay
    • File/Folder selection in windows.
  • To Do:
    • bug 639395 Get cmd_fontSize to reflect current state of selected content / content at caret.

    • Prefs-in-a-tab.
    • Create FAQ for Friends of the Fish Tank.
    • Help get composer standalone builds working with –enable-tests.
mcsmurf
  • Fixed bug 867008 Remove previous calls to PlacesUtils.backups and move them to PlacesBackups (SeaMonkey)

  • Fixed bug 864271 Permanent orange: TEST-UNEXPECTED-FAIL | browser_dataman_basics.js | Test timed out
  • Fixed bug 863426 Port test fixes from |Bug 854467 – can’t un-set the clicktoplay flag on an nsIPluginTag| to SeaMonkey
  • Fixed bug 863672 Port configure.in changes to comm-aurora
  • Worked on bug 840474 Clicking on new mail notifcation opens two MailNews windows when no MailNews window is open (new feature disabled for SeaMonkey 2.18 due to this bug)
  • Filed bug 868205 Click-to-play pref (plugins.click_to_play) broken in SeaMonkey}}
  • Filed bug 869965 New: Background url bar color when vitising a SSL page does not cover the whole url bar
  • Filed bug&created patch bug 870290 [SeaMonkey] (perma-orange) TEST-UNEXPECTED-FAIL test_hang_submit.xul | Test timed out. (Broken plugin crash reporter submit link)
  • Filed bug&created patch bug 871291 Replace CSS selector -moz-locale-dir with chromedir selector inside pluginProblem.css
  • Created patch for bug 867068 Switch SeaMonkey to new Places async API
  • Created patch for bug 798278 Implement multiple plugin doorhanger UI (Port Bug 797677 and Bug 754472)
Ratty

Waiting for check-in on CLOSED TREE:

  • bug 870728 The Geolocation prompt should not offer action in PB mode if the action remembers permission for more than a session.

    • Landed on comm-beta (2.18b) a=CLOSED TREE.
  • bug 871536 Mitigate clickjacking of about:certerror.
  • bug 871541 Remove updateIcon from tabbrowser since it has only one consumer.
  • bug 871548 Query params sent when reporting a phishing site could contain sensitive info.

Working on:

  • bug 870413 Implement permission prompt for desktop notifications in SeaMonkey.

Other stuff:

  • Did some reviews.

  • Bug triage and Bug discussions.
  • Usual end user support and PR in newsgroups and Mozillazine.
rsx11m

Fixed on trunk:

  • bug 867210 Put “Display emoticons as graphics” in a new line.

Fixed on comm-beta:

  • bug 849359 Print button is misaligned in the Composer and Message Composition toolbars with the Modern theme.

Working on:

  • bug 868419 Update Help for Mail & News Message Display preference pane.

Filed:

  • bug 868486 Session restore logic appears broken in Browser preference pane.

  • bug 868495 Browser main preference pane cut off in Windows 7 with hardware acceleration.

Follow-up discussions:

  • bug 861471 Update the SSL preference pane after bug 733642 changed preference names and semantics.

Other:

  • Bug triage, testing, and commenting for SeaMonkey and MailNews Core.

  • End-user information and discussion on MozillaZine

Any other business?


SeaMonkey Meeting Details

Meeting NotesMozilla Platform: 2013-05-14

Actions

  • jst and lmandel to find owner for Orange Factor bug 858948

Notices/Schedule

24 bugs (?? bugs last week) 38 bugs (32 bugs last week)
Unresolved Aurora 23 Trackers (non-security, not tracked for Beta) Unresolved Beta 22 Trackers (non-security)

Key Issues

Threads

Products/Projects

Firefox Desktop

  • Social API

    • Shane Caraveo landed the “Share panel” (bug 818675), which significantly improves the social API’s “share” capabilities
  • Form history/autocomplete back-end changes

    • Mark Hammond chased down the last few test failures blocking back-end refactor of autocomplete/form history (bug 566746, bug 697377)
  • Australis

    • Work continues. Star button changes were reverted, several changes to the toolbar and find bar behaviors landing now.
  • XUL Panel improvements

Firefox Mobile

Usability, Responsiveness, and New Features
  • Lots of WebRTC patches landed last week

    • bug 862883 Enable webrtc mochitest automation for FxAndroid

    • bug 866093 application crashed [@ webrtc::VoEExternalMediaImpl::SetExternalRecordingStatus(bool)]
    • bug 869477 WebRTC UI permissions no longer shown
  • Reflow on Zoom on double-tap only patch has been r+’d, Scott is working through some breakage in the vkbOverlap test before landing bug 847872.
  • ANR Reporter is ready for privacy review: bug 863777 – Teach ANR reporter to use the profiler to get a native stack
  • Implementing WebSockets for bug 834033 – Implement Push Notifications for Android
Stability Wins

bug 778459 – java.lang.OutOfMemoryError: at org.mozilla.gecko.AwesomeBarTabs.updateFavicon()
bug 827248 – java.lang.OutOfMemoryError: at org.mozilla.gecko.AboutHomeContent.getTopSitesThumbnails()

Stability

  • Benjamin Smedberg’s patch from bug 831768, which reduced Flash crashes and hangs by a quarter on beta, is shipping on release today with Firefox 21.

  • Jan de Mooij deduced a testcase for #4 topcrash bug 851934 (outlook.com) from full dumps within 24h of being assigned there, and realized he had already fixed this for 22 in bug 867482! Unfortunately too late for 21.
  • Is there anything more we can do about : bug 752828 – android.database.sqlite.SQLiteDatabaseLockedException: database is locked at android.database.sqlite.SQLiteStatement.native_executeSql(Native Method) on ICS ?
    • it’s one of the top bugs for all channels for FFX for Android.

OrangeFactor

  • Past week’s OrangeFactor: 8.66 (Previous Week: 7.63).

  • No significant changes from last week.
  • bug 861176 – “Intermittent cppunittests TEST-UNEXPECTED-FAIL | TestSTSParser.exe | test failed with return code 4294967295 | Couldn’t get the profile directory.” Affects all branches. Needs an owner from RelEng.
  • Suggestions for moving OF downward?
  • 17 intermittent failures fixed in the last week – List – Thanks!.

Roundtable


Platform Meeting Details

  • Tuesday 2013-05-1411:00 am Pacific

  • Dial-in: conference# 98411
    • US/International: +1 650 903 0800 x92 Conf# 98411

    • US toll free: +1 800 707 2533 (pin 369) Conf# 98411
    • Canada: +1 416 848 3114 x92 Conf# 98411
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 98411
  • Engineering Vidyo Room / Warp Core / SFO-Boardroom / Tor Commons
  • join irc.mozilla.org #planning for back channel

Burning Edge - FirefoxFirefox Nightly 23, weeks 1-6

Speed & memory:

  • Fixed: 805241 - JS: Merge the new baseline compiler.
  • Fixed: 804676 - JS: Remove dependence of Ion compilation on ScriptAnalysis::analyzeTypes.
  • Fixed: 825928 - Graphics: Layers refactoring.
  • Fixed: 865546 - Graphics: Large scaled images in SVG's cause choppy scrolling.
  • Fixed: 854803 - Graphics: Images on slow network continously use 1 full core.
  • Fixed: 600307 - Rewrite and cleanup DOMStorage code.
  • Fixed: 566746 - Form history should use asynchronous storage API.
  • Fixed: 697377 - Form Autocomplete should use asynchronous storage API.

For more, read Taras's Snappy blog and MemShrink blog posts.

New web technologies:

  • Fixed: 765780 - Enable plugins and JavaScript in designMode.

For more, read Firefox 23 for developers.

Security & privacy:

  • Fixed: 838692 - Don't allow navigating named targets from sandboxed iframes.
  • Fixed: 549697 - Add click-to-play plugin UI to the addon manager.
  • Fixed: 834836 - Turn on pref to block mixed active content.

Other notable fixes:

  • Fixed: 858538 - Download-attribute kills WebSocket connections.
  • Fixed: 560072 - Object.getOwnPropertyDescriptor throws for many DOM objects.
  • Fixed: 485149 - Using box-shadow on a <fieldset> with <legend> does not follow box shape.
  • Fixed: 857820 - Drop only blink effect from text-decoration: blink; and completely remove <blink> element.
  • Fixed: 369180 - Proxy Authentication required while typing Search String.
  • Fixed: 649216 - Remove unnecessary delay when clicking tab close buttons sequentially.
  • Fixed: 636564 - [Mac] Lion-style floating scrollbars.

Sources:

Mozilla Add-ons BlogJetpack Project: weekly update for May 14, 2013

WE SHIPPED!!

Unless you’re hiding under a rock, you are probably aware that the Mozilla Project has released Firefox 21 today. Additionally, unless you’ve been completely ignoring my recent posts on this blog, you might also realize that Firefox 21 signals a new chapter in the life of the Jetpack project, as we ship the SDK’s module loader and APIs in Firefox 21.

To me this is a big deal, for add-on developers, for Firefox developers, for the entire project. I’d like to thank everyone involved for all the hard work, but in particular there are a few people who deserve special mention:

  • Atul Varma & Aza Raskin started Jetpack in 2009 in Mozilla Labs, then rebooted it in 2010, ushering in the modern era of content scripts, CommonJS modules the command-line cfx tool and Add-on Builder.
  • Dietrich Ayala, David Mason, Myk Melez & Brian Warner who guided the project through the ‘re-boot’ phase, always with an eye to landing Jetpack’s capabilities in Firefox and revolutionizing how Firefox features are made.
  • Dave Townsend, Irakli Gozalishvili and the rest of the current Jetpack team who have done a ton of work coordinating a series of important changes to make the SDK fit nicely into mozilla-central.
  • Various Mozilla Labs engineers including Shane Caraveo, Anant Narayanan, Andrew Sutherland & David Ascher who kicked the tires and built prototyped their own crazy ideas based on our shaky prototypes and beta releases.
  • Our fantastic contributors who keep showing up with great code for new features and bug fixes.

Now that we ship with Firefox I have decided to dial back the frequency of these posts to every 6 weeks on uplift and instead highlight for developers the new features and bug fixes that have landed in the recent Nightly cycle. As always if you have questions, feedback or want to get involved you can find us on the wiki, on the email list and of course in #jetpack on irc.mozilla.org.

Quick Stats

Note: the stats above are based on the queries I linked to for each item. If you have suggestions on how these queries might be made more accurate,please comment below. Stats generated at 2013-05-14 10:39:08 PDT

hacks.mozilla.orgPushing Firefox OS Apps to the Geeksphone

A push to device feature was added in the 3.0 release of the Firefox OS Simulator. This feature allows web apps to be pushed to a connected device by clicking one button in the Simulator Dashboard. Availability of the Developer Preview Phone from Geeksphone has raised interest in the feature, so this post will detail how to configure your Geeksphone and the computer running the Simulator to make use of it.
Firefox OS Simulator on a Mac

Setting Up the Geeksphone Device

To push apps to the Geeksphone Firefox OS Developer Preview phone, you first need to enable Remote debugging. This can be done from the Settings app by selecting Device information > More Information > Developer -> Remote debugging. Now we are ready to configure the computer running the Simulator.

Windows

The team at Geeksphone recently released a set of drivers for Windows to support USB communication with their phones. The drivers are available at Geeksphone’s Web Site (direct ZIP link).

To install them, first download and extract the zip file to a known location on your system. Next, connect the phone to your machine using the provided USB cable. Click on the Start Button and enter “Device Manager” in the Search programs and files text entry field and press enter. This will launch the Windows Device Manager. Alternatively, you can launch the Device Manager from the icon located in the Windows Control Panel.

Device Manager before driver installed

The connected phone will be listed under the Other Devices category. Right click on the Android label and select Update Driver Software….

Right Click options

In the Update Driver Software dialog, choose Browse my computer for driver software.

Update driver dialog

Locate the usb_driver folder from the Geeksphone download and make sure the Include subfolders checkbox is checked. Click on the Next button.

Locate Driver

You will most likely receive a Windows Security alert. Select the Install this driver software anyway entry.

Windows security alert prompt

This will install the proper USB drivers and list the phone as Geeksphone Device in the Device Manager.

Device manager with drivers updated

Launch the Firefox OS Simulator. The Dashboard should now contain a Push button and a Device connected message, and you should be able to add your Firefox OS app to the Simulator and push it to the phone.

Linux

If you are running the Simulator on a Linux machine, you will need to create or modify a udev rules file for the device. This process is described in “Setting up a Device for Development” (Steps 3.a and 3.b). The Geeksphone Firefox OS Developer Preview phone idVendor attribute is “05c6”, so your android.rules file should contain an entry similar to:

SUBSYSTEM==”usb”, ATTR{idVendor}==”05c6”, MODE=”0666”, GROUP=”plugdev”

After making the above changes, either reboot the system or restart the udev service:

sudo service udev restart

If you make these changes and the push to device button does not show up in the Simulator Dashboard, please see this workaround.

Mac

If you are running the Simulator on a Mac, no additional configuration is required to enable push to device.

Reference

Additional information about setting up and using the Firefox OS Simulator, including installing, adding apps, debugging and using the push to device capability can be found on the MDN page for the Firefox OS Simulator.

SUMO BlogWhat’s up with SUMO – May 13

Big things this week

The Mozilla BlogFirefox for Android Includes Open Source Fonts and HTML5 improvements

Firefox for Android comes with the custom, open source fonts Charis and Open Sans to make the Web more beautiful and easier to read on your small screen. The Web is made up almost entirely of text and sometimes reading text can be difficult on small phone and tablet screens. These new fonts will replace the three available Android default fonts to enable a more visually appealing and clear reading experience on the Web. The difference is subtle, but beautiful.

Firefox for Android includes HTML5 compatibility improvements as tested on HTML5test.com, the leading industry HTML5 compliance test. Firefox Firefox scores 421 and 14 bonus points (out of a total of 500).

Thanks to the hard work of the many Mozillians who contribute to building the best mobile browser, Firefox for Android now has an average rating of 4.5 stars in the Google Play Store. Whoo-hoo!

For more information:

The Mozilla BlogStay Social with Firefox

Social sites are a key part of online life and with Firefox we want to make it easier to use the Web the way you want.  Mozilla developed the Social API to enable social providers to integrate directly into Firefox to make your browsing experience more social, customizable and personal. The Social API makes it easy for your favorite social providers to add a sidebar with your content to Firefox or notification buttons directly on the Firefox toolbar.

Last year we launched with Facebook as the first social integration partner in Firefox. Today, we are adding multiple new social providers Cliqz, Mixi and msnNOW to Firefox, in addition to Facebook Messenger for Firefox, to help you stay connected to your social networks, no matter where you go on the Web.

The new social providers in Firefox make it even easier for you to keep up with friends, family, news and events while you surf the Web. You can get real time updates about news activity, entertainment or your personal network while you browse the Web.

New providers you can now add to your Firefox include:

Cliqz:

CliqzFinal

Cliqz delivers a real-time stream of the most relevant articles, stories, and videos based on your interests directly to Firefox. In the upper left of the sidebar, you can personalize your news feed by selecting categories, keywords, websites, and specific people you want to follow. Share links across your social networks or by email; preview Twitter commentary; and save articles for later without ever leaving Firefox.

To activate, visit the Cliqz activation page and click “Activate Cliqz.

Mixi:

Mixi

The Mixi sidebar let’s you easily stay in touch with your friends on the Mixi social network in Japan. It provides a real-time activity stream of all comments and photo shares from your personal social network directly to your Firefox browser. Mixi for Firefox is only available to users in Japan.

msnNOW:

MSN Screen shot

msnNOW makes it easy to stay up to date on the things people are talking about, searching for and sharing the most on Web. MSN scours the most interesting trends from real-time sources like Facebook, Twitter, Bing, and BreakingNews.com, so you’ll always know what’s happening and get the jump on what everyone is talking about. You can customize the activity stream to watch for particular types of trending content from the sidebar dropdown menu.

 To activate, go to the msnNOW page and click “Turn it On.”

The Social API has endless potential for integrating social networks, e-mail, finance, music, cloud possibilities, services, to-do lists, sports, news and other applications into your Firefox experience.  We designed the Social API to make it easier and more convenient to use the Web the way you want.  Soon we’ll add even more ways to integrate your favorite Web services into your Firefox Web experience.

For more information:

BlueGriffonBlueGriffon 1.7

I just released BlueGriffon 1.7 for Windows (XP, 7, 8), OS X (10.6 to 10.8) and Ubuntu (12.04 and 13.04, 32 and 64 bits). You can find it here.

about:communityJean-Claude Van Damme loves Mozilla

TintinI’m making that up of course.

Brussels is home to Tintin (image on the right), a chocolate museum (Mozilla tour please), and Fosdem,  giant Open Source event.)  It’s the capital of the European Union and the likely host of the Mozilla Summit 2013 (it’s also the birth place of Jean-Claude!)

Yes, after an amazing search for just the right spot for the third Summit location, we are focusing our attention to Brussels, Belgium.  The event venue we have our eye on is called The Square.  Check it out, seems spot on for Mozilla (creative, colorful, fun.)  We will have about 5 hotels (rather than one large one like we’ll have in Toronto and in Santa Clara.)  Here’s a map of where they all sit relative to the event space — each walking distance from it.  Think Olympic Village.  And, the best news is that Brussels is 1.5 hours from Paris, 2 from London and close to many others by train.

Next up, invitations.  Volunteers who have been selected to attend the 2013 Summit will receive email notification on May 20th.  The email will be linked to a list of assigned venues by person.  There will also be an option to participate in a lottery to attend an alternative Summit location (somewhere other than where you were assigned.)  We will select about 10% of the group (~90 people) to attend an alternative site by the end of May.

As for staff, we will kick off the site-selection process the last week in May.  Most of Mozilla’s staff will know where they are headed prior to the Planning Assembly (June 14th).

We are aiming for official registration to kick off in early July after which time we’ll start booking travel and hotels and kicking off any immigration proceedings that need to be proceeded.

As always, if you need anything or have questions, please ping me on IRC #summit2013.

Meeting NotesMozilla Project: 2013-05-13

All-hands Status Meeting Agenda

Items in this section will be shared during the live all-hand status meeting.

Friends of the Tree

  • Thanks to all of the new contributors who helped with Firefox 21 and thanks to Josh and Seif for creating the report on activities for the release.

  • Anthony Hughes would like to thank (hopefully I don’t forget anyone) Simona Badau, Bhavana Bajaj, Juan Becerra, Carsten Book, Ioana Budnar, Raymond Etornam, Mike Hommey, Cornel Ionce, Michael Kaply, Alexandra Lucinet, Manuela Muntean, Phil Ringnalda, Gavin Sharp, Paul Silaghi, Hong Tang, Nick Thomas, Mihaela Velimiroviciu, Justin Wood, and Hector Zhao for working hard over the weekend to ensure we ship a top-quality Firefox 21 to all of our users on Tuesday.

Upcoming Events

This Week
  • JavaScript team work week in Santa Cruz – AGENDA
Monday, 13 May
Tuesday, 14 May
  • 13:00 Security Champions

    • “MTV-2J JK”; “SFO-7B The Warfield”; “TOR-5N Spadina”

    • Vidyo: 2J
    • Dial-in Info (phone):
      • In office or soft phone: extension 92

      • US/INTL: 650-903-0800 or 650-215-1282 then extension 92
      • Toronto: 416-848-3114 then extension 92
      • Toll-free: 800-707-2533 then password 369
      • Conference num 95227
      • IRC Backchannel: #security
Wednesday, 15 May
Thursday, 16 May
  • Grow Mozilla discussion at 10 AM pacific — a forum for discussing community building at Mozilla

Friday, 17 May

Product Status Updates (voice updates)

Firefox Desktop/Mobile

Speaker Location: Vancouver (johnath)

  • Release week!

    • Thanks for the last minute push, everyone
Webmaker

Speaker Location: Ryan Merkley, Toronto

Firefox OS

Speaker Location: No Audio. Yo.

Grow Mozilla

Speaker Location: San Francisco

Help us build a history of Mozilla told by Mozillians. Please share your memories about this Mozilla milestone:

60 Seconds with Mozilla IT

Speaker Location: mrz in SF

  • Mozilla IT made some changes last week.

Speakers

Presenter Title Topic Location Share? Media More Details
Who Are You? What Do You Do? What are you going to talk about? Where are you presenting from? (Moz Space, your house, space) Will you be sharing your screen? (yes/no, other info) Links to slides or images you want displayed on screen Link to where audience can find out more information
Diane Bisgeier Program Manager, WebFWD Help us recruit the next cohort for WebFWD – deadline is June 5! http://webfwd.org Mozilla San Francisco No screen share – just showing off the schwag you can get if you refer a team to our next class. Here’s the messenger bag :) > https://www.facebook.com/photo.php?fbid=361822707265407&set=pb.218655251582154.-2207520000.1367814592.&type=3&theater Details on WebFWD at http://webfwd.org
Dethe Elza Lead Developer, Collusion Sneak peek at Collusion 1.0 Pre-recorded demo video Yes, playing video from Toronto Popcorn demo video version learn more about Collusion
Dia Bondi (IRC thejudge) Head of Knowledge Cultivation Capture Mozilla is Air.Mozilla too! + Badges San Francisco No https://air.mozilla.org/channels/culture_and_context/
https://badges.mozilla.org/en-US/
https://air.mozilla.org/channels/

Introducing New Hires

New Hire Introduced by Speaker location New Hire location Will be working on
Travis Choma Bill Walker Mountain View San Francisco Software Architect, Apps
Peiying Mo Chris Hofmann Mountain View Mountain View Senior Localization Program Manager
Sole Penades Frederic Wenzel Mountain View London, UK Senior Web Developer, Developer Ecosystem
Candice Serran Sheila Mooney Mountain View San Francisco FirefoxOS

Introducing New Interns

New Intern Introduced by Speaker location New Hire location Will be working on
David Zbarsky Fabrice MV MV FFX OS
Mohammed Almeshekah Camilo Viecco MV MV Security Engineering
Subhadeep Paul David Zeber SF SF Metrics

<meta>

Notes and non-voice status updates that aren’t part of the live meeting go here.

Status Updates By Team (*non-voice* updates)

QA
Test Execution
WebQA
Automation & Tools

  • Dial-in: conference# 8600

    • US/International: +1 650 903 0800 x92 Conf# 8600

    • US toll free: +1 800 707 2533 (pin 369) Conf# 8600
    • Canada: +1 416 848 3114 x92 Conf# 8600
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 8600

Software CarpentryA Mention in Science Careers

Vijee Venkatraman has written a good article for Science Careers titled "When All Science Becomes Data Science", which mentions Software Carpentry.

hacks.mozilla.orgSpeed Up App Development with X-Tag and Web Components

In the last few years we’ve witnessed an evolution in what ‘app’ means to both developers and consumers. The word app evokes the idea of a rich, task-oriented user experience with highly optimized user interface that responds to its environment and can be used on an array of common devices. In order to make development of rich app experiences easier, native platforms have generated many of their own controls and components that Just Work™.

For other native technology stacks, extensible components are all but assumed – not so much for the web. Soon, that all changes. We are on the verge of a declarative renaissance that will dramatically advance app development for the web platform, and Web Components will drive it.

X-Tag and Web Components offer features that obliterate the status quo for layout, UI, and widget development – here’s a few notable Web Component features:

  • Create real custom elements the browser understands
  • Stop the instantiation madness: $$(‘button.super’).initSuperButton()
  • Remove unmanageable HTML widget guts from your app’s view files
  • Work with sharable components, based on standard technologies

Meet the Web Components Family

Web Components is a group of W3C specifications, quickly moving toward standardization, that provide a robust HTML component model. You should not assume the following specs are implemented in your browser of choice. While these specifications are in various stages of implementation across browsers, you can use X-Tag (with either Mozilla or Google’s prollyfill) today to create custom elements that work well in recent version of Firefox, Chrome, Safari, and stock mobile browsers. X-Tag is a powerful sugar library primarily focused on wrapping and enhancing one of the draft-state Web Component specs: Custom Elements (document.register). We’ll get to X-Tag shortly – but for now, let’s quickly review the key features of each spec:

Custom Elements

Custom Elements provides you a way to create new elements for use in your environment. There are two ways to declare a new custom element, the imperative DOM API – document.register(), and the declarative HTML tag – (whose DOM constructor is HTMLElementElement). After declaration, new custom elements can be created in the same ways native elements are, such as document.createElement, presences in original source (the markup of a page), and innerHTML, etc.

Here’s an example of what a custom element registration looks like in both the declarative and imperative styles:

document.register('x-foo', {
  prototype: Object.create(HTMLElement.prototype, {
    readyCallback: { 
      value: function(){
        // do stuff here when your element is created
        this.innerHTML = '<div>Barrrr me matey!</div>';
      }        
    },
    bar: {
      get: function() { return 'bar'; },
    },
    // add more properties to your custom prototype
    // ...
  })
});
<element name="x-foo">
  <script>
    if (this !== window) {
      this.register({
        prototype: {
          readyCallback: { 
            value: function(){
              // do stuff here when your element is created
              this.innerHTML = '<div>Barrrr me matey!</div>';
            }        
          },
          bar: {
            get: function() { return 'bar'; },
          }
        }
      });
    }
  </script>
</element>

Shadow DOM

The Shadow DOM allows you to encapsulate structural and supporting elements within components. Elements within nodes remain visible for purposes of display UI (depending on the type of element and your styles), but are hidden from the rest of your application code, unless you explicitly cross the shadow boundary.

HTML Templates

HTML Templates bring simple DOM templating and markup reuse to the web platform – which are often shimmed today using the HTMLScriptElement + DocumentFragment hack-pattern.

HTML Imports

HTML Imports are external HTML documents that contain declarative component definitions. HTML component documents can by imported using the link element with the rel attribute value import. Imported resources may themselves contain additional sub-imports, which the browser then retrieves and performs automatic dependency resolution upon.

Web Components + X-Tag = WINNING

Mozilla’s X-Tag library enhances the imperative (JavaScript) route for creating custom elements. X-Tag’s primary interface is the xtag.register() method – it wraps the soon-to-be standard document.register() DOM API with features and functionality that make development of amazing custom elements effortless.

Creating a Custom Element

Here’s a quick example of what registering a custom element looks like using X-Tag:

xtag.register('x-pirate', {
  lifecycle: {
    ready: function(){
      this.innerHTML = '<blockquote>' +
                         '<img src="pirate-1.png"/>Barrr me matey!' +
                       '</blockquote>';
    }
  },
  accessors: {
    src: {
      // X-Tag's attribute sugar relays any value passed to the src 
      // setter on to the src attribute of our <x-pirate> and its
      // <img> element (specified by CSS selector), and vice versa.
      attribute: { selector: 'img' },
      set: function(){
        // When a <x-pirate>'s src attribute/setter is changed, we 
        // stop everything to announce the arrival of a new pirate.
        // Ex: doc.querySelector('x-pirate').src = 'pirate-2.png';
        alert("There's a new captain on deck ye scurvy dogs!");
      }
    }
  },
  events: {
    // This is an example of X-Tag's event and pseudo systems. The
    // "tap" custom event handles the dance between click and touch,
    // the ":delegate(img)" pseudo ensures our function is only 
    // called when tapping the <img> inside our <x-pirate>.
    'tap:delegate(blockquote > img)': function(){
      alert("A pirate's life for me!");
    }
  }
});

To the Democave Batman!

We’re actively working on a custom element UI toolkit and style pack that will make development of app interfaces a breeze. It’s still in very early stages, but we have a few demos for you.

Get the Code

Head over to X-Tags.org and grab the code to develop custom elements of your own. After you get the hang of things, start contributing to our open source effort!

QMOContributor Spotlight: Glenn Howard

ghowardThis month WebQA would like to extend thanks to Glenn Howard, and to highlight some of his work for our team. Glenn is an automation engineer who has made a big impact on our wiki-tests repository! You can see the projects he’s helped out with on Github:

https://github.com/glennhoward

Glenn has been contributing for a year and a half so far. He manages to fit it in on top of his job- and we really appreciate the time and effort he puts in! He puts in a few hours per week, whenever he has spare time. This kind of regular contribution makes a big impact. Any contributor who can help out, even for short bursts of time, makes all of the difference in our projects. Our volunteers make it possible to extend both the depth and breadth of our testing!

“As busy as he undoubtedly is, Glenn still finds time to contribute more than just the great tests for our critical wiki.mozilla.org site — he contributes ideas and exudes enthusiasm for Web testing (and not just Mozilla’s) in a lot of different aspects; we’re always grateful to have him participate in our meetings and mailing-list discussions!” – Stephen Donner

Glenn currently resides in Dublin, Ireland where he works as a full time Automation QA Engineer with Gilt.  While Mozilla headquarters is located in California, our contributors and employees cover the globe. We have people helping out in many different timezones. While our IRC channel definitely has prime times for being busy, you can always try connecting with us there. If you’d like to contribute and have questions about the info on our team page, you can try clicking this link to get into our IRC channel. IRC is where our community comes together to find work, ask questions, and to get to know one another.

We always like to ask our primary contributors how they found us, and what got them started contributing to our team. Here is what Glenn had to say:

 I was looking for some Selenium/WebDriver examples and came across Dave Hunt’s blog, from this I found the mozwebqa team. I had used Firefox for quite some time and when I discovered that I could help give back, as well as learn some python, I couldn’t wait to help out and it went from there.

My favourite type of issue to work on is one that lets me contribute with others and that really gets me thinking. Being able to work with others on tough issues is great as it pushes you and well as lets you learn from others.

When asked what he’d tell a newcomer who was thinking of contributing:

Do it! Not only will you get a chance to work/contribute with some really amazing and passionate people, you’ll also get a chance to expand your own knowledge in the process. I’ve met some really great like-minded people which makes it fun to contribute and help out.

This is an important part of contributing- the ability to network with others. You get the chance to contribute work, but you also meet new folks and learn a lot in the process. Our contributors help knit the fabric of our community and play an important part in getting new folks started.

Glenn has been an incredible addition to our community. His passion for Mozilla’s mission is apparent as he fluently works on projects, helping identify coverage gaps and creating test automation. I’ve enjoyed spying on him and watching as he helps on-board new community members, helping untangle the Mozilla fire-hose of information overload and sharing his infectious excitement with new community members. ~ Matt Brandt

Glenn’s contributions span far beyond his github pull requests! We value all of the people who make the time to become a regular part of our community. Particular thanks go to Glenn for all of his help, the whole QA team appreciates your work!

 

 

 

 

 

 

 

 

 

 

 

 

about:communityMilestone: Phoenix 0.1 released, first version of Firefox

September 23, 2002: Phoenix 0.1 is released, the first version of a browser that will be renamed to Firebird and then Firefox

2002_phoenix

Share in the comments any memories you have of this event, photos of any t-shirts from this period or any other interesting pieces from this time in Mozilla’s history. The information shared here will help us visually create the history of Mozilla as a community.

Firebug BlogFirebug 1.11.3

Firebug 1.11.3 has been released (archive).

Firebug 1.11.3 fixes 15 issues
Firebug 1.11.3 is compatible with Firefox 17-22
 

All users subscribed to AMO beta channel should be already updated to version 1.11.3 beta 1 which is exactly the same as 1.11.3.

 

One little problem related to browser page context-menu slipped into this release. If you experience the menu being unexpectedly long, just restart your browser.

 

Please post feedback in the newsgroup, thanks!

Jan ‘Honza’ Odvarko

 

The Mozilla BlogPersonalization with Respect

Mozilla’s mission compels us to provide people with an Internet experience that puts them in control of their online lives and that treats them with respect. Respecting someone includes respecting their privacy. We aspire to a “no surprises” principle: the idea that when information is gathered about a person, it is done with their knowledge and is used in ways that benefit that person. People should be made aware of how information is collected and used. Each individual should also be able to decide whether the exchange of personal data for the services received in return feels fair. This can be challenging to achieve, especially when balanced against convenience and ease of use: people expect a fast, streamlined user experience without excessive prompts and confusing choices. But we are always striving toward this ideal.

Mozilla is an active participant in the ecosystem of today’s Web economics. Much of the content and information that people enjoy and benefit from is funded by digital marketing and sponsorship. This is a valid business model. We simply believe that when personal data is collected to deliver these services, the collection should be done respectfully and with the consent of the consumer. Commerce works best when users understand the transactions they engage in. The best long-term customer relationships are built on trust.

Mozilla aspires to enable personalization — the customization of ads, content, recommendations, offers and more — that doesn’t rely on the user being in the dark about who has access to that information, and with whom that information is shared. As a major Web browser provider and, now, OS developer, Mozilla’s role is to experiment and innovate toward that aspiration. As an open source project, where contributions are welcomed by all, we encourage all in the industry to help, by constructively proposing approaches and collaborating with us in the open.

Here are a just a few examples of the work Mozilla is doing to explore personalization with respect:

  • Persona is an identity system for the Web. It gives people control over their Web logins. People choose what identity to present to a given service. In particular, people can keep their work, personal, and other facets of their lives distinct.
  • Do Not Track allows you to tell a website that you would like to opt-out of third-party tracking for purposes including behavioral advertising. It lets users express how they would like information about themselves to be handled. It has many benefits. People who use Firefox must actively enable Do Not Track, making it very clear that the user has made an explicit choice Also, Do Not Track is independent of any particular technology, providing resilience in the face of technology evolution. We continue to work with a broad range of interested parties to see the Web adopt Do Not Track.
  • Third party cookie policies are being evaluated to strike a better balance between personalized ads and the tracking of users across the Web without their consent. For example, an experimental version of Firefox allows cookies to be set by first parties and by third parties where Firefox has stored a cookie for the party’s domain, but to block by default third-party cookies whose domain is not known from Firefox’s cookie store. We’ve been evaluating that approach, as well as others, working with stakeholders from across the industry.

It should be possible to delight users (and yes, the right offer at the right time can be a delight), while treating them with respect. We continue to experiment with and evaluate new ways to put users in control of their Web experience and encourage you to join us in building toward this vision. We will share more updates soon.

Mozilla WebsitesA few UX changes. A single page. Millions of new downloads.

We recently designed, tested, and released a new version of our our primary download page for Firefox for Desktop. In our tests, we improved the download conversion rate of the top 3 non-Firefox browsers by over 12%! This alone results in millions of additional downloads annually.

Focusing on the entire funnel leading up to a product download and not just the product itself, is as important as the efforts taken to improve retention of a product. This is one of the approaches that the Websites team at Mozilla is taking to improve and support our products.

 

What is the /new page on Mozilla.org?

This is where the majority of our desktop browser downloads are initiated. For instance, if the user searches for “Firefox”, “Mozilla Firefox”, or “download Firefox” from a desktop browser, the /new URL is the top search result.

 

What did we change?

Though a relatively simple page, we were able to make number of changes across visual design, interaction, technical improvements and overall user experience that had substantial results. How did we do this?

  1. reduced the number of steps to download
  2. simplified number of actions displayed on page and reduced distractions to funnel user directly to download (ie: no link to Fx for Android or other products displayed)
  3. focus on our product – the last page design did not display visuals that focused on the product, but focused more on Mozilla community.
  4. significantly faster page load time
  5. updated style to our responsive Mozilla style guide
  6. inline page interaction that responds immediately to the user’s request for download, resulting in no page refresh for confirmation and installation instructions.

Old Experience – includes page refresh:

Old: landing page Old: file modal Old: thank you, confirmation, download instructions

New Experience – inline interaction, no page refresh:

New: landing page New: inline thank you, confirmation, download instructions

* To experience the inline page interaction yourself, visit the Firefox for Desktop download page.

 

Design Decisions & Testing

We could infer that the outcome of changes such as updating this page to a consistent style as our other Mozilla.org pages and improving page load time alone would have a positive result. However, some of the other changes were more subjective and required testing and validation before releasing to 100% of our users.

Based on common interaction patterns, what we know about how users respond to pages that “feel” responsive to their actions, as well as minimizing distraction, we were able to make many initial design decisions.  To validate the more subjective changes, such as button placement, button style, and animations, we ran A/B tests using Google Analytics Content Experiments.

​An important part of testing is not just validating our work, but exposing interesting facts about our users and issues that may need further attention. For instance, we learned that large percentage of users downloading Firefox already have Firefox for Desktop. This could mean that the user is not aware that we run silent updates, that they are not aware that their version of Firefox is already up to date, that they wanted a fresh copy of the browser, or a number of other possibilities. This is just one of the interesting things we learned that we are looking into for further improvements.

Given the success of these tests, we were very confident in releasing the new experience to all of our users. Our initial improvements to the /new page and download funnel are just the beginning. We will also continue to test improvement possibilities, such as the style of the download button, to learn more about our users and improve the performance of the download funnel.

 

A few stats:

Across the top 3 browsers, we saw a 14% download conversion improvement.

Across all browsers and operating systems, we saw an average of a 4% improvement.​

​Considerable improvements to page load time:

  • ​Time to be able to interact: 46% decrease
  • Time to load page content: 71% decrease
  • Time to execute JavaScript: 35% decrease

Next Steps:

Testing download button styles and placement, translate page for non-english languages, add logic and conditional messaging for all platforms to move towards a unified Firefox download page, improve other touch points within the onboarding funnel by using a similar process of testing and validating with real users.

 

Software CarpentryGit vs. Subversion and Feedback in General

Software Carpentry's mission is to help scientists teach other scientists how to be better programmers. If we want to do that successfully, we need to be scientists ourselves. In particular, we need to base what we teach on evidence, not anecdotes or personal preferences.

For example: we taught Git at the Toronto boot camp last week, and once again I think our learners would have absorbed more if we'd taught Subversion. Why? Well, take a look at this diagram by Oliver Steele (which I found on this page written by Nick Quaranto):

Git Transport

Four locations are in play, and eight different commands are used to move information around or compare what's in one place to another. Now look at the corresponding diagram for Subversion:

Subversion Transport

There are only three locations for people to keep track of, and the basic workflow involves only four commands. If you believe complexity is partially multiplicative (because people have to keep track of the interactions between things, as well as the things themselves), Git is at least twice as complex for people to understand. Slicing it another way, there are more opportunities for people to do the wrong thing with Git, and more they have to understand to undo it. And that's before we introduce branches...

But that's just my point of view, and the fact that I can wrap a plausible story around it doesn't make it true. Matt Davis and others believe they've been successful with Git in front of the same kinds of people. We need to find out who's right, so our major goal for the next three months is to poll and interview boot camp attendees to find out who was taught what, who tried what, who's still using what, and why. Caitlyn Pickens will be leading this effort, and many of you will get email from her in the next few weeks. When it arrives, please take a few minutes to tell us what you're actually doing, even if it's not what we told you to do—especially if it's not, because that'll tell us what we need to fix.

about:communityFirefox 21 New Contributors

We are pleased to reveal that Firefox 21 is brought to you through the hard work of 326 developers. Of these, we welcome the 41 who contributed their first code change to Firefox in this release, 34 of whom were brand new volunteers! Please join us in thanking each of these diligent and enthusiastic individuals, and take a look at their contributions (thanks to Seif Lotfy for collecting this data):

Andreas Wagner: 550175

Benedict Singer: 787134, 795360, 803677, 794180

Catalin Iordache: 813019, 821269, 821396, 821901

ChangZhuo Chen: 778053

David Guo: 747835

Dustin L. Howett: 812647

Ian Patterson: 712748

Jan-Ivar Bruaroey: 794240, 817429, 817430, 816112, 824955, 800538

Jonathan Kamens: 823042

Jorge Luis Mendez: 820117, 820285

Julien Levesy: 811753

Julien Wajsberg: 824695, 825237

Lawrence Mandel: 819732

Marius Gedminas: 364845

Matej Cepl: 800557

Michal Jaskurzynski: 424712

Mohit Gahlot: 818106

Nikolay Bryskin: 650935

Peter Retzer: 784297

Rafael Gieschke: 791419

Ravisankar Sivasubramaniam: 803078

Rik Cabanier: 748433, 809927

Sergiu Dumitriu: 826563

Soumya Deb: 818660, 821968, 821969, 821971

Sriram: 715736

Stefan Arentz: 807659

Stephen Pohl: 813322

Steve Singer: 817356

Thomas Zimmermann: 758103, 809367, 817730

Ting-Yuan Huang: 815473

Tobias Netzel: 812932, 817045, 818004

Usurelu Catalin: 820197

Virgil Dupras: 801450

Walter Chen: 816514

Yura Zenevich: 803067

alex: 815131

groodt: 686228, 813946

ithinc: 656222, 819907, 822068, 822914, 824480

rfw2nd: 553917

zeyu: 813801

zmgmoz: 804845

hacks.mozilla.orgPhones for Apps for Firefox OS

Update: Today, Monday, May 13 at 11:00am PDT, we closed the submission form for the Phones for Apps program. Thanks so much to all of you for your interest and enthusiasm. Your response has been overwhelming! We’ve received thousands of applications, more than we’re equipped to review in a timely fashion.

We’ve started reviewing your proposals, and in the next few weeks we plan to notify application builders and porters who’ve been selected. We regret we can’t respond to the thousands of you with great ideas for apps for Firefox OS. There will be other opportunities to get access to the the Developer Preview device. Please keep working on your apps. We can’t wait to see them in Firefox Marketplace.

Hello HTML5 app developers, the open mobile web is calling.

We know you’re out there, chomping at the bit, coding, testing, reading documentation, downloading and running the Firefox Simulator. And you’re ready to ‘Send to Device.’ You just need to get your hands on a device.

Today we’re announcing a new program with you in mind. We call it: Phones for Apps for Firefox OS.

Firefox Marketplace on the Geeksphone

Firefox Marketplace on the Geeksphone Keon

Maybe you’ve built apps in the past for Chrome, webOS, Blackberry WebWorks, or the PhoneGap store. Maybe you’ve created beautiful web apps for a desktop environment and now you want to port them to mobile. Maybe you’re a student about to start a summer break. We know you may not live anywhere near Bogota, Colombia or Warsaw, Poland, locations of upcoming App Workshops.

Wherever you are

Wherever you are, if you can show you’ve got a great app idea and the skill to build it, we’d love to see your apps in the Marketplace when the Firefox OS launch begins later this summer. And to sweeten the deal, we’ll send a Firefox OS Developer Preview device for you to work with now.

When Firefox OS phones become available to consumers in select locales this summer, you’ll have an opportunity that only comes around once—a first-mover advantage in Firefox Marketplace. End users in Latin America, Eastern Europe and other launch locations will be on the lookout for playful and practical apps to install: games, tools, and utilities as well as locally relevant news, sports, travel, entertainment, review apps, and social sharing experiences. And you can build and submit them now!

Apply now

Tell us about the Firefox App you’d like to build or port. If your proposal is accepted, we’ll send you a Geeksphone Keon. Our device inventory is limited and our launch dates are approaching fast, so act now. This program will close at the end of May or when our limited supply of Geeksphones runs out. There’s a limit of one phone per app proposal. We can’t wait to see what you’re working on. There’s never been a better time to get started.

Apply here.

Mozilla IT60 Seconds with Mozilla IT – May 6

From the May 6 weekly Project Meeting:

Sometimes Mozilla IT shows a different side and brings Mozilla to the classroom.

Meeting NotesMobile: 2013-05-08

Schedule

  • Next merge: 2013-05-13 (3 BUSINESS DAYS!)

  • Next release: 2013-05-14

Friends of the Mobile Team

Give a shoutout/thanks to people for helping fix and test bugs.

  • Chen Dai contributed patches to

    • bug 866487 – MOZ_UPDATER always set to true in AppConstants.java

    • bug 869322 – Screen can’t read the text in input box
  • Abir Viqar landed his first patch! (bonus points for an r+ on first attempt)
    • bug 839434 – Private browsing page opens the pop-ups in normal browsing
  • Tetsuharu OHZEKI continued to file and fix multiple bugs
    • bug 865250 – Clean up BrowserApp.get/setPreferences()

    • bug 867875 – Add the pref to switch reader mode
    • bug 868936 – Use strict equality operator in JSDOMParser.js

Stand ups

Suggested format:

  • What did you do last week?

  • What are working on this week?
  • Anything blocking you?

Please keep your update to under 2 minutes!

GBrown

  • Last week:

    • Investigated bug 867626 Expose Shumway in navigator.plugins

    • bug 865944 Use foreground activity to determine if browser has terminated
    • –> Panda failure rates much better this week
    • bug 868681 Offline apps doorhanger not shown
    • bug 868767 Unable to uninstall org.mozilla.fennec_aurora/firefox_beta and reboot
  • Working on:
    • bug 867626 Expose Shumway in navigator.plugins

    • Follow-up on bug 865944 Use foreground activity…
    • bug 869030 Robocop testDoorHanger causes future reboots on pandas
    • bug 867360 Watcher dies sometimes on Pandas

Chris Lord (cwiiis)

  • Doing

    • bug 866461 – Bing.com constantly resizing with the dynamic toolbar

    • bug 803299 – Use 24-bit colour on 24-bit screens (patches r+’d but backed out due to reftest failures)

Chris Peterson

  • Done

    • Fixed bug 778459 – java.lang.OutOfMemoryError: at org.mozilla.gecko.AwesomeBarTabs.updateFavicon()

    • Fixed bug 827248 – java.lang.OutOfMemoryError: at org.mozilla.gecko.AboutHomeContent.getTopSitesThumbnails()
    • Fixed bug 868604 – JavaScript Warning “test for equality (==) mistyped as assignment (=)?” in “chrome://browser/content/downloads.js”
    • Fixed bug 868673 – Fix -Wtype-limits “comparison of unsigned expression >= 0 is always true” warning in XPFE
    • Implementing WebSockets for bug 834033 – Push API for Android
  • Next

    • Implement System Messages for bug 834033 – Push API for Android

JChen

  • Past week

    • Finished bug 863777 – Teach ANR reporter to use the profiler to get a native stack

      • Doing privacy review now
    • Worked on bug 860879 – ANR @ org.mozilla.gecko.PromptService.finishDialog
      • Have patches for review

      • Going to file follow up bugs
    • Worked on bug 847983 – IME in designmode doesn’t seem to work very well
  • Next
    • Finish bugs from above

    • bug 868566 – Cannot create a new paragraph in a text box on Motorola Support Forums
    • bug 868569 – Cursor selection buttons in Swype don’t work
    • bug 846660 – java.lang.InstantiationException: cant instantiate class char
    • PTO starting next Wed

GCP

  • This week:

    • WebRTC

    • bug 862883 Enable webrtc mochitest automation for FxAndroid
    • bug 866093 application crashed [@ webrtc::VoEExternalMediaImpl::SetExternalRecordingStatus(bool)]
    • bug 863290 crash in webrtc::videocapturemodule::DeviceInfoAndroid::NumberOfDevices
    • bug 869477 WebRTC UI permissions no longer shown
  • Next week:
    • bug 863290 crash in webrtc::videocapturemodule::DeviceInfoAndroid::NumberOfDevices

    • bug 867185 Camera names should percolate upwards to the UI
    • bug 862808 Local Video is upside down on Android when in portrait mode

Brian N

  • Done

    • Ouya bugs

      • Bug 849847 – Make about:home scrollable with the analog stick

      • Bug 868230 – Map gamepad X button to show/hide tabs tray
  • In progress
    • Bug 868553 – Make about:home use a ViewPager
  • Next
    • Other about:home rewrite work

    • Ouya bugs

Sriram

  • Back from vacation

    • More coffee, more sleep, more cricket
  • Exploring quick share menu.

WesJ

  • Vacation

  • Bug 813756 – Payments frontend for Android – Landed! yay!
  • Bug 757481 – Tests for prompt service – have some new wip up
  • Bug 798358 – Hardcoded add-ons on about:home links to author’s desktop site with desktop add-on installs – Landing now
  • Bug 826325 – Decide where window.open should open content – Still trying to find the right solution here
  • Bug 808636 – Update visual style of mobile error pages – http://people.mozilla.com/~wjohnston/netError/index.html

LucasR

  • Last week

    • Bank holiday

    • bug 869166 – Add space between URL bar and tab curve
    • bug 869022 – Fade tabs button and menu away when tabs panel is open
    • bug 868460 – Tidy up animation bits
    • bug 867554 – New sidebar animation on tablets
    • bug 860121 – Animating the landscape tab menu on tablets yield a white gap between the sidebar and the tab count button
    • bug 866466 – Opening a remote-tab from tab-menu overlays view onto the regular and private tabs menu
    • bug 867141 – Unable to close regular tabs after closing last private tab
    • bug 865228 – Misc improvements in the browser toolbar animations
    • (In progress) bug 869494 – Add editing mode to browser toolbar
  • Next week

Margaret

  • Done

    • bug 867249 – Improve BitmapUtils.getDominantColor to avoid returning gray-ish colors

    • bug 867627 – Dominant color favicon backgrounds are really slow to update
    • bug 867650 – Search list still shown on Awesomescreen when clearing search string
    • bug 867125 – Unpinning a site from about:home removes it from about:home regardless of the number of visits
    • bug 867059 – “Set as Default” option still available in context menu after disabling a search engine
    • Helped interview devtools candidates
  • In Progress

    • Crash in BrowserToolbar.setTitle – bug 868342

    • Blog post about dominant color favicons
  • Next

    • Update empty favicon style – bug 869634

    • Use better default thumbnails on about:home when we don’t have a screenshot – bug 837392

Scott (jwir3)

Last Week:

  • bug 847872: Reflow zoom on double tap only (r+, but I’m having some difficulty with tests – specifically testVkbOverlap on Android and I’m kind of blocked on this before I can land).

  • Looked into bug 864595: Assertion failure in caretPositionFromPoint. I have a solution, but it’s not quite ready for review.
  • bug 862763: Performance of nsLayoutUtils::FontSizeInflationEnabled needs some work (in review).

This Week:

  • Land reflow-on-zoom on double-tap only.

  • Land HResize performance enhancement for reflow-on-zoom.
  • Finish implementation of last solution for bug 836565 that queues one event for each document to be reflown in nsDocumentViewer, for responsiveness (this might not be necessary).
  • bug 766599: Reframe to prevent crash in nsFontInflationData (this will allow us to dynamically change font inflation prefs without a reload).

BLassey

MFinkle

Done:

  • bug 869477 – WebRTC UI permissions no longer shown

  • Looking into bug 862377 – Android WebRTC permissions UI will only respect first doorhanger

Next:

  • Metro work week in Vancouver

Ian Barlow

  • Work in progress

    • bug 864958 Some subtle adjustments to the PB chrome

    • bug 808636 Reviewing work in progress on mobile error pages
    • Some discussion around WebRTC doorhanger permissions
    • Continuing work with Product on some UX prerequisites for Mozilla Apps on Android
    • Standing by for any and all questions about Multipage About:home
    • Usability testing plan for Multipage about:home
    • TV design concepts
    • New tablet concepts

WebRT

  • There is a meeting on Friday (11a PT) to discuss the “synthesizing APK” approach to delivering Apps on Android.

PiCL

  • Work week in Vancouver this week.

Feature Focus

Fx21
  • [ON TRACK] bug 834681 – Add support for basic distribution modifications

  • [ON TRACK] bug 831354 – Ship fonts for content in Firefox for Android
  • [ON TRACK] Amazon Search URL
  • [PLANNED]bug 867604 – [Meta] HTML5 Compat
    • Note: thanks for the uplifts last week!
Fx22

Pet bug: Bug 862996 – Put text headings back in the tab menu

Fx23
Fx24

Tradeoffs: Finishing the last 3 Reader Improvements and moving About:Home Redesign
Need to create a project plan for Shumway and Dynamic Snippets

Round Table

SUMO

Meeting this week to plan a strategy around replying to 1-star reviews on Google Play.

Thought we had a small spike in crash feedback but it turned out to be nothing.

Getting ready for Firefox 21.

QA

  • bug 853522 regressed h.264 videos on JB devices. need to uplift fix to all channels

  • working on a test matrix to cover release coordinate on multiple stores:
  • bug 856445 – Lg optimus black crash confirmed, over to mfinkle
  • bug 845729 – SGS2 blocklist confirmed, awaiting beta uplift to retest

Details

  • Wednesdays – 9:30am Pacific, 12:30pm Eastern, 16:30 UTC

  • Dial-in: conference# 99998
    • US/International: +1 650 903 0800 x92 Conf# 99998

    • US toll free: +1 800 707 2533 (pin 369) Conf# 99998
    • Canada: +1 416 848 3114 x92 Conf# 99998
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 99998
  • irc.mozilla.org #mobile for backchannel
  • Mobile Vidyo Room

Meeting NotesFirefox/Gecko Delivery Planning: 2013-05-08

Schedule & Progress onUpcoming Releases

Firefox Desktop

Beta (21)
    • FF21.0b7 Desktop is ready to go

    • FF21.0b7 Mobile was shipped yesterday
    • FF21.0 final RC build’s have gone to build and are with QA

Firefox Metro

  • Iteration #7: May 02 – May 23

    • 14% of the iteration work (20 points across 10 stories) has been completed to date (see table below).

    • 35% of the total project work has been completed to date.
    • We will be releasing figures on the project’s quality performance and defect levels at the conclusion of Iteration #7.
    • Product Manager is reviewing release build to determine which ‘out of scope’ legacy features to turn off in V1.
    • Team on Work Week from May 13 – May 17.
  • Iteration #6: Finished on April 30
    • Team completed 74 story points across 20 features.

    • Team achieved a new average velocity of 51 story points per iteration which was an 8% improvment from the previous iteration.
    • Overall performance gain has resulted in a new expected production release forecast of November 19, 2013 – a reduction of 2 iterations from the previous status update.
    • Production Release Forecast now includes Best Case and Worst Case scenarios – View Release Forecast
ID Summary Priority Status
862209 Defect: Unloaded websites reloading after closing them while using “tabs from last time” P1 ASSIGNED
867115 Defect – Context menu in snapped view shows the tab bar for an instant P1 ASSIGNED
831909 Story – Text selection in Firefox app bar (touch) P1 ASSIGNED
866065 Defect – ms-windows-store:// links should not need to be opened with an application P1 ASSIGNED
860899 Story – Fixup all failing mochitest-metro-chrome tests in automation P1 ASSIGNED
831915 Story – Implement Tile Widget and Groups – Part I P1 ASSIGNED
831905 Story – Secure site indicators in the Firefox app bar P1 ASSIGNED
855147 Defect: Settings do not persist when closing Firefox from desktop application bar P1 ASSIGNED
835623 Story – Combine page contextual items (URL bar, bookmark star, etc.) into single app bar P2 ASSIGNED
850737 Story – Smoothly scroll the Firefox Start screen – Part I P2 ASSIGNED
833182 Story – Updating Metro Firefox P2 ASSIGNED
849395 Story – Allow updates via about flyout P2 ASSIGNED
855297 Story – Provide a consistent OSK experience for when users have no keyboard and mouse P2 ASSIGNED
781002 Story – Apply metro styling to the context menu P2 ASSIGNED
831913 Story – Use the Firefox app bar in snapped view P2 REOPENED
867163 Defect – Restore tile button doesn’t work when context app bar is visible on a second time P1 RESOLVED
833130 Story – Sync passwords P2 RESOLVED
833131 Story – Sync bookmarks P2 RESOLVED
833132 Story – Sync history P2 RESOLVED
833133 Story – Sync tabs P2 RESOLVED
849312 [tracking] Backlog – Various sync issues P2 RESOLVED
856049 Defect – Lower border of “Pair a device” input box is missing P1 VERIFIED
867121 Defect – Snapped view: Favicons too close to text in awesome screen P1 VERIFIED
858598 Defect – Select popups near the bottom of the screen are unusable P1 VERIFIED
856267 Defect – Context Menu overlapping with the Tab App Bar when visible P1 VERIFIED

Firefox Mobile

Current Releases
Google Star rating is *visual* 4.5 stars. We are tracking 4.25 for GA in actuality but the visual tipping point is a result of lot’s of hard work
https://medium.com/what-i-learned-building/f4488e366b91
Beta (21)
  • We are backing out the fix for this crash because it blocks too many JB devices. We are considering doing a final beta to increase our confidence prior to GA: bug 853522 – crash in mozilla::MediaPluginHost::DestroyDecoder @ libstagefright.so@0xd… on Samsung Galaxy Tab 2 with espresso & espresso10 hw running JB

  • Otherwise, we just signed off on Fx21, this will include a push to the Yandex Store
Aurora (22)
  • The Dynamic URL bar (a.k.a Toolbar) has been deferred from Fx22. It remains enabled in Fx23 for testing and convergence

  • Slovak will replace Turkish as the next locale to add support for and it is slated for Fx22
  • Otherwise, double tap reflow-on-zoom, New Tab UI, ANR reporter, Async Canvas Playback
Nightly (23)

Services

Firefox Health Report
  • On track to ship in desktop with Fx21

  • Will hit Android for either 23 or 24
  • Dashboards are still coming, but we can get useful data for Nightly/Aurora/Beta, ask mconnor+gps if you have questions.
Product Announcements
  • No updates.

Feedback Summary

Desktop

USR 20 should be available later this week.

  • Flash – We are still seeing as much (or more) negative feedback about flash stutter or generally causing a poor experience. Crashkill team reports that Flash crashes are down on beta but it seems to just result in more jerkiness complaints on beta, not sure it’s actually improved the feedback.

  • Popups – We are seeing a significantly increased amount of popup reports in both Release and Beta. Assuming it is new malware.

Mobile

Meeting this week to plan a strategy around replying to 1-star reviews on Google Play.

Getting ready for Firefox 21.

User Experience (Design and Research)

  • [WebRTC] Ramping up! (Boriss)
  • [metro] (yuan)

    • Sync UI adjustments:

    • Solution for Auto-complete page: mockup.
    • Notification for adding a bookmark: video
    • Solution for a new Metro & desktop update preference bug 866229

Market Insights from the Product Marketing Strategy Team

Desktop / Platform

Google
  • On iOS, Google has now enabled app developers to integrate Chrome within their mobile applications.

  • Chrome Beta on Windows and Mac now supports the Chrome Office Viewer, an extension which provides seamless viewing of Microsoft Office files in the browser.
  • Google Translate added Bosnian, Cebuano, Hmong, Javanese and Marathi, bringing the total number of languages supported to more than 70
Microsoft
Tizen
WebKit
  • WebKit released SunSpider 1.0, an updated version of the Javascript benchmark. Among other improvements, delays between tests have been eliminated so it runs up to twice as fast.

Mobile

  • 2013 is the first year that people will buy more tablets than PCs. There will be 256 million tablets sold and 183 million PCs this year. By 2017 the number of tablets shipped will reach half a billion. This is part of a larger trend of sustaining big growth for tablets, at the rate of 67% year – over – year and a decline in PC shipments, by 10% a year.
  • New Android version distribution numbers put Gingerbread at 38.5%, Jelly Bean at 28.4% and Ice Cream Sandwich at 27.5%.
  • Shipments of smartphones in 8 major developed markets and China put Android ahead with 64.2% on average and 68.8% across the EU, 45.8% in Japan, 61.7% in Australia and 49.3% in the US. iOS is shipped on between 19.4% of devices in the EU to 49.2% of them in Japan. Top device models in the surveyed countries are the iPhone 5, the Samsung Galaxy S III, the iPhone 4S, the Galaxy S III Mini, the Galaxy Ace, iPhone 4, LG Nexus 4, Galaxy Ace 2, Galaxy s II and the Blackberry Curve.
  • Developer builds of Chrome OS feature a touch – screen keyboard. Important because it could mean plans to deploy the OS on tablets.
  • Google has hired a Chief Game Designer. Gaming is one of the top app categories downloaded through the Play Store
  • The first two Tizen phones will be in the mid – end to high – end range and code – named Redwood and Melius.
  • Opera partnered with 7 Indian phone and tablet manufacturers such as Celkon, Karbonn, Lava, Intex, Fly, Zen and HCL ME to have Opera Mini pre – installed on their Android devices.

Marketing, Press & Public Reaction

Firefox 21 highlights from the consumer and industry perspective

Questions, Comments, FYI

  • No surprises [johnath]

Planning Meeting Details

  • Wednesdays – 11:00am PT, 18:00 UTC

  • Mountain View Offices: Warp Core Conference Room
  • Toronto Offices: Finch Conference Room
  • irc.mozilla.org #planning for backchannel
  • (the developer meeting takes place on Tuesdays)

Video/Teleconference Details – NEW

  • 650-903-0800 or 650-215-1282 x92 Conf# 99696 (US/INTL)

  • 1-800-707-2533 (pin 369) Conf# 99696 (US)
  • Vidyo Room: ProductCoordination
  • Vidyo Guest URL

QMOResults of the Firefox 21 Plugins Testday

I’m writing today to publish the results of yesterday’s Firefox 21 Plugins Testday. Overall it was really successful. This was the first time in recent memory that we’ve tried to have a testday on a day of the week other than Friday. In spite of this we still managed to attract 17 testers who managed to test Firefox 21 with several plugins (Flash, Java, Silverlight,  etc) on a wide array of websites.

I would like to thank everyone who made this event possible, especially Jayakumar, MarioMi, Swarnava, and Tiziana. These four volunteers made up the lion’s share of the testing and deserve appreciation for their hard work.

If you weren’t able to make it to this testday, stay tuned to QMO. We’ll have another testday coming up soon.

Thank you

CalendarLightning 2.3b2 with fixed localization

Hello Folks. If you have been using Lightning 2.3b1 with a localized version of Thunderbird, you probably had troubles with undefined entities. This happened due to a glitch with the Mozilla localization dashboard, the wrong changeset was used.

I have just uploaded Lightning 2.3b2, which should fix the issue. As always, you can download beta versions from the addons.mozilla.org site in the “Developer Channel” box. If you have previously installed a beta, you should get the update via automatic updates.

https://addons.mozilla.org/en-US/thunderbird/addon/lightning/#install-beta

The Den5 Firefox Settings to Keep You Safer Online

When you browse the Internet, you leave a trail of personal data behind. Here at Mozilla we value your security and privacy on the Web. That’s why we have so many features built into the browser to keep you safe and secure online. Here are just a few of those features, and how to make them work for you.

  • Do Not Track: Many sites track your online behavior and sell that data to advertisers. If that makes you uncomfortable, Firefox lets you tell sites you want to opt out of that tracking and keep your browsing habits private. When you turn on Do Not Track, Firefox tells every website you visit (as well as their advertisers and other content providers) that you don’t want your browsing behavior tracked. It’s up to that site whether to honor your request, but the more people that tell the site, the more likely that site will listen.  Learn how to opt-out of tracking.

  • Clear your history (or just a single site): As you browse the web, Firefox helpfully remembers lots of information for you to make browsing easier (we don’t sell that data.) All of this information is called your history. But then oops! You clicked a link expecting one thing and you got another. You can delete that single site from your history. Or, you can delete your entire history. This article gives step-by-step instructions on how to manage your browsing history.

  • Private Browsing: Sometimes, it’s nice to go undercover on the Web. Private Browsing allows you to browse the Internet without saving any information about which sites and pages you’ve visited. Learn how to protect your browsing history.

  • Customized security options: We give you control the level of scrutiny you’d like Firefox to give a site with a variety of customized settings. Learn how to take control with your security settings.

  • The Site Identity Button: This is a Firefox security feature that gives you more information about the sites you visit. A color-coded system makes it easy to check on suspicious sites and avoid Web forgeries. Learn more about how to use the Site Identity Button.

These are just a few of the security features included in Firefox. Read more about our commitment to your privacy and security.

Meeting NotesMozilla Platform: 2013-05-07

Notices/Schedule

32 bugs (37 bugs last week) 13 bugs (27 bugs last week)
Unresolved Aurora 22 Trackers (non-security, not tracked for Beta) Unresolved Beta 21 Trackers (non-security)

Key Issues

Threads

Products/Projects

Firefox Desktop

Australis progress
Performance
  • Drew landed the background tab thumbnailing service. Uses a remote browser to capture thumbnails without main-thread impact (bug 841495).
  • The JS Internationalization API has been enabled (bug 853301); there may still be some issues to work through, but people should start experimenting with it now

Firefox Mobile

Blog shout out
Usability, Responsiveness, and New Features
  • We stopped packaging a whole ton of files as part of the multi-locale builds. If you see any regressions, please file a bug and CC :Pike. bug 792077, bug 848297

  • Fixed regressions to async canvas updates bug 863223
  • Add a force override preference for Reader Mode availability on low-mem devices landed in Fx23 bug 852417
  • Dynamic Toolbar is being disabled for Fx22 but is still enabled for Fx23 so please keep on using it so we can make it great!
Stability Wins
  • Uplifted to Fx22 Bug 863288 – java.lang.OutOfMemoryError: at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method) at org.mozilla.gecko.AboutHomeContent/TopSitesView.getThumbnailsFromCursor(TopSitesView.java)

  • Landed in Nightly: bug 864339 – Crash on ‘New PrivatTab@org.mozilla.gecko.mozglue.NativeZip.createInputStream(NativeZip.java:71
  • Also landed in nightly: bug 863477 – SurfaceCaps assertion failure in GLContext::UpdatePixelFormat() when playing Flash video

Stability

  • Nothing this week, we look decent on all channels right now (we need people to work on the harder, long-term issues, of course).

OrangeFactor

  • Past week’s OrangeFactor: 7.63 (Previous Week: 7.31).

  • No significant changes from last week.
  • bug 858948 (frequent Windows mochitest-2 leak) still needs an owner. Previous attempts have failed.
  • bug 866470 (ASSERTION: Should not be trying to paint a background color if we don’t have one: ‘drawBackgroundColor’ in layout/reftests/bugs/289480.html) is recent, frequent, and un-owned.
  • 15 intermittent failures fixed in the last week – List – Thanks!.

Performance

  • bug 852467: nsDisableOldMaxSmartSizePrefEvent runs on the gecko main thread, blocks for long periods of time

  • bug 649216: Remove unnecessary delay when clicking tab close buttons sequentially
  • bug 699331: Reduce impact of font name enumeration at startup

Metro

  • Although Metro work is riding the trains, it’s all behind an ifdef (MOZ_METRO) which is only turned on in Nightly.

  • Current expected work complete date for v1 is November 19th, although it has been moving up due to faster velocity in the recent iterations (so it may move up more).
  • Tier 1 status? No, but we will be. The main step in progress towards this is releng work to turn on mochitests (bug 864418).
  • Waiting for OMTC to land for a bunch of panning/zooming work.
  • Other than OMTC, largely what’s remaining for v1 work is front end work.
  • Most of the progress from the Metro team is in the form of front end work.
  • Elm users (Where Metro development began) have been migrated from elm to m-c.
  • Software updates through the Metro interface, will be offered trough the about flyout and silently in the background.
    • Some changes for that included upgrading while another browser from the same install is open.
  • May 13th – May 17th will be the 2nd Metro work week in the Vancouver office.
  • Sprint 5 and sprint 6 were recently completed, and Sprint 7 is in progress.

Roundtable

Build system PSA

  •  :joey and :mshal from RelEng are focusing on work that :gps are initiated on migrating Makefile.in -> moz.build

    • bug 847009

    • what other pain points are you hitting with the build system? PGO? universal builds? tests? please get in touch with Joey, Mike or Gregory

Should we switch from hg to git?

It’s becoming more and more clear that the version control system of choice for open source development these days is git. The question is, should Mozilla engineering switch from Mercurial to Git?. As most people already know, lots of Mozilla hackers already use git for various types of work, and some of our significant projects also already use git (Gaia, Rust, Servo, etc). Lots of Gecko hackers also already use git for their work on mozilla-central, through various conversions from hg to git.

One inevitable question that this raises is whether we’re also switching to hosting Gecko development on Github, and the answer to that question is no. We’ve been in talks with Github, but we will not get the reliability guarantees we need nor the flexibility we need if we were to host Gecko development on Github, i.e. Github issues not being powerful enough, pull request data outside of our control, etc).

As for switching the source control system from hg to git, here’s some of the benefits:

  • Simplified on-boarding, people generally know git, but generally don’t know hg.

  • We already mirror hg to git (in more than one way), git is already a necessary part of most of our lives and unifying our tools where we can is a good thing.
  • Branches! The ability to have “everything you want” in a single local repository (independently of how the repositories are hosted remotely). I.e. m-c, aurora, beta, release, user repositories, project branches and more as needed, no matter where the different branches are hosted.
  • No need for multiple local repositories, many working directories per repository.
  • Simplifies the path for better review tools and change workflows.
  • Opens the door for a pull-request like model for accepting changes.
  • Better merge algorithms, no more orphan patches that no longer apply cleanly.
  • Easier collaboration through shared branches.
  • Full history, all of hg and CVS!
  • OMG interactive rebase (squashing, removing, reordering, editing commits)
  • ZOMG git add –patch (selective change committing for splitting changes into multiple commits).
  • Works well with github, even though we’re not switching to github as the ultimate source of truth.
  • New tool to learn for those who have not already needed to learn it.

  • Performance of git on windows is sub-optimal (we’re already working on it).
  • Need to incorporate git into our windows build tools.
  • Lots of infrastructure work needed to make this switch.

Platform Meeting Details

  • Tuesday 2013-05-0711:00 am Pacific

  • Dial-in: conference# 98411
    • US/International: +1 650 903 0800 x92 Conf# 98411

    • US toll free: +1 800 707 2533 (pin 369) Conf# 98411
    • Canada: +1 416 848 3114 x92 Conf# 98411
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 98411
  • Engineering Vidyo Room / Warp Core / SFO-Boardroom / Tor Commons
  • join irc.mozilla.org #planning for back channel

hacks.mozilla.orgEmbedding WebRTC Video Chat Right Into Your Website

Most of you remember the Hello Chrome, it’s Firefox calling! blog post right here in Mozilla Hacks demonstrating WebRTC video chat between Firefox and Chrome. It raised a lot of attention. Since then we here at Fresh Tilled Soil have seen a tremendous amount of startups and companies which have sprung up building products based WebRTC video chat technology. Tsashi Levent-Levi who is a WebRTC evangelist has been interviewing most of these companies on his blog, the list is quite impressive!

WebRTC chat demo

Much like most of early adopters we have been playing around with WebRTC for quite awhile now. We have of course created our own WebRTC video chat demo and have also very recently released WebRTC video chat widgets.

The widgets work very simply, anybody can take the following HTML embed code:

<!-- Begin Fresh Tilled Soil Video Chat Embed Code -->
<div id="freshtilledsoil_embed_widget" class="video-chat-widget"></div>
<script id="fts" src="http://freshtilledsoil.com/embed/webrtc-v5.js?r=FTS0316-CZ6NqG97"></script>
<!-- End Fresh Tilled Soil Video Chat Embed Code -->

and add this code to any website or blog post. You’ll see the following widget on their website:

From here it’s dead simple to start a WebRTC video chat, just make up a name for a room, type it in and click start chat. Tell the other person to do the same and you’re all set.

As always make sure you’re giving this a try in Firefox Nightly or the latest stable build of Google Chrome. If you are on a tablet make sure you are on Google Chrome beta if you are using the Google Chrome browser.

Something else to note is that for this first version our video chat is limited to just two participants per a room. If a room name is occupied by two people the third person who tries to connect to this room simply won’t be able to connect.

How It Works

Without getting too deep into the code behind how WebRTC video chat actually works, let’s briefly go over what is actually happening behind the scenes when you click the start chat button and how WebRTC video chat actually works. Here is a step by step timeline of what actually happens to give you a better idea:

A quick note about this step: “Once remote media starts streaming stop adding ICE candidates” – this is a temporary solution which might result in suboptimal media routing for many network topologies. It should only be used until Chrome’s ICE support is fixed.

A quick and very important tip to remember when you are trying to get this to work. We used a ‘polyfill’ like technique as shown in this article by Remy Sharp. As Remy describes we wrote a piece of code to adapt for the Firefox syntax to get cross-browser functionality.

Issues We Ran Into and How We Solved Them

As you might expect we ran into a number of problems and issues trying to build this. WebRTC is evolving quickly so we are working through a number of issues every day. Below are just some of the problems we ran into and how we solved them.

PeerConnection capability in Google Chrome

While working with the new PeerConnection capability in Chrome we discovered a strict order of operation for it to work; more specifically:

  • Peers must be present with local streaming video before sending SIP (offer/answer SDP)
  • For ‘Answerer’; Do not add ICE candidate until the peer generates the ‘Answer SDP’
  • Once remote media starts streaming stop adding ICE candidates
  • Never create peer connect for answerer until you get the ‘Offer SDP’

We fixed it by handling those issues and handling the connection in the order described above. This was crucial to making the connection work flawlessly. Before we did that it would work only every once in a while.

Added latency due to lag

When streaming to a mobile device there is added latency due to lag and limitations of surfing the net via mobile phone.

We solved this by making the resolution of streamed video reduced via a hash tag at the end of the URL. URL can optionally contain '#res=low' for low resolution stream video & '#res=hd' for HiDefinition streaming video as an optional URL parameter. A quick note here that other configurable properties are now available such as frames per second which you can use for this same purpose.

Recording the WebRTC demo

We’ve been dabbling with recording video WebRTC demo. When recording video we used the new JavaScript type arrays to save the streaming data. We quickly discovered that it is only possible to record the video and audio separately.

We solved this by creating two instances of recording, one for the audio and one for the video, that utilized the new javascript data types and recorded both streams simultaneously.

Conclusion

It’s exciting to dabble in this stuff, we love WebRTC so much that we created an entire page dedicated to our experiments with this technology and others which we believe will transform the web in 2013. If you have any question please give us a shout.

Firefox FlicksFilm School Visits in London

Last week Tobias from the Flicks team went to London to say hi to some of Londons’ most prestigious film schools, to meet with teachers and to inspire film students to create submissions for Flicks 2013. Here’s his report:

Goldsmiths

My first stop was at the Department of Media & Communications at Goldsmiths, University of London to meet 2 film professors there. Beautiful campus:image

Met School

Second stop was at the Met School, which is located on the campus of the Ealing Studios. They had organized a talk for me, and although the weather was beautiful, many students sacrificed their lunch break to hear everything about Firefox Flicks. Photo:

image

London Film School

Located in the center of London is the The London Film School, only a short walk from the Mozilla London office, in the area called “Covent Garden”. It was actually really cool to see our Flicks posters hanging at most of the universities I visited so far. (We did a mailing earlier this year, which apparently worked.)
image

London College of Communication

My next stop was the BA Film and Television department at the London College of Communication, University of the Arts. If I was interested in becoming a film student: I’d have trouble deciding for which school to apply to.
image

National Film and Television School

The final visit was at the NFTS, the National Film and Television School. The director gave me a tour around their studios which was very inspiring. I don’t know if theres’ a more successful film school around in terms of Oscar nominations that their (former) students have received. Truly impressive.image

Actually - One of our 2012 Firefox Flicks winners came from NFTS! Enjoy “Paranoid” from the team of Sean O’Riordan:

Special thanks to Dogwoof Film, who helped us organize this trip.

Web FWDOur Scouts Charge On

As we approach our June 5 deadline to apply for our next class (aka WebFWD IV), our Scouts are getting the word out around the world! We’ve even welcomed some new ones to the Cause! Below is a brief profile on our newest Scouts as well as recaps of some of our team’s recent activities. We are so grateful for them!

Of course, you needn’t be a Scout to spread the word about what we’re doing. If you know of developers, entrepreneurs and startups that:

  • Are building products / services that make the web (including the mobile web) better and more open;
  • Have open source products (at least, a component) or are leveraging the power of HTML5;
  • Have built at minimum a working prototype

….please encourage them to consider WebFWD. Teams can be located anywhere, as participation is remote and with the exception of the San Francisco Bay Area for Orientation (July 2013) and Graduation (November 2013).

To the web!

Meeting NotesMozilla Project: 2013-05-06

All-hands Status Meeting Agenda

Items in this section will be shared during the live all-hand status meeting.

Friends of the Tree

  • Gloria Meneses in Bogotá, CO, for her work & leadership in Mozilla Reps & her support of the FxOS launch in Colombia

  • Sammy Tuman, our awesome Mountain View Shipping Wizard.

Upcoming Events

This Week
  • Security Assurance team meet up in San Francisco office this week. Please stop by and say hello. “Open house” & demos on Thursday 2pm (SF 7th floor) w/ cupcakes & cookies!
Thursday, 09 May
  • 2pm – San Francisco – 7th Floor: Meet the security assurance team, watch demos of tools & techniques, FAQ and discussion. Cookies & cupcakes will be provided. Open to all.

  • 5:30pm – San Francisco – 7th Floor: we’re hosting a patent reform party at Mozilla SF with the Electronic Frontier Foundation. More Info
Next Week

Product Status Updates (voice updates)

Firefox Desktop

Speaker Location: toronto (johnath)

Firefox Mobile

Speaker Location: toronto (johnath)

  • Release is now four and a half stars!

  • I thought I told you that we won’t stop
    • Lucas and Ian each wrote about the UX hackathon last week, it’s chock full o’ delicious.

    • New tab counter, tab tray transition, tab increment animation
    • URL display in location bar
    • Dominant-colour backgrounding for favicons
    • Still setting records on stability
Webmaker

Speaker Location: Ryan Merkley, Vancouver

Sunday is Mother’s Day! Why not send Mom a hand-crafted web page to show her how much you care? Mozilla makes a tool that makes it easy to tell mom you love her — Webmaker! We’re working on a prototype this week that will help people make a page for Mom — and learn a little HTML and CSS along the way. We’ll share a sneak peek in today’s lightning presentation from Jacob Caggiano.

  1. Sign up for Maker Party 2013. Or invite your Mom! :) June 15 – Sep 15. Get together at thousands of big and small webmaking events around the world.

  2. Join our new “Teach the Web” open online course. Boot camp for Maker Party. Growing a small army to teach the web: programmer mentors, techie grandmas, teachers, novelists, girl scout hackers and you. Meet them and check out highlights here.
  3. 8 other fun ways to get involved with Webmaker this week.
Firefox OS
  • 1.0.1: In certification testing with OEMs, trying to fix bugs turned up by that process as quickly as possible.

  • 1.1.0: Entering first phase of chipset vendor testing next week, so focus there is getting any regressions and new features cleaned up before it begins.
    • MMS Workweek in Portland ongoing this week.
  • Geeksphones seem to be flying off the virtual shelves as fast as they can restock them.
Grow Mozilla

Speaker Location: San Francisco

Help us build a history of Mozilla told by Mozillians. Please share your memories about this Mozilla milestone:

60 Seconds with Mozilla IT

Speaker Location: mrz in SF (on the couch)

Speakers

Presenter Title Topic Location Share? Media More Details
Who Are You? What Do You Do? What are you going to talk about? Where are you presenting from? (Moz Space, your house, space) Will you be sharing your screen? (yes/no, other info) Links to slides or images you want displayed on screen Link to where audience can find out more information
Diane Bisgeier Program Manager, WebFWD How you can get a WebFWD tshirt and hopefully MESSENGER BAG Mozilla San Francisco No screen share – just showing off the schwag you can get if you refer a team to our next class. Here’s the messenger bag :) > https://www.facebook.com/photo.php?fbid=361822707265407&set=pb.218655251582154.-2207520000.1367814592.&type=3&theater Details on WebFWD at http://webfwd.org
Jacob Caggiano Lead Makesmith, Webmaker.org Our simple template for making your Mom proud on Mother’s Day My Aunt’s apartment, New York, NY Yes, screenshare indeed. https://thimble.webmaker.org/p/lrxw/edit
Mike Morgan Director, Web Development Manager Hacking Session 2 in SF Mountain View No https://wiki.mozilla.org/Manager_Hacking
Dia Bondi (IRC thejudge) Head of Knowledge Cultivation Capture Mozilla is Air.Mozilla too! + Badges San Francisco No https://air.mozilla.org/channels/culture_and_context/ https://badges.mozilla.org/en-US/

Introducing New Hires

New Hire Introduced by Speaker location New Hire location Will be working on
Meadhbh Hamrick Sid Stamm Mountain View Mountain View Security Engineer
Jannis Leidel Laura Thomson Mountain View Germany Web Developer
Justin O’Kelly Mike Manning Mountain View San Francisco Managing press relations and media strategy
Jason Weathersby Mark Coggins San Francisco Inman, SC Firefox OS Technical Evangelist
Marcos Cáceres Andrew Overholt San Francisco Lisbon, Portugal Platform API Designer/Engineer
Shyam Mani mrz San Francisco Mountain View IT Developer Services

<meta>

Notes and non-voice status updates that aren’t part of the live meeting go here.

Status Updates By Team (*non-voice* updates)

QA
WebQA
  • Engagement

    • New ReMo release with some new features like events display, and auto-filtering on user’s interests + bug fixes

    • New Flicks release with Early Award winner posted, plus winners, partners and awards pages added.
  • Firefox OS
    • keep up-to-date with all the latest in a nice, digestible format, here:

    • have Unagi commercial-RIL builds in our CI, with runs against them
    • apart from an annoying “ding”-on-notification issues (each restart), they look good
    • now we can troubleshoot the modem issue
    • Inaris requested from ServiceNow
    • have an engineering build on 1.0.1 for them
    • will soon set up a download job and run against them
    • 3 new tests (Marketplace, Settings)
    • Some good coverage re-enabled as devs repaired regressions
    • Full-steam ahead on Payments testing although no significant coverage in place yet
    • Dave Hunt made good gain in reliability by configuring device state before the testrun
    • mbrandt 1.1 manual testing and testcase creation
  • Marketplace
    • Work continues on automating the app installation and payments flow using Marionette
  • Mozillians
    • Several issues with the dev cluster – https://bugzilla.mozilla.org/show_bug.cgi?id=864422

    • Near continuous deployment – small bug fixes, multiple releases over the last week
    • Team is actively scoping the UI refresh work that will be accomplished this quarter. UI Mockups forthcoming in the next few weeks.
  • Mozilla.com
  • MDN
  • Socorro
Automation & Tools

  • Dial-in: conference# 8600

    • US/International: +1 650 903 0800 x92 Conf# 8600

    • US toll free: +1 800 707 2533 (pin 369) Conf# 8600
    • Canada: +1 416 848 3114 x92 Conf# 8600
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 8600

SUMO BlogWhat’s up with SUMO – May 6

Big things this week

  • Notes and video from this SUMO meeting.
  • Work continues on new Topic and Subtopic information architecture. Hopefully there will be designs ready to share later this week.
  • Tom’s presentation about live chat (starts at 4:47).
  • Brazilian Portuguese community reboot is amazing. If you want to reboot your community or get it to be more active, contact us and we’ll be more than happy to help.
  • Current SUMO development sprint – 2013.9
  • Next SUMO meeting – Monday, May 13th (call in details & meeting notes) at 9:00 am PDT. Please add your comments, questions and updates to the wiki. You can also participate in #sumo during the meeting. We’re going to record and post a video of the meeting.

about:communitySummit by the numbers – status report out

It was a pretty quiet week on the Summit planning front for me, although I know there are many others working VERY hard to pull it together.  The Summit Planning Assembly invitations have gone out, responses gathered, flights booked.  Should be an amazing event the outcome of which will inform almost everything we do at the Summit.

From my end, we are still searching for space (hotels and venue options) within the EU.  Right now, we’ve narrowed our search to Brussels and Dublin.  Interesting locations for Mozilla, but options, for a group our size, for this specific week in October, are quite slim.  What I’m also learning about Europe in general is that hotels tend to offer much smaller, more quaint, room blocks, vs. the “go big” approach of North America.  I should know more middle of this week on what each city can offer so I will keep you all posted.

I am headed to Toronto next week with our event planning partner to visit at our two venue-options for the Toronto Summit (the Fairmont Royal York and the Sheraton).  Both look beautiful so again, I will report back.  Once we have the venues, in all locations finalized, I will feel much relief and we can start pushing forward.

On numbers: the Mozilla Reps and Community Builders have come up with a list of ~850 volunteers who will be invited to the Mozilla Summit.  Because we have about 45 volunteers, who joined the group after the deadline, that we still need to decide upon, we will postpone communication on invitees until May 15th.  If you have been invited to the Summit, we will send you an email to let you know.  In general, because of cost and immigration-related issues, volunteers will be invited to the Summit location that is closest to their home country.  We will hold a lottery for about 10% of invitees who will be able to select their Summit venue.  More to come on that this month.

So, that’s my update for this week.  Lots to come.  As always, you can find me and others in the #summit2013 IRC channel.

 

about:communityBadges and a Short Vid!

The Capture Mozilla project is now awarding badges for all versions of awesome video knowledge share submitted to the project.  And, you don’t have to be on camera to make a meaningful contribution.

Capture Mozilla Badge

Capture Mozilla Badge

Can you hold a recording device? Can you put together a story flow or short curriculum? Can you help someone use IMovie or record something on Quicktime?  Can you just cheer someone on while they capture their knowledge on video? Than you can help and get a badge for it!

Think you need to be fancy to make a video?  David Boswell proves fanciness and artistic prowess are not required to help another Mozillian navigate the culture.

Here David gives an insider tip on getting things done in the Mozilla way.  Thanks David!

about:communityMilestone: Netscape 6 released based on open source code

November 14, 2000: Netscape 6 is released and is the first Netscape product based on open source code

2000_netscape6_shirt

Share in the comments any memories you have of this event, photos of any t-shirts from this period or any other interesting pieces from this time in Mozilla’s history. The information shared here will help us visually create the history of Mozilla as a community.

hacks.mozilla.orgHow to Spread The Word About Your Code

You spent an entire weekend building a library, jQuery plugin, build tool, or other great piece of code you wanted to share far and wide, but after some tweets and a failed attempt to make the front page of Hacker News, your creation languished, unloved, in a GitHub repo. A common situation for many developers nowadays, but one you can avoid.

As the editor of several programming newsletters, I frequently get two types of e-mails from developers. Those reaching out to ask if I can mention their projects, and those expressing surprise and excitement that their work has been featured. If you’re a developer doing good work but feel more like you’d be in that second group, the three steps in this article are for you.

Before we get started, there’s a stumbling block we need to kick away. Terms like ‘marketing’ and ‘advertising’ are dirty words for many developers and it’s not uncommon for developers to be reluctant to do much promotion. ‘Build it and they will come’ used to work when exciting open source projects were few and far between but now everyone seems to be working on something and making a noise about it. Few of the successes you see come through pure luck but because developers are actively promoting their work or, at least, making it discoverable. It’s time to join them!

Step 1: Get your project ready

Before you can promote your project, you need to make it attractive to potential users and evangelists (including general wellwishers, the media, and other developers).

A good name

Ensure your project has a palatable name. It doesn’t need to be clever or even descriptive, but it’s worth avoiding innuendos that may present a problem down the line. For example, the popular Testacular and Authgasm projects, are now named Karma and Authlogic respectively after users raised a fuss.

You should perform a search for the name you choose to be sure you’re not clashing with anything else that’s popular or trademarked (did you know Firefox was called Phoenix and Firebird prior to Firefox?). The US Patent and Trademark Office has an online trademark search facility.

A benefit of having a relatively unique or uncommon name is so you can search for it over time (or even set up a Google Alerts notification for the name) and find mentions of your project without many irrelevant results popping up. If you want to have something descriptive but unique, consider joining two words together. For example, when I created a Ruby library to do natural language detection, I called it WhatLanguage and it’s easy to search for.

An official homepage or project URL

The term ‘homepage’ is a bit outdated but you ideally need a single ‘home’ URL that you can promote and point people to in relation to your project. You don’t need to splash out on a fancy template or even a domain name, but your project needs a focal point. That could be an entire site with its own domain, such as those for Yeoman or HTML5 Boilerplate, a simple single page on an existing domain, such as that for RoughDraft.js, or even a regular GitHub repo, such as for vague.js.

If you have the freedom to do so, make sure your site looks good on the major browsers (including mobile), hook up some analytics to your page and ensure the <title> tag is well written. Use a title like “MyProject – A JavaScript Library to X, Y and Z” instead of just “MyProject – About” or a blank title. With social bookmarking, this matters as you can’t guarantee your evangelists will write a good title of their own.

If you’re not a Web designer, don’t have the time to spend making a complete design, but still want a complete site rather than just a GitHub repo and README, consider using a framework like Bootstrap as it’ll provide a clean layout out of the box and you can forget about many cross browser and device issues.

Documentation and copywriting

It’s only just a cliché that developers don’t like to write documentation, but you need something for potential users to fall back on, and time invested in producing useful documentation up front will pay dividends later.

At a cynically bare minimum, you need to write enough documentation that someone will be confident about sharing your link or promoting your project and not feel like they’re sending their own followers into a black hole of misunderstanding. This means your homepage or README needs to cover a few angles. You’ll need to:

  • Prominently feature a “[noun] is” paragraph. An alarming number of project homepages don’t explain, in simple terms, what the project is actually for or does. If you’ve built a JavaScript library that does language detection, say, you have to say so. For example: “LanguageDetect is a JavaScript library for detecting the natural language of text.”

    An excellent example of this in action is on libcinder.org where it states right up front: “Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.” Perfect!

  • Write clear titles, subheadings, and support copy. At a bare minimum, ensure titles, subtitles, and any sort of writing on your homepage are straightforward and clear. Write for the lowest common denominator on your homepage. You can get more advanced elsewhere.

  • Write a beginner’s tutorial and link to it from your home page. Unless everything’s simple enough to explain on a single page, quickly write a tutorial that covers basic installation and usage and either include it in your README file or put it on the Web and link to it from your README and/or homepage.

  • State dependencies and requirements clearly. Does your library only work on a specific version of Node? Is it a browser extension for Firefox? Does your code require PostgreSQL, Redis, or another specific database? Be sure to include a bulletpoint list of dependencies and requirements for your project to be usable so as not to disappoint potential users.

  • Specify the license for your code. While you could get away with keeping your licensing information tucked away in a LICENSE file in your GitHub repo, specifying what license your code is released under up front and center will help put many developers at ease. Likewise, if your project is commercial is nature and costs money, don’t hide that detail away and mislead visitors.

  • If your project is a library or API, feature some example code on the homepage. Unless your library is particularly complex, let visitors see an example of its usage on the project homepage. If your API is good, this could be a great way to get an ‘easy sale.’ I’m not a huge fan of the code example chosen but the homepage for Ruby shows off this technique.

Extra materials

A blog post is a great way to introduce a project that might need more background or have more of a story than it’s practical to tell on a homepage or within documentation. If there’s any sort of story behind your project, a blog post is a great way to tell it. Be sure to link to the post from your project’s homepage and consider promoting the blog post separately to relevant sites within your niche.

If you have the ability, recording a screencast or other sort of video can help. Could you put together a simple 5 minute screencast of how to install and use your library? Or have you built a game that could be demonstrated in a few minutes of gameplay? Record a simple video, put it on YouTube, and embed it on your homepage. Your accent doesn’t have to be as crisp as a newsreader’s and you don’t even have to appear within the video. All that matters is you get to the point quickly and your audio is tolerable (not muffled, clipping, or drowned in background music).

As the editor of several programming newsletters, I look at thousands of projects each year, and it’s still uncommon to see simple screencasts, yet they certainly help a project stand out and, as a consequence, make it more likely for me to talk about it. You can see a perfect example on Punch’s homepage. The early popularity of Ruby on Rails also depended upon a popular ‘build a blog engine in 15 minutes’ video, back when the concept of using video to promote an open source project was very novel.

If you’re sticking to the straight up, GitHub README approach (and it’s certainly not a bad idea for a simple library), a bonus tip is to create a tiny screencast of your code in action and convert it to an animated GIF for inclusion in your README. Richard Schneeman outlines this technique in Use GIFs in your Pull Request for Good, not Evil. The result is striking and could help your README stand out.

For further ideas on how to make your project stand out before you begin promoting it, check out the great How to Make Your Open Source Project Really Awesome by Michael Klishin. It digs into more detail about versioning, announcements, having a changelog and writing good documentation.

Step 2: Get the word out

You’ve polished your project, got a URL to promote, and you’re ready to get the news out.

A word of caution, however. Don’t use every technique on day one. You could overload your site with traffic or, worse, be subjected to a barrage of online criticism if your work or site is broken. With something like a library or tool, a gentler approach will work well and building up small streams of visitors and users over time will give you a much better time.

Social networking

Your own social networking profiles are always a good place to start if you have them. You’ll get more immediate feedback from people who actually know you and if your project is particularly interesting, it could go viral even from a single mention.

A great example of a simple project going viral was YouTube Instant by Feross Aboukhadijeh. Feross built YouTube Instant quickly, mentioned it on Facebook before going to bed, and woke up to a flood of traffic and press mentions.

If you like to experiment and have several bucks going spare, you could also consider paying for a promoted post on Facebook. This will give your post more visibility in your news feed, but is best reserved for if your Facebook friends are mostly developers or people likely to be interested in your project. If not, and you’d still like to spend some money, consider an ad on Reddit or a relevant programming blog instead.

Influencers, bloggers, and niche media

Whether you’re working on a JavaScript library, Firefox extension, backend app in Rails, or a theme for Bootstrap, your code will fit into one or more niches and every technical niche has a variety of ‘influencers’, people and publications who are popular and well known for the topic at hand.

Getting a tweet, retweet, or even an entire blog post from an influencer could have a significant impact on your project, as could being invited to blog elsewhere (Mozilla Hacks, for example!). If Brendan Eich tweeted about your JavaScript library, Lea Verou wrote a blog post about a CSS trick you discovered, or Paul Irish mentioned a Web development tool you built in a talk, you would attract a lot of interest quickly. It is key, however, to realize there are many great influencers in every space and you’ll achieve nothing by hounding any one person so be prepared to move on.

Spend some time working out who the influencers and key publications are in your niche. For Twitter, Followerwonk is a handy tool that searches Twitter biographies for certain words. If you search for “javascript” the first page includes several users who would be useful to reach out to if you had a particularly interesting JavaScript-related release to promote. Reaching out on Twitter can be as simple as a single tweet and many busy folks prefer Twitter as it takes less time to reply than an e-mail. A single tweet from @smashingmag could drive thousands of visitors your way, so consider tweeting them, and other similar accounts, when you have something relevant.

I’d also advise looking for blogs and e-mail newsletters in your niche. Start with something as simple as Googling for “javascript blog”, “javascript newsletter”, “css blog” or whatever’s relevant to your project. Most bloggers or e-mail newsletter publishers will not be offended by you sending them a quick note (emphasis on quick) letting them know about your work. Indeed, some weeks there can be a shortage of interesting things to write about and you might be doing them a huge favor.

If you choose to e-mail people (and your project will probably be more substantial than a few hours’ work to justify this), take care not to make demands or to even expect a reply. Many bloggers and influential people have overflowing inboxes and struggle to reply to everything they receive. Make your e-mail as easy to process as possible by including a single URL (to your now superb homepage or README) and include your “[noun] is” paragraph. Don’t take a non-response as an insult but keep moving on to the next most relevant person. You might even consider taking a “Here’s my project that does X, Y and Z. No reply needed, I just thought you might like it” approach. Softly, softly works here, as long as you get to the point quickly.

How to get attention from internet celebrities by Jason Cohen and How to Write the Perfect Outreach Email by Gregory Ciotti go into more detail about e-mail etiquette when promoting your work to influencers. While you might not need to contact any ‘celebrities’ in your niche, the principles of keeping it short, including a call to action, and ensuring your work is appropriate to the person are really true for anyone you’re sending unsolicited messages to.

Podcasters are an often forgotten source of promotion opportunities too. While some podcasts don’t cover news or new releases at all, many do, and being on the radar of their hosts could help you get a mention on a show. Smashing Magazine has put together a list of tech podcasts covering the areas of design, user experience, and Web development in general. Again, keep your e-mails short and sweet with no sense of expectation to get the best results.

User curated social news sites

As well as reaching influencers and niche media, sometimes reaching the public ‘firehose’ of news can work too, and there are few better examples of these in the modern world of development than Hacker News or Reddit.

Hacker News in particular is notoriously hard to reach the front page on and ‘gaming’ it by getting other people to vote up your post can backfire. (Indeed, it will backfire if you link people to your post on Hacker News and encourage them to upvote. They have ways of detecting this behavior. Get people to manually find your post instead.) If you do reach the front page of Hacker News, of course, you can certainly expect an audience of many thousands of developers to be exposed to your work, so be sure to try.

With Reddit, the key isn’t to dive straight into a huge sub-Reddit like /r/programming but to look for sub-Reddits more directly related to your project. For a JavaScript library, I’d post to /r/javascript or possibly /r/webdev. Reddit ads can also perform well if you’re OK with spending some money and these can be targeted to specific sub-Reddits too.

There are many similar sites that are less well known but which are respected in their niches and can drive a lot of interested visitors, including Designer News (mobile and Web design), DZone (general developer stuff), EchoJS (JavaScript), RubyFlow (Ruby and Rails), and Lobste.rs (general hacker and developer stuff). Finding the right site like this and taking time to make an on-topic, well written post will help a lot.

The mass media / press

This article is primarily focused on the promotion of open source and front-end projects and these are typically not frequently covered in print or on the TV or radio. If, however, you think the mass media would be relevant for your project, here are some other articles packed with handy tips:

Step 3: Maintain momentum

You’ve built up some interest, your GitHub stars, Reddit votes, and pageviews are all rocketing up, but now you want to capitalize on the attention and maintain some momentum.

User support

Whether you’ve built an open source project or a cool tool, you’re going to end up with users or fellow developers who want to provide feedback, get help, or point out issues with your work. On GitHub, the common way to do this is through the built-in ‘issues’ tracker, but you might also find people start to e-mail you too.

Be sure to define a policy, whatever it is. Users won’t feel good about opening issues on your GitHub repo if there are already many unresolved issues there and your project could stagnate. Ensure you respond to your audience or at least make your policy clear within your README or on your site. If you don’t want issues raised or code contributions, make this clear up front.

Extending your reach

For many projects, create a dedicated Twitter account, blog, Facebook page, or Google+ page in advance is overkill, but if your project starts to take off, consider these things. They’ll provide an extra way not only for users to remain in touch with your project but also a way for them to help promote it by retweeting things you post or by directing potential new users your way.

You can also extend your reach in person by going to user groups and conferences and, if you’re really lucky, you can speak about your work too. This is a great way to get new users as people are much more likely to look into your work if they’ve met you in person.

Avoid being defensive

If your project does well on sites like Hacker News or Reddit, you’ll be tempted to read all of the comments your peers leave, but be careful. Comments about your work will, naturally, seem magnified in their intensity and critical comments that might not actually be mean spirited may seem as if they are to you.

It’s hard, but the best policy is to not let any overtly mean comments get to you, duly correct any observations that are wrong, and to thank anyone who goes out of their way to compliment your work. Even if you’re in the right, with the lack of body language and verbal cues, being too defensive can look bad online and result in the post becoming a lightning rod for drama. Engage as best you can, but if it feels wrong to reply to something, listen to your gut.

Be careful if you go into a new community to promote your work and get negative feedback. Most communities have rules or expectations and merely entering a community to promote your work is frequently considered a faux pas. Be sensitive to people’s environments and try to abide by a community’s rules at all times.

The long term

If your project does particularly well, you could be presented with the opportunity of turning it into a business in its own right. Many simple open source projects, often started by a single developer, have turned into long term work or even entire companies for their creators.

Back in 2010, Mitchell Hashimoto released Vagrant, a Ruby-based tool for building a deploying VirtualBox-based virtualized development environments. In late 2012, Mitchell launched Hashicorp, a company providing Vagrant consulting services to enterprise customers. An even higher profile example is Puppet Labs, a company built around the Puppet open-source configuration management tool and which has taken total funding of $45.5 million so far.

If your project becomes respected and heavily used within its field, you might also be approached to write a book or article about it or even speak at a conference. This is a good sign that your project has ‘made it’ to some extent as publishers and event organizers are in the business of working out what it makes business sense to present.

Putting it all together: A checklist

This has only been a basic introduction to promoting your work and with practice you’ll come up with tons of tips of your own (it’d be excellent if you could share some in the comments here). Based on all of the ideas above, here’s a basic checklist to run through next time you release a new project and want to get some added exposure:

  • Focus most of your efforts on your project’s homepage or README.
  • Check your project’s name doesn’t clash with anything else and is unique enough to find references to your work later.
  • Promote your work to your closest social group first to unbury any problems with your work.
  • Record a screencast or write a blog post about your project if some extra background would be useful for others.
  • Work out a perfect *”[project name] is”* sentence to describe what your project is or does.
  • Use your *”[project name] is”* sentence to give your page a descriptive title.
  • Find influential people, blogs, podcasts, and e-mail newsletters in your niche and send them a short, pleasant note.
  • Post to social news and bookmarking sites. Ensure your title is descriptive.
  • Use your *”[project name] is”* sentence in e-mails and contacts with influencers.
  • Take a positive, “look on the good side” approach to responding to comments about your work.

Good luck!

Mozilla Web DevelopmentAvoiding Dependencies

Guest post on behalf of Matt Basta.

Avoid code duplication and reusing code is always an admirable goal. However, in some occasions, it’s not a bad idea to duplicate a little bit of code in order to make your software better.

An Example

When writing a Node app, accessing a directory listing is fairly simple: the fs.readdir command provides a list of objects in a directory, and a call to fs.stat will tell you whether each object is a directory or a file.

That’s fairly straightforward, but recursing (especially when using callbacks) can require some mental yoga. Each directory needs to keep track of how many subdirectories it expects to receive callbacks for and results need to be aggregated in pieces rather than sequentially.

When I needed a recursive directory listing this past week, I was tempted to use a library: why solve a solved problem? The glob library provides this functionality with very little effort:

Why would you use anything else? Here’s what I saw when I did an npm install glob:

  • glob
    • minimatch
    • lru-cache
  • sigmund
  • grafeful-fs
  • inherits

Simply by adding glob to my project, I’ve added a total of six modules. That’s not unexpected, though, since glob does a whole lot more than I need it to do. In the end, I ended up simply writing my own, and including it in the single file that requires the functionality:

Why are dependencies not good?

First, and most importantly, is the security of those packages. If the SSH keys of the developer of those packages are compromised, an attacker could provide an “updated” version of the library which includes malicious code. At Mozilla, we use internal mirrors of PyPi and NPM to make sure we’re not installing arbitrary modules. Avoiding dependencies helps to avoid requiring a solution.

Second, there’s a performance hit for libraries. If you’re building a one-off fix for a simple problem, using a library increases the overhead of your app’s load and use. If you’re building a web app on Node or Django, you might use an auto-reloader to restart your local server when script files change. In many projects, this takes an imperceptibly small amount of time to reload. As your codebase and dependency list grows, your auto-reloader can take precious seconds to run (we have projects that take almost five seconds to reboot).

Each dependency increases the time it will take to install your application. Zamboni (the code behind addons.mozilla.org and marketplace.firefox.com), for instance, takes 12 minutes to install libraries and dependencies. What starts out as a small number of libraries can very quickly grow out of control and become a serious nuisance. time npm install glob, to reference my earlier example, tells me that glob adds four seconds to my install time. Some simple and unscientific benchmarks from popular node libraries:

  • socket.io: 33s
  • mongoose: 9.5s
  • connect: 5.7s
  • jade: 5.3s
  • express: 4.4s
  • glob: 3.9s

And some from popular Python libraries (run with time pip install <module>):

  • numpy: 110s
  • django: 96s
  • pycrypto: 18s
  • flask: 14s

Third, you’re taking the gamble that the libraries that you depend on don’t have conflicting versions. A great example of this can be illustrated by a web app that I was building: the HTTP requests that I was creating with Python’s requests library didn’t have a .json property, as the docs state. An hour of hair-tearing later, I discovered that another library that I was using had already installed a much older version of requests which lacked the property. Unfortunately, the library wasn’t compatible with the latest version of requests and I had to settle for the old version.

The consequences could have been much worse, and this is a not-well-solved problem (for the Python community, at least).

Last, if your project is used as a library, including dependencies decreases the re-usability of your code. If your code uses a third-party library when it could have taken advantage of some slightly-gnarly standard library tools, all of the above reasons make it that much more difficult for a developer to justify using your tool.

Now hold on just a minute.

Does this mean you should never use an external library? Not at all! You should use libraries whenever it’s appropriate. Sometimes the effort required to perform a task correctly and thoroughly (or at all) is simply too much work to do on your own. OAuth? You’ll probably want a library. Database work or ORM? Use a library. But what if you need to serve a single static HTML file over HTTP? You can probably use Node’s http or Python’s SimpleHTTPServer without too much heartache.

Sometimes it’s just irresponsible to write code yourself: would you trust a developer’s one-off method or a mature ORM’s SQL sanitization code? What about code to generate secure random numbers for encrypting sensitive data? Or code that protects against XSS attacks? There are a lot of instances where it’s in your users’ best interest to use a trusted solution rather than your own solution.

A double-edged sword.

Another reason for choosing libraries is the community: if there are bug fixes to a third-party library, dependents can relatively easily update to the latest version of the library and take advantage of the improvements immediately.

That can be a good thing and a bad thing, though. Libraries without a community around them can contain bugs that don’t get patched in a timely manner. Fixes may be difficult or impossible to upstream.

TL;DR

  1. If you can easily get by without a dependency, you don’t need the dependency.
  2. If you’re building a library, you should avoid dependencies.
  3. Don’t avoid dependencies if it means potentially putting your users at risk.

Mozilla Web DevelopmentFirefox Marketplace: April 19th – May 2nd

This is a regular post focusing on the status of the Firefox Marketplace.

  • Total bugs open: 538
  • Total bugs opened last two weeks: 237
  • Total bugs closed last week: 159

Payments testing was conducted in the field and that caused a large number of bugs to be filed.

Some specific changes of note:

  • API for the simulator to create app receipts (865498)
  • Users languages are now persisted for Marketplace and AMO so emails can be localized (833049)
  • API now works correctly with geo location (863775)
  • App locale listings improved in the developer pages (866287)
  • A whole bunch of payment fixes from Bango.
  • Product icon API makes payment pages so much prettier (864451)
  • Fireplace shows new apps (867272)
  • Review queue for themes improved (841185)
  • A parser for the new app feature detection (862459)
  • New design for the details page (860384
  • If users abort during PIN, make them start again (867727

Payments with an icon:

Screen Shot 2013-05-03 at 4.14.27 PM

Web activities are coming to the Marketplace.

Check out the documentation for more.

Mozilla User ResearchPolish All The Things!!1

Firefox for Android UI Hackathon, Spring 2013

 

Hackathons are a great way to get a bunch of people sprinting through a very focused body of work, and they’re also just great fun to do.

And much to the UX team’s delight, our engineering team recently organized one that was focused solely on UI polish bugs! We almost always have a backlog of subtle but important refinements we’d like to add to Firefox, and while we are incredibly lucky to work with an engineering team that values good design, there are still only so many hours in the day and only so much of peoples’ time available to make fixes. This was a great opportunity to sand down some of the rough edges we had been thinking about for a while.

The hackathon bugs had to be simple enough fixes that could be made in the short time frame of the hackathon, so brand new features were off the table. This was all about polish. And in order for the sprint to be successful, there couldn’t be any road blocks or missing details, so I made sure that whichever ones people wanted to work on had the most up to date instructions and designs ready to go.

This was our short list when we kicked off the hackathon. https://bugzilla.mozilla.org/buglist.cgi?quicksearch=sw%3Aui-hackathon

Over the course of a few days, the team knocked off *19* of these bugs. Some of the most visible improvements included:

New tab counter icon

We recently simplified the title bar area to use a single ‘background layer’ colour. For the hackathon we also revisited the icon design to more clearly communicate what would happen when you tapped it, using a visual metaphor that has become more or less the standard for tabs on mobile web browsers. Some earlier design explorations are shown below.  / http://bugzil.la/863379

icon tests

New tab increment animation

We also wanted to add a little dimension to the new tab counter icon, so we added a fun transition that appears when you create a new a tab.  / http://bugzil.la/863828

tab-increment

Refined tab tray transition

We have been exploring ways of making the tab tray opening feel more fluid and interesting. Below is an example of a parallax-like transition we experimented with for opening the tab tray. A slightly simplified adaptation of the animation below is in our Nightly build. / http://bugzil.la/864960

tab-tray-opening

Text labels in the tab tray

The tab section icons that existed in the previous design didn’t communicate the section contents as clearly as we would have liked, so we replaced them with text labels. / http://bugzil.la/862996

Screen Shot 2013-05-03 at 3.02.24 PM

Increased Reader Mode touch target size

Kind of a no brainer, but for some reason the touch area was tiny here for a long time. / http://bugzil.la/862755

Screen Shot 2013-05-03 at 3.05.29 PM

Reader Mode refinements

We recently added an option to use Charis — a serif typeface — in our Reader Mode, and it makes for a very pleasant read. / http://bugzil.la/862445

reader

Dominant colour sampling for favicon backgrounds

We display large favicons whenever we can, but many websites still only provide 16px favicons. This often makes for rather dissonant looking lists in our UI. Adding a tint of the favicon’s dominant colour to the background makes individual list items more quickly recognizable, and makes the lists look a little more designed overall. We’ll also use this approach for thumbnail boxes in cases where a screenshot of the website is unavailable. / http://bugzil.la/837392

Screen Shot 2013-04-19 at 3.46.44 PM

Optional title bar URLs

We added a setting to let users display URLs in the title bar, instead of page titles. / http://bugzil.la/778216

Screen Shot 2013-05-03 at 3.23.15 PM

Not bad for a couple of days’ work, right? A huge thanks to Lucas Rocha for organizing the event, and to the Firefox for Android front-end team and all the contributors who participated in our hackathon. Each one of these tweaks are wonderful refinements on their own, and having watched all of them land in the course of a few days was truly delightful. The next few releases are shaping up to be pretty special on Firefox for Android.

Of course, as always if you don’t want to wait for the update on Google Play, you can try out all of these enhancements _right now_ by downloading one of our Firefox Nightly builds. Enjoy!

Firebug BlogFirebug 1.12 alpha 5

getfirebug.com has Firebug 1.12 alpha 5

Firebug 1.12a5 fixes 22 issues
Firebug 1.12a5 is compatible with Firefox 20-22


Some highlights from this release

  • Filter for DOM event logs (issue 229)
  • This feature allows to filter DOM event logging that is set for specific element.

    We are not entirely sure if the UI/UX is OK and so, please read this post to help us.

    Filter DOM Events


  • The CSS panel displays file with @media elements (issue 1717)

  • @keyframes rules are now displayed inside the CSS panel (issue 5290)
  • @keyframes rules inside CSS panel


  • Autocompletion for Firebug’s CommandLine API (issue 5416)
  • There is a new auto-completion support for Command Line API.

    Command Line Autocompletion

  • @-moz-document rules are displayed inside the CSS panel (issue 5429)
  • @-moz-document rules inside CSS panel



Please post feedback in the newsgroup, thanks

Jan ‘Honza’ Odvarko


Firefox FlicksWhat does “Get Mobilized” mean to us?


Some Flicks participants have been wondering, “What does Get Mobilized really mean?” So we thought we’d write a post expanding on the idea to help you create your flick.

But before we talk more about that, you should check out the Creative Brief and the first Early Entry winners as a starting point. We think it’s great inspiration and a chance to see some good examples of other contestants’ interpretations of the theme.

Once you’ve done that (take your time, we can wait), read on for more insights.

We’ve broken this post into two sections: themes within the Get Mobilized concept and Get Mobilized dos and don’ts.

Themes within the Get Mobilized concept

Get Mobilized might seem like a lofty, abstract idea at first glance. And while it’s definitely open to interpretation, there are also some specific themes we think it should capture.

One of those themes is connectivity. Getting mobilized is about bringing people closer to take us all further in life and higher in our goals — together (that last part is key).

The concept of connectivity in the mobile world can happen through something as simple as collaborating on a project using emails and instant messaging, but it can also be demonstrated through more complex ideas, like changing or improving your existing personal relationships.

Two other important, connected themes within Getting Mobilized are accessibility and the democratization of the Web. We believe that everyone should have equal access to the Web and all of its amazing resources. We also think that there are unlimited possibilities of what can be made, done or discovered with the power of the Web.

At the same time, we realize that Web access is undergoing a shift from desktop computers to mobile devices. And we don’t think it’s fair that only people who can afford expensive smartphones should have access to the new frontiers of the Web on mobile.

So the themes of accessibility and democratization are the keys to this shift — we believe it doesn’t matter where you’re from, what you do or how much money you have; everyone should be able to Get Mobilized.

Get Mobilized dos and don’ts

DO make your video 60 seconds or less — we can’t approve videos longer than that.

DON’T show any branded devices — we want the concept of getting mobilized to speak for itself and not rely on specific phones or manufacturers.

DO focus on the concept and possibilities of mobile. Think of this as an inspirational video that demonstrates the power of mobile, not a video about Firefox.

DON’T focus on Firefox specifically. This isn’t an ad for Firefox in the mobile world. Instead, it’s a demonstration of the potential of mobile computing in real life settings and situations. It’s also a demonstration of the themes within Get Mobilized: connectivity, accessibility and the democratization of the Web.

DO use any style of filmmaking you want — it can be live action, animation or anything else you can think of.

DON’T limit yourself to videos shot with a mobile phone — you can use any equipment you like. If you’re just submitting videos made on a mobile device, but the content doesn’t demonstrate the concept of Get Mobilized, we can’t approve your submission to Flicks.

DO make your video in any style you want — it can be funny, serious or a little weird. The only thing we’re specifically looking for is that it be inspirational, hopeful, forward-looking and that it evoke feelings and emotions from the viewer around the power of the Web on mobile.

DON’T make a video that talks to Web experts, like programmers or hackers. In fact, you should think about people who are just coming online — your video should demonstrate what the Web can do for them and why it is or will be an important, essential tool in their everyday lives.

We hope this post clarifies our thoughts around the Get Mobilized theme and helps you to think strategically about the content of your submission. We can’t wait to see how you interpret the theme — so get out there, get creating and together we’ll Get Mobilized!

WoMozWoMoz Meeting Notes (April 30)

Meeting Agenda and Notes can be found here: https://womoz.etherpad.mozilla.org/30-04-13

Our next meeting will be on Wednesday MAY 15TH AT 16:00 UTC, irc channel #womoz

Project Highlights:

  • Our new logo creation is looking good! Good progress there. Mozilla Creative team is going to help out and give us some design options from which to choose from within the next few weeks
  • Swag will therefore be created and distributed for local WoMoz events, once the logo is done
  • WoMoz committee is now formed. We are still open for one more person, in order to have an uneven number in the committee (for the moment we are 4). In the meantime the committee will start getting organized and start performing its tasks. Some of the things the committee will initially focus on are:
    • Coordinate WoMoz effort around the world, in local communities
    • Driving ideas for increased participation of local WoMoz Reps
    • Work with Recruiting/Engagement teams to grow women’s presence at our events (that aren’t organized by WoMoz) eg: Hack Days
  • Want to join and help out in the WoMoz project? Choose an area here to participate!

Mozilla User ResearchDiscovery in the Marketplace

iStock_000005209088Medium

Shopping for apps is a different experience for everyone. Sometimes it can be easy — you know what you want right then and there, a couple of clicks and you’re done. But what if you don’t know exactly what you want, or you’re just window shopping? If this is you, you may have found that the majority of app stores don’t cater to casual shoppers such as yourself. As a frequent app buyer, I will share a few of my recent shopping experiences and how they have influenced the future design and functionality of the Firefox Marketplace.


Finding Apps 

Last month, I recall painstakingly shopping for the “ultimate” To-do app. I was surprised to find that not only are there tons to choose from, but several also came with high ratings. Because there was little to distinguish these top rated apps from one another, I was left with no other option than to download a few and discover for myself which one best suited my needs. Nothing like a little trial and error experiment when all I really wanted was a quick solution for tracking my Honey-Do list from the fiancé.

We all have our favorite bloggers, columns and influencers that we trust to lead us to next “big thing”. I kick my mornings off every day with a cup of coffee and reading the daily Verge. One feature I especially look forward to seeing is The Verge’s weekly “Best New App”. A couple of weeks ago a new weather app called “Haze” was profiled. After quickly reading the blog’s brief synopsis, I dashed off to the app store to see what all the fuss was about. As usual, The Verge did not steer me wrong; “Haze” not only looks great, but provides a new and unique way to view weather patterns. This “Influencer Experience” shows us the power of recommendation.

A couple of months ago I was browsing through the gaming category of an app store, searching for a game to please my wandering mind, and hopefully waste a few hours of time. Page after page nothing caught my eye. Then all of a sudden — like finding a five in your pocket — there it was: A Super Nintendo RPG port called “Chrono Trigger”. Besides being a RPG classic, the sight of the game brought me back to my childhood and I immediately felt an emotional connection to it. Would I expect a game that came out twenty years ago to be on top of the digital shelf? No, but I couldn’t help but wish I had known about this app earlier. Don’t get me wrong, I’m glad I found my little childhood treasure, but what if apps could find you?


Apps Finding You: The Feed

There will always be room for the in-and-out app shopper, but what if the casual shopper could have apps come to them? Not just any apps, but specific apps based on your interests. “Apps Finding You” is a major theme that the Marketplace team has been exploring. We have been thinking about how to serve the casual shopper with a smarter Marketplace discovery; one that presents you with the apps you want to see and the apps you didn’t even know existed. One of the many ideas the team has been exploring to implement this theme is a Marketplace feed. This feed would start out generic, but would quickly become customized based on the user’s interests. Users would not only be presented with apps, but also with app collections, featured apps, editorials, and third party recommendations — providing additional context to inform their purchases.

Apps Based on Interest

Apps Based on Interest

App Collections

App Collections

Third Party Recommendations

Third Party Recommendations

Localized Apps

Localized Apps

Feeds have been utilized for content consumption with apps like Zite and Flipboard, so why not utilize them for the app shopping experience? What we are talking about is simplifying the app discovery to be what you want it to be. Instead of presenting me with the entire store, I’m telling the Marketplace that I have a need to find my ultimate To-do app, or that I would love to see my favorite app reviewers give me their “in-store” recommendations, or yes, that I have desire to conquer every Super Nintendo game from my childhood on my smartphone. Hey, no judging — what would I find in your app feed?


 

Software CarpentryMake It Easier to (Re)use Your Data

Software Carpentry has focused on computing for most of its 14 years (primarily because that's what I'm most familiar with) but it's increasingly clear that we need to tackle other parts of the research cycle. One is the new ideas clustered around publication, discovery and metrics, which I'll discuss in a future post. The other is data management; we only touch on the topic right now, but it's as important to most scientists as crunching numbers, and how best to do it is changing rapidly. Luckily, a few of our friends have written a guide for the perplexed:

Ethan P. White, Elita Baldridge, Zachary T. Brym, Kenneth J. Locey, Daniel J. McGlinn, and Sarah R. Supp: "Nine simple ways to make it easier to (re)use your data". PeerJ PrePrints, v1 received 2013-04-11, DOI: 10.7287/peerj.preprints.7.
Sharing data is increasingly considered to be an important part of the scientific process. Making your data publicly available allows original results to be reproduced and new analyses to be conducted. While sharing your data is the first step in allowing reuse, it is also important that the data be easy understand and use. We describe nine simple ways to make it easy to reuse the data that you share and also make it easier to work with it yourself. Our recommendations focus on making your data understandable, easy to analyze, and readily available to the wider community of scientists.

Their nine specific recommendations (elaborated at readable length in the paper) are:

  1. Share your data.
  2. Provide metadata.
  3. Provide an unprocessed form of the data.
  4. Use standard data formats.
  5. Use good null values.
  6. Perform basic quality control.
  7. Use an established repository.
  8. Use an established and liberal license.

It's a great outline for a half-day introduction to data management as part of an "extended play" Software Carpentry course, particularly when combined with William Stafford Noble's "A Quick Guide to Organizing Computational Biology Projects". We hope to turn the pair into lessons by September.

Software CarpentryMore Detailed Feeback from Melbourne

The hosts of our February boot camp at the AMOS conference in Melbourne have collected some more detailed feedback from participants. I'm pleased that two thirds thought the content was just right, and even more pleased that 83% thought version control "must be taught".


How useful did you find the online software installation instructions?

76%Very useful: I required no assistance with installing the software
24%Somewhat useful: I required minimal assistance with installing the software
0%Not very useful: I required significant assistance with installing the software I was unable to get most of the software installed

How did you feel about the schedule?

Too earlyFineToo late
9:00am start3%93%3%
4:30pm finish0%97%3%

The lunch and tea breaks were:

3%Too short
93%A good length
3%Too long

What do you think is the ideal length of time for a boot camp?

3%1 day
33%2 days
50%3 days
13%1 week

Rate the following topics in terms of how important you think they are for a weather/climate science audience.

Must be taughtTake it or leave itTake it out
Intro to Python86%7%7%
Program design and testing97%3%0%
Version control83%14%3%
Regular expressions43%50%7%
Databases31%48%21%
Numpy57%32%11%

In general, you found the content:

0%Much too hard: I was struggling to keep up!
14%Slightly too hard
66%Just right
17%Slightly too easy
3%Much too easy: I was struggling to stay awake!

"Online office hours" is a service provided by Software Carpentry where you can get online assistance over a 2 hour period once a week. Which item best describes your current engagement with that service?

0%I've attended in the past but probably won't again
7%I've attended in the past and will do so again
55%I've never attended but probably will in future
38%I've never attended and probably never will

If a boot camp (of similar content) was held in conjunction with the AMOS conference in Hobart next February, do you think you would attend (i.e. as a refresher)?

18%Yes
32%No
50%Maybe

hacks.mozilla.orgFirefox OS Simulator 3.0 released

About 6 weeks ago, we wrote about the preview of Firefox OS Simulator 3.0 and now we’re happy to release it!

New features

In our preview coverage, we listed the new features for this version:

  • Push to Device
  • Rotation simulation
  • Basic geolocation API simulation
  • Manifest validation
  • Stability fixes for installation and updates to apps
  • Newer versions of the Firefox rendering engine and Gaia (the UI for Firefox OS)

Since then, apart from verifying and making the above functionality stable, other notable improvements are:

  • Keyboard shortcut to repackage/reinstall/restart the current app – drastically improving workflow speed, especially for packaged apps
  • Significantly reduced download/installation size of the Firefox OS Simulator
  • Faster start time (partly due to above with smaller size)
  • Much newer versions of Firefox OS and Gaia
  • General bug fixes, making it more functional and reliable
  • OS-standard ways in the menu to close the Simulator, with corresponding keyboard shortcuts (Alt + F4 on Windows, Cmd + Q on Mac, Ctrl + Q on Linux)

Firefox OS Simulator documentation

As part of this release, we’d also like to highlight our updated Firefox OS Simulator documentation on MDN and also our Firefox OS Simulator walkthrough example.

Download/install the Firefox OS Simulator

You can download version 3.0 of the Firefox OS Simulator from our add-ons web site.

Please let us know what you think in the comments! If you encounter any bugs or problems, please file a bug.