Meeting NotesMobile: 2015-05-06

Schedule

Tracking Review

Beta

  • Next Build:
ID Summary Status Assigned to Last change time
1051556 crash in java.lang.IllegalArgumentException: invalid selection notification range at org.mozilla.gecko.GeckoEditable.onSelectionChange(GeckoEditable.java) ASSIGNED Eugen Sawin [:esawin] (esawin) 2015-04-15T16:09:34Z
1148391 Tapping the bottom of the screen will make the reader mode toolbar bounce up and down NEW :Margaret Leibovic (margaret.leibovic) 2015-05-04T16:06:10Z
1154732 Google search home screen shortcut displays blank page when opened NEW Mark Finkle (:mfinkle) (mark.finkle) 2015-05-06T20:25:22Z
1155597 Quick share icons are too big in quick share context menu (Gingerbread) NEW Michael Comella (:mcomella) (michael.l.comella) 2015-04-29T16:51:23Z
1159049 x86 Android is sent the OpenH264 plugin for ARM Android NEW Chris AtLee [:catlee] (catlee) 2015-05-06T16:34:43Z


5 Total;
5 Open (100%);
0 Resolved (0%);
0 Verified (0%);

Aurora

  • Next Build:
ID Summary Status Assigned to Last change time
1010068 Disable OCSP for DV certificates in Firefox for Android NEW Brad Lassey [:blassey] (use needinfo?) (blassey.bugs) 2015-04-17T21:48:34Z
1016555 Disable OCSP checking for certificates covered by OneCRL ASSIGNED David Keeler [:keeler] (use needinfo?) (dkeeler) 2015-04-09T17:17:52Z
1047127 Panning very stuttery on this page with overflow-x NEW Danilo Cesar Lemes de Paula (danilo.eu) 2015-04-01T16:44:34Z
1084456 Enable MSE for MP4 on Jelly Bean+ NEW James Willcox (:snorp) (jwillcox@mozilla.com) (snorp) 2015-04-29T17:38:35Z
1093815 Use AndroidPlatformDecoder for standalone MP3 on Android ASSIGNED Eugen Sawin [:esawin] (esawin) 2015-05-06T16:01:16Z
1129614 Regression: Sometimes thumbnails in the tabs drawer are not updated, they expire ASSIGNED Mark Finkle (:mfinkle) (mark.finkle) 2015-05-06T17:03:33Z
1132508 Last tab is cut off in tab tray after rotation REOPENED Martyn Haigh (:mhaigh) (mhaigh) 2015-05-04T09:27:23Z
1150284 [Browser] Unable to zoom in/out on Google Maps NEW Kartikaya Gupta (email:kats@mozilla.com) (bugmail.mozilla) 2015-05-06T18:44:40Z


8 Total;
8 Open (100%);
0 Resolved (0%);
0 Verified (0%);

Nightly

  • Next Build:
ID Summary Status Assigned to Last change time
1126244 Create a maximum reader mode cache size and evict records when necessary ASSIGNED Vivek Balakrishnan[:vivek] (vivekb.balakrishnan) 2015-04-30T17:08:28Z
1153087 If tap “play” on a YouTube video in a Private Browsing tab, the external Android YouTube app is launched, dropping any pretense of privacy NEW Allison Naaktgeboren please NEEDINFO? :ally (ally) 2015-05-06T16:34:36Z
1159368 After queueing a tab, I get put into the search activity NEW Martyn Haigh (:mhaigh) (mhaigh) 2015-05-06T16:58:47Z


3 Total;
3 Open (100%);
0 Resolved (0%);
0 Verified (0%);

Friends of the Mobile Team

Give a shoutout/thanks to people for helping fix and test bugs. Make sure friends also get awarded a badge. New contributors are highlighted in bold.

Android

  • Capella fixed bug 1154646 – Mobile about:config determines pref existence incorrectly and bug 1160352 – Don’t load SelectionHandler at start-up
  • Nathan Toone fixed bug 1158906 – Pressing <enter> on hardware keyboard does not perform search and bug 1161134 – Use AppConstants.BROWSER_INTENT_CLASS_NAME
  • Matt King fixed bug 952290 – Long press on navigation buttons (i.e. back/forward) in app menu should bring up history list
  • Sebastian fixed bug 1126048 – Add test to ensure state is correct when switching to loading pages
  • Dominique fixed bug 1127901 – Zoomed view tool bar implementation

iOS

  • dusek is on a tear
    • bug 1161254 – Reader mode accessibility strings capitalization should be consistent with other UI
    • bug 1161210 – Accessibility screen changed notification should be posted on transitions between BVC and HomePanelVC
    • bug 1161179 – With multiple tabs, VoiceOver sometimes visits elements from non-displayed tabs
    • bug 1160781 – Browser view controller’s accessibility “escape gesture” audit
    • bug 1160638 – Reader Mode’s Display Settings need accessibility adjustments
    • bug 1160594 – Reader View bar items need accessibility labels
    • bug 1160469 – Cloud tabs header should be single element and heading for accessibility
  • Sachin Irukula fixed bug 1153652 – Disable toolbar buttons for internal pages

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!

James W. (snorp)

  • Tested OpenH264 1.4 update
    • Reminded that it doesn’t work at all on 5.0, so got a patch up for bug 1141693
  • Working on enabling MSE
  • Spent more time on bug 1140359 (fullscreen hang with Flash, ugh)

JChen

Fixed
Working on

GCP

<Read Only>

  • Last week
    • Debugging WebRTC sandboxing try failures
  • Next week
    • Something else I hope

Randall Barker

Last Week:

  • Patch for: bug 1159830. After patch lands, will need to set a preference (consoleservice.logcat) to see gecko console in logcat for release builds.
  • Working on bug 659285. Trying to get video to show errors and play button when autoplay has been blocked by pref media.autoplay.enabled=false.

Next Week:

  • Continue on bug 659285
  • Examine start up performance.

Eugen Sawin

  • Fixed pref loading for values containing external URLs (bug 1158131)
  • Found cause and fix for the blank content view on load issue (bug 1129074)
  • Proposed delaying update service startup (bug 1160204)

Brian Nicholson

WesJ

<Read Only> – Sore throat

  • bug 1147071 – Use encrypted database storage for passwords. Patches up.
  • bug 1144671 – Think about shipping with home screen default tiles.
  • bug 1151446 – User Agent when fetching favicons contains $%28PRODUCT_NAME%29
  • bug 1157843 – TabManager memory leak
  • bug 1158020 – Allow deleting bookmarks from the UI. Merged into richard branch.

liuche

Highlights:

  • Finishing “Select login” from doorhanger
  • mentoring, doorhangers w/ antlam

Present:

Past:

Margaret

Highlights:

  • Helped with reader view uplifts for desktop (development on 38.0.5 is winding down now)
  • ReaderMode.jsm performance telemetry (will be interesting for Android)
  • Starting work for home panel “speed dial” layout (including support for local images, which we don’t currently support!)

Past:

Present:

mcomella

  • Search engine bar
  • Misc. bugs

Past:

Present:

rnewman

<Read Only>

  • Not present: working from a Starbucks while having some motorcycle work done.
  • Sync, reviews, the usual — everything of interest will be mentioned by others!
Fixed
Working on

nalexander

<Read Only>

  • not present — in transit to office after short iOS meeting
  • mfinkle can talk about Adjust SDK integration
  • other things:
    • working with vivek on Split Pane history panel (patches up for review yesterday) (bug 1142171)
    • working with Ahmed on Exporting bookmarks (lots of back and forth and testing) (bug 775104)
    • working on iOS Synced Tabs panel

Martyn Haigh

Past:

Present:

Stefan

iOS: On-boarding almost ready to land. Made a new TestFlight build that seems to crash on older devices. Then moving on with bugs from the tracking list.

James Hugman

Template:Read-only

This week:

  • Tab save and restore; hard to reproduce bugs.
  • Popup blocking, investigation of how much WKWebView gives us (very non-fine-grained), and looking at our existing `Settings` microframework.

Ally

  • 1139232 Door hanger shows up in the tab over view (awaiting aurora uplift)
  • 1141769 Implement new style(unified) FHR/Telemetry password manager probes
  • 1141716 Use .SVG images for empty state of about:pages
  • 1154581 Add ‘browser’/’browse’ mention to the Firefox welcome screen
  • 1139553 Black overlay for doorhanger background
  • 1161760 Copy username doesn’t copy username
  • reviews
  • User onsite interviews with ckarlof & user research

BLassey

Fixed
Working on

MFinkle

  • Program review work \o/
Fixed
Working on

Antlam

  • Past
    • Partners stuff
    • Search
    • bug 1124232: Doorhangers specs
    • bug 1141904: Spec out Site ID + another doorhanger scenario
    • bug 1137483: Quick-search bar on Android
    • Contributor bugs: Export bookmarks, “Clustered links”/”zoomed view”
    • about:passwords Q2 scope/triage

Robin

iOS

  • General UI polish, for iPad and 6+.
  • RL/RV tweaks.
  • Specification for error templates.
  • Specification for loading interstitials.
  • Brainstorming for v1+

Android

  • Revisiting Privacy Coach (surfacing).
  • Revisiting kidfox.

Darrin

Done
iOS PRs:

  • reviewing on-boarding and other landed UI pieces
  • iOS UX priority list

Next

  • iOS v2/3 brainstorming and sketching
  • file bugs for iOS v1 papercuts

QA

Feature Focus


Details

  • Wednesdays – 9:30am Pacific, 12:30pm Eastern, 16:30 UTC
  • Dial-in: conference# 99998
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 99998
    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 99998
    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 99998
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 99998
    • CA/British Columbia/Vancouver: +1 778 785 1540, x92 Conf# 99998
    • CA/Ontario/Toronto: +1 416 848 3114, x92 Conf# 99998
    • UK/London: +44 (0)207 855 3000, 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: 2015-05-06

Schedule & Progress onUpcoming Releases (Lawrence)

  • Firefox 38.0 and ESR 38.0 RCs built and are being tested – release day is Tue, May 12
  • Firefox 38.0.5b1 delayed until next week
  • Next merge is Monday
    • mozilla-release = 38.0.5
    • mozilla-beta = 39.0
    • mozilla-aurora = 40.0
    • mozilla-central = 41.0

Firefox Desktop & Platform (Javaun/Chad/Martin)

Current Releases

Desktop Fx38

  • EME launching
  • MSE on MacOSX
  • In-content Prefs

A Video theme: EME, MSE Win/Mac. This is understandable as a user-facing issue. If anyone is uncomfortable with PR highlighting it like this, please let me know.

38.0.5: A lot of work in flux.

Win64: Call for help. If you’ve been hands-on with Windows 10, please reach out.

Firefox Mobile (Mark/Brad/Jenn)

Firefox for iOS

  • No longer on the critical path for June 2nd campaign launch
  • Scope is not changing, but taking the additional time to complete committed sync work, and to allow time for an external feedback cycle
  • No new official launch date yet, as we are dependent on the outcome of the external feedback cycle, but expected to be in terms of weeks, not months.

Firefox for Android

Beta (38)
  • Reader View & Local Only Reading List for this release. Pocket Integration is not in scope for the 38 release.
Nightly (40)
  • Tab Queues
  • Voice Search
  • Password Manager
  • Otherwise, light in terms of new feature content as the majority of work completed for this cycle was uplifted.

Developer Tools (Jeff)

Feedback Summary (Cheng/Tyler/Matt)

Desktop

Pulling weekly MSE summaries

Mobile

No updates


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

Air MozillaKids' Vision - Mentorship Series

Kids' Vision - Mentorship Series Mozilla hosts Kids Vision Bay Area Mentor Series

Firefox AppsTappx Extends Free Marketing Service to Firefox OS App Developers

For developers, marketing your app is not… fun. And it can be expensive. It’s pretty much the last thing any app dev wants to do or think about. But it’s entirely necessary if you want to give your creation the best shot at success.

So I’ve got some good news! Tappx has extended their effective—and free—app marketing service to Firefox OS content. It works like this…

Tappx is essentially an ad exchange exclusive to app developers. You embed other app ads into your content, and likewise your app will be advertised within other apps. You scratch my app and I’ll scratch yours. More than 3,000 developers currently use Tappx. It’s the largest cross-promotion community for app developers anywhere.

If you’ve never dealt with producing your own display ads before, no worries. Tappx offers “automatic banner templates,” which means the Tappx system will automatically size your graphics to appropriate dimensions.

Better still, you can geo target and localize your banner ads in various languages. Then, a unique Tappx algorithm will place your app’s adverts in front of the most relevant audience based on content type (e.g. gaming). You can access a personal dashboard to track where your app’s being promoted and other general performance information.

The currency used to run ads within the community is called Tappix. One click to your app costs 500 Tappix (you get 1,000 Tappix just for signing up). Typically, new devs build a surplus of Tappix before launching a marketing campaign of their own.

It’s a super simple process to get started; it takes about 30 minutes to get your app into the Tappx system. Give it a go right here.

Mozilla Add-ons BlogFriend of AMO: Zitronella

Today’s post comes from Andreas Wagner (TheOne); the correct attribution will appear pending a WordPress bug fix.

Congratulations to Astrid (Zitronella), our newest friend of AMO! Astrid dedicates her spare time to supporting German-speaking Firefox users in forums and chat rooms. She also helps to keep Firefox safe by finding and reporting potentially unsafe add-ons and bringing them to the attention of the AMO team.

“I have been contributing to Mozilla since 2010. Taking each and every one seriously, and providing support within computer literacy beyond the project is very important to me. Having the community at my back, exchanging experiences and working with them means a lot to me and is a huge enrichment.”

Thank you, Astrid! We’re glad to have you!

Thanks also to everyone who contributed to Marketplace and AMO last month–your contributions are reallly appreciated.

The new contribution wiki for May is now available. Please check it for projects that might interest you, and to report any of your contributions.

Air MozillaProduct Coordination Meeting

Product Coordination Meeting Duration: 10 minutes This is a weekly status meeting, every Wednesday, that helps coordinate the shipping of our products (across 4 release channels) in order...

Air MozillaThe Joy of Coding (mconley livehacks on Firefox) - Episode 13

The Joy of Coding (mconley livehacks on Firefox) - Episode 13 Watch mconley livehack on Firefox Desktop bugs!

hacks.mozilla.orgHow TV Functionality Leverages Web Technology

The convergence of Internet-based IPTV, Video-on-Demand (VoD) and traditional broadcasting is happening now. As more and more web technology comes to television, the gap between web apps and native apps is rapidly narrowing.

Firefox OS now supports the TV Manager API, a baseline of the W3C TV Control API (the editor’s draft driven by the TV Control API Community Group), which allows web-based applications to acquire information such as the Electronic Program Guide (or EPG) from service providers, and also to manage native TV hardware such as tuners and remotes. Firefox OS also relies on multiple API specifications to fully support TV functionality on a web platform. Some APIs are still on the road to becoming standards. Here is an overview of some common TV functions which can be implemented today via these Web APIs.

FxOS_TV

Tuner, channel, and EPG management

One of the primary goals of the TV Control API is to enable standard use cases, such as channel switching and other activities generally available and expected in conventional remote controls. The API exposes specific tuner, channel, and EPG information to the web app and also allows indirect interactions with the tuner modules. Some applications, like virtual remote control, are easy to enable with this API. And the web content has the flexibility to manipulate multiple tuners if resource-permitted. In addition, event-driven notifications about channel scanning status and EPG updates provide a dynamic way to access broadcasting information.

The following example shows how to get the available tuners and set the current playing source via the API.

    // Retrieve all the available tuners.
    navigator.tv.getTuners().then(function(tuners) {
      // Just use the first tuner.
      var tuner = tuners[0];

      // Set the 'oncurrentsourcechanged' event handler.
      tuner.oncurrentsourcechanged = function(event) {
        // The current source has changed.
      };

      // Get the supported source types for the tuner. 
      var sourceTypes = tuner.getSupportedSourceTypes();

      // Just use the first source.
      tuner.setCurrentSource(sourceTypes[0]).then(function() {
        // Succeeded to set the source.
      }, function(error) {
        // Failed to set the source.
      });
    }, function(error) {
      // Failed to get tuners.
    });

Streaming

When it comes to TV streaming, multiple web specifications work together. The Media Capture and Streams API enables access to multimedia streams from local devices, and it defines a MediaStream interface to carry video/audio tracks and other stream-relevant attributes. The current streaming data for each tuner can be wrapped in a MediaStream instance and retrieved via the TV Control API. Then the web content can start playing the stream by assigning it to HTML5 <video> elements. Here’s an example:

    // Retrieve all the available TV tuners and then play
    // the stream for the first tuner.
    navigator.tv.getTuners().then(function(tuners) {
      // Assuming a video element is already accessible to
      // variable |video|, just assign the stream to it.
      video.srcObject = tuners[0].stream;
    });

The Media Capture and Streams API and the HTML5 <video> element provide attributes and methods to help manage streaming contents. Combining the APIs and HTML5 elements makes the development of some advanced TV streaming scenarios, such as concurrent display for multiple streams (i.e., Picture-in-Picture), easier to accomplish and more flexible.

Track management

While playing video streams, sometimes the media content provides multiple audio channels and even includes subtitles. For instance, a film or a sports show may be broadcast with multiple supported languages available for the viewer to select. Thus, there are two lists of VideoTrack and AudioTrack objects in the HTML5 <video> element to help the web content utilize available video and audio tracks respectively. Meanwhile, the Media Capture and Streams API also provides certain methods to dynamically manage associated media tracks. With this flexibility, web content is able to play a video stream that’s originated from another connected device, such as a camera.

The HTML5 <video> element has a list of TextTrack instances. These tracks can be associated with a specific video tag to represent different instances, such as subtitles, captions, and metadata. In addition, multiple TextTrackCue objects containing time-sensitive data can be affiliated with them, and used to control timing of the display for subtitles and captions.

Recording

The MediaStream Recording API provides a MediaRecorder interface to fulfill recording requirements over the MediaStream. It lets the web content select the appropriate supported encoding format for the stream, and also enables the recorded media to be accessed either as a whole blob or in smaller buffers.

In cooperation with the Task Scheduler API and Service Workers, you can even add DVR-style scheduling functionality to your web app or web-driven device. On the other hand, the EPG data retrieved via TV Control API may also help the application record specific TV programs.

Emergency alert

Sometimes a public alert may be sent out via TV broadcasting or other communication systems when an emergency or natural disaster occurs such an earthquake, tsunami, or hurricane. A corresponding event-triggering mechanism included with the TV Control API can be used to help a web application manage an alert.

   // Assuming variable |currentSource| is associated with
    // the playing TV signal.
    currentSource.onemergencyalerted = function (event) {
      var type = event.type; // i.e. “Earthquake”.
      var severityLevel = event.severityLevel;
      var description = event.description;
      // Display the emergency information.
      // (More attributes could be available.)
    };

Final thoughts

TV broadcast mechanisms and applications are on a fast track to evolve rapidly, as is the web technology. Since many of the web specifications and APIs mentioned are still in the standardization progress, more functionality or further improvements might be added to make television experience more webby. As always, you can contribute to the evolution of these Web APIs by following along on relevant standards mailing lists and filing bugs when you find them.

Mozilla IndiaMozilla Writes to the Prime Minister of India

In the past weeks, the Indian Internet community, including many Mozillians, has been writing to TRAI in response to the consultation paper on regulating OTT services. Mozilla India was active in the campaign and appealed Indian users to voice their opinion in the net neutrality debate in India. This campaign raised critical questions on zero rated programs like Airtel Zero and Facebook’s Internet.org and its negative impact on the open Web.

While still exploring the various options available to bring Internet to billions who haven’t experienced the open Web, Mozilla’s Executive Chairwoman, Mitchell Baker, has written a letter to the Prime Minister Narendra Modi in support of the open Web and net neutrality.

The letter introduces Mozilla’s firm belief that all people should be able to experience the full diversity of the Web and asserts that zero-rating, as it stands now, is not the right solution to enable this, while agreeing on the need for new and alternative market solutions to bring people online to the open Web.

The letter highlights Mozilla’s commitment to do our part alongside the other actors in the Internet community to address the challenges in achieving higher Internet penetration.

The letter speaks about the concept of “innovation without permission” and how licensing, as proposed by TRAI, can be troublesome and oppressive, possibly preventing Indians themselves from building the next Internet giant. It also calls on the Government to create strong laws for protecting net neutrality to avoid harmful practices associated with net discrimination and to establish an enabling environment for development on the Web.

Mozilla’s stance and concerns about the zero-rating are spelled out by the Policy team in a post in the Mozilla Policy Blog and its companion piece by Mitchell Baker on her blog. These posts give us an idea of the nuances of the issue at hand and an overview of the solutions we need to actively pursue.

The net policy blog post also acknowledges the efforts of the Indian Internet community, including Mozillians in highlighting our concerns with zero-rating and its impact on an open Internet and states in unequivocal terms:

“We understand the temptation to say “some content is better than no content,” choosing a lesser degree of inclusion over openness and equality of opportunity. But it shouldn’t be a binary choice; technology and innovation can create a better way, even though these new models may take some time to develop. Furthermore, choosing limited inclusion today, even though it offers short-term benefits, poses significant risk to the emergence of an open, competitive platform that will ultimately stifle inclusion and economic development”

Mozilla India would like to thank Mitchell Baker and the Policy team for understanding the concerns raised by Indian net neutrality advocates and their timely intervention in support of net neutrality and open Web.

Meeting NotesThunderbird: 2015-05-05

Thunderbird meeting notes 2015-05-05. NOON PT (Pacific). Check https://wiki.mozilla.org/Thunderbird/StatusMeetings for meeting time conversion, previous meeting notes and call-in details

Attendees

aceman, aleth, Jorg K, merike, rkent, roland, wsmwk, MakeMyDay, rolandtanglao

Action items from last meetings

  • (done) wsmwk to pat glandium
  • (done) wsmwk to email hiro’s bug list to tb-planning
  • (done) rkent to review tracking list http://mzl.la/1EOx9Tm

Critical Issues

Critical bugs. Leave these here until they’re confirmed fixed. If confirmed, then remove.

  • AMO compatibility bump! (is not going to happen)
  • In general, the tracking-tb38 flag shows what are critical issues. In the next week or so, that list will be culled to only include true blockers for the Thunderbird 38 release. There will still be many.
  • maildir UI: nothing more to do for UI, still want to land a patch for letting IMAP set this.
  • gloda IM search regressions: mostly fixed, some db cleanup necessary for users of TB33+
    • aleth landed a fix to stop duplicated entries from appearing, nhnt11 patch to clean up the databases of Aurora/Beta/Daily has landed and is awaiting uplift

removing from critical list/fixed:

  • We need to decide on how to do release branching. I am uncertain whether Lightning integration requires this or not.
    • –> We’ve created THUNDERBIRD_38_VERBRANCH on mozilla-release
  • Lightning integration (below) really REALLY critical that we get this finished.
    • –> Patches landed, testing beta 2015-04-30

Releases

  • Past
    • 31.6.0 shipped
    • 38.0b3 shipped 2015-04-26 Sunday
    • 38.0b4 shipped 2015-05-03 Sunday
  • Upcoming
    • 38.0b5 (build Fri 5/8? when?)
    • 38.0b6?
    • 38.0 on May 26?
    • 31.7.0 2015-05-12+ Tues+

Lightning to Thunderbird Integration

See https://calendar.etherpad.mozilla.org/thunderbird-integration

  • As underpass has pointed out repeatedly (thanks for your patience!) , we need to rewrite / heavily modify the lightning articles on support.mozilla.org. let me know irc: rolandtanglao on #tb-support-crew or rtanglao AT mozilla.com OR simply start editing the articles
  • We need to fill the “Learn More” page with content, possibly point it to something more specific bug 1159682
  • Opt-out dialog: change “disable” to “remove” bug 1159698
  • tracking bug for lightning 4.0 bug 1153752

Round Table

wsmwk

Jorg K

  • Mail composition/spelling: bug 967494, bug 717292 (inline spell dictionary inconsistent), waiting for review by M Conley.
  • Editor losing style after image paste: bug 1140617
  • bug 1141446 – JSMIME regression, still awaiting final review
  • Today looked at “double Trash” issue 1156669

rkent

  • rail in releng seems to believe that we cannot overlap tb 31 and tb 38 and claims that was the previous practice, but Standard8 does not remember this the same way. At the moment I have been told that we cannot start building on the esr38 repo without disabling builds on esr31. This is still a developing story … until resolved I think we need to keep using comm-beta for TB 38 betas.
  • we have a backlog of jsmime issues, jcranmer has been quite tied up with real life. Several of us have been trying to fix these, but we need reviews.
  • Let’s review the critical tracking-38 bugs (29 at last count) http://mzl.la/1EOx9Tm

mkmelin

  • reviews
  • thunderbird hotfix support – bug 914225 ready to land

Question Time

– PLEASE INCLUDE YOUR NICK with your bullet item —

aleth

Some testing/verification that chat logs are now being properly and completely indexed by gloda would be helpful, cf bug 1146698 (landed on c-c, a possible candidate for uplift).

Support team

  • Roland owes sumo kb article links for release notes. Hope to have stub articles ready today

Other

  • PLEASE PUT THE NEXT MEETING IN YOUR (LIGHTNING) CALENDAR
  • Note – meeting notes must be copied from etherpad to wiki before 5AM CET next day so that they will go public in the meeting notes blog.

Open Policy & AdvocacyMozilla View on Zero Rating

Our support of net neutrality is grounded in our belief that we all must fight to maintain an open, global, and growing Internet. Because of the scale and potential of the Internet, it must be an international effort. We see a growing focus on net neutrality around the world and believe that this focus is positive and necessary for the continued health of this valuable global asset.

In India, for example, the focus on net neutrality and the impacts of zero-rating have reached an important inflection point. This week, we sent a letter to the Prime Minister of India supporting net neutrality, in response to an open consultation by the Telecom Regulatory Authority of India on Internet services. The Indian Internet community, including many Mozillians, has spoken out expressing concerns with zero-rating and its impacts on an open Internet. Not surprisingly, we too are concerned, and Mozilla’s Executive Chairwoman Mitchell Baker posted to her blog to identify what those concerns are. The bottom line is that zero-rating may actually NOT connect the world’s unconnected billions to the Internet, in India or elsewhere.

Zero-rating does not at first pass invoke the prototypical net neutrality harms of throttling, blocking, or paid prioritization, all of which involve technical differentiation in traffic management. Instead, zero-rating makes some Internet content and services “free” by excluding them from data caps that apply to other uses of traffic (which can result in “blocking” of sorts if a user has no available data left in a billing period).

The impact of zero-rating may result in the same harms as throttling, blocking, or paid prioritization. By giving one company (or a handful) the ability to reach users at no cost to them, zero-rating could limit rather than expand a user’s access to the Internet and ultimately chill competition and innovation. The promise of the Internet as a driver of innovation is that anyone can make anything and share it with anyone. Without a level playing field, the world won’t benefit from the next Facebook, Google or Twitter.

There are many things we still don’t know about zero-rating. It’s a relatively new business model and there is not a lot of data about its benefits or its harms, so we don’t know with certainty what the long-term effects will be. We don’t have data on substitutability – how many users will reduce or even stop their open Internet use because they have to pay, while walled garden offerings are free to them. But we do have data indicating that a significant percentage of people confuse “the Internet” and “Facebook,” – in part because of Facebook’s Internet.org initiative – notably including a global survey by Quartz where over half of respondents agreed with a statement equating Facebook with the entire Internet.

There’s also missing data on the other side of the equation. There may be markets where affordability hurdles to access remain so significant that mobile networks can’t reach economies of scale to keep prices down. It may be possible that access to zero- rated services will help to give previously unconnected users a “taste” of the Internet leading them to demand access to the open Internet itself. The truth is we don’t know.

Still, prohibition through legislation or regulation, a path some governments have taken or are considering, may not be the right answer. Taken to an extreme regulation could chill some innovation and could result in industry not taking collective action. Even worse, regulation could allow governments to determine which content could/should be zero-rated – and the benefit of net neutrality is that no entity should get to decide which content a user has access to. Different markets and political environments require individual analysis. In some contexts, such as Netflix’s abandoned zero-rating plans in Australia, resolution may occur as a result of public pressure, without formal action.

We understand the temptation to say “some content is better than no content,” choosing a lesser degree of inclusion over openness and equality of opportunity. But it shouldn’t be a binary choice; technology and innovation can create a better way, even though these new models may take some time to develop. Furthermore, choosing limited inclusion today, even though it offers short-term benefits, poses significant risk to the emergence of an open, competitive platform that will ultimately stifle inclusion and economic development.

There are alternative approaches that could serve as solutions to the challenges that zero-rating seeks to address. For example, Mozilla has sought to create such an alternative within the Firefox OS ecosystem. Our partnership with Grameenphone (owned by Telenor Group) in Bangladesh allows users to receive 20 MB of data usage for free each day, in exchange for viewing an advertisement. Our partnership with Orange will allow residents of multiple African countries to purchase $40 Firefox OS smartphones that come packaged with 6 free months of voice, text, and up to 500 MB per month of data. Scaling up arrangements like these could represent a long-term solution to the key underlying problems of digital inclusion and equality.

Likely, the solution will be found in some combination of: new approaches and business models; potential increases in philanthropic engagement as Mitchell’s post suggests; and technology and business innovations to reduce the costs of connectivity. But whatever the mix is, preserving the level playing field that drives innovation and competition on the Internet must be the baseline.

We’ve tried to outline here some of the positive and negative issues associated with zero-rating. More education about these issues, and affordability and accessibility challenges, will be part of working out the right solutions. Multi-stakeholder roundtables and incubation challenges around alternative solutions to affordability problems are also likely fruitful pathways. Or maybe solutions will come from academia and think tanks, through research driven white papers. Mozilla will be exploring these options further in the months to come.

We look forward to working with the Mozilla community, others in industry, civil society, governments and other actors to think through how best to provide everyone with access to the full diversity of the open Web. We hope you’ll join us in these conversations.

 

Air MozillaWebdev Extravaganza: May 2015

Webdev Extravaganza: May 2015 Once a month web developers across the Mozilla community get together (in person and virtually) to share what cool stuff we've been working on.

Mozilla L10NCeltic Languages Meet-up

At the beginning of March I was able to attend a localization meet-up/hackaton hosted in the lovely city of Bangor, Wales. Besides being the home of good part of our Welsh localization team, Bangor’s university hosts a very active Language Technologies Unit working on fields like speech recognition, machine translation, language corpora, etc.
On Friday the meet-up was preceded by a conference, Through Technological Means (Trwy Ddulliau Technoleg), that aims to bring together academics and practitioners who have an interest in the use and proliferation of language technologies in minority languages.

The target of this event was to gather localization teams from several languages spoken in the area, in order to take them up to speed on the recent changes in Mozilla, discuss their successes and struggles, compare experiences and catch up with some localization work.

The event spanned over two days, with about 20 participants covering Breton, Welsh, Irish, Scottish Gaelic, Manx and Scots. A perfect match of old-guard locales with over a decade of experience, and new locales just starting to localize Mozilla products.

Celtic Meet-up Group

Photo by our fearless Mozilla Rep, Stephen Murphy

We started of with Mozilla’s mission: “Build the Internet as a global resource, open and accessible to all”. How can a product be really global, or even accessible if it’s not localized?
The localization of Firefox into Celtic and minority languages is a representation of Mozilla’s commitment to accessibility. As an open source project, everyday people take the fate of their language’s digital existence into their own hands and make Firefox a browser that esteems all the languages of the world equally.

We then moved to Mark Surman’s call to radical participation, and how important is to create a virtuous cycle where participation helps our products and programs, but at the same time people get value from participating.
It’s interesting to see what kind of values localizers are getting (or would like to get) from their contribution:

  • Being able to create connections with other people sharing the same passion for the language.
  • Being able to have an impact.
  • Being able to work directly with advanced technologies normally not accessible.
  • Coming from a linguistic background, learning practical IT skills.
  • Supporting local initiatives (e.g. localization academies).

It’s also important to remember that all these teams don’t simply work on localizing Mozilla products, but are often involved in localizing other Open Source projects like Libreoffice, KDE, etc.

Some interesting thoughts, and potentially actionable items coming from the meeting.

Download Page and Discoverability

The current download page for Firefox on mozilla.org relies exclusively on the current browser’s locale. If you’re using a browser set to en-US (American English), you’ll get a download link for the en-US version of Firefox.

It would be interesting to introduce geolocation in the picture: if you’re downloading Firefox from Bangor, the page should at least tell you that there are other builds you might be interested in for this area of the world. The same issue is relevant for other regions: think for example of a browser set to es-ES (Spanish from Spain) but used in Mexico, Argentina, or Chile, where we have specific localizations.

Printable and Localizable Marketing Material

We focus our entire communication on the “online”, but sometimes it would be useful to have material specifically created to be localized, printed locally and used in local events, or places like universities and libraries. And even keeping the focus on web content, we could do better in creating localizable campaigns. For example see this Libreoffice animation completely localized in Welsh.

Multi-language Support in Firefox

The current experience is far from good: you install an add-on (language pack) to add support for a specific language, but then you need another add-on to switch the UI language (or manually change preferences in about:config), and sometimes things break badly.

Multi-languages support is particularly important for minority languages: it’s not possible to install a browser in language X when there are multiple people with different language skills using a computer (think for example about universities and IT labs), sometimes that’s not even possible at home, where proficiency in a specific language might skip an entire generation.

Conclusions

Personally I found the event extremely fulfilling and useful. I hope it’s been an occasion for all participants to strengthen their bonds as Mozillians, and I’d like to thanks all people who spent energy and time in making this possible.

If you’re interested, some more links with further information and photos:

Meeting NotesMozilla Project: 2015-05-04

All-hands Status Meeting Agenda

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

Friends of Mozilla

Upcoming Events

Monday, 04 May
Tuesday, 05 May
  • MEF Brazil: Mozilla at TelaViva Movel
    • May 5-6, Sao Paulo Brazil
    • MEF panel: “Trailblazing in Latin America: business opportunities in mobile content” HTML5 development workshop (Andre)
      • Mozillians in attendance: Bertrand Neveux, Niran Amir, Marcia Zikan. Community meet up- Andre Garzia, Adriano Cupello, Rodrigo Padula and Renato Lima
  • Bi Monthly Contributr Meeting will be #contributors on irc.mozilla.org from 7pm to 8pm UK time 11:00am to 12 Noon PT
  • Mozilla Balkans Meeting – 6 PM CET/ 7 PM EEST
Wednesday, 06 May
  • Front-Trends 2015 May 6-8, in Warsaw, Poland
    • Front-Trends is a 3-day conference for web and mobile developers to discover the latest trends, technologies, and ideas in front-end development
    • Mozillians Andrzej Mazur, Zibi Braniecki, Stas Malolepszr, Piotr Zalewa will be at the booth to dmo FirefoxOS!
  • ScotlandJS Web Audio Hackday May 6th in Edinburgh, Scotland
    • The Web Audio Hackday is, if you will, a specialisation of the Music Hackdays with a focus on the Web Audio technologies. It’s a day long hackday with presentations at the end of accomplished hacks
    • Mozillian Paul Adenot attending, and Mozilla sponsored MIDI controller will be the hack winner prize
Thursday, 07 May
  • OPEN WEST, Utah May 7th to 9th in Orem, UT
    • Open West is the largest regional tech conference devoted to all things OPEN: Hardware, Standards, Source and Data
    • Mozillian Dan Callahan will give a talk on “Firefox OS App Development: It’s just the Web… or is it?” which is going to cover tooling, WebAPIs, API permissions, and distribution models
  • Login Conference, Vilnius Lithuania
    • LOGIN is the largest gathering of internet and tech community in the Baltic States. In 2015 we are expecting more than 100 speakers and 4 000 participants from Lithuania and all over the world.
    • More info in the Reps event page.
  • Linuxwochen Wien, Wien, Austria. – May 7th to 9th
    • The local Mozilla community has a booth and 2 talks at this FLOSS conference in Vienna. The booth includes a Firefox OS TV courtesy of Panasonic!
    • More info: official website. Hashtag: #lww15
  • SuMo Day for all contributors to help out on SuMo for the day
Friday, 08 May
  • Mozilla India Task Force Meetup, Bangalore, India. May 8th, to 10th.
    • Mozilla India Annual Task Force Meetup. A focused group of Mozillians who were actively part of 2014 task forces will meet for 3 days to reflect on 2014, discuss what worked, what didn’t work, what to improve, brainstorm on organizational pathways for regional community & create roadmap for 2015.
  • Ecuador Community Meetup, Guayaquil, Ecuador. May 8th to 10th.
    • Ecuador’s community meetup will help this community organize the structure, and define the goals for this year. 15~20 memebrs of the community will meet at Guayaquil on two days.
    • More info in the Reps event page.
Saturday, 09 May
  • OSCAL May 9th-10th in Tirana, Albania
    • OSCAL (Open Source Conference Albania) is the first international annual conference in Albania organised to promote software freedom, open source software, free culture and open knowledge. This will be their second event.
    • 20+ Mozillian reps attending, and Panos speaking on Firefox Dev Edition

Project Status Updates (voice updates)

Firefox and Cloud Services

Speaker Location: SF (Eric Petitt — Marketing Update)

Mozilla IT

mjeffries, Mountain View

MySQL Operations Changes

We are currently handing off MySQL operations except for Bugzilla and Reviewboard to a 3rd party contractor to free up the Data Team for bigger projects. If you have access to MySQL, that will not change. However, the people who debug problems will change. If you have any concerns or questions, please e-mail data@mozilla.com or contact the data team manager, Sheeri Cabral.

A/V Room Refresh

As part of our overall 2015 A/V Refresh Initiative, AVOps is updating our video conference room systems in SFO & PDX to meet our current standards for improved reliability, overall user experience and perform a technology refresh with equipment that is past its useful life. Check the wiki for a full list of rooms that will get new digs!

> SFO rooms to be updated: Java, Latte, Carol Channing, The Warfield, Noise Pop, Bay Bridge, Golden Gate, Macchiato, Espresso, Americano, Cappuccino, Ansel Adams, The Board Room, Justice League, Independent.

> PDX rooms to be updated: Hair of the Dog, Widmer, Blitz-Weinhard, Deschutes, Terminal, Hub

IT Vending Machine Update

The Mozilla IT peripheral vending machine has arrived in the MTV office. If you work in MTV ( or just visiting) and need a power cord, mouse, headset, etc. you can find the vending machine by the Service Desk. The machine is integrated with our badging system so all you have to do is swipe your badge and choose your item.

If you only need an item a short time please return it to the Service Desk so we can redeploy. Also, if you don’t find what you need in the vending machine please ask on of our Service Desk team.

IT Peripheral Vending machines are coming to the SF and Toronto offices in Q2.

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
Jill Alvarez University Program Manager 2015 Summer Interns! MV No https://www.youtube.com/watch?v=L9p67dTNNUs
Andrea Wood dir. of digital advocacy+fundraising Update on U.S. surveillance bill campaign remote (Oakland, CA) No Check out the Policy Blog and the petition
Jessica Osorio Community Marketing Manager Introducing Firefox Friends San Francisco No slides video Sign up today at friends.mozilla.org

Roundtable

Do you have a question about a Mozilla Project or initiative? Let us know by Friday- we’ll do our best to get you an answer.

Please note that we may not always be able to get to every item on this list, but we will try!

Who are you? Area of question Question
What’s your name? What do you work on? Is your question about policy, a product, a Foundation initiative, etc. What would you like to know?

Welcome!

Let’s say hello to some new Mozillians! If you are not able to join the meeting live, you can add a link to a short video introducing yourself.

Introducing New Volunteers

New Volunteer Introduced by Speaker location New Volunteer location Will be working on
Who is the new volunteer? Who will be introducing that person? Where is the introducer? Where will the new person be contributing from? What will the new person be working on?

Introducing New Hires

New Hire Introduced by Speaker location New Hire location Will be working on
Nick Nguyen Chris Beard Mountain View Mountain View VP, Product Strategy
Steph Leroux Mark Finkle US Remote (PA) Toronto Software Engineer, Mobile Firefox

Introducing New Interns

New Intern Introduced by Speaker location New Hire location Will be working on
Birunthan Mohanathas William Chen Mountain View San Francisco Platform: DOM
Anhad Jai Singh Hal Wine Mountain View San Francisco Release Engineering
Franziskus Kiefer Christoph Kerschbaumer Mountain View San Francisco Security Engineering
Michael Layzell Ehsan Akhgari Toronto Toronto Platform: DOM
Kyle Fung Jeff Muizelaar Toronto Toronto Platform: Graphics
Andrew Comminos Jeff Muizelaar Toronto Toronto Platform: Graphics
Anthony Zhang Vladan Djeric Toronto Toronto Desktop: Performance

<meta>

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

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

Engagement

  • Dial-in: conference# 8600
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 8600
    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 8600
    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 8600
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 8600
    • CA/British Columbia/Vancouver: +1 778 785 1540, x92 Conf# 8600
    • CA/Ontario/Toronto: +1 416 848 3114, x92 Conf# 8600
    • UK/London: +44 (0)207 855 3000, x92 Conf# 8600
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 8600

QMOQA Discourse category

We now have a category for QA in the mozilla-community discourse! Please take a moment to introduce yourself in the forum.

The following discussion categories are available:

  • Announcements
  • Introductions
  • Automation
  • Desktop Firefox
  • Mobile Firefox
  • Cloud Services
  • Web QA
  • FX OS

If you want to follow what is going on in QA, we also currently use these communication channels for announcements and discussion:

 

WebmakerWhat’s next for Webmaker tools

Thanks to our devoted community, Webmaker has grown substantially over the years. And with growth often comes change.

Our resources for making and teaching the Web are evolving. Mozilla Learning set out in 2015 to greatly improve both our educational tools and programs, and reach even more learners across the globe. This means giving each learner the ability to flourish independently. By granting our tools and community programs separate space, names, and attention, we can ensure they become even more potent resources for teaching Web literacy and improving the open Web.

On the learning programs front: we’ve recently launched teach.mozilla.org, our new home for those interested in teaching the Web. Here, educators and activists can find teaching activities, guidelines for hosting events, and information on Mozilla Clubs, our new initiative focused on teaching Web literacy to small groups of learners that meet regularly in classrooms, libraries, coffee shops, and anywhere else. The new site is still evolving and you can expect more activities, resources, and tools to be added over the next few months.

teach2

On the learning tools front: this June, the new Webmaker will emerge from beta. The app is a free, open source tool that will allow users to create custom Web content easily and quickly, no coding required. Webmaker is practical, fun, and a key building block for teaching and improving Web literacy. It’s also a tool for empowering individuals and strengthening the open Web: the app’s functionality and scope were informed by our months of research across the globe.

webmaker

The launch of the new Webmaker means we’ll be making changes to the current suite of Webmaker tools: X-Ray Goggles, Thimble, Appmaker, and Popcorn Maker. These tools have been critical to so many of our mentors around the world, and we’re devoted to continuing their legacy through our new educational resources. And as always, we’ll work with the community to ensure this evolution is as smooth as possible.

Below are our plans for updating the existing Webmaker tools. To receive ongoing news about this process, check this space or email us directly at info@webmaker.org.

Can I continue remixing web pages using X-Ray Goggles?
X-Ray Goggles is one of our most popular and useful tools for teaching the Web — it’s been a major hit at Maker Party events and other workshops and programs around the world, and was developed out of our city learning lab, Hive NYC.  Starting soon, X-Ray Goggles will be available on teach.mozilla.org. Here, users will still be able to install X-Ray Goggles to inspect and remix the code of their favorite web pages. And educators can keep X-Ray Goggles as a core part of their curriculum.

Publishing new makes with X-ray Goggles will still be possible, but as Web standards have changed some pages have protections in place that do not allow for key components to be modified and therefore published. Currently, we recommended that you identify specific pages to confirm that they allow for publishing before building your curriculum around them. We plan on evolving X-ray Goggles to cope with these new Web standards soon.

What’s in store for Thimble?
Expect to see exciting updates to Thimble when it also transitions to teach.mozilla.org later this year. Users can continue to develop their HTML and CSS skills, and teachers and mentors can retain Thimble as a part of their Web literacy curriculum. And don’t worry: users’ current makes and content will continue working in updated Thimble versions.

Professor David Humphrey from Seneca College in Toronto will work with his students to further enhance Thimble’s user experience and functionality, and make it an even better teaching tool. Humphrey is an active developer and longtime educational liaison with the Mozilla Foundation. He’s worked alongside us for years, and plays an ongoing, cardinal role in integrating open source practices with digital education. He’s won accolades for his work with Mozilla.

Can I still build apps with Appmaker?
Appmaker’s chief capability — designing apps and content with an intuitive, Lego-like building system — will be a core function of the new Webmaker. Users who built awesome creations with Appmaker can continue to carry out similar work with the Webmaker app, using more fun and creative tools.

What’s in store for Popcorn Maker?
Beginning on June 19, 2015, you’ll no longer be able to create new Popcorn Maker projects at popcorn.webmaker.org. Links to users’ existing makes will be available long-term in a view-only state.

Popcorn Maker is open source and dear to our hearts. We built Popcorn to push the envelope on what is possible with HTML5 and open video. In that spirit, we’d love to see both that code and community live on and continue to evolve. The code is available in github, and we encourage you to reach out to popcorn@mozilla.com if you’re interested in working with us to chart Popcorn’s future.

What will happen to my makes? Will they continue to work?
Your creations aren’t going anywhere.

In X-Ray Goggles, existing makes will be available long-term and accessible via existing links.

In Thimble, makes will continue to function as always and will be ported over to teach.mozilla.org on June 19, 2015.

In Popcorn Maker, existing makes will be available long-term in a read-only state. These will degrade with the evolution of the web and third-party services like YouTube, and we will no longer invest to maintain their compatibility.

In Appmaker, existing makes will be available for the next year in a read-only state and accessible via existing links.

In all cases, we strongly recommend you visit the gallery today and jot down the URLs of your favorite creations. We will also index existing Webmaker users’ makes and make those available to all users.

What will happen to my Webmaker profile?
Your existing Webmaker login will continue to work and allow you to access both the new Webmaker tool and teach.mozilla.org. When logging into these sites for the first time after this transition you may be prompted to create a new password.

What will happen to the existing webmaker.org website?
Webmaker.org will be the home for the new Webmaker tool beginning June 19.

Will the new Webmaker app be free and open source, like the current tools?
Yes and yes!

Who can I contact with questions?
We’d love to hear your questions, comments, and concerns as we improve our resources for teaching and building the Web. You can direct your messages to @webmaker on Twitter, or by email. For information on learning programs and the new teach.mozilla.org website email us here.

What happens now?
Start by visiting the gallery and saving links to your favorite makes. Then, head to teach.mozilla.org to explore our new learning communities resources.

Mozilla Add-ons BlogDropping support for binary components in extensions

Starting with Firefox 40, scheduled to be released in August this year, binary XPCOM support for extensions will be dropped.

Binary XPCOM is an old and fairly unstable technology that a small number of add-on developers have used to integrate binary libraries into their add-ons, sometimes to tap into Firefox internals (hence the unstable part). Better technologies have become available to replace binary XPCOM and we have encouraged developers to switch to them. From the original post:

Extension authors that need to use native binaries are encouraged to do
so using the addon SDK “system/child_process” pipe mechanism:
https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/system_child_process

If this is not sufficient, JS-ctypes may be an alternative mechanism to
use shared libraries, but this API is much more fragile and it’s easy to
write unsafe code.

Developers who rely on binary XPCOM should update their code as soon as possible to prevent compatibility issues. If you have any questions or comments about this move, please do so in the mozilla.dev.extensions newsgroup.

Air MozillaMozilla Weekly Project Meeting

Mozilla Weekly Project Meeting The Monday Project Meeting

The Mozilla BlogPlease welcome Jascha Kaykas-Wolff, Chief Marketing Officer and Nick Nguyen, Vice President of Product Strategy

Today we’re excited to announce two new additions to the leadership team at Mozilla, one joining us for the first time today, and the other returning.

Jascha Kaykas-Wolff joins us this week as Mozilla’s new Chief Marketing Officer with responsibility for leading our global marketing strategy and organization.

Jascha Kaykas-WolffJascha’s background and deep experience in product positioning, marketing strategy, and brand building make him ideally positioned to lead a strategic marketing organization that continues to build Mozilla’s global brands and influence in a highly competitive marketplace.

Jascha was most recently at BitTorrent where he served as Chief Marketing Officer. Prior to joining BitTorrent, Jascha was Chief Marketing Officer for Mindjet, Senior Vice President of Marketing and Customer Success at Involver and led Global Marketing for Webtrends.

He will be based in the Bay Area, working out of our Mozilla Space in San Francisco and our headquarters in Mountain View.

Background:
Jascha’s bio & Mozillians profile
LinkedIn profile
High-res photo

Nick Nguyen returns to Mozilla today as a Vice President of Product Strategy after 4 years away.  As a product strategist, he will be responsible for leading strategic product initiatives to advance our mission.

Nick NguyenPrior to his return to Mozilla today, Nick served as Sr. Director of Mobile Products at Walmart Labs following the acquisition of Tasty Labs, a mobile and social startup he co-founded and where he served as Chief Operating Officer and Vice President of Products. At Walmart Labs, he was responsible for launching award-winning Android and iOS apps for Walmart, Sam’s Club and Asda. Prior to this he served as Director of Addons for Mozilla where he was responsible for Firefox ecosystem development and customization features. He has also held a variety of product leadership and software development roles at Yahoo!, Trilogy and Ford Motor Company.

He will be based in the Bay Area and will work primarily out of our headquarters in Mountain View, California.

Background:
Nick’s bio & Mozillians profile
LinkedIn profile
High-res photo

We’re thrilled that both Jascha and Nick are joining us in our relentless pursuit of the Mozilla mission, our strategy of building great products and empowering people, and the impact we aim to have on the world.

Welcome Jascha!  Welcome back Nick!

chris

The DenThanks, teachers

firefox_teacher-appreciation_may-3-2015_facebook-timelineFor Teacher Appreciation Week, we salute the teachers who make a difference in every learner’s life. We made a thank you note (PDF) you can send to let your teachers know how awesome they are.

 

Mozilla SecurityDeprecating Non-Secure HTTP

Today we are announcing our intent to phase out non-secure HTTP.

There’s pretty broad agreement that HTTPS is the way forward for the web.  In recent months, there have been statements from IETF, IAB (even the other IAB), W3C, and the US Government calling for universal use of encryption by Internet applications, which in the case of the web means HTTPS.

After a robust discussion on our community mailing list, Mozilla is committing to focus new development efforts on the secure web, and start removing capabilities from the non-secure web.  There are two broad elements of this plan:

  1. Setting a date after which all new features will be available only to secure websites
  2. Gradually phasing out access to browser features for non-secure websites, especially features that pose risks to users’ security and privacy.

For the first of these steps, the community will need to agree on a date, and a definition for what features are considered “new”.  For example, one definition of “new” could be “features that cannot be polyfilled”.  That would allow things like CSS and other rendering features to still be used by insecure websites, since the page can draw effects on its own (e.g., using <canvas>).  But it would still restrict qualitatively new features, such as access to new hardware capabilities.

The second element of the plan will need to be driven by trade-offs between security and web compatibility.  Removing features from the non-secure web will likely cause some sites to break.  So we will have to monitor the degree of breakage and balance it with the security benefit.  We’re also already considering softer limitations that can be placed on features when used by non-secure sites.  For example, Firefox already prevents persistent permissions for camera and microphone access when invoked from a non-secure website.  There have also been some proposals to limit the scope of non-secure cookies.

It should be noted that this plan still allows for usage of the “http” URI scheme in legacy content. With HSTS and the upgrade-insecure-requests CSP attribute, the “http” scheme can be automatically translated to “https” by the browser, and thus run securely.

Since the goal of this effort is to send a message to the web developer community that they need to be secure, our work here will be most effective if coordinated across the web community.  We expect to be making some proposals to the W3C WebAppSec Working Group soon.

Thanks to the many people who participated in the mailing list discussion of this proposal.  Let’s get the web secured!

Richard Barnes, Firefox Security Lead

Update (2015-05-01): Since there are some common threads in the comments, we’ve put together a FAQ document with thoughts on free certificates, self-signed certificates, and more.

SUMO BlogWhat’s up with SUMO – 1st May

May is here! While the cherries keep blossoming in the northernmost reaches of Japan… We give you the latest updates from the world of SUMO :-) Welcome to the International Workers’ Day edition of the WUWS blog series! Say “hello” … Continue reading

hacks.mozilla.orgRDP Inspector: An extension for Firefox Developer Tools

RDP Inspector is a Firefox extension that intercepts the Remote Debugging Protocol (RDP) and allows inspection of all data sent and received.

This extension is useful for anyone who wants to extend native developer tools in Firefox by implementing new remotable features or for those who want to learn more about how built-in tools use the protocol internally to communicate with the backend debugger server.

Getting started

The latest RDP Inspector can be installed from addons.mozilla.org (you need to have at least Firefox 38 installed). The source code is also available.

You should see a new RDP Inspector button at the top-right corner of your browser window after installation.

start-button

Clicking the button opens the RDP Inspector console window.

rdp-console

The console shows all packets transmitted over the wire. It also shows packet details within the right side panel.

The screenshot above shows also the very first packet received from the server (from the root, with applicationType="browser").
This is how the connection between the developer tools toolbox and the backend server is initiated.

Filtering Packets

The packet list can be long and you can filter it. For example, in order to see only getTab packets sent to the root actor you can filter the packet list by typing getTab into a box located at the top right corner of the console window.

Tip: You can also press Ctrl+F and use the browser Find Bar to search within the packet list.

Summary Data

It’s sometimes useful to know how many packets or bytes are sent/received in total. This usually also helps to optimize protocol traffic and make new or existing features faster.

The console helps you get this summary info at at any time. All you need to do is press the Summary button in the toolbar.

The following screenshot shows a summary for the http://www.washingtonpost.com/ page load time with the Network panel selected (see the bottom of the packet list).

summary

You can see that 1266 packets have been sent, 2973 packets received, 75,80 KB sent, and 2.27 MB of data received from the server.

Chatting with the server

It’s also possible to send test packets to the server backend. You can put together a new packet with your own properties, send it to the server, and get a response as if it were a packet send by the developer toolbox. All you need to do is select the Send Packet side panel, set some properties, and press the Send button.

In order to create a new packet property click on the New… (yellow) line at the top of the panel and type its name.

As soon as you press the Enter key, a new property is inserted at the end of the list.

The default value is set to undefined and you can change it by clicking on the value text input box. Strings need to be inserted within quotes and new objects (JSON packet sub-tree) can be created by typing {} into the value input box.

When the packet is ready press the Send button and check out new packets displayed in the list.

The screenshot above shows that our test property has been sent. You can also see the response from the debugger server.

Tip: You might want to set the Show Packet Details Inline option (see the Options button in the toolbar) and see all packet properties directly within the packet list. This way you don’t need to constantly switch between the Packet Details and Send Packet side panels.

Introspecting the protocol

There are cases when you want to know what services are available on the backend server and test them. These can be both native or custom (installed) backend APIs. The protocol supports the following packet types that can be used for dynamic introspection.

  • requestTypes Send to any actor to get the list of supported packet types (methods).
  • protocolDescription Send to the root actor to get the list of all backend services (actors) and their methods

A response for requestType is already visible on the previous screenshot and you can see that protocolDescription is one of the packet types you can send to the root actor.

The next screenshot shows the response for the protocolDescription packet request.

Isn’t it great, you can chat with your protocol ;-)

Learn more about RDP Inspector on the

Learn more about the RDP Inspector over on the project wiki, and please help by filing any issues or bugs you discover. As always, we welcome your feedback.

Jan ‘Honza’ Odvarko

Mozilla Add-ons BlogMay 2015 Featured Add-ons

Pick of the Month: Save Text To File

by Robert Byrne

Save highlighted text to a file in the directory of your choice.

“One of a kind, save snippets as you surf with a single click including URL. Most important — excellent support.”

Featured: Adblock Plus Pop-up Addon

by Jesse Hakanen
Adblock Plus Pop-up Addon extends the blocking functionality of Adblock Plus to those annoying pop-up windows that open on mouse clicks and other user actions.

Featured: gTranslate

by Pau Tomàs, Pierre Bertet, Éric Lemoine
With gTranslate, you can translate any text in a webpage just by selecting and right-clicking over it. The extension uses the Google translation services to translate the text.

Nominate your favorite add-ons

Featured add-ons are selected by a community board made up of add-on developers, users, and fans. Board members change every six months, so there’s always an opportunity to participate. The deadline to apply for the next community board is May 10, 2015!

Each quarter, the board also selects a featured complete theme and featured mobile add-on.

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

Mozilla Add-ons BlogJoin the Featured Add-ons Community Board

Want to have a voice in which add-ons are featured on addons.mozilla.org (AMO)? If so, we invite you to apply for the featured add-ons board. Board members are responsible for deciding which add-ons are featured on AMO in the next six months. Featured add-ons help users discover what’s new and useful, and downloads increase drastically in the months they are featured, so your participation really makes an impact!

Anyone from the add-ons community is welcome to apply: power users, theme designers, developers, and evangelists. Priority will be given to applicants who have not served on the board before, followed by those from previous boards, and finally from the outgoing board. This page provides more information on the duties of a board member.

To be considered, please email us at amo-featured@mozilla.org with your name, and tell us how you’re involved with AMO. The deadline is Sunday, May 10, 2015 at 23:59 PDT. The new board will be announced about a week after.

We look forward to hearing from you!

Open Policy & AdvocacyComments sought on Internet governance transition

The Internet is part of the fabric of our society and our economy, and its governance affects countless aspects of our lives. Empowering individuals to have a voice in shaping the Internet is one of Mozilla’s core principles. Another of those core principles is that continued effectiveness of the Internet depends on decentralized participation worldwide.

We’ve engaged with global Internet governance a few times in past years, from the perspective of advocating for meaningful empowerment of Internet users. Often, the contrast is between so-called “multistakeholder” models and increased direct governmental control – as was the case in 2012, when we engaged in an active debate over whether to expand International Telecommunications Union (ITU) jurisdiction deep into the Internet, something we consider to be a bad idea. In contrast, open discussion forums like the Internet Governance Forum allow for more equitable participation between governments, businesses, and users of the Internet. We consistently support IGF as the best home for collective policy development as it touches the Internet.

Today, one of the major issues in Internet governance is the transition of oversight of certain technical administrative functions away from the U.S. government, where it has resided for decades, to a multistakeholder body. These functions are implemented by a number of groups, but the most well-known is ICANN, a non-profit organization that holds significant responsibility for managing policy decisions around domain names (like “mozilla.org” and “firefox.com”). (For more background: The Global Commission on Internet Governance has produced a thorough paper on this issue.)

At Mozilla, we’ve been tracking this transition, along with other Internet governance developments, from the perspective of promoting trust online and protecting a healthy future for the global, open Internet. We support shifting oversight in this space from the U.S. government to an accountable multistakeholder body, and we’re glad to see progress on the transition, as well as transparency and openness in the process.

For the next few weeks, ICANN is seeking feedback from the public on its proposed transition processes. The first of these is a proposal to transition naming related functions. We encourage you to make your voice heard at this inflection point on evolving global Internet governance.

Air MozillaReps weekly

Reps weekly Weekly Mozilla Reps call

Mozilla UXFirefox OS TV User Interface & Animation Design

Introduction

The approach to designing Firefox OS for Television is fundamentally different from phones or tablets. It requires rethinking of how experiences are structured and how to fulfill the needs of a wide range of uses. Firefox OS for Television was designed not only to simplify the UI, but also to optimize interaction, and to help users get the content they want immediately. Below is the detailed information about the concept of our visual and motion designs.

01_Home

User Interface Design

Responsive

The controls are designed in code (SVG) and will scale to any screen size without the need for new bitmap graphics. The UI is responsive, it works across devices of all shapes and sizes, from small screen watches to giant screen TVs. The UI components are created in SVG by using simple flat circles. We minimized the use of gradients and reduced shadows as much as possible, but made sure that the controls can be identified distinctly.

Style

Why a circle? We chose to use the circular shape of our Firefox logo as a source of inspiration. Circles have free movement (they naturally roll), shading and lines can enhance this sense of movement within the circle. Circles are warm, humane, comforting and natural. Their movement suggest energy and power. Their completeness suggests infinity, unity, and harmony. You’ll see the circle used throughout the designs of the components, especially in the animations.

Customizable

By changing a color, shape or style of an animation, the controls can be customized to suit any brand need. All controls are all well designed and created as CSS components allowing for effortless customization.

Design in Animations

Groundwork

A great way to make your animations move in a more lifelike manner is to vary the rate at which the object moves. Animation should imitate the world that we live in. So, it’s important to ensure that the pace of movements within your animations, making sure they reflect the real world.

Positioning / Scaling / Rotating

Positioning / Scaling / Rotating

Motion easing will create a more natural look when applied to positions, rotations, deformations, or scale. This will add acceleration and deceleration to the motion, and can make the experience much more playful and delightful.

Responsive

Motion should be responsive and intuitive. It should react in a way that reassures the user, rather than surprises or confuses them. The reaction of the UI, to a users actions, should be corresponding and comprehensible.

Personality

The most obvious principle is that any motion or animation should be of the highest standard possible. We animated and applied liquid motion to the main launchers (TV, Apps, Devices, and Dashboard) resulting in motion as the user selects each one of them. To users, this bespoke motion is truly delightful allowing for further engagement.

07_Intro_cards

Orientation

Motion should help ease the user through the experience. It should establish the “physical space” of the UI by the way objects appear on and off the screen, or establish the user’s focus. It should aid the flow of actions, giving clear guidance through the navigation model. Here in our TV home design, we used scaled motion to guide the users through which objects are selected, and keep the user orientated within the interaction path.

Less is more

Subtlety is key when designing the motion to UI. Motion should be used to help the user stay focused, therefore restraint is needed as the design is used as an accent to the interaction design and should not dominate the experience.

For more information and guides about Firefox OS TV, please refer to the session TVs and connected devices and find other links for relevant articles below.

I hope you enjoyed this post about how we designed Firefox OS TV. If you have any feedback or ideas to help Firefox OS Design Team improve ourselves, please leave a comment.

─ By Scott Wu, Firefox OS UX designer

 

Mozilla UXFirefox OS for TV UX Overview

Introduction

The user experience of Firefox OS on the television platform comes from Mozilla’s vision of the Connected Home. This departure from our smart phone interface focuses on ease of access, simplicity but most of all scalability across a variety of sized displays.

The television’s display comes with its challenges and specific use cases, it will always be found in a fixed location like a living room or meeting space. Due to its large size content will also displayed at a distance which impacts legibility of the content.  As with all technology, the television has evolved beyond just entertainment to now include powerful communication tools, the user now demands the television to act more like an information hub. Through our research we have discovered even more insights into user usage:

  • A television can be used to display content from various input sources (HDMI, DLNA, cable, SAMBA, etc) however each user’s input source priority is different.
  • A user wants to spend time on the content, not within the UI, so quick global navigation trumps complexity or added functions.
  • The importance of applications on smart televisions is growing rapidly, so its vital to frame the UI hierarchy giving equal (or balanced) weight to television channels, apps and input devices.

 

Card Metaphor

From our research insights we realized that a flat and single pathed UI will satisfy our users’ needs, this requirement translated well with the use of a card metaphor. Shown in the diagram below, the cards are aligned in a single file. Each card represents an entry point to content or service. The default set of cards are comprised of the four basic functions of a smart television:

  • TV: your live television feed
  • Apps
  • Devices: anything connected to the television
  • Dashboard: An overview of all your content

Many of the basic functions are actually aggregators of numerous sub-items, as in the case of the Live TV card there could be more than 200 channels. To differentiate from regular cards, we called these special aggregator cards: decks.

Default set of cards

A user can easily pick a sub-item card and pin it outside of a deck, this card can then be easily and quickly accessed. In the diagrams below we see a user pinning various cards outside of their decks to the HOME page. This could be any card from a TV channel to an input source, as soon as they are pinned to the HOME page they will inherit the same interaction hierarchy as the decks they were pinned from.

A live TV card (channel 32) is being pinned outside of a the TV deck

An input source (HDMI 3) is being pinned out of a the devices deck

 

Home

The main page of the television UI is called, HOME. The user can easily access it by pressing the HOME button on their remote control.

HOME

A user customized version of HOME, we have also added a foldering method to better organize pinned cards.

 

Dashboard

The DASHBOARD is a specially designed app and comes as one of the default cards on the HOME page. The function of DASHBOARD is to gather all the information that user is in need of and to display it in one central place. The UI has been optimized for a remote directional pad where tapping:

  • RIGHT takes you to Notification
  • LEFT takes you to upcoming TV shows
  • UP displays music playback and controls
  • DOWN displays the world clock

DASHBOARD

 

Apps and Devices

When a user downloads or installs an application it will appear in the APPS deck initially, the user can then choose to pin it to the HOME page if desired. The DEVICES deck functions in the same way where any new device will remain within this deck until the user explicitly pins it to the HOME page.

The APPS deck

Devices deck

For more information and guides about Firefox OS TV, please refer to the session TVs and connected devices and find links for relevant articles below.

Hope you enjoyed this post about how we designed Firefox OS TV. If you have any feedback or ideas to help Firefox OS Design Team improve ourselves, please leave a comment.

─ By Hunter Luo, Firefox OS UX designer

 

Meeting NotesChannel: 2015-04-29

Attendees

lmandel, sylvestre, roland, rrayborn, lizzard, hwine, kbrosnan, jenstrickland, elan, kairo, jorge, mschmidt, ryanvm

Schedule Update

  • 38.0.5 is hitting us hard
    • late build of b7:
      • l10n migration script not run
      • release automation failed (beta built from m-r)
      • Too late for QE sign off
      • Decided not to release (which was an excellent choice: we would have create a big(ger) mess)
    • b8: sign off postpone because of a branding issue affecting both desktop & mobile
      • now hitting CDN cache issue
      • one good news: mobile is live
  • The next GTB (beta 9) is Wednesday, go live Thursday (May 1st is an holiday)
  • I will be still tracking the 38 bugs as we have 38.0.5 (the same flags being used for the two versions… Yeh, I know :/) proposing new bugzilla tracking flag.
  • Sylvestre will be in pto May 9 => 16 (planned before Lukas left us)
    • lmandel is covering

Add-ons

Stability

Aurora / Dev Edition

  • Overall rate: 2.0 browser, 0.4/1.0 plugin crash/hang (target: <1.5; 0.07/0.14)
  • browser side is getting into decent shape for beta, but plugin side still far away from it
    • aklotz still looking into issues, making some progress
    • move it to 40 ?

Beta

  • Overall rate: 1.54 (target: <1.4, including shutdownhangs )
  • bug 1116812 (TDRs) is 3.7% in 38.0b6 data, bug 1157764 might help with that
  • bug 1127270 (layers::CompositorParent::ShutDown) is 3.6%
  • bug 1141089 (ContainerState::InvalidateForLayerChange) is 1.7%, only data-gathering patches so far
  • bug 1153558 (gfx, msvcr120.dll) is 1.5%, patch for bug 1133119 should help and be in b78
  • bug 1154003 (FillRectangle) is 1.5%, patch should be in b78
  • bug 1143806 (layers::SyncObjectD3D11::FinalizeFrame) is 1%, patch might not help 38

Release

  • Overall rate: 1.28 (37.0.1 had 1.33, 36 had ~1.2, 35 .8-.85)

QE

Beta

  • Push to beta will come shortly after this meeting, looks like CDNs are finally fine.

User Advocacy

Trusteer Rapport is broken
Keeping an eye on MSE, not noticing compelling qualitative feedback, doing some more quantitative stuff today.

Roundtable

  • Any objection to having a tracking-flags firefox-status 38.0.5 ?
    • The sheriff script not ready for this. We will have different issues
    • Sylvestre is going to take care of that
  • Do we need to plan for beta 10 early next week?
    • rc1/2 instead of a beta 10
    • gtb on sunday b10 (or rc1) ?
  • When/how should we do the merges?

Initially, we planned to merge m-b into m-r

  • release is 38.0.5 m-b 39 relbranch for 38

Option 1)
We do this merge:
39 will be in m-b
38.0.5 will be in m-r
Side effect => 39 won’t have any more testing until June 2nd May 26. Main risk there is for suggested tiles.

Option 2)
We don’t do this merge:
39 will live in m-a for a few more weeks.
38.0.5 beta will be built from m-b
38.0 will live in m-r (and we don’t have to use relbranch)
Side effect => 40 will be in m-a later and we want to communicate on this.
Also means that 40 will be on m-c longer delaying the start of 41

Option 3)
Postpone 38.0

  • OpenH264 update shipped to desktop Nightly, making its way to release (see thread on r-d)
  • Sync migration prompts have been enabled (bug 1154991)
  • YouTube MSE enabled again for small percent of 37.0.x release population on Windows

Special Topics

Aurora/Beta Feature Review

39


  • Suggested tiles: Many open bugs. Slated for 39 anyway. Bug 1140185.
  • Async plugin init: Disabled in 38. Still unstable. May not ride to beta on 39. Bug 1116806.
  • Vertical text support: Likely to be disabled when 39 moves to Beta. Bug 1138384.
  • FHR/Telemetry unification: May be disabled when 39 moves to Beta. Bug 1139460.
  • Sharing urls from Hello: On track for 39 release. Bug 1132301.

Great stuff! thanks!


Channel Meeting Details

Video/Teleconference Details – NEW

  • 650-903-0800 or 650-215-1282 x92 Conf# 99951 (US/INTL)
  • 1-800-707-2533 (pin 369) Conf# 99951 (US)
  • Vidyo Room: ReleaseCoordination
  • Vidyo Guest URL

Meeting NotesMobile: 2015-04-29

Tracking Review

Beta

  • Next Build:
ID Summary Status Assigned to Last change time
1051556 crash in java.lang.IllegalArgumentException: invalid selection notification range at org.mozilla.gecko.GeckoEditable.onSelectionChange(GeckoEditable.java) ASSIGNED Eugen Sawin [:esawin] (esawin) 2015-04-15T16:09:34Z
1129074 Content view sometimes blank on load until restart NEW Eugen Sawin [:esawin] (esawin) 2015-04-01T16:41:41Z
1148391 Tapping the bottom of the screen will make the reader mode toolbar bounce up and down NEW :Margaret Leibovic (margaret.leibovic) 2015-04-22T16:35:22Z
1155597 Quick share icons are too big in quick share context menu (Gingerbread) NEW Michael Comella (:mcomella) (michael.l.comella) 2015-04-29T16:51:23Z


4 Total;
4 Open (100%);
0 Resolved (0%);
0 Verified (0%);

Aurora

  • Next Build:
ID Summary Status Assigned to Last change time
776030 Allow Fennec to use the AsyncPanZoomController NEW Danilo Cesar Lemes de Paula (danilo.eu) 2015-04-28T19:45:15Z
1010068 Disable OCSP for DV certificates in Firefox for Android NEW Brad Lassey [:blassey] (use needinfo?) (blassey.bugs) 2015-04-17T21:48:34Z
1016555 Disable OCSP checking for certificates covered by OneCRL ASSIGNED David Keeler [:keeler] (use needinfo?) (dkeeler) 2015-04-09T17:17:52Z
1047127 Panning very stuttery on this page with overflow-x NEW Danilo Cesar Lemes de Paula (danilo.eu) 2015-04-01T16:44:34Z
1084456 Enable MSE for MP4 on Jelly Bean+ NEW James Willcox (:snorp) (jwillcox@mozilla.com) (snorp) 2015-04-29T17:38:35Z
1093815 Use AndroidPlatformDecoder for standalone MP3 on Android ASSIGNED Eugen Sawin [:esawin] (esawin) 2015-04-29T06:15:58Z
1129614 Regression: Sometimes thumbnails in the tabs drawer are not updated, they expire ASSIGNED Martyn Haigh (:mhaigh) (mhaigh) 2015-04-29T16:50:32Z
1132508 Last tab is cut off in tab tray after rotation REOPENED Martyn Haigh (:mhaigh) (mhaigh) 2015-04-29T16:50:47Z
1139232 Door hanger shows up in the tab over view REOPENED Allison Naaktgeboren please NEEDINFO? :ally (ally) 2015-04-29T21:28:22Z
1150284 [Browser] Unable to zoom in/out on Google Maps NEW Kartikaya Gupta (email:kats@mozilla.com) (bugmail.mozilla) 2015-04-29T17:30:42Z


10 Total;
10 Open (100%);
0 Resolved (0%);
0 Verified (0%);

Friends of the Mobile Team

Give a shoutout/thanks to people for helping fix and test bugs. Make sure friends also get awarded a badge. New contributors are highlighted in bold.

  • Jeff Lu fixed bug 1076692 – Tapping on URL bar does not dismiss the tabs tray
  • Capella is making progress on using gecko text selection carets – bug 988143
  • (iOS) dusek
    • bug 1158509 – Reading List item does not announce if it is read/unread with accessibility
    • bug 1158508 – Reading List cell actions not invokable with VoiceOver
    • bug 1158507 – Location label in url bar does not provide the webpage address for accessibility (says just “URL”)
    • bug 1151504 – Location view not visited by Switch Control

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!

James W. (snorp)

  • Helped :padenot with NEON issues
  • Investigated OpenH264 issues related to 1.4 update
    • Working on fixing bug 1141693, which prevents GMP (and OpenH264) from working on Android 5.0+
  • More messing with paint suppression
  • Tried to follow along with APZ work
    • We eliminated the second nsWindow, which has simplified the event dispatching and aligns us closer to other platforms.
  • bug 1153803 – Autophone Test failure test_can_play_type_mpeg.html | audio/mpeg= – got maybe, expected
  • bug 1159262 – Crash with libEGL.so on stack Android 4.3/4.4 s1s2/webappstartup

JChen

won’t be at meeting

  • Investigated startup perf / page load perf
  • Working on a trace profile of Gecko during startup and page load
Fixed
Working on

GCP

<Read Only>

  • Last week:
    • bug 1106958 [WebRTC] Use android.media.MediaCodec for decoding in WebRTC stack
    • bug 1104616 Sandboxing support for Video camera access
  • Next week:
    • More sandboxing/MediaManager

Eugen Sawin

  • MP3 demuxer (bug 1093815, bug 1153731)
    • Current status: playback OK, seeking unstable
    • Improved seeking support
    • Next: land first iteration on Nightly, improve seeking
  • Found issue with pref loading for values containing external URLs (bug 1158131), testing fix options on Try
  • Still working on fix for the blank content view on load issue (bug 1129074)

Brian Nicholson

  • bug 1157394 – Fix TabTrayController memory leaks
  • bug 1148666 – Reload table after rotating search view
  • bug 1145402 – Reload the WebView upon selection if the URL is nil
  • bug 1157922 – Hi-res search engine icons for iOS
  • Writing more UI tests
  • Next: Localized search engines

WesJ

  • bug 1130522 – [META] IOS-30 – Security/Privacy – Clear private data
    • bug 1157843 – TabManager memory leak. Working on it…
    • bug 1157831 – Crash: NSInternalInconsistencyException – attempt to delete item 1 from section 0 which only contains 1 items before the update
    • Some localization fixes
  • bug 1145399 – Untitled bookmarks appear blank.
  • bug 1153330 – Move tabs/sessions to profile. Not doing what this bug describes, but local tab storage is happening.
  • bug 1159319 – Use constraints for snackbar animations. Landing.

Next:

  • bug 1147071 – Use encrypted database storage for passwords. Working on it.
  • bug 1159380 – Show errors when we can’t download

liuche

Highlights:

  • Last of the doorhanger bugs for 40
  • Adding a fallback for selecting non-autofilled login
  • So many reviews

Present:

Past:

Margaret

Highlights:

Past:

Present:

mcomella

  • Search engine bar
  • Misc. regressions from features I’ve worked on. D: Damn you, fragmentation!

Past:

Present:

rnewman

  • Partner distro stuff etc.
  • iOS Sync: tabs down, commands, down, now working on history.
  • Interviews and PTO.
Fixed
Working on

nalexander

Projects for this cycle:

  • Implement Firefox Accounts for iOS: bug iosfxa
  • Landed Adjust SDK: bug 1143888
  • Contributor mentoring:
    • Working with vivek on bug 1142171: split-pane for Bookmarks and History (Android)
    • Working with sachin on bug 1151353: relative time strings for Remote Tabs panel (iOS)
    • Working with R4md4c on bug 775104: exporting Bookmarks to JSON for import on Desktop (Android)
Past
Present

Martyn Haigh

It’s my birthday (tomorrow) – WOOHOO!!

  • Investigating SVG support – follow up to file

Past:

Present:

Stefan

Working on iOS. Highlights: TestFlight. Error Pages. WKWebView’s Reading List. Reading View Toolbar Scrolling.

Allison

  • doorhanger aurora bug(s)
    • opinions on message passing on android? Talk my ear off
  • assorted ui polish bugs & reviews
  • (intensive) Password user interviews this week
    • how do people think/manage/use passwords on the web & elsewhere
  • Monthly firefox Data Stewards meeting upcoming
    • questions, concerns, things you need, let me know by the end of the week

BLassey

Fixed
Working on

MFinkle

Fixed
Working on

Antlam

  • Past
    • Meetings/workshops last two days
    • bug 1137483: Add “quick search” bar
    • bug 1112185: Tabs queue V1 (filed V2 meta)
    • bug 1107590: Site ID doorhanger
    • Polish week w/ Mhaigh + Mcomella
  • Upcoming
    • Partners stuff
    • Search
    • bug 1141904: Spec out full doorhangers UI
    • bug 1153389: Private browsing V1 clean up
    • bug 1145434: Tab sending/receiving notifications
    • Help out with iOS Visual design

Robin

  • Error template – http://invis.io/PT2TAXXEW
  • Interstitials (loading animations)
  • Revisiting bug 1147453 Need an indication saying an article has been added to my list when I long-press the Reader View icon in the URL bar
  • Revisiting iPad

Darrin

A-Team

QA

Feature Focus

Have to drop a few early. For your reading pleasure…
  • This was a funnel review week. 41 & 42 stories are fairly fleshed out and can be seen in Aha!
  • Also note that 40 is basically empty in terms of new features in Trello. Majority of the work done for the 40 cycle was uplifted!
  • Android Roadmap in Aha!
  • New Android Trello Board

Details

  • Wednesdays – 9:30am Pacific, 12:30pm Eastern, 16:30 UTC
  • Dial-in: conference# 99998
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 99998
    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 99998
    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 99998
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 99998
    • CA/British Columbia/Vancouver: +1 778 785 1540, x92 Conf# 99998
    • CA/Ontario/Toronto: +1 416 848 3114, x92 Conf# 99998
    • UK/London: +44 (0)207 855 3000, 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: 2015-04-29

Schedule & Progress onUpcoming Releases (Lawrence)

  • 38.0b8 desktop and mobile shipped
    • Note: There was not 38.0b7 due to build issues related to shipping Betas off of the m-r branch
  • 38.0.5b1 gtb on Thu, May 7
  • reminder that branches are currently as follows:
    • m-r: 38.0
    • m-b: 38.0.5
    • m-a: 39.0
    • m-c: 40.0

Firefox Desktop & Platform (Javaun/Chad/Martin)

Current Releases

EME is on track for 38. Some bugs for us, some for Adobe.

38.0.5: Some elements at risk. Good news: L10N out of scope, EN-US only.

64 bit rollout planning is resuming today. We are not launching Win64 in 38 nor 38 ESR.

Iteration 40.3: Some work for 38.0.5. Add-on signing planning is happening.

Beta (38)
  • GMP regression from EME patch that was uplifted to Beta, this should be a block-ship issue and we’re working on a patch bug 1159300

Firefox Mobile (Mark/Brad/Jenn)

Firefox for iOS

  • iOS Status Report for this week
  • Sync is considered At Risk for June 2nd Campaign timelines, at least partially (history, passwords)
  • Timing of feature availability (such as Sync) means any external feedback cycle is also At Risk for June 2nd.

Firefox for Android

Beta (38)
  • Reader View & Local Only Reading List for this release. Pocket Integration is not in scope for the 38 release.
Nightly (40)
  • Tab Queues
  • Voice Search
  • Password Manager
  • Otherwise, light in terms of new feature content as the majority of work completed for this cycle was uplifted.

Developer Tools (Jeff)

  • no audible, complicated day
  • meta bug with links for tracking [devedition-40] progress: bug 1159780

Feedback Summary (Cheng/Tyler/Matt)

Desktop

Tracking a few crashes on release:

Trusteer (https://bugzilla.mozilla.org/show_bug.cgi?id=1159484)

Old versions of Displaylink drivers seem to be causing a few different crashes.

Market Insights from the Product Team (Kev)

No update this week, but will add items of interest for next

One item of note is the Microsoft Build developer conference this week in SF. It has an online presence with streaming of some sessions, some of which will give more info on Edge (the official name of what’s been referred to as “Spartan”).


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

hacks.mozilla.orgCreating a mobile app from a simple HTML site: Part 3

Adding a server to separate the app from its data

This is the third part in our series of posts about creating a dynamic mobile app from a simple HTML site. In Part 2 we separated the data from its visual representation, but the data is still contained inside the app. In this article, we take that data, remove it from the app altogether, and serve it from the server instead, to maximise reusability between different users.

We will go through the steps required to create a suitable server using NodeJS. Then we will make the app work as a client of this server.

If you have your code handy from last time, then you are ready to go. Make sure you have NodeJS installed. If you don’t have a previous code base setup you can follow the instructions on how to load any stage in this tutorial. Use stage5 as a starting point.

Refactoring our code

Let’s quickly look at the code created in part 2.

Two things happen in the app.onDeviceReady method (see js/index.js) — data is loaded from a JSON file and touch events are listened for on <brick-deck id="plan-group">. After data is loaded, app.renderData parses the JSON string and app.createUI creates a UI for each plan separately.

onDeviceReady and createUI are currently not very efficient, so let’s update them. Let’s split onDeviceReady by creating a new method called activateFingerSwipe that will contain all the code after the request.send() line and simply call it without arguments. Update your code as follows:

onDeviceReady: function() {
     var request = new XMLHttpRequest();
     request.onload = app.renderData;
     request.open("get", "app_data/plans.json", true);
     request.send();

     app.activateFingerSwipe();
},

activateFingerSwipe: function() {
    // Switching from one tab to another is done automatically
    // We just need to link it backwards - change menu if slides
    // changed without touching the menu
    app.planGroupMenu = document.getElementById('plan-group-menu');
    
    // Implementing one finger swipe to change deck card
    app.planGroup = document.getElementById('plan-group');

    var startX = null;
    var slideThreshold = 100;

    // ...

Now, let’s move on to updating createUI. Instead of having the code to create the UI for each individual plan inside createUI, we will create a new user-defined object type called Plan and instantiate it in the loop. Update app.renderData to look like the block below:

renderData: function() {
    var plans = JSON.parse(this.responseText);
    var deck = document.getElementById('plan-group');
    var tabbar = document.getElementById('plan-group-menu');
    navigator.globalization.getDateNames(function(dayOfWeek){
      for (var i = 0; i < plans.length; i++) {
          var plan = new Plan(plans[i]);
          plan.createUI(deck, tabbar, dayOfWeek);
      }
    }, function() {}, {type: 'narrow', item: 'days'});
},

We will define the Plan type as an object having two methods — createUI and selectTab — which are copied from the existing methods and functions. The only changes are related to the data now having an object nature. Instead of plan.week we use this.schedule. this always relates to the current plan’s scope. All changes related to storing parameters in the object are as follows:

  • plan.title -> this.title
  • plan.week -> this.schedule
  • plan.id -> this.id
  • plan.active -> this.active
  • var tab -> this.tab
  • var card -> this.card
  • var table -> this.table
  • selectTab(deck, tab) -> this.selectTab(deck)

At the top of your index.js file, add the following code:

function Plan(plan) {
    this.schedule = plan.week;
    this.title = plan.title;
    this.id = plan.id;
    this.active = plan.active;
    this.tab = null;
    this.card = null;
    this.table = null;
};

Plan.prototype.selectTab = function(deck) {
    var self = this;
    function selectActiveTab() {
        if (!self.tab.targetElement) {
            return window.setTimeout(selectActiveTab, 100);
        }
        deck.showCard(self.tab.targetElement);
    }
    selectActiveTab();
}

Plan.prototype.createUI = function(deck, tabbar, dayOfWeek) {
    // create card
    this.card = document.createElement('brick-card');
    this.card.setAttribute('id', this.id);
    deck.appendChild(this.card);

    //create tab
    this.tab = document.createElement('brick-tabbar-tab');
    this.tab.setAttribute('target', this.id);
    this.tab.appendChild(document.createTextNode(this.title));
    tabbar.appendChild(this.tab);

    // link card and tab DOM Elements
    this.card.tabElement = this.tab;
    this.card.addEventListener('show', function() {
        this.tabElement.select();
    });

    // create plan table
    this.table = document.createElement('table');

    var numberOfDays = this.schedule.length;
    var cleanPlan = [];
    for (var j = 0; j  0) {
            cleanPlan.push(this.schedule[j]);
        }
    }

    var daysInHours = [];
    for (j = 0; j < cleanPlan.length; j++) {
        for (var k = 0; k < cleanPlan[j].length; k++) {
            if (!daysInHours[k]) {
                daysInHours[k] = [];
            }
            daysInHours[k][j] = cleanPlan[j][k];
        }
    }

    for (var j = 0; j < daysInHours.length; j++) {
        var tr = this.table.insertRow(-1);
        var td = tr.insertCell(-1);
        td.appendChild(document.createTextNode(j + 1));
        for (var k = 0; k < cleanPlan.length; k++) {
            var td = tr.insertCell(-1);
            if (daysInHours[j][k]) {
                td.appendChild(document.createTextNode(daysInHours[j][k]));
            }
        }
    }

    var thead = this.table.createTHead();
    var tr = thead.insertRow();
    var th_empty = document.createElement('th');
    tr.appendChild(th_empty);
    var weekDayNumber;
     for (var j = 0; j  0) {
            var th = document.createElement('th');
            th.appendChild(document.createTextNode(dayOfWeek.value[weekDayNumber]));
            tr.appendChild(th);
        }
    }

    this.card.appendChild(this.table);

    if (this.active) {
      this.selectTab(deck);
    }
}

You can check your work against the full refactored code source in github.

You might notice var self = this; and then deck.showCard(self.tab.targetElement); in Plan.prototype.selectTab. this in scope of selectActiveTab would represent a different value then outside of it.

Read more about the new operator and the this keyword on MDN if you want more information.

Building the server

Building a server using NodeJS is fairly simple — http is the only module required, although we will also include fs (as we need to load the file from disk) and sys (to display logs.)

We will place the server’s code into a separate directory (it’s named stage6-server/ in the related Github project) as it is not part of the app.

First of all, create a new directory in the same level as school-plan called server. Move the plans.json file out from the school-plan/www/app-data directory to the server directory, then remove school-plan/www/app-data. You could do these actions using the following terminal commands from school-plan‘s parent directory:

mkdir server
mv school-plan/www/app_data/plans.json server/
rm -rf school-plan/www/app_data

Now onto the NodeJS server code. Create a new file called server.js inside the server directory, and fill it with the following content — this simply reads the file from disk:

var fs = require('fs'),
    sys = require("sys");

fs.readFile(__dirname + "/plans.json", function (err, data) {
    sys.puts(data);
});

Run it with the terminal command node server.js — you should see the content of the plans.json file listed in terminal.

Now we will serve this file using the http module. Modify your NodeJS code like so:

var fs = require('fs'),
    sys = require("sys"),
    http = require('http');

http.createServer(function (request, response) {
  fs.readFile(__dirname + "/plans.json", function (err, data) {
    response.writeHead(200, {"Content-Type": "application/json"});
    response.end(data);
    sys.puts("accessed");
  });
}).listen(8080);
sys.puts("Server Running on http://127.0.0.1:8080");

First we’ve created the server using the http.createServer method and ordered it to listen on port 8080. On every single request, the plans.json file is read and returned as an HTTP response. Then we simply log accessed to the terminal.

Test your file again, as before.

Navigate to http://127.0.0.1:8080 using your browser and you should see the contents of the file inside the browser. (I use the JSON View add-on to make the code look nice too — it’s worth getting.)

So we’re able to serve the file from our machine — now we just need to read it in our app.

Note: The server is serving for any address – it works on http://localhost:8080 and also on your local network address (usually http://192.168.xx.xx:8080). This address should be used when testing the app on a device.

Reading the data from the server

We need to change the app to read from the server instead of the file distributed inside the app. Let’s change the request.open call (inside deviceReady method) to read from the URL instead of the local file. Replace app_data/plans.json with http://127.0.0.1:8080, so it will look like this:

request.open("get", "http://127.0.0.1:8080", true);

Now for a test. Run the cordova prepare command in the terminal, and reload the app in WebIDE.

You will receive an error in the browser console: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://127.0.0.1:8080/. This can be fixed by moving the resource to the same domain or enabling CORS..

CORS, and cross-origin fixes

The error is due to a CORS security policy preventing us from loading a script from a different domain.

There are two ways of loading a script from a different domain. Whitelisting it in Cordova is one of them, but as we’ve got control over the server, we can simply allow cross-site HTTP requests. This is done by setting a header call Access-Control-Allow-Origin in the request. Its value is the domain name(s) that can request content from the server. As our app will be used on phones, all domains should have access. The needed headers are as follows:

"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept"

We will add these headers to the existing Content-Type one specified in our server.js script — update the response.writeHead() call to the following:

response.writeHead(200, {
  "Content-Type": "application/json",
  "Access-Control-Allow-Origin": "*",
  "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept"});

Save your NodeJs code, stop (Control + C) the server running in your terminal, and run it again. The application should now be able to read from the server as desired.

If you are having problems getting the app to work, check your code for the app and server.

Serving and loading user plans

Currently we load all plans available in plans.json. As we want to be able to serve plans for any user we need to identify and serve a set.

We will need to identify a plan. To find a plan in our “database” (JSON file) we will change the plan structure from array to object. For example:

{
  "somehashtag": {
  "title": "A",
  "id": "a",
  "active": 1,
  "week": [
    // ...
  ]
}, {
  "otherhashtag": {
  "title": "B",
  "id": "b",
  "week": [
    // ...
  ]
}

We also need to find a way to store hashtags. Most of the users will have a different list of them. Should they be stored only on the device or on the server? Considering that many users change their phone fairly often, it’s best to keep the list of hashtags on the server. In production we would have separate user accounts, but for the sake of this tutorial and the simplicity of the server’s code no security is provided.

We again need to modify the JSON file, to allow for different users and separate plans:

{
  "users": {
    "userA": {
      "name": "John Doe",
      "plans": ["somehashtag", "otherhashtag"]
    },
    // ...  
  },
  "plans": {
    "somehashtag": {
    "title": "A",
    "id": "a",
    "active": 1,
    "week": [
      // ...
    ]
  }, {
    "otherhashtag": {
    "title": "B",
    "id": "b",
    "week": [
      // ...
    ]
  }
}

From now on, data.plans will represent all plans and data.users will represent all of the users.

At this point, download the updated plans.json file from Github, and replace old with new.

I defined the URL to access a user’s plans as follows:

http://{address}/plans/{userid}

Reading URLs is easy with the url module — now you should add it to the loaded modules:

var fs = require('fs'),
    sys = require("sys"),
    http = require('http'),
    url = require('url');

Now remove the current response.end(); and sys.puts() calls, replacing them with:

var args = url.parse(request.url).pathname.split('/');
var command = args[1];
var data = JSON.parse(data);

if (command === 'plans') {
    // get user from data.users
    var userid = args[2];
    var user = data.users[userid];
    var plans = [];
    var i, hashtag;
    for (i = 0; i < user.plans.length; i++) {
       hashtag = user.plans[i];
       // copy each user's plan to plans
       plans.push(data.plans[hashtag]);
    }
    response.end(JSON.stringify(plans));
    sys.puts("accessed user - " + userid);
}

The only change in the app’s usage now is that we can load the data for different users using the new URL scheme:

http://127.0.0.1:8080/plans/someuser

Go to your index.js file and update the following:

request.open("get", "http://127.0.0.1:8080/", true);

to

request.open("get", "http://127.0.0.1:8080/plans/johndoe", true);

Conclusion

We have now provided a way to display different plans for different users. However, we are still downloading the plans every time the app is used, which is not much good for an offline experience, plus we currently can’t change the plans displayed unless we edit the XHR call in the code itself. We’ll tackle these problems in our next article.

For now, check out the final code for the app and server. And look out for Part 4, coming in May!

Air MozillaQuality Team (QA) Public Meeting

Quality Team (QA) Public Meeting This is the meeting where all the Mozilla quality teams meet, swap ideas, exchange notes on what is upcoming, and strategize around community building and...

hacks.mozilla.orgES6 In Depth: Iterators and the for-of loop

ES6 In Depth is a series on new features being added to the JavaScript programming language in the 6th Edition of the ECMAScript standard, ES6 for short.

How do you loop over the elements of an array? When JavaScript was introduced, twenty years ago, you would do it like this:

for (var index = 0; index < myArray.length; index++) {
  console.log(myArray[index]);
}

Since ES5, you can use the built-in forEach method:

myArray.forEach(function (value) {
  console.log(value);
});

This is a little shorter, but there is one minor drawback: you can’t break out of this loop using a break statement or return from the enclosing function using a return statement.

It sure would be nice if there were just a for-loop syntax that looped over array elements.

How about a for-in loop?

for (var index in myArray) {    // don't actually do this
  console.log(myArray[index]);
}

This is a bad idea for several reasons:

  • The values assigned to index in this code are the strings "0", "1", "2" and so on, not actual numbers. Since you probably don’t want string arithmetic ("2" + 1 == "21"), this is inconvenient at best.
  • The loop body will execute not only for array elements, but also for any other expando properties someone may have added. For example, if your array has an enumerable property myArray.name, then this loop will execute one extra time, with index == "name". Even properties on the array’s prototype chain can be visited.
  • Most astonishing of all, in some circumstances, this code can loop over the array elements in an arbitrary order.

In short, for-in was designed to work on plain old Objects with string keys. For Arrays, it’s not so great.

The mighty for-of loop

Remember last week I promised that ES6 would not break the JS code you’ve already written. Well, millions of Web sites depend on the behavior of for-in—yes, even its behavior on arrays. So there was never any question of “fixing” for-in to be more helpful when used with arrays. The only way for ES6 to improve matters was to add some kind of new loop syntax.

And here it is:

for (var value of myArray) {
  console.log(value);
}

Hmm. After all that build-up, it doesn’t seem all that impressive, does it? Well, we’ll see whether for-of has any neat tricks up its sleeve. For now, just note that:

  • this is the most concise, direct syntax yet for looping through array elements
  • it avoids all the pitfalls of for-in
  • unlike forEach(), it works with break, continue, and return

The for-in loop is for looping over object properties.

The for-of loop is for looping over data—like the values in an array.

But that’s not all.

Other collections support for-of too

for-of is not just for arrays. It also works on most array-like objects, like DOM NodeLists.

It also works on strings, treating the string as a sequence of Unicode characters:

for (var chr of "😺😲") {
  alert(chr);
}

It also works on Map and Set objects.

Oh, I’m sorry. You’ve never heard of Map and Set objects? Well, they are new in ES6. We’ll do a whole post about them at some point. If you’ve worked with maps and sets in other languages, there won’t be any big surprises.

For example, a Set object is good for eliminating duplicates:

// make a set from an array of words
var uniqueWords = new Set(words);

Once you’ve got a Set, maybe you’d like to loop over its contents. Easy:

for (var word of uniqueWords) {
  console.log(word);
}

A Map is slightly different: the data inside it is made of key-value pairs, so you’ll want to use destructuring to unpack the key and value into two separate variables:

for (var [key, value] of phoneBookMap) {
  console.log(key + "'s phone number is: " + value);
}

Destructuring is yet another new ES6 feature and a great topic for a future blog post. I should write these down.

By now, you get the picture: JS already has quite a few different collection classes, and even more are on the way. for-of is designed to be the workhorse loop statement you use with all of them.

for-of does not work with plain old Objects, but if you want to iterate over an object’s properties you can either use for-in (that’s what it’s for) or the builtin Object.keys():

// dump an object's own enumerable properties to the console
for (var key of Object.keys(someObject)) {
  console.log(key + ": " + someObject[key]);
}

Under the hood

“Good artists copy, great artists steal.” —Pablo Picasso

A running theme in ES6 is that the new features being added to the language didn’t come out of nowhere. Most have been tried and proven useful in other languages.

The for-of loop, for example, resembles similar loop statements in C++, Java, C#, and Python. Like them, it works with several different data structures provided by the language and its standard library. But it’s also an extension point in the language.

Like the for/foreach statements in those other languages, for-of works entirely in terms of method calls. What Arrays, Maps, Sets, and the other objects we talked about all have in common is that they have an iterator method.

And there’s another kind of object that can have an iterator method too: any object you want.

Just as you can add a myObject.toString() method to any object and suddenly JS knows how to convert that object to a string, you can add the myObject[Symbol.iterator]() method to any object and suddenly JS will know how to loop over that object.

For example, suppose you’re using jQuery, and although you’re very fond of .each(), you would like jQuery objects to work with for-of as well. Here’s how to do that:

// Since jQuery objects are array-like,
// give them the same iterator method Arrays have
jQuery.prototype[Symbol.iterator] =
  Array.prototype[Symbol.iterator];

OK, I know what you’re thinking. That [Symbol.iterator] syntax seems weird. What is going on there? It has to do with the method’s name. The standard committee could have just called this method .iterator(), but then, your existing code might already have some objects with .iterator() methods, and that could get pretty confusing. So the standard uses a symbol, rather than a string, as the name of this method.

Symbols are new in ES6, and we’ll tell you all about them in—you guessed it—a future blog post. For now, all you need to know is that the standard can define a brand-new symbol, like Symbol.iterator, and it’s guaranteed not to conflict with any existing code. The trade-off is that the syntax is a little weird. But it’s a small price to pay for this versatile new feature and excellent backward compatibility.

An object that has a [Symbol.iterator]() method is called iterable. In coming weeks, we’ll see that the concept of iterable objects is used throughout the language, not only in for-of but in the Map and Set constructors, destructuring assignment, and the new spread operator.

Iterator objects

Now, there is a chance you will never have to implement an iterator object of your own from scratch. We’ll see why next week. But for completeness, let’s look at what an iterator object looks like. (If you skip this whole section, you’ll mainly be missing crunchy technical details.)

A for-of loop starts by calling the [Symbol.iterator]() method on the collection. This returns a new iterator object. An iterator object can be any object with a .next() method; the for-of loop will call this method repeatedly, once each time through the loop. For example, here’s the simplest iterator object I can think of:

var zeroesForeverIterator = {
  [Symbol.iterator]: function () {
    return this;
  },
  next: function () {
    return {done: false, value: 0};
  }
};

Every time this .next() method is called, it returns the same result, telling the for-of loop (a) we’re not done iterating yet; and (b) the next value is 0. This means that for (value of zeroesForeverIterator) {} will be an infinite loop. Of course, a typical iterator will not be quite this trivial.

This iterator design, with its .done and .value properties, is superficially different from how iterators work in other languages. In Java, iterators have separate .hasNext() and .next() methods. In Python, they have a single .next() method that throws StopIteration when there are no more values. But all three designs are fundamentally returning the same information.

An iterator object can also implement optional .return() and .throw(exc) methods. The for-of loop calls .return() if the loop exits prematurely, due to an exception or a break or return statement. The iterator can implement .return() if it needs to do some cleanup or free up resources it was using. Most iterator objects won’t need to implement it. .throw(exc) is even more of a special case: for-of never calls it at all. But we’ll hear more about it next week.

Now that we have all the details, we can take a simple for-of loop and rewrite it in terms of the underlying method calls.

First the for-of loop:

for (VAR of ITERABLE) {
  STATEMENTS
}

Here is a rough equivalent, using the underlying methods and a few temporary variables:

var $iterator = ITERABLE[Symbol.iterator]();
var $result = $iterator.next();
while (!result.done) {
  VAR = result.value;
  STATEMENTS
  $result = $iterator.next();
}

This code doesn’t show how .return() is handled. We could add that, but I think it would obscure what’s going on rather than illuminate it. for-of is easy to use, but there is a lot going on behind the scenes.

When can I start using this?

The for-of loop is supported in all current Firefox and Chrome releases. It also works in Microsoft’s Spartan browser, but not in shipping versions of IE. If you’d like to use this new syntax on the web, but you need to support IE and Safari, you can use a compiler like Babel or Google’s Traceur to translate your ES6 code to Web-friendly ES5.

On the server, you don’t need a compiler—you can start using for-of in io.js and Node today.

{done: true}

Whew!

Well, we’re done for today, but we’re still not done with the for-of loop.

There is one more new kind of object in ES6 that works beautifully with for-of. I didn’t mention it because it’s the topic of next week’s post. I think this new feature is the most magical thing in ES6. If you haven’t already encountered it in languages like Python and C#, you’ll probably find it mind-boggling at first. But it’s the easiest way to write an iterator, it’s useful in refactoring, and it might just change the way we write asynchronous code, both in the browser and on the server. So join us next week as we look at ES6 generators in depth.

Air MozillaProduct Coordination Meeting

Product Coordination Meeting Duration: 10 minutes This is a weekly status meeting, every Wednesday, that helps coordinate the shipping of our products (across 4 release channels) in order...

Mozilla Add-ons BlogAdd-ons Update – Week of 2015/04/29

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 9 weeks to review.
  • 126 nominations in the queue awaiting review.
  • Most updates are being reviewed within 6 weeks.
  • 48 updates in the queue awaiting review.
  • Most preliminary reviews are being reviewed within 9 weeks.
  • 127 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 38 Compatibility

The Firefox 38 compatibility blog post is up. The automatic AMO validation will be run soon.

Expect a compatibility post soon about a special 38.0.5 Firefox release that will follow 38.0. I don’t think this will break any extensions, but it might affect themes and it’s a heads up so you can test on beta in advance of the release.

Firefox 39 Compatibility

I expect to publish the Firefox 39 compatibility blog post this week.

As always, we recommend that you test your add-ons on Beta and Firefox Developer Edition (formerly known as Aurora) to make sure that they continue to work correctly. End users can install the Add-on Compatibility Reporter to identify and report any add-ons that aren’t working anymore.

Extension Signing

We announced that we will require extensions to be signed in order for them to continue to work in release and beta versions of Firefox. If you’re an extension developer, please read the post and participate in the discussions. A followup post was published recently, addressing some of the reasons behind this initiative.

Electrolysis

Electrolysis, also known as e10s, is the next major compatibility change coming to Firefox. In a nutshell, Firefox will run on multiple processes now, running each content tab in a different one. This should improve responsiveness and overall stability, but it also means many add-ons will need to be updated to support this.

We will be talking more about these changes in this blog in the future. For now we recommend you start looking at the available documentation.

Air MozillaThe Joy of Coding (mconley livehacks on Firefox) - Episode 12

The Joy of Coding (mconley livehacks on Firefox) - Episode 12 Watch mconley livehack on Firefox Desktop bugs!

Meeting NotesSeaMonkey: 2015-04-28

Agenda

  • Who’s taking minutes? -> TBD
  • Nominees for Friends of the Fish Tank:
    • TBD

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

  • bug 1150082 SeaMonkey Donation Page is using the PayPal all or nothing version, instead of the usual either/or one. Mcsmurf is investigating.
  • Official SeaMonkey Blog: Some progress with the SSL certificate issue. With the certificate, things would work easier as mcsmurf wants to sync the blog with Facebook entries. Meta bug 1147825 covers the blog work.
  • bug 1121281 tracks the RelEng automation migration off CVS. Currently two option patches awaiting for Callek’s decision. Once settled, ewong will follow up with RelEng patches based on that decision.

CLOSED

  • bug 1057920 SeaMonkey’s CVS dependency really should be removed. (currently used only for Releng Automation, and SeaMonkey Website).
    • This has been spun off into a separate bugs for the website and the rest. Ewong is poking at things related to Release Automation.
    • Move of the website from CVS to hg was due to happen on Monday bug 1150335.
    • Need to check all website links (e.g. Document History) now point to the correct place – Jens?

Random news

  • A Mozillazine member Havin_it has managed to set up a working Fx Accounts server [1]. I’ve encouraged him to create a wiki page to document the steps needed for building a working server. I should ask ewong to follow up on this.
  • Community member Martin Mokrejs [2] has learnt how to do debug builds and is busy filing bugs [3]. Can someone please contact him and invite him to the SeaMonkey irc channel and/or our developer newsgroup?

Status of the SeaMonkey Buildbot Master and Tree

  • Notes:
    • Windows nightly trunk builds arewere running again briefly (thanks to Callek and Ewong) but are down again due to bug 1108970. Migrating our Windows builders to VS2013 would likely solve this and other bustages.
    • VS2010 support was removed from mozilla-central on 15th December (bug 1092468). Our Windows slaves are in the process of being upgraded to Win2008 and VS2013 (bug 1114876). There are also some upcoming changes to L10n build system in Q1 2015 (bug 1107635).
    • Buildmaster is up and running, and produces en-US builds, see 9/16 meeting’s Friends of the Fish Tank. Builds and langpacks in 18 languages including en-US are available unofficially thanks to A.Kalla. Edit: However, only 9 languages are published daily for trunk there, and en-GB is not one of them. For Aurora I didn’t check. — Tonymec (talk) 16:49, 21 January 2015 (PST)
    • bug 1083689 Langpacks aren’t updated when auto-updating SeaMonkey because they aren’t uploaded to AMO. The solution requires changes in SeaMonkey RelEng (and possibly AMO).
    • Should be fixed. Waiting for verification. The langpacks need strict versioning e.g. min 2.30 max 2.30.* which makes sense since you don’t want 2.29 strings with 2.30 KaiRo has landed a fix in bug 1084258 (Language pack compatibility should be bound to Gecko branch, else undefined entity errors possible).
    • For various reasons we don’t have a working SeaMonkey TBPLTreeherder.
    • SeaMonkey’s release/website processes have been migrated to Mercurial.
  • [28th April 2015]
    • Windows nightly, aurora and beta builds are broken. Will be fixed by upgrading to Windows Server 2K8 and Visual Studio 2013 (bug 1114876).
    • All Trees
      • OSX64:
        • Build – Orange : bug 958812 – References of firefox.dmg hard-coded in Mozharness tests.
    • [comm-central]:
      • All Nightlies are red due to bug 1155013 as we now require the use of a Socorro token. (Getting the token is tracked by bug 1155011). Currently waiting on what user account will be used for the tokens. rhelmer to advise ewong on this. Also SeaMonkey will need to switch the build process to the new way of symbol uploading.
  • See RelEng page for the RelEng status history.
  • In Bug 902876 Comment 12 Mcsmurf is waiting for feedback from the build team on how to proceed.

Release Train

  • SeaMonkey 2.33.1 was released on 23 March and is the most recent release.
  • No scheduled ETA for 2.34 beta 1 yet – depends on fixing bug 1114876
    • Need to look at possibility of a further 2.33.x release if no 2.34
    • there were 15 security fixes (5 of which critical) in the Gecko 37 cycle so far
    • Firefox has merged mozilla-beta into mozilla-release already, in preparation of the 38.0 ESR branch
    • next scheduled merge day is 11 May
  • Discussion on whether it’s worth it to do a 2.34 Beta or skip straight to a 2.35 beta – probably the latter.

Extensions and Plugins Compatibility Tracking

  • See Basics page. Please only list current changes here.
  • Addon Compatibility Listings
  • Firefox & Thunderbird Add-on Converter for SeaMonkey http://addonconverter.fotokraina.com/
    This tool goes a little further beyond simply modifying install.rdf – it also identifies a few more other things in the code that are Firefox or Thunderbird specific and attempts to change them. Of course, not all extensions can be ported so easily to SeaMonkey since there’s only so much an automated tool like that can do.
    • Lemon Juice continues to improve his already impressive Addon Converter. The source is now available on GitHub [4].
    • Rainer Bielefeld together with other community members have been updating the list of Firefox addons that have been successfully converted by the Addon Converter.
    • Ratty filed bug 1130390 to add a link on seamonkey-projects.org to the Firefox & Thunderbird Add-on Converter for SeaMonkey.
  • SeaMonkey 2.33 and Lightning 3.8b1/3.8b2 shows no events or tasks. bug 1144285
    • The problem is that both Thunderbird and Lightning are build with Visual C++ 2013 but SeaMonkey is still build with Visual C++ 2010. Therefore the SeaMonkey installer contains only the VS2010 (msvcp100.dll/msvcr100.dll) files but not the VS2013 (msvcp120.dll/msvcr120.dll) files. The SeaMonkey switch to VS2013 is tracked in Bug 1092468.
  • The Thunderbird team is planning to ship Lightning with Thunderbird. IanN thinks we will want to ship lightning too. We should coordinate with Thunderbird. Related bugs:
    • bug 1130854 Package Lightning with Thunderbird for c-c and c-a builds.
    • bug 1113183 Integrate Lightning Into Thunderbird by Default.
    • bug 1130852 Add opt-in dialog to promote Calendar integration [Thunderbird].
  • Proposed replacement for Venkman for shipping with SeaMonkey: Tiny JavaScript Debugger. TinyJSD is a JavaScript debugger for privileged code running Mozilla products like Firefox, Thunderbird, SeaMonkey. It serves to debug the application as well as extensions written in JavaScript.
    • IanN filed bug 1133723 Investigate options for replacing Venkman with the TinyJSDebugger.
  • Our build team needs to automate DOMI branch selection rather than having to tweak the client.py every 6 weeks. bug 763506

2.x (Last, Current, Next)

2.33

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

2.Next
  • Stalled. Needs a kick.
    • bug 815954 Click-to-Play: Port bug 812562 (click-to-play blocklisted plugins: reshow urlbar notification as with normal click-to-play).
    • bug 476108 GetShortPathNameW fails under some NTFS junctions [patchlove].
  • Current breakages:
    • bug 995737 adapt seamonkey for the address book remote content policy change; use permission manager instead of address book property.
  • Mozilla-central bugs that affect us:
    • Firefox is currently changing styles of several Toolkit pages
      • already affected: config.xul for about:config, bug 1125636
      • Toolkit meta bug for about:* pages: bug 1097111 – SeaMonkey tracking in bug 1133743
      • Modern may need updating as IDs are changing, Default needs forking if we want to roll back to previous styles
      • Fallout thus far: bug 1133380 about:privatebrowsing (Default), bug 1133582 about:config (Modern)
    • Our front end Sync UI needs to be updated as the old backend is going away in Gecko/Firefox 31. See: New Firefox Sync has landed in Firefox Nightly. Tracked in:
      • bug 998807 Sync account creation or device pairing fails with exception in BrowserIDManager.
      • bug 1003434 Add support for about:sync-progress.
      • Update SeaMonkey won’t be allowed to use the Firefox Sync 1.5 servers. Ewong is looking into hosting our own FxAccount server on a community machine or VPS.
    • A lot of these bugs are due to mozilla-central switching from synchronous APIs to Asynchronous APIs.
    • bug 566746 (asyncFormHistory) Form history should use asynchronous storage API. Tracked in:
      • bug 912031 Use Asynchronous FormHistory.jsm in place of nsIFormHistory2 in Suite.
    • 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.
    • The C++ downloads manager backend nsIDownloadManager is being decommissioned. Firefox has migrated to jsdownloads. Thunderbird is in the process of migrating. We need to decide how we are going to handle this sooner rather than later.
    • bug 825588 Asynchronous JavaScript API for downloads and bug 851471 Decommission nsIDownloadManager. Tracked in:
      • bug 888915 Move SeaMonkey to the new JavaScript API for downloads when nsIDownloadManager is decommissioned.

Feature List, Planning

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

  • Low-medium triaging effort, slightly higher than average number of new bugs filed.
  • IanN thinks it would be useful to remind people on the newsgroups / forums that they can contribute by triaging. Tonymec will post a reminder to newsgroups / forums. See bug 1092632 (Sm_tri_HowTo) Document how to triage SeaMonkey bugs.
    • The draft is currently at https://wiki.mozilla.org/User:Tonymec/Triage_HowTo
    • Progress is stalled due to hardware/firmware problems with Tonymec’s current computer. Current ETA for newer computer is after Easter but this is a rough estimate. Anyone with a wikimoz account can edit the page (and is welcome to). — Tonymec (talk) 17:35, 21 January 2015 (PST)

Open reviews/flags:
42 review
5 super-review
4 ui-review
7 feedback

  • See Feature List page for major wanted/needed features.
  • TODO:
    • We will need to update our Sync UI code due to the new Sync API. MoCo will not allow us to use FxAccounts (the new Sync API). We might want to update our code anyway just in case. One possibility is to set up our own Sync 1.5 server on a Community machine.
    • Bug 1127784 proposes to add a preference and UI to enable/disable playback of Encrypted Media Extensions.

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).

IanN
  • Usual testing, reviewing and commenting.
  • Fixed:
    • bug 1158774 Port |bug 1155776 – move USE_EXTENSION_MANIFEST to moz.build| to comm-central – SeaMonkey Port
  • Fixed for c-c:
    • bug 1158774 Port |bug 1155776 – move USE_EXTENSION_MANIFEST to moz.build| to comm-central – Thunderbird Port
  • Fixed for m-c:
    • bug 1158774 Port |bug 1155776 – move USE_EXTENSION_MANIFEST to moz.build| to comm-central – Inspector and Chatzilla Ports
  • Fixed for m-i:
  • Pending check in:
    • bug 1158774 Port |bug 1155776 – move USE_EXTENSION_MANIFEST to moz.build| to comm-central – Calendar Port
  • Checked in pending review:
  • Waiting for feedback/review/information:
  • 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
  • Working on:
    • bug 1155290 stop using XULAPP_DEFINES for suite/debugQA/
    • bug 1051642 Allow for flat chrome format when packaging extensions
    • bug 943335 [TB] Update icons used in searchplugins (Yahoo, eBay, Wikipedia, Amazon, Bing, Twitter)
    • 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.
Neil

Pushed to comm-central:

  • bug 1148191 getURLAndPostDataForKeyword() is deprecated, please use PlacesUtils.keywords.fetch() instead.

Pushed to comm-central, needs comm-aurora uplift:

  • bug 1156017 Can’t save web site passwords from doorhanger.

Pushed to comm-central, needs comm-aurora and comm-beta uplift:

  • bug 1156088 Doorhangers display useless “Learn more…” link when using the Modern theme.

Pushed to comm-central, comm-aurora and comm-beta:

  • bug 1148330 Exclude Linux generic fonts from font menulists.
  • bug 1152045 Email address missing from “From” field if the identityName pref was set.

Pushed to mozilla-central:

  • bug 1140105 Wrong font displayed in font menu when selection is collapsed.

Pushed to comm-beta:

  • bug 1098350 Need to refactor SeaMonkey Preferences and UI because bug 530209 replaced the browser.urlbar.default.behavior preference with a more flexible scheme (branch patch).

Waiting for review:

  • bug 1098350 Need to refactor SeaMonkey Preferences and UI because bug 530209 replaced the browser.urlbar.default.behavior preference with a more flexible scheme (trunk patch).

Still waiting for review:

I’m also looking into porting the Download Manager to Downloads.jsm (unfortunately I was struggling with a build failure that turned out to be down to Windows 10 Technical Preview resetting the increaseuserva setting).

Ratty

Random Notes

  • Ask IanN to look into bug 1155290
  • Clarify plan on dealing with the removal of the download manager C++ backend in /toolkit/ (1) copy necessary files to c-c/suite/common/downloads/ (2) migrate code to use the new jsdownloads API. (3) panic. Decommission heads up from Firefox developers [5]
  • Chase InvisibleSmiley on getting a link to the Addon Converter added to the SeaMonkey landing page.
  • Talk to the Dataviz people on how to generate public views ourselves.

Checked-in on CLOSED TREE:

  • bug 683728 Walking the references doesn’t fully work (msgWindow.openFolder is null).
  • bug 1147456 “View -> Page Info: Copy any information from list does not modify clipboard.
  • bug 1148798 nsSuiteGlue.js error NS_ERROR_UNEXPECTED when running tests because “app.update.lastUpdateTime.background-update-timer” isn’t set.
  • bug 1122906 First right-click on textarea shows huge contextmenu.
  • bug 1130790 Print Preview missing in composition window.
  • bug 1140353 Welcome text contains hyperlink to Thunderbird information.

TODO:

  • Packaging updates.
  • Safe Browsing updates.
  • The Addon-SDK compatibility functions (gContextMenuContentData, CustomizableUI, etc).

Working on:

  • bug 1145519 toggleSidebar shortcut command is broken in SeaMonkey for Firefox-style sidebars.
  • bug 1153577 Users should be able to hide the menubar and show it with the ALT key.
  • bug 1157433 The Addon-SDK expects gContextMenuContentData to exist in the context menu code.
  • bug 1158496 JavaScript error: …/nsSuiteGlue.js, line 291: NS_NOINTERFACE: Component returned failure code: 0x80004002 (NS_NOINTERFACE) [nsIWebProgress.DOMWindow].

Fixed:

  • bug 1133355 The Properties button and context menuitem should be disabled when multiple cards are selected.
  • bug 1156777 nsParseMailbox.cpp:505:55: error: ‘do_QueryObject’ was not declared in this scope.

Other stuff:

  • Did some reviews and approvals.
  • Bug triage and Bug discussions.
  • Usual end user support and PR in newsgroups and Mozillazine.
rsx11m

Checked in on trunk:

  • bug 1140204 Rename “Encoding” to “Text Encoding” in Page Info labels (Toolkit bug 951695). (follow-up pending)
  • bug 1139004 Rename all “Character Encoding” to “Text Encoding” in Help content (Toolkit bug 951695).
  • bug 1137991 Remove SSLv3 option from SSL panel in Privacy & Security panel. (also comm-aurora)
  • bug 1127784 [EME] Add a preference and UI to enable/disable playback of Encrypted Media Extensions. (preference part, c-a/c-b)
  • bug 1144719 Allow the user to decide whether or not to use libnotify for new-mail alerts on Linux. (MailNews Core, c-a/c-b)

Waiting for checkin:

  • bug 1140204 Rename “Encoding” to “Text Encoding” in Page Info labels (Toolkit bug 951695). (follow-up patch)

Waiting for comm-release approval:

  • bug 1144719 Allow the user to decide whether or not to use libnotify for new-mail alerts on Linux. (MailNews Core, if any 2.33.2/2.34 is released)

Waiting for ui-review:

  • bug 1127784 [EME] Add a preference and UI to enable/disable playback of Encrypted Media Extensions. (prefpane part)

Waiting for review:

  • bug 1032302 8BITMIME keyword ignored in EHLO greeting, BODY=8BITMIME absent in MAIL request for 8-bit transfers. (MailNews)
  • bug 1144693 New-mail notifications not always working since bug 858919 enabled libnotify usage on Linux again. (MailNews)
    • mitigating patch to set pref default after landing of bug 1144719.

On the list:

  • bug 1149581 Remove SSLv3 strings from SSL panel in Privacy & Security preferences.
    • once bug 1137991 has hit the releases (timing unclear on the Firefox/Core side).
  • bug 1152644 Add UI in Notifications preference pane whether or not to use libnotify for new-mail alerts on Linux.
  • bug 1141324 Upgrade the SSL panel in Privacy & Security preferences to refer to TLS {instead,too}.

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: 2015-04-28

Notices/Schedule (sylvestre/lmandel)

Next Merge: May 11, 2015 Next Release: May 12, 2015
Trains
Central: 40 Aurora: 39 Beta: 38 Release: 37

Only two weeks until the next Firefox release date! (2015-05-11)

Layout (David Baron)

Off-main-thread animations now enabled on all platforms for Nightly and Aurora (bug 980770). This means many animations of the transform and opacity properties will now run on the compositor thread, with fewer updates on the main thread.

Media

We shipped some MSE fixes in the Firefox 37.0.2 chemspill, so YouTube will re-enable HTML5 video for Firefox 37.0.2 on Windows next week.

Performance (Vladan Djeric)

Aaron Klotz and Ben Turner paid a visit to Adobe’s Flash team at their SF offices. They were able to provide fixes for several Flash player issues! An example of their work is in bug 1133351. This particular patch also landed in our codebase.

Many Telemetry histograms automatically expired in Nightly 40. Check Histograms.json and bug 1156565 to see if your histogram needs to be updated.

Telemetry unification work is continuing, Phase 3 is tracked in bug 1120356. Enabling unified Telemetry (i.e. FHR + Telemetry) might get pushed back to Firefox 40.

Among the latest Telemetry changes, Telemetry will submit data more aggressively to make analyses more reliable (akin to FHR) and to reduce reporting latency. Additionally, unified Telemetry now archives Telemetry data on the client for 6 months — this archive will be used to power the Firefox Self-Support feature.

Yoric added a “Task Manager” feature to Nightly 40 (bug 674779) to identify tabs and add-ons that are consuming the main thread’s time and slowing down Firefox. Specifically, it reports the time spent by the main thread inside different JS compartments. You can see a very rough UI for this feature by opening about:performance in Nightly. For overhead reasons, the feature currently does not measure time spent in compartments belonging to Firefox’s own chrome JS code.

The Performance team, alongside Platform teams, will be studying page scrolling & page navigation performance on desktop & Android in Q2: https://wiki.mozilla.org/Firefox/Content_Performance_Program

The Places database work done by the “Forget” toolbar button, the “Forget Site” history-menu feature, and the “Clear recent history” feature has been moved off the main thread (bug 1076775). Less jank!

If you notice any plugin issues (crashes, videos not loading, etc), please file a bug and mark it as blocking the async plugin initialization feature (bug 1116806).

Open Policy & AdvocacyMozilla statement on USA FREEDOM Act

Today, a new version of the USA FREEDOM Act is being introduced in both the House and Senate, with bipartisan support. We’re sharing the following statement:

“At Mozilla, we believe that privacy and security on the Internet are fundamental. The version of the USA FREEDOM Act of 2015 proposed today represents a significant step toward enhancing user privacy and ending mass surveillance. The bill curtails bulk collection practices, increases transparency around surveillance requests, and keeps data retention and other new surveillance mandates out of the legislation. There is more to do to make sure that privacy and security on the Internet is protected for everyone around the world. We urge Members of Congress to follow through and enact these important reforms.”

Air MozillaThe Well Tempered API

The Well Tempered API Centuries ago, a revolution in music enabled compositions to still be playable hundreds of years later. How long will your software last? This talk, originally...

SUMO BlogGuest Post Time! Goofy chronicles the 3rd French Locasprint in Paris

Greetings, SUMO Nation! It is with great pleasure that I invite you to read Goofy’s account of how the French l10ns tackled the SUMO KB… and won :-) Goofy has been a long-standing contributor to all things Mozilla, and I … Continue reading

QMOSeeking participants interested in attending a Firefox Desktop QA meetup in Latin America

July 11 – 12th we are planning a joint l10n/QA meetup in Lima, Peru. If you are interested in participating, please visit https://wiki.mozilla.org/QA/LATAM_QA_Meetup_20159 to learn more about the event. We will select 5 contributors who reside in Latin America to participate in this exciting event. This is a great opportunity to learn more about Firefox Desktop QA and directly contribute to work on one of the Mozilla QA functional teams.

The deadline for application submission is Saturday, May 2, 2015.

Please contact marcia@mozilla.com if you have any questions.

Air MozillaMartes mozilleros

Martes mozilleros Reunión bi-semanal para hablar sobre el estado de Mozilla, la comunidad y sus proyectos. Bi-weekly meeting to talk (in Spanish) about Mozilla status, community and...

QMOFirefox 38 Beta 6 Testday Results

Hey mozillians!

As you already may know, last Friday – April 24th – we held another Testday event, Firefox 38 Beta 6.

We’d like to take this opportunity to thank everyone for getting involved in the proposed testing activities and in general, for helping us make Firefox better.

Many thanks go out to Bangladesh QA Community (Hossain Al Ikram, Nazir Ahmed Sabbir, Mohammad Maruf, Fariha Afrin, Rezaul Huque Nayeem and Towkir Ahmed), Aleksej, gaby2300 and kenkon for their efforts and contributions, and to all our moderators. Thanks a bunch!

Keep an eye on QMO for the upcoming events! ;)

CalendarThe Third Beta on the way to Lightning 4.0

It’s that time of year again, we have a new major release of Lightning on the horizon. About every 42 weeks, Thunderbird prepares for a major release, we follow up with a matching major version. You may know these as Lightning 2.6 or 3.3.In order to avoid disappointments, we do a series of beta releases before a such major release. This is where we need you. Please help out in making Lightning 4.0 a great success.Time flies when you are preparing for releases, so we are already at Thunderbird 38.0b3 and Lightning 4.0b3. The final release will be on May 12th and there will be at least one more beta. Please download these betas and take a moment to go through all the actions you normally do on a daily basis. Create an event, accept an invitation, complete a task. You probably have your own workflow, these are of course just examples.

Here is how to get the builds. If you have found an issue, you can either leave a comment here or file a bug on bugzilla.

You may wonder what is new. I’ve gone through the bugs fixed since 3.3 and found that most issues are backend fixes that won’t be very visible. We do however have a great new feature to save copies of invitations to your calendar. This helps in case you don’t care about replying to the invitation but would still like to see it in your calendar. We also have more general improvements in invitation compatibility, performance and stability and some slight visual enhancements. The full list of changes can be found on bugzilla.

Although its highly unlikely that severe problems will arise, you are encouraged to make a backup before switching to beta. If it comforts you, I am using beta builds for my production profile and I don’t recall there being a time where I lost events or had to start over.

If you have questions or have found a bug, feel free to leave a comment here.

hacks.mozilla.orgWiFi Debugging for Firefox OS

I am excited to announce that we’re now shipping WiFi debugging for Firefox OS! It’s available in Firefox OS 3.0 / master with Firefox Nightly on desktop.

WiFi debugging allows WebIDE to connect to your Firefox OS device via your local WiFi network instead of a USB cable.

The connection experience is generally more straightforward (especially after connecting to a device the first time) than with USB and also more convenient to use since you’re no longer tied down by a cable.

Background

Since quite early on in the development of Firefox OS, you’ve been able to debug a device over a USB cable. However, this comes with various drawbacks:

  • You have to connect a cord whenever debugging is needed
  • Drivers are required on some OSes, which causes a lot of confusion
  • The cord requirement makes it harder to debug a phone during a user test

The mobile device just generally feels a bit less like itself when it’s tied down with a cord.

We’ve thought about adding some form of WiFi access on the DevTools team for some time. Our key goals were:

  • Ease of use
  • Secure connection

While we certainly wanted to make this feature available, we wanted to be sure it would be an improvement over the USB method, while also being secure as well. This is important over a shared network like WiFi, since the debugging process by its nature exposes many details of your activity, including potentially private request data. If you’re working at a coffee shop, you don’t want others to have access to this.

Simplicity

When connecting over WiFi, there could be many possible devices to pick from on the same network. To avoid this problem, we use a discovery mechanism, similar to Bonjour or mDNS. When you want to connect, your computer sends a multicast ping to look for nearby devices. If there are any, they’ll reply with their name and what services they support. This allows us to present a simple list of device names, instead of dealing with IP addresses.

The setup process is also nicer than the USB method, which relied on ADB from the Android project. With WiFi debugging, there are no drivers to install on Windows or udev rules to configure on Linux.

Security

A large portion of this project has gone towards making the debugging connection secure, so that you can use it safely on shared network, such as an office or coffee shop.

We use TLS for encryption and authentication. The computer and device both create self-signed certificates. When you connect, a QR code is scanned to verify that the certificates can be trusted. During the connection process, you can choose to remember this information and connect immediately in the future if desired.

How to Use

You’ll need to assemble the following:

  • Firefox 39 (2015-03-27 or later)
  • Firefox OS 3.0 (2015-04-16 or later)

Firefox OS 3.0 is still under heavy development, so it’s not yet available on devices in stores. If you have a Flame device, you can update your Flame to 3.0 / master using a nightly build. For other devices, you may need to build for your device from source to update it.

On Firefox OS, enable WiFi debugging:

  1. Go to Developer Settings on device (Settings -> Developer)
  2. Enable DevTools via Wi-Fi
  3. Edit the device name if desired

Firefox OS WiFi Debugging Options

To connect from Firefox Desktop:

  1. Open WebIDE in Firefox Nightly (Tools -> Web Developer -> WebIDE)
  2. Click “Select Runtime” to open the runtimes panel
  3. Your Firefox OS device should show up in the “WiFi Devices” section
  4. A connection prompt will appear on device, choose “Scan” or “Scan and Remember”
  5. Scan the QR code displayed in WebIDE

WebIDE WiFi Runtimes

WebIDE Displays the QR Code

After scanning the QR code, the QR display should disappear and the “device” icon in WebIDE will turn blue for “connected”.

You can then access all of your remote apps and browser tabs just as you can today over USB. All of the Firefox DevTools are available over WiFi to inspect, debug, and explore. This is purely a change in how DevTools packets are exchanged, so there are no limits on what tools you can use.

Supported Devices

This feature should be supported on any Firefox OS device. So far, I’ve tested it on the Flame and Nexus 4.

Known Issues

The QR code scanner can be a bit frustrating at the moment, as real devices appear to capture a very low resolution picture. Bug 1145772 aims to improve this soon. You should be able to scan with the Flame by trying a few different orientations. I would suggest using “Scan and Remember”, so that scanning is only needed for the first connection.

If you find other issues while testing, please file bugs or contact me on IRC.

Acknowledgments

This was quite a complex project, and many people outside of DevTools from teams like Networking and Security provided advice and reviews while working on this feature, including:

  • Brian Warner
  • Trevor Perrin
  • David Keeler
  • Honza Bambas
  • Patrick McManus
  • Jason Duell
  • Panos Astithas
  • Jan Keromnes
  • Alexandre Poirot
  • Paul Rouget
  • Paul Theriault

I am probably forgetting others as well, so I apologize if you were omitted.

What’s Next

I’d like to add this ability for Firefox for Android next. Thankfully, most of the work done here can be reused there. Additionally, we should update other tools like node-firefox to use WiFi to connect to devices. We may also leverage some of this work to make the Browser Toolbox more secure on Firefox desktop.

If there are features you’d like to see added, file bugs or contact the team via various channels.

Meeting NotesMozilla Project: 2015-04-27

Every Monday @ 11:00am Pacific Time (19:00 UTC)

All-hands Status Meeting Agenda

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

Friends of Mozilla

April Morone for adding her app to the marketplace store

Daniele Scasciafratte for stepping up and helping on the Contributor Social Media team – hes stepped up as the newest admin for the Mozilla Contributors group

Western Oregon University students for diving in to the project and working on bugs across the project during the last term.

Portland State University students for their Capstone project on Network Activity and Battery Drain in Mobile Web Apps and for sharing their findings on the Hacks blog. Thanks to Tim Huynh, Casey English, Nathan Kerr, Scott Anecito, Brianna Buckner, Ryan Niebur, Sean Mahan, Bin Gao and their Mozilla mentor, Dietrich Ayala.

Upcoming Events

This Week
Monday, 27 April
  • Weekly Bug Triage Day
  • EmpireJSCONF 2015 Held in NYC April 26/27th
    • Two day conference for the Javascript community.
    • Soledad Penadés speaking on: Web components and experimental mobile UI audio+p2p wifi+whatnot (next level js)
Tuesday, 28 April
  • The Well Tempered API 1pm PDT – brownbag in MTV Commons and Air Mozilla. Discover the links between API abstractions and centuries old music. (Probably the only coding talk you’ll ever see with live music examples on the electric bassoon.)
Wednesday, 29 April
Next Week

- There will be a contributors meeting on Tuesday moderator live for it please ask questions
https://moderator.mozilla.org/e/may-contributor-meeting

- Interns start arriving in the San Francisco and Toronto offices!

Project Status Updates (voice updates)

Firefox and Cloud Services

Speaker Location: Dave Camp/Mountain View

Content Services

Speaker Location: Kevin Ghim | NYC

Webmaker

Andrew Sliwinski (Portland)

http://mzl.la/changelog

  • Webmaker for Android
  • Chicago Field Research
    • User testing
    • Ethnographic study

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
Dan Sinker OpenNews OpenNews Updates: SRCCON & the Coral Project Chicago, IL no no slides Coral Project and OpenNews
Andy McKay Canada Bill C-51 Bill C-51 Vancouver no no Visit Stop C-51 to contact your MP and see Mozilla position
Toby Elliott Geolocation service Mountain View no no

Roundtable

Do you have a question about a Mozilla Project or initiative? Let us know by Friday- we’ll do our best to get you an answer.

Please note that we may not always be able to get to every item on this list, but we will try!

Who are you? Area of question Question
What’s your name? What do you work on? Is your question about policy, a product, a Foundation initiative, etc. What would you like to know?
David Weir (contributor) B2G devices. As being a long time contributor for Mozilla is their any flame devices going I can test and let users in the UK know how great b2g is?

Welcome!

Let’s say hello to some new Mozillians! If you are not able to join the meeting live, you can add a link to a short video introducing yourself.

Introducing New Volunteers

New Volunteer Introduced by Speaker location New Volunteer location Will be working on
Who is the new volunteer? Who will be introducing that person? Where is the introducer? Where will the new person be contributing from? What will the new person be working on?

Introducing New Hires

New Hire Introduced by Speaker location New Hire location Will be working on
Ben Niolet Michaela Smiley Alexandria, VA Durham, NC Community Marketing (Email Marketing Manager)
Liz Hull Michaela Smiley Alexandria, VA Norfolk, VA Community Marketing (Social Media Manager)
Chelsea Novak Mary Colvig San Francisco Toronto (home office today) Community Marketing
Andrew Losowsky Dan Sinker Chicago, IL New York City Coral Project, project lead
Andre Natal Dylan Oliver Mountain View Brazil Remote Firefox OS Developer

<meta>

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

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

Automation & Tools
bugzilla.mozilla.org

Notable changes to bugzilla.mozilla.org during the last week:

  • bug 579089 The default Hardware and Operating-System fields now default to “Unspecified/Unspecified” instead of the reporter’s platform
    • This can be overwritten per-product, file a bug if you own a product and want this changed
  • bug 1151830 GitHub Auth is now enabled, allowing non-powerful accounts to sign in using their github credentials.

All changes.

Engagement

  • Dial-in: conference# 8600
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 8600
    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 8600
    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 8600
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 8600
    • CA/British Columbia/Vancouver: +1 778 785 1540, x92 Conf# 8600
    • CA/Ontario/Toronto: +1 416 848 3114, x92 Conf# 8600
    • UK/London: +44 (0)207 855 3000, x92 Conf# 8600
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 8600

Mozilla SecurityRemoving e-Guven CA Certificate

The Certification Authority (CA) certificate owned by e-Guven Elektronik Bilgi Guvenligi A.S. will be removed in Firefox 38 due to insufficient and outdated audits.

The integrity of the secure Web depends on CAs issuing certificates that correctly attest to the identity of websites. Mozilla products ship a default list of CA certificates, which may change with each security patch or new version of the product. Inclusion of a CA certificate in Mozilla products involves a rigorous process and evaluation of the CA’s public-facing policy documentation and audit statements, in order to verify that the CA conforms to the criteria required by Mozilla’s CA Certificate Inclusion Policy.

The CA certificates included in the Mozilla list can be marked as trusted for various purposes, so that the software can use the CA certificates to verify certificates for (1) SSL/TLS servers, (2) S/MIME email users, and/or (3) digitally-signed code objects, without having to ask users for further permission or information. When a CA certificate is trusted for verifying certificates for SSL/TLS servers, Mozilla’s CA Certificate Inclusion Policy requires CAs to annually provide public-facing attestation from an independent party stating that they have audited the CA using one of the following two sets of criteria:

1) Clause 7, “Requirements on CA practice”, in ETSI TS 102 042 V2.3.1 or later version, Policy requirements for certification authorities issuing public key certificates (as applicable to the “EVCP” and “EVCP+” certificate policies, DVCP and OVCP certificate policies for publicly trusted certificates – baseline requirements, and any of the “NCP”, “NCP+”, or “LCP” certificate policies);
OR
2) WebTrust “Principles and Criteria for Certification Authorities 2.0″ or later and “SSL Baseline Requirements Audit Criteria V1.1” (as applicable to SSL certificate issuance) in WebTrust Program for Certification Authorities

Despite many requests for E-Guven to provide current public-facing audit statements that meet the requirements of Mozilla’s CA Certificate Inclusion Policy, the audit statement that Mozilla has for E-Guven indicates that the last supervision of E-Guven was held in 2013 and was not performed according to either of the above sets of criteria. Therefore, discussion about this CA was held in the mozilla.dev.security.policy forum, and the consensus was that E-Guven’s root certificate should be removed.

As always, we recommend that all users upgrade to the latest version of Firefox. This particular change will be in Firefox 38 and future releases of Firefox.

Mozilla Security Team

hacks.mozilla.orgFirefox OS, Animations & the Dark Cubic-Bezier of the Soul

I’ve been using Firefox OS daily for a couple of years now (wow, time flies!). While performance has steadily improved with efforts like Project Silk, I’ve often noticed delays in the user interface. I assumed the delays were because the hardware was well below the “flagship” hardware I’ve become accustomed to with Android and iOS devices.

Last year, I built Firefox OS for a Nexus 4 and started using that as my daily phone. Quickly I realized that even with better hardware, I sometimes had to wait on Firefox OS for basic interactions, even when the task wasn’t computationally intensive. I moved on to a Nexus 5 and then a Sony Z3 Compact, both with better specs than the Nexus 4, and experienced the same thing.

Time passed. Frustration grew. Whispers of a nameless fear…

Running the numbers

While reading Ralph Thomas’s post about creating animations based on physical models, I wondered about the implementation of animations in Firefox OS, and how that might be involved in this problem. I performed an audit of the number of instances of different animations, grouped by their duration. I removed progress indicators and things like the boot shutdown animation. Here are the animation and transition durations in Firefox OS, grouped by duration, for transitional interactions like scaling, opening, closing and sliding:

  • 0.1s: 15
  • 0.2s: 57
  • 0.3s: 79
  • 0.4s: 40
  • 0.5s: 78
  • 0.6s: 8

A couple of things stand out. First, we have a pretty wide distribution of animation durations. Second, the vast majority of the animations are more than 300ms long!

In fact, in more than 80 animations we are making the user wait more than half a second. These slow animations are dragging us down, resulting in a poorer overall experience of Firefox OS.

How did we get here?

The Firefox OS UX and interaction designers didn’t huddle in a room and design each interaction to be intentionally slow. The engineers who implemented these animations didn’t ever think to themselves “this feels really responsive… let’s make it slower!”

My theory is that interactions like these don’t feel slow while you’re designing and implementing them, because you’re working with a single interaction at a time. When designing and developing an animation, I look for fluidity of motion, the aesthetics of that single action and how the visual impact enhances the task at hand, and then I iterate on duration and effects until it feels right.

We do have guidelines for responsiveness and user-perceived performance in Firefox OS, written up by Gordon Brander, which you can see in the screenshot below. (Click the image for a larger, more readable version.) However, those guidelines don’t cover the sub-second period between the initial perception of cause and effect and the next actionable state of the user interface.

Screenshot 2015-04-18 09.38.10

Users have an entirely different experience than we do as developers and designers. Users make their way through our animations while hurriedly sending a text message, trying to capture that perfect moment on camera, entering their username and password, or arduously uploading a bunch of images one at a time. People are trying to get from point A to point B. They want to complete a task… well, actually not just one: Smartphone users are trying to complete 221 tasks every day, according to a study in the UK last October by Tecmark. All those animations add up! I assert that the aggregate of those 203 animations in Gaia that are 300ms and longer contributes to the frustrating feeling of slowness I was experiencing before digging into this.

Making it feel fast

So I tested this theory, by changing all animation durations in Gaia to 200ms, as a starting point. The result? Firefox OS feels far more responsive. Moving through tasks and navigating around the OS felt quick but not abrupt. The camera snaps to readiness. Texting feels so much more fluid and snappy. Apps pop up, instead of slowly hauling their creaky bones out of bed. The Rocketbar gets closer to living up to its name (though I still think the keyboard should animate up while the bar becomes active).

Here’s a demo of some of our animations side by side, before and after this patch:

There are a couple of things we can do about this in Gaia:

  1. I filed a bug to get this change landed in Gaia. The 200ms duration is a first stab at this until we can do further testing. Better to err on the snappy side instead of the sluggish side. We’ve got the thumbs-up from most of the 16 developers who had to review the changes, and are now working with the UX team to sign off before it can land. Kevin Grandon helped by adding a CSS variable that we can use across all of Gaia, which will make it easier to implement these types of changes OS-wide in the future as we learn more.
  2. I’m working with the Firefox OS UX team to define global and consistent best-practices for animations. These guidelines will not be correct 100% of the time, but can be a starting point when implementing new animations, ensuring that the defaults are based on research and experience.
If you are a Firefox OS user, report bugs if you experience anything that feels slow. By reporting a bug, you can make change happen and help improve the user experience for everyone on Firefox OS.

If you are a developer or designer, what are your animation best-practices? What user feedback have you received on the animations in your Web projects? Let us know in the comments below!

Meeting NotesMozilla Platform: 2015-04-24

Notices/Schedule (sylvestre/lmandel)

Next Merge: May 11, 2015 Next Release: May 12, 2015
Trains
Central: 40 Aurora: 39 Beta: 38 Release: 37

Only two weeks until the next Firefox release date! (2015-05-11)

Layout (David Baron)

Off-main-thread animations now enabled on all platforms for Nightly and Aurora (bug 980770). This means many animations of the transform and opacity properties will now run on the compositor thread, with fewer updates on the main thread.

Media

We shipped some MSE fixes in the Firefox 37.0.2 chemspill, so YouTube will re-enable HTML5 video for Firefox 37.0.2 on Windows next week.

Performance (Vladan Djeric)

Aaron Klotz and Ben Turner paid a visit to Adobe’s Flash team at their SF offices. They were able to provide fixes for several Flash player issues! An example of their work is in bug 1133351. This particular patch also landed in our codebase.

Many Telemetry histograms automatically expired in Nightly 40. Check Histograms.json and bug 1156565 to see if your histogram needs to be updated.

Telemetry unification work is continuing, Phase 3 is tracked in bug 1120356. Enabling unified Telemetry (i.e. FHR + Telemetry) might get pushed back to Firefox 40.

Among the latest Telemetry changes, Telemetry will submit data more aggressively to make analyses more reliable (akin to FHR) and to reduce reporting latency. Additionally, unified Telemetry now archives Telemetry data on the client for 6 months — this archive will be used to power the Firefox Self-Support feature.

Yoric added a “Task Manager” feature to Nightly 40 (bug 674779) to identify tabs and add-ons that are consuming the main thread’s time and slowing down Firefox. Specifically, it reports the time spent by the main thread inside different JS compartments. You can see a very rough UI for this feature by opening about:performance in Nightly. For overhead reasons, the feature currently does not measure time spent in compartments belonging to Firefox’s own chrome JS code.

The Performance team, alongside Platform teams, will be studying page scrolling & page navigation performance on desktop & Android in Q2: https://wiki.mozilla.org/Firefox/Content_Performance_Program

The Places database work done by the “Forget” toolbar button, the “Forget Site” history-menu feature, and the “Clear recent history” feature has been moved off the main thread (bug 1076775). Less jank!

If you notice any plugin issues (crashes, videos not loading, etc), please file a bug and mark it as blocking the async plugin initialization feature (bug 1116806).

SUMO BlogWhat’s up with SUMO – 24th April

Welcome to the weekly wrap-up of the going-on in the world of SUMO. Have you missed us? We missed you! Welcome the new SUMOzillians among us! Sofia atla yee.jiarong Tirtha4 Don’t hesitate to say “hi” in the forums  if I … Continue reading

SUMO BlogWelcome Mark Schmidt, Senior Firefox Community Support Lead!

Hey there, SUMO Nation! It’s finally time to officially announce the latest arrival (and to think I was in the same place not so long ago… heh :-)) Join me in welcoming Mark Schmidt! Mark is our new Senior Firefox … Continue reading

hacks.mozilla.orgES6 In Depth: An Introduction

Welcome to ES6 In Depth! In this new weekly series, we’ll be exploring ECMAScript 6, the upcoming new edition of the JavaScript language. ES6 contains many new language features that will make JS more powerful and expressive, and we’ll visit them one by one in weeks to come. But before we start in on the details, maybe it’s worth taking a minute to talk about what ES6 is and what you can expect.

What falls under the scope of ECMAScript?

The JavaScript programming language is standardized by ECMA (a standards body like W3C) under the name ECMAScript. Among other things, ECMAScript defines:

What it doesn’t define is anything to do with HTML or CSS, or the Web APIs, such as the DOM (Document Object Model). Those are defined in separate standards. ECMAScript covers the aspects of JS that are present not only in the browser, but also in non-browser environments such as node.js.

The new standard

Last week, the final draft of the ECMAScript Language Specification, Edition 6, was submitted to the Ecma General Assembly for review. What does that mean?

It means that this summer, we’ll have a new standard for the core JavaScript programming language.

This is big news. A new JS language standard doesn’t drop every day. The last one, ES5, happened back in 2009. The ES standards committee has been working on ES6 ever since.

ES6 is a major upgrade to the language. At the same time, your JS code will continue to work. ES6 was designed for maximum compatibility with existing code. In fact, many browsers already support various ES6 features, and implementation efforts are ongoing. This means all your JS code has already been running in browsers that implement some ES6 features! If you haven’t seen any compatibility issues by now, you probably never will.

Counting to 6

The previous editions of the ECMAScript standard were numbered 1, 2, 3, and 5.

What happened to Edition 4? An ECMAScript Edition 4 was once planned—and in fact a ton of work was done on it—but it was eventually scrapped as too ambitious. (It had, for example, a sophisticated opt-in static type system with generics and type inference.)

ES4 was contentious. When the standards committee finally stopped work on it, the committee members agreed to publish a relatively modest ES5 and then proceed to work on more substantial new features. This explicit, negotiated agreement was called “Harmony,” and it’s why the ES5 spec contains these two sentences:

ECMAScript is a vibrant language and the evolution of the language is not complete. Significant technical enhancement will continue with future editions of this specification.

This statement could be seen as something of a promise.

Promises resolved

ES5, the 2009 update to the language, introduced Object.create(), Object.defineProperty(), getters and setters, strict mode, and the JSON object. I’ve used all these features, and I like what ES5 did for the language. But it would be too much to say any of these features had a dramatic impact on the way I write JS code. The most important innovation, for me, was probably the new Array methods: .map(), .filter(), and so on.

Well, ES6 is different. It’s the product of years of harmonious work. And it’s a treasure trove of new language and library features, the most substantial upgrade for JS ever. The new features range from welcome conveniences, like arrow functions and simple string interpolation, to brain-melting new concepts like proxies and generators.

ES6 will change the way you write JS code.

This series aims to show you how, by examining the new features ES6 offers to JavaScript programmers.

We’ll start with a classic “missing feature” that I’ve been eager to see in JavaScript for the better part of a decade. So join us next week for a look at ES6 iterators and the new for-of loop.

Meeting NotesChannel: 2015-04-23

Attendees

lmandel, kairo, jorge, roland, rrayborn

Regrets

Sylvestre (flat tire)

Schedule Update

  • Review 37.0.2 stability data, make call on enabling updates at 100%
  • both beta 6 live
  • b7 go to build in a few hours

Add-ons

  • No updates.

Stability

Aurora / Dev Edition

  • Overall rate: 2.2 (browser), plugin cr/h: 0.42/0.95 – target: <1.5, ~0.07/0.14
  • Patches for top two crashes, bug 1155241 and bug 1155503 (plugins), landed in last 2 days
  • On the plugin process side, bug 1156903, bug 1156800, bug 1151794, bug 1157237 are top issues
    • With that rate of plugin-side issues, we do not see async plugin init as ready for beta yet.
    • aklotz looking into those issues
    • lmandel wants to review state of plug-in crashes on Thu, Apr 30. Will make a call then about whether we need to disable this feature in 39.

Beta

  • Overall rate: 2.0, without AMD crash 1.55, target <1.4
  • bug 1116812 (TDRs) is 3.4% of 38.0b6 data so far
  • bug 1127270 (SH in layers::CompositorParent::ShutDown) is 3.4%
  • bug 1124880 (SH in net::nsHttpConnectionMgr::Shutdown) is 1.8%
  • bug 1141089 (InvalidateLayerForChange) is 1.6%, data gathering patch on nightly and aurora
  • bug 1153558 (gfx, msvcr120.dll) is 1.5%
  • bug 1154003 (FillRectangle) is 1.3%, patch landed for b7
  • bug 1143806 (SyncObjectD3D11::FinalizeFrame) is 1%
  • bug 1153929 (mozilla::net::nsHttpTransaction::WriteSegments) is 0.7%
  • bug 1133623 (mozilla::layers::CompositorD3D11::BeginFrame) is 0.6%
  • bug 1130061 (webrtc::videocapturemodule::DeviceInfoDS::CreateCapabilityMap) is .55%
  • bug 1154703 (startup, layers::CompositorD3D11::Initialize) is #2 top crash score in b5

Release

  • Overall rate: 1.3
  • As expected, 37.0.2 might bring that down a tiny bit
  • bug 1157247 (sfk.dll) is #16 with .75%, has been rising across channels, probably malware.

User Advocacy


Channel Meeting Details

Video/Teleconference Details – NEW

  • 650-903-0800 or 650-215-1282 x92 Conf# 99951 (US/INTL)
  • 1-800-707-2533 (pin 369) Conf# 99951 (US)
  • Vidyo Room: Release Coordination
  • Vidyo Guest URL

Air MozillaPrivacy Lab and Cryptoparty with guest speaker Melanie Ensign - How Security/Crypto Experts Can Communicate with Non-Technical Audiences

Privacy Lab and Cryptoparty with guest speaker Melanie Ensign - How Security/Crypto Experts Can Communicate with Non-Technical Audiences Our April Privacy Lab will include a speaker and an optional and free Cryptoparty, hosted by Wildbee (https://wildbee.org/cryptoparty.html). Our speaker will be Melanie Ensign. Melanie's...

Air MozillaGerman speaking community bi-weekly meeting

German speaking community bi-weekly meeting Zweiwöchentliches Meeting der deutschsprachigen Community. ==== German speaking community bi-weekly meeting.

Air MozillaCommunity Education Call

Community Education Call The Community Education Working Group exists to merge ideas, opportunities, efforts and impact across the entire project through Education & Training.

Meeting NotesMobile: 2015-04-22

Schedule

Tracking Review

Beta

  • Next Build:
ID Summary Status Assigned to Last change time
1051556 crash in java.lang.IllegalArgumentException: invalid selection notification range at org.mozilla.gecko.GeckoEditable.onSelectionChange(GeckoEditable.java) ASSIGNED Eugen Sawin [:esawin] (esawin) 2015-04-15T16:09:34Z
1108527 Severe canvas performance regression compared to Firefox 29 ASSIGNED James Willcox (:snorp) (jwillcox@mozilla.com) (snorp) 2015-04-22T16:41:57Z
1120511 Autophone – Twitter Throbber stop regression 2015-01-15 REOPENED Seth Fowler [:seth] (seth) 2015-04-08T16:37:29Z
1126244 Create a maximum reader mode cache size and evict records when necessary ASSIGNED Vivek Balakrishnan[:vivek] (vivekb.balakrishnan) 2015-04-06T04:19:46Z
1129074 Content view sometimes blank on load until restart NEW Eugen Sawin [:esawin] (esawin) 2015-04-01T16:41:41Z
1129614 Regression: Sometimes thumbnails in the tabs drawer are not updated, they expire NEW Martyn Haigh (:mhaigh) (mhaigh) 2015-04-03T00:13:43Z
1129840 Tabs are not always restored on Gingerbread devices NEW Mark Finkle (:mfinkle) (mark.finkle) 2015-04-22T16:41:31Z
1132508 Last tab is cut off in tab tray after rotation REOPENED Martyn Haigh (:mhaigh) (mhaigh) 2015-04-22T17:07:05Z
1143888 Integrate the Adjust campaign tracking SDK into Firefox ASSIGNED Mark Finkle (:mfinkle) (mark.finkle) 2015-04-14T13:31:49Z
1148391 Tapping the bottom of the screen will make the reader mode toolbar bounce up and down NEW :Margaret Leibovic (margaret.leibovic) 2015-04-22T16:35:22Z


10 Total;
10 Open (100%);
0 Resolved (0%);
0 Verified (0%);

Aurora

  • Next Build:
ID Summary Status Assigned to Last change time
776030 Allow Fennec to use the AsyncPanZoomController NEW Danilo Cesar Lemes de Paula (danilo.eu) 2015-04-21T15:27:46Z
1010068 Disable OCSP for DV certificates in Firefox for Android NEW Brad Lassey [:blassey] (use needinfo?) PTO April 11-19 (blassey.bugs) 2015-04-17T21:48:34Z
1016555 Disable OCSP checking for certificates covered by OneCRL ASSIGNED David Keeler [:keeler] (use needinfo?) (dkeeler) 2015-04-09T17:17:52Z
1047127 Panning very stuttery on this page with overflow-x NEW Danilo Cesar Lemes de Paula (danilo.eu) 2015-04-01T16:44:34Z
1076692 Tapping on URL bar does not dismiss the tabs tray REOPENED Jeff Lu (jll544) 2015-04-22T21:21:23Z
1084456 Enable MSE for MP4 on Jelly Bean+ NEW James Willcox (:snorp) (jwillcox@mozilla.com) (snorp) 2015-04-16T17:46:43Z
1093815 Use AndroidPlatformDecoder for standalone MP3 on Android ASSIGNED Eugen Sawin [:esawin] (esawin) 2015-04-20T23:12:50Z
1139232 Door hanger on tablet shows up in the tab over view REOPENED Allison Naaktgeboren please NEEDINFO? :ally (ally) 2015-04-22T18:17:24Z
1147064 Update doorhanger button styling NEW Chenxia Liu [:liuche] (liuche) 2015-04-10T02:11:37Z
1150284 [Browser] Unable to zoom in/out on Google Maps NEW 2015-04-17T23:30:47Z


10 Total;
10 Open (100%);
0 Resolved (0%);
0 Verified (0%);

Friends of the Mobile Team

Give a shoutout/thanks to people for helping fix and test bugs. Make sure friends also get awarded a badge. New contributors are highlighted in bold.

  • Darren Lyons fixed bug 1147233 – Remove unused “overlay_share_retry” string
  • travis fixed all the bugs
  • (iOS) dusek fixed bug 1146838 – Tabs tray is inaccessible to VoiceOver

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!

James W. (snorp)

  • Still investigating paint suppression techniques
    • We might spend a lot of time drawing about:home and browser.xul for some reason
  • Reviews
  • bug 1154803 – Search activity crashes on VZW HTC One M8
    • This sucked
  • Interviews, other manager stuff

JChen

Fixed
Working on

GCP

Fixed
Working on
  • Unwanted Software list for SafeBrowsing is on m-i
  • SafeBrowsing caching issues (also mobile)

ted

Randall Barker

Last Week:

  • Worked on bug 659285 which will allow users to prevent websites from using JavaScript to auto play videos. Decided to look into overlay when auto play is blocked so that user can tap to start when controls are not present.
  • Started investigating start up performance with profiler.

Next Week:

  • Continue work on bug 659285
  • Investigate getting java profiler to start earlier.

Eugen Sawin

  • MP3 demuxer (bug 1093815)
    • Added more tests (all critical passing)
    • Integration success: sound plays (bug 1153731)
    • Next: improve/fix seeking support
  • Other
    • Continue investigating the blank content view on load issue bug 1129074

Brian Nicholson

  • bug 1155859 – SQLite concurrency fixes
    • Reusing SQLite connections
    • Cursor preloading
    • Enabling WAL/busy timeouts
  • bug 1145402 – Cache tab tray thumbnails
  • bug 1156500 – Fix UITest failures
  • Now: investigating memory leaks

WesJ

  • bug 1130522 – [META] IOS-30 – Security/Privacy – Clear private data. landing.
  • bug 1146464 – HTTP auth dialogs aren’t shown. Landed. Looking at a follow up.
  • bug 1139577 – Support download ‘hand-off’.
    • Reworked snackbars behavior and animation some.
  • bug 1153330 – Move tabs/sessions to profile. Next up!

liuche

Highlights:

  • Doorhangers
  • First run – user testing for messaging

Present:

Past:

Margaret

Highlights:

  • Reader view bugs, meetings, and PTO

Past:

Present:

mcomella

  • UX polish party in YVR w/ antlam & mhaigh
  • Search engine bar in BrowserSearch
  • 38 polish – share overlay, share plane, etc.

Past:

Present:

rnewman

  • Reading list in.
  • Reading list off.
  • Sync iOS: tabs in, sent tabs in (mostly).
  • PTO tomorrow.
  • Proposed: eliminate Honeycomb support.
  • Did a little bit of evening relaxation code to rip out SMS code, which turned out too be bigger than expected.
Fixed
Working on

nalexander

Projects for this cycle:

  • Implement Firefox Accounts for iOS: bug iosfxa
    • FxA should get testing starting with the next release (iOS Build 9)
  • Landing Adjust SDK: bug 1143888
  • Contributor mentoring:
    • Working with vivek on bug 1142171: split-pane for Bookmarks and History (Android)
    • Working with sachin on bug 1151353: relative time strings for Remote Tabs panel (iOS)
Past
Present

Martyn Haigh

Past:

Present:

Stuck:

Allison

  • not able to attend
  • Reviews
  • Bug 1139232 Door hanger on tablet shows up in the tab over view
  • Bug 1139551 – Doorhanger anchor position
    • Can we drop gingerbread support yet?
  • Bug 1155804/1155819 – Position doorhangers on tablets under back button
  • Upcoming
    • new FHR (finally, hopefully, for real this time) Bug 1141769
    • 1139553 Black overlay for doorhanger background

BLassey

Fixed
Working on

MFinkle

Fixed
Working on

Antlam

  • Past
    • Partners work/mocks
    • UX Explore: Mobile tabs tray improvements
    • bug 1147070: Onboarding V1 for Firefox on iOS
    • bug 1148460: Testing onboarding for Android
    • bug 1107590: Site ID doorhanger
    • mhaigh and mcomella in YVR – POLISH ALL THE THINGS! \o/

Robin

General catch-up. Was out for a couple days.

iOS

and for iOS+Android:

  • bug 1156917 Get higher resolution favicons for search engines

Darrin

QA

Feature Focus

Read Only


Details

  • Wednesdays – 9:30am Pacific, 12:30pm Eastern, 16:30 UTC
  • Dial-in: conference# 99998
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 99998
    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 99998
    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 99998
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 99998
    • CA/British Columbia/Vancouver: +1 778 785 1540, x92 Conf# 99998
    • CA/Ontario/Toronto: +1 416 848 3114, x92 Conf# 99998
    • UK/London: +44 (0)207 855 3000, x92 Conf# 99998
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 99998
  • irc.mozilla.org #mobile for backchannel
  • Mobile Vidyo Room

Air MozillaProduct Coordination Meeting

Product Coordination Meeting Duration: 10 minutes This is a weekly status meeting, every Wednesday, that helps coordinate the shipping of our products (across 4 release channels) in order...

Open Policy & AdvocacyMozilla speaks out on French intelligence bill

Since Snowden, we have seen increasing government conversations about the appropriate limits of surveillance; Some states have sought to restrict their own access to information and others have focused on restricting access from other governments. Generally, we like this focus and support these kinds of efforts. However, we are deeply concerned about recent reports about an intelligence bill currently being negotiated in France. The French government is rushing this proposal through Parliament, with little to no consultation of key stakeholders, and the actual provisions under discussion seem to be changing often.

The proposals that have been made public — including those allowing for bulk collection of metadata, automated algorithmic analysis of user communications, and efforts to weaken encryption — threaten Internet infrastructure, user privacy, and data security. Not only are we concerned about the content of these proposals, but given our own commitment to openness, we are equally concerned by the manner in which this legislation is being developed. Secrecy and closed door discussions rarely create strong legislation.

While the specific provisions continue to change in this fast-moving political environment, Mozilla joins numerous French institutions, businesses, and civil society organizations in expressing deep concern about the proposals being put forward by the French government. In particular, we would oppose any law that:

  • Allows for pervasive monitoring of user communications, metadata, and Web activity. We believe that this is an inherently disproportionate violation of user privacy and fractures the trust that underlies the open Internet;
  • Undermines the strength of or the ability to use encryption. The world depends on encryption to ensure the security and privacy of communications and commerce;
  • Fails to include adequate privacy, due process, transparency, and judicial oversight safeguards or permits unnecessary data retention.

We are particularly concerned about proposals to place so-called black boxes in the infrastructure of communications providers to conduct algorithmic surveillance. This proposal effectively forces companies to permit government monitoring of all of their users’ online activity for a secret set of “suspicious” patterns of behavior.

Mozilla urges the French government to have a fully informed debate around this proposed bill. In particular, we urge consideration of the technical impacts on Internet infrastructure and user security. At a time when privacy and security are increasingly recognized as mutually reinforcing, the French government seems to be pitting these values against each other, at the risk of diminishing both.

Rumbling Edge - Thunderbird2015-04-20 Calendar builds

Common (excluding Website bugs)-specific: (6)

  • Fixed: 1003196 – Add icons to more imip bar buttons
  • Fixed: 1137673 – extra divider in the options menu of new task dialog
  • Fixed: 1146500 – Wrong first occurrence for monthly recurrence with BYDAY and BYMONTHDAY
  • Fixed: 1150707 – Make use of tags for running only icaljs/libcal tests
  • Fixed: 1150882 – Lightning incorrectly unified after bug 1143163
  • Fixed: 1151404 – Nightly Windows x64 lightning hits 404 when updating

Sunbird will no longer be actively developed by the Calendar team.

Windows builds Official Windows

Linux builds Official Linux (i686), Official Linux (x86_64)

Mac builds Official Mac

Rumbling Edge - Thunderbird2015-04-20 Thunderbird comm-central builds

Thunderbird-specific: (27)

  • Fixed: 768480 – Mac OSX TB 13 crashes in nsMsgDBFolder::CreateFileForDB when going online. Caused by folder subscribed on server that no longer exists?
  • Fixed: 849540 – Log in to Gmail (IMAP/SMTP) using OAuth in backend
  • Fixed: 939462 – Feature to count and show number of unread e-mails in subfolders should be optional. (because enumeration is slow)
  • Fixed: 1054308 – Investigate switching Thunderbird comm-central MozMill tests to mozharness
  • Fixed: 1118263 – C-C TB: JavaScript 1.6’s for-each-in loops are deprecated in accountprovisioner and about-support
  • Fixed: 1130852 – Add opt-out notification for calendar integration
  • Fixed: 1134234 – resource://app/modules/gloda/mimemsg.js should be resource:///modules/gloda/mimemsg.js in /mail/test/mozmill/shared-modules/test-message-helpers.js
  • Fixed: 1134986 – Address autocomplete sorting wrong – appears to ignore recent use (popularityindex) information in 31.4.0+
  • Fixed: 1138478 – ‘Write’ toolbar button disabled/greyed out after opening the menus in the Saved Files tab
  • Fixed: 1139524 – Font indicator doesn’t update when cursor is placed in text with this font
  • Fixed: 1140720 – Error reading font prefs in the Slovenian locale
  • Fixed: 1145970 – Port Bug 1005105 to TB [Remove noise from tab textures]
  • Fixed: 1145974 – Move more styles to shared addressbook.css
  • Fixed: 1147006 – TB shows instructions with [File] – [Offline] – [Synchronize] instead of [Download/Sync Now]
  • Fixed: 1147526 – Port Bug 1147311: migrateUI() should migrate font.language.group to a supported value
  • Fixed: 1148369 – “invalid ‘in’ operand colState” when switching folders
  • Fixed: 1148503 – TEST-UNEXPECTED-FAIL | toolkit/components/telemetry/tests/unit/test_TelemetryPing.js | xpcshell return code: 0
  • Fixed: 1149275 – Ensure newly opened conversations get focused
  • Fixed: 1150051 – C-C TB: EXCEPTION: formatted size is not numeric: ‘Read’
  • Fixed: 1150073 – C-C TB: Exception: Found visible column ‘correspondentCol’ but was expecting ‘recipientCol’!
  • Fixed: 1151223 – Reorder mail’s package-manifest.in to minimize differences to browser’s version
  • Fixed: 1152045 – Email address missing from “From” field on emails sent through Thunderbird 38 if the identityName pref was set
  • Fixed: 1152852 – Notification sound for highlights in chats not played if chat tab is selected, even when Thunderbird is not the currently active/focused application (in background)
  • Fixed: 1153511 – TEST-UNEXPECTED_FAIL | check-sync-dirs.py | build file copies are not in sync: differing file: ./win32/mozconfig.vs2013-win64
  • Fixed: 1153551 – Priority button : description missing
  • Fixed: 1154799 – “this._browser.messageManager is undefined” error just by starting Thunderbird
  • Fixed: 1156049 – Port ‘Bug 1155476 – Update sccache to 155c926′ to fix check-sync-dirs.py failure.

MailNews Core-specific: (30)

  • Fixed: 306035 – mail server appended to usernames with “@” (Password dialog for IMAP says <alias>@<domain>@<mailserver> instead of <alias>@<domain> on(at/…) <mailserver>)
  • Fixed: 662907 – web site from RSS feed not rendered correctly (due to noscript tags)
  • Fixed: 810495 – Make the classes which use the XPCOM nsISupports implementation macros final, to avoid the warning about deleting using a pointer to a base class with virtual functions and no virtual dtor
  • Fixed: 1123124 – Remove use of expression closures in mailnews/
  • Fixed: 1126607 – Kill the LDAP build system
  • Fixed: 1132218 – Update comm-central for PLDHashTable changes in bug 1131901
  • Fixed: 1139167 – Some birthdays are off by one day in Thunderbird’s addressbook
  • Fixed: 1139965 – Implement function to export addressbook in vCard format
  • Fixed: 1140652 – deduplicate some JS code writing out a simple string to a file in profile
  • Fixed: 1140884 – An error occurred while sending mail garbled
  • Fixed: 1141735 – unaligned labels in the LDAP server Advanced properties tab
  • Fixed: 1144621 – mimemsg.cpp might leak memory in some instances
  • Fixed: 1144719 – Allow the user to decide whether or not to use libnotify for new-mail alerts on Linux
  • Fixed: 1148887 – Message string for SMTP server connection error is incorrect. File: composeMsgs.properties, key: smtpSendRefused
  • Fixed: 1148888 – Message string for SMTP server connection error is incorrect. File: composeMsgs.properties, key: smtpAuthNotSupported
  • Fixed: 1148957 – Port bug 1148463 by backing out bug 1144128: temporarily disable new performance tools for Aurora uplift
  • Fixed: 1149247 – remove deprecated for-each-in loops in the account manager and account wizard
  • Fixed: 1150176 – Remove nsMemory::Alloc/Free/Realloc from c-c following their removal in bug 1134920
  • Fixed: 1150967 – Port Bug 1147839 to comm-central – Fix building installer on mingw by only including helper.exe if mknsisu is used
  • Fixed: 1150981 – Port Bug 674779 to comm-central – Add per-compartment CPU accounting
  • Fixed: 1151002 – Port Bug 1120308 to comm-central – [Presentation WebAPI] control protocol establishment and offer-answer exchange
  • Fixed: 1151181 – uninitialized error string in mailnews/extensions/mdn/src/nsMsgMdnGenerator.cpp
  • Fixed: 1152287 – TEST-UNEXPECTED-FAIL | crypto | Failed to find the appropraite data_path
  • Fixed: 1153187 – Build process is broken while reticulating splines “Variable SHARED_LIBRARY_LIBS” involved.
  • Fixed: 1153543 – when adding a new identity, the smtp server menulist is collapsed with no default item selected
  • Fixed: 1153557 – do away with preprocessing in am-identity-edit.js due to identity.autocompleteToMyDomain
  • Fixed: 1154468 – unused function getServerIdAndPageIdFromTree in am-identity-edit.xul
  • Fixed: 1155951 – Fix a non-array delete for scalars
  • Fixed: 1155953 – Remove Structurally dead code in nsNNTPProtocol.cpp
  • Fixed: 1155955 – remove a self assignment in nsImapUtils.cpp

Windows builds Official Windows, Official Windows installer

Linux builds Official Linux (i686), Official Linux (x86_64)

Mac builds Official Mac

The Bugzilla UpdateVCS updates: bzr moving, cvs ending

At the Bugzilla project meeting on 2015-03-25 the project lead and assistant leads agreed on two major changes to Bugzilla’s source-code hosting:
  1. CVS support is officially dropped as of now. 4.0 is the last version that was released on CVS, and it will be EOLed when 5.0 comes out (very soon; rc3 was just released). In the event of a release on the 4.0 branch before it is EOLed, any Bugzilla installations that have not migrated to bzr or git will have to apply patches to upgrade, which will continue to be distributed as usual. Bugzilla site admins are strongly encouraged to migrate to pulling from git.mozilla.org as soon as possible.
  2. Bazaar hosting has been officially switched from bzr.mozilla.org to bzr.bugzilla.org. bzr.bugzilla.org is already active and syncing changes from git.mozilla.org. bzr.mozilla.org is no longer syncing changes and will soon be shut down. Any sites upgrading from bzr.mozilla.org must do one of the following to apply any future upgrades, in order of preference:

bzr.bugzilla.org will continue to mirror changes from git.mozilla.org for the 4.0, 4.2, and 4.4 branches as long as they are supported. Note that, at the moment, master/trunk is being mirrored as well, but no other branches, including and subsequent to 5.0, will be mirrored to bzr.bugzilla.org, and trunk mirroring may cease at any time.

Note that bzr.bugzilla.org is waiting on a proper certificate; please use plain http until this is resolved.

The Bugzilla team apologizes for any inconvenience. Please see our support options if you have trouble migrating.

Mark Côté
Assistant Project Lead, Bugzilla


WebmakerUnderstanding Web Literacy within the Web Journey

Since 2012, pioneering educators and web activists have been reflecting and developing answers to the question, “What is web literacy?”

These conversations have shaped our Web Literacy Map, a guiding document that outlines the skills and competencies that are essential to reading, writing, and participating on the Web.

Just the other week, we wrapped up improvements to the Web Literacy Map, proudly unveiling version 1.5. Thank you to all who contributed to that discussion, and to Doug Belshaw for facilitating it.

We believe being web literate is not just knowing how to code in HTML, CSS, and Javascript. These are great tools, but they’re only one aspect of being a Web creator and citizen. Therefore, the updated Web Literacy Map includes competencies like privacy, remixing, and collaboration.

As we design and test offerings to foster web literacy, we are also determining how these skills fit into a larger web journey. Prompted by user research in Bangladesh, India, Kenya, and beyond, we’re asking: What skill levels and attitudes encourage people to learn more about web literacy? And how can one wield the Web after learning its fundamentals?

Mozilla believes this is an important question to reflect on in the open. With this blog post, we’d like to start a series of discussions, and warmly invite you to think this through with us.

What is the Web Journey ?

As we talked to 356 people in four different countries (India, Bangladesh, Kenya, and Brazil) over the past six months, we learned how people perceive and use the Web in their daily lives. Our research teams identified common patterns, and we gathered them into one framework called “The Web Journey.”

The Web Journey

    This framework outlines five stages of engagement with the Web:

  • Unaware: Have never heard of the Web, and have no idea what it is (for example, these smartphone owners in Bangladesh)
  • No use: Are aware of the existence of the Web, but do not use it, either by rejection (“the Web is not for me, women don’t go online”), Inability (“I can’t afford data”), or perceived inability (“The Web is only for businessmen”)
  • Basic use: Are online, and are stuck in the “social media bubble,” unaware of what else is possible (Internet = Facebook). These users have little understanding of the Web, and don’t leverage its full range of possibilities
  • Leverage: Are able to seize the opportunities the Web has to offer to improve their quality of life (to find jobs, to learn, or to grow their business)
  • Creation: From the tinkerer to the web developer, creators understand how to build the Web and are able to make it their own

Internet = Facebook

You can read the full details of the Web Journey, with constraints and triggers, in the Webmaker Field Research Report from India.

Why do the Web Literacy Map and the Web Journey fit together?

While the Web Literacy Map explores the skills needed, the Web Journey describes various stages of engagement with the Web. It appears certain skills may be more necessary for some stages of the Web Journey. For example: Is there a list of skills that people need to acquire to move from “Basic use” to “Leverage”?

As we continue to research digital literacy in Chicago and London (April – May 2015), we’ll seek to understand how to couple skills listed in the Web Literacy Map with steps of engagement outlined in the Web Journey. Bridging the two can help us empower Mozilla Clubs all around the world.

What are the discussion questions ?

To kick off the conversation, consider the following:

  1. Literacy isn’t an on/off state. It’s more a continuum, and there are many learning pathways. How can this nuance be illustrated and made more intuitive?
  2. How can we leverage the personal motivators highlighted along the Web Journey to propose interest-driven learning pathways?
  3. Millions of people think Facebook is the Internet. How can the Web Literacy Map be a guide for these learners to know more and do more with the Web?
  4. As web literacy skills and competencies increase throughout a learner’s journey, and as people participate in web cultures, particular attitudes emerge and evolve. What are those nuances of web culture? How might we determine a “fluency” in the Web?
  5. How does the journey continue after someone has learned the fundamentals of the Web? How can they begin to participate in their community and share that knowledge forward? How can mentorship, and eventually leadership, be a more explicit part of a web journey? How do confidence and ability to teach others become part of the web journey?

 

 

 

hacks.mozilla.orgEasier in-app payments with fxpay

For developers building web applications on Firefox OS or Firefox Desktop, supporting payments is easy with Mozilla’s fxpay library. In addition to accepting credit cards, Mozilla’s payment system lets users charge purchases directly to their phone bill in many countries—making it ideal for mobile commerce.

Since our first introduction to fxpay the library has received a lot of bug fixes and new features. Based on developer feedback, we also decided to offer a new interface supporting native promises (shimmed on older browsers) for flexibility and better error handling. This article explains how to retrieve products, process payments, and restore products from receipts.

If you’ve already set up in-app payments using the mozPay API directly, consider porting to fxpay for the convenience of Mozilla-hosted products and additional features such as desktop payments. At the very least, please make sure your JWT libraries are patched for the latest security vulnerabilities.

Let’s get started! After installing the fxpay library, you can begin testing it out with some fake products.

fxpay.configure({fakeProducts: true});
fxpay.getProducts()
  .then(function(products) {
    products.forEach(function(product) {
      addBuyButtonForProduct(product);
    });
  })
  .catch(function(error) {
    console.error('error getting products: ' + error);
  });

This retrieves some pre-configured fake products that you can play around with. Once you’ve configured real products on the Firefox Marketplace Developer Hub, you can remove this configuration value to work with real products.

In the example function called above, you could display a buy button per product like this:

function addBuyButtonForProduct(product) {
  var button = document.createElement('button');
  button.textContent = 'Buy ' + product.name;
  button.addEventListener('click', function () {
 
    fxpay.purchase(product.productId)
      .then(function(purchasedProduct) {
        console.log('product purchased! ', 
                    purchasedProduct);
      })
      .catch(function(error) {
        console.error('error purchasing: ' + error);
      });
 
  });
  document.body.appendChild(button);
}

The fxpay library does all the payment processing behind the scenes using Mozilla’s web services so when the promise resolves, it’s safe to deliver the product. At this time, fxpay also installs a receipt on the user’s device. When the user returns to your app later on, you’ll want to check for any receipts so you can restore their purchases.

Here’s a rewrite of the product fetching code to restore purchased products:

fxpay.getProducts()
  .then(function(products) {
    products.forEach(function(product) {
    
      if (product.hasReceipt()) {
        product.validateReceipt()
          .then(function(restoredProduct) {
            console.log('restored product from receipt:', 
                        restoredProduct);
          })
          .catch(function(error) {
            console.error('error validating receipt: ' + 
                          error);
          });
      } else {
        addBuyButtonForProduct(product);
      }
    
    });
  });

We’re hoping this new interface makes experimenting with in-app payments even easier than before. You never know what kind of business model will work in your app so why not try out some ideas?

The complete usage guide to fxpay is here on MDN.

Mozilla Web DevelopmentBeer and Tell – April 2015

Once a month, web developers across Mozilla get together to download MP3s off of Youtube videos of our favorite anime theme songs. While we download questionable add-ons for extracting music files, we find time to discuss the side project we’ve been working on lately. It’s the Webdev Beer and Tell!

You can check out the wiki page used to plan the event, but you’ll probably notice that there’s nothing on there. Turns out that no one had anything substantial to present this month, so we cancelled the recording and adjourned early.

If you’re interested in attending the next Beer and Tell, sign up for the dev-webdev@lists.mozilla.org mailing list. An email is sent out a week beforehand with connection details. You could even add yourself to the wiki and show off your side-project!

See you next month!

BlueGriffonBlueGriffon progress 20150420

  • russian locale update
  • lot of bug fixes in the CSS panel
  • new Insert Markdown dialog

    new Insert Markdown dialog

  • UI fixes on windows
  • major fixes on the colorpicker

hacks.mozilla.orgNetwork Activity and Battery Drain in Mobile Web Apps

Editor’s note: This post describes the work of a group of students from Portland State University who worked with Mozilla on their senior project. Over the course of the last 6 months, they’ve worked with Mozillian Dietrich Ayala to create a JavaScript library that allows developers to optimize the usage of network operations, thus saving battery life. The group consists of 8 students with varied technology backgrounds, each assigned to take on a different task for the project. Congratulations to the team:

Overview and Goals of the Project

The goal of our senior Capstone project was to develop a JavaScript library to make it easier for developers to write applications that use less power by making fewer network requests. In emerging markets, where battery capacities in mobile devices may be smaller and signal strength may be poor, applications that make many requests create serious challenges for the usability of smartphones. Sometimes, applications designed for users in regions with robust network infrastructure can create significant negative effects for users with less reliable access. Reducing battery drain can provide better battery life and better user experiences for everyone. To improve this situation, we’ve created APIs that help developers write mobile applications in a way that minimizes network usage.

In order to solve this problem effectively, we provide developers with mechanisms to delay non-critical requests, batch requests together, and detect when the network conditions are best for a given activity. This involved doing research to determine the efficacy of various solutions. Regardless of the effectiveness of our APIs, this research provides insight into saving battery usage. In addition to our research, we also focused on the developer ergonomics, hoping to make this easy for developers to use.

Installation & Usage

Installation of the library is simple: clone the “dist” folder and choose the library variant that best suits your needs. LocalForage is used in the library for storing the statistical details for each XMLHttpRequest (XHR). This way the developer can perform analysis to develop a set of dynamic heuristics such as utilizing when the user is most likely to make successful XHRs. However, if this is something you do not think will be commonly used, you can opt for a LocalForage-free version to get a smaller library memory footprint.

We encourage you to check out our General Usage section and API Usage section to get a comprehensive idea of usage and context. A brief overview of how to use the core functions of the APIs is provided.

Critical Requests

When you need to make a critical XHR for something that the user needs right away, you make it using the following syntax:

AL.ajax(url [, data] [, success] [, method])

Where url indicates the endpoint, data is the parameter you pass JSON data to (i.e., POST XHR), success is called after the request has completed successfully, and the optional method parameter specifies the HTTP method to use (e.g. Patch, Post). If method is not specified, and the data field is null, GET will be used, but if data is used, POST will be the default.

A sample critical request would look like this:

AL.ajax('http://rocky-lake-3451.herokuapp.com/', {cats: 20}, function(response, status, xhr) {
console.log('Response: ', response);
console.log('Status: ', status);
console.log('Xhr: ', xhr);
});

This code when executed would result in the following output:

Response: {"request_method":"POST","request_parameters":[]}
Status: 200
Xhr: XMLHttpRequest { readyState=4, timeout=0, withCredentials=false, ...}

Non-Critical Requests

Non-critical requests are used for non-urgent needs and work by placing the non-critical XHR(s) in a queue which is fired upon certain conditions. The two default conditions are ‘battery is more than 10% and a critical request was just fired’ or ‘battery is more than 10% and the device is plugged in to a power source’. The syntax for making a non-critical request is the same as a critical one, with the exception of the function name and an additional parameter, timeout:

AL.addNonCriticalRequest(url [, data] [, success] [, method] [, timeout])

Here’s how timeout works: given a number of milliseconds, the XHR added (and all other XHR in the queue) will fire off if the queue is not already fired off by some other mechanism such as a critical request firing.

Recording & Analysis

XHRs are stored within LocalForage. There are a variety of functions to either retrieve the data or trim it. General retrieval syntax is in this format, where callback is an array of XHR-related objects that contain data relevant to the XHR such as start time, end time, and size of the request.

AL.getHistory(callback)

You can use this data in all manner of interesting ways, but at a basic level you’ll want to time the XHRs. Calculate the difference between start time and end time of the request for the five most recent requests by doing the following:


function getRecords() {
var elem = document.getElementById('recordsList');
AL.getHistory(function (records) {
if (records) {
var counter = 0;
var string = [];
for (var i = Math.max(records.length - 5, 0); i < Math.max(records.length, 0); ++i) {
string[counter] = records[i].end - records[i].begin;
++counter;
}
elem.innerHTML = string.toString();
}
else {
console.log("Records is null");
}
});
}

Research Findings

In order to gather data about the effectiveness of our APIs on reducing battery usage, we hooked up our reference device (a Flame) to a battery harness and used our demo app to process 30 requests of various different types of media (text, images, and video). All three tests were run on a WiFi network (our university’s WiFi network, specifically). We attempted to run all three tests on a 3G (T-Mobile) network, but due to poor connectivity, we were only able to run the text test over a cellular network.

When running the tests on WiFi, we noticed that the WiFi chip was extremely efficient. It would turn on almost instantly and once all network requests were done, it would turn off just as quickly. Because of this, we realized that the library is not very useful when on a WiFi network; it is hard to be more efficient than instant on/off.

When testing on a 3G network however, it became very apparent that this library could be useful. On the graph of power consumption, there is a very clear (and relatively slow) period where the chip warms up, increasing its power usage gradually until it is fully powered. Once all network activity is complete, there is an even longer period of cool down, as the power draw of the chip gradually declines. It is clear that stacking the requests together is useful on this type of network to avoid dead periods, when the phone is powering down the chips due to lack of activity just as another request comes in, causing chips to be powered back up again at the same slow rate.

Text over WiFi

Screen turned on around 2 seconds, 30 XHMLHttpRequest burst sent from roughly the 6 second mark to the end of the graph (~13.5 second mark)

Text over 3G

Screen turned on around 2 seconds, 30 XHMLHttpRequest burst sent from roughly the 2 second mark to roughly the 18 second mark

In conclusion, we believe our library will prove useful when the cellphone is using a 3G network and will help conserve battery usage for requests that are not immediately necessary. Furthermore, the optional data analytics backbone can help advanced developers generate unique heuristics per user to further minimize battery drain.

Portland State University Firefox OS Capstone Team

Portland State University Firefox OS Capstone Team: Back row: Tim Huynh, Casey English, Nathan Kerr, Scott Anecito. Front row: Brianna Buckner, Ryan Niebur, Sean Mahan, Bin Gao (left to right)

Mozilla IndiaMozilla Hyderabad Local Community Meetup 2015

The first Mozilla Hyderabad community meetup, ‘MozDeccan’ happened in Hyderabad. This meetup brought together active and core community in and around Hyderabad. Around 20 members met on Day 1 to share presentations, do breakout sessions and discussions. The goal is to ensure that the local community come together to celebrate,  reflect on its impact in 2014, discuss what worked, what didn’t work, what could be improved and plan road-map for 2015.
IMG_1463

Mozilla Core Community Leaders From Hyderabad

Day 1: 
Mozilla Hyderabad Community Quilt
SWOT Analysis:
IMG_1119
Functional Areas:
  • Community members were asked to list the project areas that they are focused on and projects they would like to get involved with in 2015.
  • Breakout sessions were around the majority interest areas listed by the team.
  • Community Carousel:
    • 7 project areas – 7 mentors – 7 stations
    • At each station mentors hosted discussions around:
      • Project Introduction
      • Current status of the project in the city
      • Action Items
      • Roadmap

IMG_1145
Project Areas/ Areas of Interest include:

Embedded image permalink
On Day 2, the focus would be on engaging with the larger community, making them aware on the participation channels, understand their interest, plan on project specific action items and assign roles & responsibilities.  More soon on Day 2!