Air MozillaWeb QA Weekly Meeting

Web QA Weekly Meeting This is our weekly gathering of Mozilla'a Web QA team filled with discussion on our current and future projects, ideas, demos, and fun facts.

Air MozillaReps weekly

Reps weekly Weekly Mozilla Reps call

WebmakerMozilla Learning Strategy Slides

Developing a long term Mozilla Learning strategy has been my big focus over the last three months. Working closely with people across our community, we’ve come up with a clear, simple goal for our work: universal web literacy. We’ve also defined ‘leadership’ and ‘advocacy’ as our two top level strategies for pursuing this goal. The use of ‘partnerships and networks’ will also be key to our efforts. These are the core elements that will make up the Mozilla Learning strategy.

Over the last month, I’ve summarized our thinking on Mozilla Learning for the Mozilla Board and a number of other internal audiences. This video is based on these presentations:

As you’ll see in the slides, our goal for Mozilla Learning is an ambitious one: make sure everyone knows how to read, write and participate on the web. In this case, everyone = the five billion people who will be online by 2025.

Our top level thinking on how to do this includes:

1. Develop leaders who teach and advocate for web literacy.

Concretely, we will integrate our Clubs, Hive and Fellows initiatives into a single, world class learning and leadership program.

2. Shift thinking: everyone understands the web / internet.

Concretely, this means we will invest more in advocacy, thought leadership and user education. We may also design ways to encourage web literacy more aggressively in our products.

3. Build a global web literacy network.

Mozilla can’t create universal web literacy on its own. All of our leadership and advocacy work will involve ‘open source’ partners with whom we’ll create a global network committed to universal web literacy.

Process-wise: we arrived at this high level strategy by looking at our existing programs and assets. We’ve been working on web literacy, leadership development and open internet advocacy for about five years now. So, we already have a lot in play. What’s needed right now is a way to focus all of our efforts in a way that will increase their impact — and that will build a real snowball of people, organizations and governments working on the web literacy agenda.

The next phase of Mozilla Learning strategy development will dig deeper on ‘how’ we will do this. I’ll provide a quick intro post on that next step in the coming days.

The DenSharing made easy with Firefox

sharingFound something online that you want to share right away? The Share feature in Firefox lets you share straight from your browser without leaving the website you’re visiting. Pretty handy!

Visit our Share Activation page and click on the Activate Now link to connect your preferred networks, like Facebook, Twitter, Yahoo! Mail, Tumblr, LinkedIn and more. Then the next time you find something worth sharing, click the share icon (the paper airplane) and send it on its way.

Set up easy sharing now.

The Bugzilla UpdateBugzilla 4.2 will be EOL on 2015/11/30

As discussed on the Bugzilla developers mailing list/newsgroup and confirmed by project leads, Bugzilla’s new release policy is to end-of-life the oldest supported major version four months after a new major release. Since this is the first time we’re enacting this policy, we’ve extended the date to be 4 months from today rather than from Bugzilla 5.0’s exact release date (July 7th).

Thus Bugzilla 4.2 will be end-of-lifed on 30 November 2015. This means no fixes of any kind will be issued for Bugzilla 4.2 from that date onwards. As usual, all Bugzilla admins are encouraged to upgrade to the latest version of Bugzilla as soon as possible, especially those running 4.2 or earlier.

To expand a bit further on our new EOL process, after a new major release, we will support three major releases (including the new one) for four months.  After four months, we will drop support for the oldest one.  We will continue to support the remaining two until four months after the next release.

For example, currently we support 4.2, 4.4, and 5.0.  In four months’ time we will drop support for 4.2 and support only 4.4 and 5.0.  When the next major version comes out, perhaps 5.2*, we will support 4.4, 5.0, and 5.2.  Four months later, we will drop support for 4.4 and support only 5.0 and 5.2.

Mark Côté
Assistant Project Lead, Bugzilla

* It may be 6.0 if there are major and/or breaking changes.


Meeting NotesMobile: 2015-07-29

Schedule

Topics for This Week

Reviewing go-forward with Reading List
Best of the Web (BOTW) Pocket integration is being discussed. Different proposals for Pocket/RL integration exist. Choices would impact existing Android RL and potentially change the ship plans on iOS.
Tab Mirroring on Roku
We are in the process of removing the tab mirroring support for Roku from toolkit, mobile and desktop.

Tracking Review

Beta

  • Next Build:
ID Summary Status Assigned to Last change time
1163937 Downloads are not cleared from about:downloads when “Clear on exit” is used ASSIGNED Dylan Roeh (:droeh) 2015-07-14T18:12:38Z
1164027 crash in ElfLoader::~ElfLoader() NEW Jamie Nicol [:jnicol] 2015-07-21T01:02:06Z
1174144 Wrong doorhanger offset for some tablets NEW Chenxia Liu [:liuche] 2015-07-29T16:38:15Z
1180958 crash in libmozglue.so@0x21152 mostly Samsung Tablets NEW Jamie Nicol [:jnicol] 2015-07-09T17:36:24Z


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

Aurora

  • Next Build:
ID Summary Status Assigned to Last change time
886969 Fennec allows scrolling of pages with overflow:hidden on the body element NEW James Willcox (:snorp) (jwillcox@mozilla.com) 2015-07-09T18:24:46Z
1016555 Disable OCSP checking for certificates covered by OneCRL ASSIGNED David Keeler [:keeler] (use needinfo?) 2015-06-17T16:43:20Z
1129614 Regression: Sometimes thumbnails in the tabs drawer are not updated, they expire ASSIGNED Mark Finkle (:mfinkle) 2015-07-02T02:57:32Z
1132508 Last tab is cut off in tab tray after rotation REOPENED Martyn Haigh (:mhaigh) 2015-07-20T12:42:03Z
1144534 fuzzy/bad looking text depending on scroll position, or fuzziness coming and going NEW 2015-07-27T15:48:30Z
1164052 PROCESS-CRASH | autophone-s1s2 | application crashed [unknown top frame] NEW Ted Mielczarek [:ted.mielczarek] 2015-07-24T15:03:38Z
1170651 crash in js::jit::GetPropertyIC::update(JSContext*, JS::Handle<JSScript*>, unsigned int, JS::Handle<JSObject*>, JS::MutableHandle<JS::Value>) NEW 2015-07-29T16:38:00Z
1171337 black window during browsing NEW Randall Barker [:rbarker] 2015-07-29T16:13:22Z
1175457 Reading list super toast generated by long tapping on the reader view icon from URL Bar is displayed too short on screen ASSIGNED Nick Alexander :nalexander 2015-07-29T17:39:07Z
1177414 Queued tabs stall on load ASSIGNED Martyn Haigh (:mhaigh) 2015-07-22T14:53:21Z
1179184 Webm video does not start to play automatically with Autoplay preference enabled NEW Randall Barker [:rbarker] 2015-07-23T23:36:05Z
1180597 Wrong display for more than two doohangers NEW Chenxia Liu [:liuche] 2015-07-17T18:48:50Z
1185444 Can’t install add-ons on Android M preview 2 (Nightly) REOPENED 2015-07-23T17:20:05Z
1185920 How to handle Android M Auto Backup ASSIGNED Sebastian Kaspari (:sebastian) 2015-07-24T14:43:34Z
1185923 Android M: Nightly crashes when navigating to Air Mozilla NEW 2015-07-24T01:38:57Z


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

Nightly

  • Next Build:
ID Summary Status Assigned to Last change time
1047127 Panning very stuttery on this page with overflow-x NEW 2015-06-10T18:43:44Z
1114096 Wrong tab got mirrored NEW 2015-06-17T18:30:58Z
1126244 Create a maximum reader mode cache size and evict records when necessary ASSIGNED Vivek Balakrishnan[:vivek] 2015-04-30T17:08:28Z
1131084 Can not mirror tab to Chromecast device NEW Randall Barker [:rbarker] 2015-06-17T18:31:14Z
1148391 Tapping the bottom of the screen will make the reader mode toolbar bounce up and down NEW 2015-05-28T17:18:33Z
1156553 Tab queue makes captive portal use annoying ASSIGNED Martyn Haigh (:mhaigh) 2015-06-30T14:53:55Z
1171860 Tapping the tab queue notification will open the link in normal browsing with “Open links in Private browsing” pref enabled NEW 2015-06-08T17:30:23Z


7 Total;
7 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.

  • enr0n fixed bug 1122977. The share overlay now shows 2, 3, or 4 Synced devices inline depending on your device screen size.
  • dominique has been continuing to work on the zoomed view – bug 1180811, bug 1184762, bug 1184912
  • Giovanny Gongora [:gioyik] has been writing lots of patches!
    • bug 1165136 – Remove `public` keywords from ChangeVerifier interface
    • bug 1183149 – Remove bounce animation of left and right Panel labels in about:home
    • bug 1183902 – _shareStringWithDefault is unused
    • bug 1179020 – Font inflation default value is “Tiny”
  • Melchiorre Alastra (:Mailkov) fixed bug 1122329 – Remove `= null` from `instance = null` in StringHelper and bug 1116349 – Flush Picasso LRU cache on memory pressure events
  • capella has been making some JavaScript test fixes – bug 1158925, bug 1165556
  • Alexander Ploner fixed bug 1138560 – Add telemetry for web pages launched from home screen shortcuts
  • Henry Addo fixed bug 1079182 – Replace globe with magnifying glass in tablet editing mode to align text
  • Thang fixed bug 720050 – Various issues with disabled form controls
  • (iOS) adiyaman fixed bug 1151157 – Add printing support to Firefox for iOS
  • (iOS) codester fixed bug 1187686 – Autocompletion not working after pressing “GO”
  • (iOS) codester fixed bug 1187688 – Tapping on URL bar field and pressing backspace sets character selection instead of deleting

Ask for help from Margaret: if we create next week’s meeting notes immediately following each meeting, can you add friends here as they work on things? That will be easier than me trying to gather this list before each meeting.

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!

  1. Numbered list item

James W. (snorp)

  • Digging out of bugmail/email backlog from PTO last week
  • Q3 goals
  • Paint suppression turning out to maybe not be as large a perf improvement as once thought, but still going to try to finish it up.
  • Working on enabling the tiled DrawTarget, which will reduce paint times
  • We need to adjust gfx tile and pool sizes, bug 1182665

JChen

Fixed
Working on

GCP

  • Last week:
    • Video sandboxing: review comments.
    • Security fixes in WebRTC code.
    • Trying to get more info for bug 1187953
    • bug 1188271 Seems like it might get a contributor
  • Next week:
    • Video sandboxing: performance measurement.

Randall Barker

Last Week:

  • Fixed: bug 1173844 – Video would not playback after seek seekbar if media.autoplay.enabled = false
  • Investigated: bug 1188940 – Only a partial screen is composited to the Presentation window when casting to a chromecast device.
  • Began fennec APZ work with: bug 1188225 – Implement ChromeProcessController::HandleDoubleTap

Next Week:

  • Continue with: bug 1188225 – Implement ChromeProcessController::HandleDoubleTap
  • Continue with: bug 1188940 – Only a partial screen is composited to the Presentation window when casting to a chromecast device.

Eugen Sawin

  • Fixed a webapp regression (part 2)
  • Load time reduction of the add-on manager [autophone results]
    • On-demand loading of GMPProvider.jsm (minimal gains) [d5ab0c19cee4]
    • Delayed initialization of add-on crash reporter (no gains) [c7ecfed59267]
    • Lazy-loading of osfile.jsm in TelemetrySessions.jsm (minimal gains) [baa58d1ee5e8]
    • Identified bottleneck: osfile.jsm
    • (Unrealistic) potential overall startup reduction: up to 30%/350ms on Nexus 5
  • Looked into removing OMX-plugin
    • Small APK size gain: ~100kB
Fixed
Working on

Dylan Roeh

Working On

Brian Nicholson

  • bug 1184239 – URL bar refactor
  • bug 1151464 – Reader view loading and error pages
  • bug 1182673 – SnapKit errors on rotation
  • bug 1186318 – Fixed search controller regression
  • (WIP) bug 1187276 – URL bar doesn’t search after pasting
  • Helping codester with autocompletion PRs

Bryan Munar

YAAAAAYYYYY:

NOOOOOOOOOO:

WesJ

  • bug 1167334 – Remember Password prompt automatically dismisses on sign-in
    • Talked to mfinkle about desktop/Android’s approach to this. Will implement today.
  • bug 1184582 – Group top sites tiles by domain
    • Lots of changes in that patch. New table. New deletion style.
    • Looking into improving “upgrades” yesterday since we have more than a few testers now.
  • Handing things off. Sorry for the spam :)

liuche

Highlights:

  • Mixed content UI

Present:

Past:

karim

Past:

Present:

Margaret

Highlights:

  • Partner meeting in Tokyo
  • Manager stuff

Bugs:

jonalmeida

Last week:

  • SearchEngine review fixing
  • A fancy remote testing server (would you like to be my test monkey? PM me!)

This week:

  • Click-to-play images
  • Working on more RecyclerView things (test fixing, etc.)

mcomella

  • Private browsing color updates for 42
  • Sec
  • Screen filters regression

Past:

Present:

rnewman

  • Triage! The pace quickens.
  • So, so many reviews.
  • A/B testing kickoff.
  • Go Faster kickoff, hooking folks up with bugs.
  • Meeting with Tarek re hosting content for GF.
  • Steph got it working, so Breakpad/Socorro for iOS is in legal/privacy review.
  • Partner stuff.
  • Booking travel.
  • Actually fixed some bugs.
Fixed
Working on

nalexander

<Read Only>

Back from PTO! Still catching up to my r? and ni? flags.

Projects

Sebastian

Highlights:

  • KidFox, KidFox, KidFox, … :)

Noise:

Martyn Haigh

Past:

  • Moving house
  • Tracking protection notifications
  • Mobile Tabs Tray
  • Preview dimensions

Present:

Steph

Last Week:

  • Resolved Tab Tray -> Browser animation issues
  • Scrolling issues with the browser
  • Build server issues
  • Crash reporting for iOS on crash-stats!
  • Regression fixes

Ally

Past:

Present:

Notes:

  • If it’s not kidfox, please send your reviews to someone else

Emily

<Read Only>
Past:

Present:

BLassey

Fixed
Working on

Antlam

  • Past
    • bug 1175967: Tracking Protection on Android
    • bug 1073053: “Scrollable tabs” for about:home
    • Bugs followup: Zoomed View, Private Browsing, about:logins/doorhangers
    • Testing/Research discussion
    • Partner meeting
  • Upcoming
    • bug 1188179: Search suggestion & Awesomescreen UX work
    • Scoping Mobile tabs tray UX work
    • Mocks for Partners
    • Reading list co-ordination

Robin

iOS

  • ui-reviews, continued
  • Private Browsing brainstorming
  • on standby for RL outcomes, solution(s)

Android

  • Lightweight theme(s), Kinderfox

Etc.

  • my Year in Review (Aug 4)

Darrin

Done:

Next:

  • iOS quality audit + sneaking in more UI patches
  • pocket mobile kickoff
  • RL discussions
  • starting to plan Private Browsing UX
  • A/B testing and research brainstorming
  • partner 11 debrief with antlam

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-07-29

Schedule & Progress onUpcoming Releases (Liz/Sylvestre/Lawrence/Ritu)

  • 40.0b9 desktop gtb today
  • 40.0 desktop RC, mobile b10 gtb Mon
  • 40.0 mobile RC gtb Tue
  • ESR 38.2.0 smoke test email sent to Enterprise ML earlier this week.

Firefox Desktop & Platform (Javaun/Chad/Martin)

Current Releases

Nightly (42)
  • Fall Moment in time planning and progress is going well. Locking down information to share.
  • Action Requested: Please review the following criteria for the first set of milestones. ‘Locked Feature Set’ and ‘Feature Complete’

Platform News

Firefox Mobile (Mark/Brad/Jenn)

Firefox for Android

  • Tracking Protection: Generally on track, with one blocked item aiming to unblock this week
  • Kinderfox: Considered at risk for 42
    • see latest status report for details
    • see Kinderfox Backlog for bug by bug status
    • Team met Tuesday morning to discuss risk status, clarify on some scope details, and prioritize some items, though no scoped requirements were cut at this time. A follow-up is scheduled for Friday.

Firefox for iOS

  • Team continues to burn down tracked bugs at a good rate
  • Meeting this week to talk about cross-functional end-game milestones

Feedback Summary (Rob/Tyler/Matt)

Desktop

We’ll be keeping an eye on Windows 10 feedback.

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 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 Web DevelopmentBeer and Tell – July 2015

Once a month, web developers from across the Mozilla Project get together to develop an encryption scheme that is resistant to bad actors yet able to be broken by legitimate government entities. While we toil away, we find time to talk about our side projects and drink, an occurrence we like to call “Beer and Tell”.

There’s a wiki page available with a list of the presenters, as well as links to their presentation materials. There’s also a recording available courtesy of Air Mozilla.

Osmose: Moseamp

Osmose (that’s me!) was up first, and shared Moseamp, an audio player. It’s built using HTML, CSS, and JavaScript, but acts as a native app thanks to the Electron framework. Moseamp can play standard audio formats, and also can load plugins to add support for extra file formats, such as Moseamp-Audio-Overload for playing PSF files and Moseamp-GME for playing NSF and SPC files. The plugins rely on libraries written in C that are compiled via Emscripten.

Peterbe: Activity

Next was Peterbe with Activity, a small webapp that displays the events relevant to a project, such as pull requests, PR comments, bug comments, and more, and displays the events in a nice timeline along with the person related to the action. It currently pulls data from Bugzilla and Github.

The project was born from the need to help track a single individual’s activities related to a project, even if they have different usernames on different services. Activity can help a project maintainer see what contributors are doing and determine if there’s anything they can do to help the contributor.

New One: MXR to DXR

New One was up next with a Firefox add-on called MXR to DXR. The add-on rewrites all links to MXR viewed in Firefox to point to the equivalent page on DXR, the successor to MXR. The add-on also provides a hotkey for switching between MXR and DXR while browsing the sites.

bwalker: Liturgiclock

Last was bwalker who shared liturgiclock, which is a webpage showing a year-long view of what religious texts that Lutherans are supposed to read throughout the year based on the date. The site uses a Node.js library that provides the data on which text belongs to which date, and the visualization itself is powered by SVG and D3.js.


We don’t actually know how to go about designing an encryption scheme, but we’re hoping to run a Kickstarter to pay for the Udacity cryptography course. We’re confident that after being certified as cryptologists we can make real progress towards our dream of swimming in pools filled with government cash.

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!

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

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

The Bugzilla UpdateBugzilla 4.2 will be end-of-lifed on 30 November 2015

As discussed on the Bugzilla developers mailing list/newsgroup[1] and confirmed by project leads, Bugzilla’s new release policy is to end-of-life the oldest major version four months after a new major release. Since this is the first time we’re enacting this policy, we’ve extended the date to be 4 months from today rather than from Bugzilla 5.0’s exact release date (July 7th).

Thus Bugzilla 4.2 will be end-of-lifed on 30 November 2015. This means no fixes of any kind will be issued for Bugzilla 4.2 from that date onwards. As usual, all Bugzilla admins are encouraged to upgrade[2] to the latest version of Bugzilla as soon as possible, especially those running 4.2 or earlier.

Mark Côté
Assistant Project Lead, Bugzilla

[1]
https://groups.google.com/forum/#!topic/mozilla.dev.apps.bugzilla/vBGTf7SvOWg

[2]
https://bugzilla.readthedocs.org/en/5.0/installing/upgrading.html


The DenMake every day Caturday

caturday

This month, we have 15 feline themes to tickle your cat fancy. Take your pick from cool cats, artsy cats, cute cats and pirate cats. Chase your mouse over to our latest theme collection to make your Firefox even more furr-tastic.

Get a new theme right meow.

Are you more of a dog lover? Sit, stay and check out these four-paw rated themes for the canine crowd.

Meeting NotesChannel: 2015-07-28

Attendees

bhearsum, jorge, kairo, kglazko, lizzard, lmandel, rrayborn, ritu, rolandtanglao, dougt

Schedule Update

  • 40.0b8 ships today
  • Remaining schedule
    • 40.0b9 desktop gtb Thu
    • 40.0 desktop RC, mobile b10 gtb Mon
    • 40.0 mobile RC gtb Tue

Add-ons

  • No updates.

Stability

Aurora / Dev Edition

  • Overall rate: 3.0
    • still mostly fallout from previous spikes and e10a+a11y

Beta

  • Overall rate: 1.0 (target: 1.2-1.4), plugin crashes/hangs: 0.06/0.06 (target: <0.1/0.1)
    • Disabling WARP on Win7 worked well, looks like a number of signatures are decreasing, including OOM|small (and the gfx shutdownhang of bug 1159751 is gone).
    • The patch for plugin hangs worked well, we’re good there as well now
    • bug 1158189 (HTTP shutdownhang, long-standing) is #2 topcrash with 2.1% of b7 crashes
    • bug 1106264 (large OOM in nsSameProcessAsyncMessageBase) is 0.7% and #1 Top Crash Score
    • bug 1177278 (large OOM in mozilla::net::CacheFileMetadata::WriteMetadata) is 0.3% and #2 Top Crash Score, uplift for patch requested

Release

  • Overall rate: 1.0
    • No surprises.

Mobile

  • Rates look unchanged, nothing to flag.

QE

Beta

  • 40.0b8 may have new issues with EME, as this is still a limited audience, will continue testing tomorrow after b8 releases

RelEng

User Advocacy

  • No updates

Roundtable

  • should have raised this in qe but — some issues with win64 and streaming video? bug 1165981#c33
    • speak with Javaun
  • Welcome back Liz!  😀
    • woot!!

Special Topics

Post-Mortem (Tues 2wks from GA Release)


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 NotesThunderbird: 2015-07-28

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

Attendees

wsmwk, fallen, paenglab, sshagarwal, mkmelin, florian, makemyday

Action items from last meetings

  • asked releng to enable updates ot 38.1.0 for 31.* users

Current status and discussions

Critical Issues

Leave critical bugs here until confirmed fixed. If confirmed, then remove.

  • status TBD bug 1176399 Multiple requests for master password when GMail OAuth2 is enabled
  • Someone needs to add additional main thread proxies to the migration code.
  • bug 1131879 – Disable hardware acceleration (HWA) is back on the table

removing from critical list/fixed:

  • status TBD bug 1174797 Add a cookie exception for GMail OAuth

Releases

  • Past
    • 38.0.1 nominally shipped 2015-06-12
    • 38.1.0 shipped 2015-07-10
    • 31.8.0 shipped 2015-07-17
  • Upcoming
    • 40.0beta almost done (skipping 39.0b)
    • 38.2.0 (~ 2015-08-10)
    • 41.0beta (~ 2015-08-10)

Lightning

Past releases:

Upcoming releases:

Updates:

  • (do we still need this??) 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’ve doubled our active daily users

Round Table

wsmwk

  • focus on 38.* updates and stabilitiy
    • HWA issues bug 1131879
    • new topcrash bug 1187764 mozilla::layers::SyncObjectD3D11::FinalizeFrame()
    • new topcrashes (win7) DrawingContext::FillRectangle(D2D_RECT_F const*, ID2D1Brush*), win8/8.1 D2DDeviceContextBase<T>::FillRectangle(D2D_RECT_F const*, ID2D1Brush*)
    • proxy crashes – need to reblocklist?
    • emailed/IRCed trackerbird addon author abustany about version 38 topcrash on opensuse
  • everything in SVN/php needs to move to Bedrock before end of Q3 deadline bug 836461

clokep

  • Met with Florian and aleth last week in France:
    • Instantbird will now use Gecko version numbering
      • “Chat Core” component now has Instantbird 42 (and 43 and 44) as target versions. These match Thunderbird 42 / 43 /44.
      • We will not go back and fix things from previous periods, but I did fix anything committed since the 41 merge.
  • Skype landed (preffed off! flip chat.prpls.prpl-skype.disable) with text-chat only
    • Test it if you use Skype, it’s missing a lot of features still: bug 953999
  • The next part of nhnt11’s GSoC project from *last year* landed! (Logs are now split across days in a saner fashion: bug 1025522)
  • Lots of XMPP fixes (including fixing issues when connecting to Slack)

Jorg K (won’t attend)

  • bug 209189 – C-C: shift delete, undo -> corruption, finished with Kent’s help
  • bug 368915 – C-C: change language in subject, waiting for Magnus.
  • bug 345852 – M-C: persdict stuff for Firefox, landed.
  • bug 772796 – M-C: Editor destroys preformatting, TB papercut, under investigation.

sshagarwal

  • On the last stage of completing demo protocol.
    • Stuck at Folder pane issue for quite a very long time now.

Question Time

When is council elections? –> In a couple months. 1 year after initial team.

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.

Action Items

  • Get release documentation into wiki

Help Wanted

hacks.mozilla.orgKeyboard events in Firefox OS TV

Getting started

The behavior of input events via hardware keys in Firefox OS varies widely from app to app. Early smartphones came with a limited number of keys — Power, Home, Volume up, Volume down — so it was easy for the software to determine an appropriate response for each keypress event. However, Smart TV remotes now come with many hardware keys, and defining the appropriate behavior when a key is pressed has become an important issue on the Firefox OS TV platform. If a hardware key on a smart remote can be used both by apps and by the system, it’s important to determine which response is triggered when the key is pressed.

This post will introduce the challenges of programming a TV remote to manage keyboard events on the Firefox OS Smart TV platform. We’ll classify keyboard events into four scenarios and describe these dispatch scenarios and how they interact. This is the first of two posts about keyboard events for Firefox OS Smart TV. Next week, in Part 2, we’ll drill down into the implementation details and and take a look at sample code for event handling on TV remote.

f1

[Fig 1]

We begin with the ‘Info’ key on a TV remote. Often, it’s used by the hardware to display system information, although it’s possible for an application to use the same key to display app information. When a user presses the key, what action will be shown on screen — system info or app info?

Four keyboard event scenarios

To determine the appropriate behavior when hardware keys are pressed, we start by describing four scenarios for keyboard events.

Scenario Description Event order
SYSTEM-ONLY For keys which should be handled by mozbrowser-iframe-host-page only. system
SYSTEM-FIRST For keys which can be handled by mozbrowser-iframe-host-page first and can then also be handled by mozbrowser-iframe-embedded-page. system->app
APP-CANCELLED For keys which should be handled by the mozbrowser-iframe-embedded-page only. app
APP-FIRST For keys which can be handled by mozbrowser-iframe-embedded-page first and can then also be handled by mozbrowser-iframe-host-page. app->system

[Table 1]

[Fig 2]

[Fig 2]

The mozbrowser-iframe-host-page and mozbrowser-iframe-embedded-page mentioned in Table 1 are illustrated in Fig.2 above. If A.html represents a host page whose source is B.html, then A.html is the mozbrowser-iframe-host-page, and B.html is mozbrowser-iframe-embedded-page. mozbrowser uses the non-standard Firefox Browser API, built for the implementation of key features and content experiences in Firefox OS apps. Learn more about mozbrowser on MDN.

Suitable responses for any given keyboard event depend on the scenario. In the case illustrated above, let’s suppose that the ‘Info’ keyboard event is categorized as APP-FIRST and the default action set by system is to show system information. Thus, when we press the ‘Info’ key with app Z in the foreground, there are two possible results:

    1. If app Z has an event handler that tells the ‘Info’ key to show app information, then app information will appear on screen when the user presses the ‘Info’ key on the remote.
    2. If app Z doesn’t set an event handler for the ‘Info’ key, the default action is triggered. That is, the screen will show the system information.

How to implement the four scenarios

To implement the four keyboard event scenarios described above, we’ve introduced four new keyboard events:

      • mozbrowserbeforekeydown – fired before the keydown event
      • mozbrowserafterkeydown – fired after the keydown event
      • mozbrowserbeforekeyup – fired before the keyup event
      • mozbrowserafterkeyup – fired after the keyup event

These four keyboard events are only received by the window that embeds a mozbrowser-iframe.

The keyboard events occur in a specific sequence over time: mozbrowserbeforekeydown, mozbrowserafterkeydown, mozbrowserbeforekeyup, keyup, mozbrowserafterkeyup.

This gives developers a way to implement the four scenarios mentioned above. Conceptually, the scenarios SYSTEM-ONLY, SYSTEM-FIRST and APP-CANCELLED, APP-FIRST can be implemented by setting proper handlers for the mozbrowserbeforekey* and mozbrowserafterkey* events. The SYSTEM-ONLY and SYSTEM-FIRST scenarios can be implemented by setting proper handlers for mozbrowserbeforekey* events and the APP-CANCELLED and APP-FIRST scenarios can be implemented via mozbrowserafterkey* events.

iframe structure in Firefox OS

[Fig 3]

[Fig 3]

To understand how to implement the four scenarios, let’s first take a look at iframe structure in Firefox OS. The outermost iframe in Firefox OS is shell.html. It embeds an in-process iframe which is sourced from system/index.html. The system app (system/index.html) contains several web apps (essentially iframes) which can be in-process (remote=”false”) or out-of-process (remote=”true”). As a result, the relationship of these three layers can be displayed in the following table:

mozbrowser iframe host page mozbrowser iframe embedded page
shell.html system/index.html
system/index.html web apps(essentially iframes)

[Table 2]

Dispatch order of keyboard events

[Fig 4]

[Fig 4]

When a keydown event is sent to some element in a mozbrowser-iframe-embedded-page, the owner of the embedded iframe, i.e., the mozbrowser-iframe-host-page, will receive the mozbrowserbeforekeydown event before the keydown event is sent and the mozbrowserafterkeydown event after the event is sent to the mozbrowser-iframe-embedded-page.

In Gecko, once there is one keydown event with the target in an out-of-process iframe embedded in an HTML document, the keydown event is duplicated to the HTML document as well. The target of this duplicated event is set as the embedded iframe element.

This results in the keyboard event sequence shown in Fig 4. It illustrates all related keydown events and their relationship when a keydown event with a target in a mozbrowser-iframe-embedded-page needs to be dispatched. In brief, events follow this sequence:

      1. Before dispatching any keydown event, the mozbrowserbeforekeydown event is first dispatched to the window of mozbrowser-iframe-host-page.
      2. Then, the original keydown event (with a target in a mozbrowser-iframe-embedded-page) will be duplicated to the mozbrowser-iframe-host-page HTML document. Its target will be set to be the iframe that contains the mozbrowser-iframe-embedded-page.
      3. Next, the original keydown event will be dispatched to its target.
      4. After the original keydown event dispatch is complete, the mozbrowserafterkeydown event will be dispatched to the window of mozbrowser-iframe-host-page.

Notice that the event dispatch process described above follows the DOM tree event flow. Event sequence and event targets can be organized into the following table:

Order event target
1 mozbrowserbeforekeydown window in mozbrowser-iframe-host-page
2 keydown iframe that contains the mozbrowser-iframe-embedded-page in mozbrowser-iframe-host-page
3 keydown original one in mozbrowser-iframe-embedded-page
4 mozbrowserafterkeydown window in mozbrowser-iframe-host-page

[Table 3]

f5

[Fig 5]

The keyboard events mozbrowserbeforekeydown, keydown, and mozbrowserafterkeydown, can be extended to nested mozbrowser iframes, like the iframe structure in Firefox OS described in Table 2. In this case, the mozbrowserbeforekeydown and mozbrowserafterkeydown events will be dispatched to the innermost mozbrowser-iframe-host-page as well as the outer one. Thus, in Firefox OS, mozbrowserkeydown and mozbrowserafterkeydown will be dispatched to the window of system/index.html and the window of shell.html. Fig. 5 illustrates the whole dispatch sequence of related events when a keydown event is dispatched to a web app. The sequence of events is demonstrated in Table 4.

Order event target
1 mozbrowserbeforekeydown window in shell.html
2 mozbrowserbeforekeydown window in system/index.html
3 keydown iframe that contains the web app in system/index.html
4 keydown original one in web app
5 mozbrowserafterkeydown window in system/index.html
6 mozbrowserafterkeydown window in shell.html

[Table 4]

f6

[Fig 6]

Although the keyup event must be fired after keydown, the keydown event and the keyup event are independent of each other. Moreover, the path mozbrowserbeforekeyup, keyup, mozbrowserafterkeyup is independent of the path mozbrowserbeforekeydown, keydown, mozbrowserafterkeydown. Therefore, it’s possible for these two paths to cross each other. The mozbrowserbeforekeyup may arrive before the keydown event.

In Firefox OS, most apps run out-of-process. This means that the app runs on its own process, not on the main process. After dispatching a given key* event (the duplicate) to the system app, it takes time to send the original key* event to the process where the mozbrowser-iframe-embedded-page is located. In a similar manner, after a given key* event is dispatched to the mozbrowser-iframe-embedded-page’s process, time is required to send mozbrowserafterkey* back to the process where the mozbrowser-iframe-host-page is located.

Consequently, the mozbrowserbeforekeyup event may arrive in the main Firefox OS process (where the system app lives), before the keydown event is dispatched to the app’s own process. Common results of the order of the key* events are demonstrated above in Fig. 6. The yellow series represents the keydown path, and the blue series show the keyup path. And yes, these two paths may cross each other.

Next steps

If you’re looking for implementation details for the four scenarios we’ve described, as well as event handler sample code to help with your implementation of keyboard events for smart TV remotes, keep an eye for next week’s post, and stay tuned for more complete documentation arriving very soon on MDN.

Mozilla ITCVS & BZR services decommissioned on mozilla.org

tl;dr: CVS & BZR (aka Bazaar) version control systems have been decommissioned at Mozilla. See https://ftp.mozilla.org/pub/mozilla.org/vcs-archive/README for final archives.

As part of our ongoing efforts to ensure that the services operated by Mozilla continue to meet the current needs of Mozilla, the following VCS systems have been decommissioned:

This work took coordinated effort between IT, Developer Services, and the remaining active users of those systems. Thanks to all of them for their contributions!

Final archives of the public repositories are currently available at https://ftp.mozilla.org/pub/mozilla.org/vcs-archive/. The README file has instructions for retrieval of non-public repositories.

NOTE: These URLs are subject to change, please refer back to this blog post for the up to date link.

For any questions or concerns, please contact the Developer Services team.

Open Policy & AdvocacyExperts develop cybersecurity recommendations

Today, we’re excited to publish the output of our “Cybersecurity Delphi 1.0” research process, tapping into a panel of 32 cybersecurity experts from diverse and mutually reinforcing backgrounds.

Mozilla Cybersecurity Delphi 1.0

Securing our communications and our data is hard. Every month seems to bring new stories of mistakes and attacks resulting in our personal information being made available – bit by bit harming trust online, and making ordinary Internet users feel fear. Yet, cybersecurity public policy often seems stuck in yesterday’s solution space, focused exclusively on well known terrain, around issues such as information sharing, encryption, and critical infrastructure protection. These “elephants” of cybersecurity policy are significant issues – but too much focus on them eclipses other solutions that would allow us to secure the Internet for the future.

So, working with Camille François & DHM Research we’ve spent the past year engaging the panel of cybersecurity experts through a tailored research process to try to extract public policy ideas and see what consensus can be found around them. We weren’t aiming for full consensus (an impossible task within the security community!). Our goal was to foment ideation and exchange, to develop a user-focused and holistic cybersecurity policy agenda.

Mozilla Cybersecurity Delphi Process

Our experts collectively generated 36 distinct policy suggestions for government action in cybersecurity. We then asked them to identify and rank their top choices of policy options by both feasibility and desirability. The result validated the importance of the “cyberelephants.” Privacy-respecting information sharing policies, effective critical infrastructure protection, and widespread availability and understanding of secure encryption programs are all important goals to pursue: they ranked high on desirability, but were generally viewed as hard to achieve.

More important are the ideas that emerged that aren’t on the radar screens of policymakers today. First and foremost was a proposal that stood out above the others as both highly desirable and highly feasible: increased funding to maintain the security of free and open source software. Although not high on many security policy agendas, the issue deserves attention. After all, 2014’s major security incidents around Poodle, Heartbleed, and Shellshock all centered on vulnerabilities in open source software. Moreover, open source software libraries are built into countless noncommercial and commercial products.

Many other good proposals and priorities surfaced through the process, including: developing and deploying alternative authentication mechanisms other than passwords; improving the integrity of public key infrastructure; and making secure communications tools easier to use. Another unexpected policy priority area highlighted by all segments of our expert panel as highly feasible and desirable was norm development, including norms concerning governments’ and corporations’ behavior in cyberspace, guided by human rights and communicated with maximum clarity in national and international contexts.

This report is not meant to be a comprehensive analysis of all cybersecurity public policy issues. Rather, it’s meant as a first, significant step towards a broader, collaborative policy conversation around the real security problems facing Internet users today.

At Mozilla, we will build on the ideas that emerged from this process, and hope to work with policymakers and others to develop a holistic, effective, user-centric cybersecurity public policy agenda going forward.

This research was made possible by a generous grant from the John D. and Catherine T. MacArthur Foundation.

Mozilla Cybersecurity Delphi 1.0

Chris Riley
Jochai Ben-Avie
Camille François

WebmakerBuilding a Big Tent (for Web Literacy)

Building a global network of partners will be key to the success of our Mozilla Learning initiative. A network like this will give us the energy, reach and diversity we need to truly scale our web literacy agenda. And, more important, it will demonstrate the kind of distributed leadership and creativity at the heart of Mozilla’s vision of the web.

networks

As I said in my last two posts, leadership development and advocacy will be the two core strategies we employ to promote universal web literacy. Presumably, Mozilla could do these things on its own. However, a distributed, networked approach to these strategies is more likely to scale and succeed.

Luckily, partners and networks are already central to many of our programs. What we need to do at this stage of the Mozilla Learning strategy process is determine how to leverage and refine the best aspects of these networks into something that can be bigger and higher impact over time. This post is meant to frame the discussion on this topic.

The basics

As a part of the Mozilla Learning strategy process, we’ve looked at how we’re currently working with partners and using networks. There are three key things we’ve noticed:

  1. Partners and networks are a part of almost all of our current programs. We’ve designed networks into our work from early on.
  1. Partners fuel our work: they produce learning content; they host fellows; they run campaigns with us. In a very real way, partners are huge contributors (a la open source) to our work.
  1. Many of our partners specialize in learning and advocacy ‘on the ground’. We shouldn’t compete with them in this space — we should support them.

With these things in mind, we’ve agreed we need to hold all of our program designs up to this principle:

Design principle = build partners and networks into everything.

We are committed to integrating partners and networks into all Mozilla Learning leadership and advocacy programs. By design, we will both draw from these networks and provide value back to our partners. This last point is especially important: partnerships need to provide value to everyone involved. As we go into the next phase of the strategy process, we’re going to engage in a set of deep conversations with our partners to ensure the programs we’re building provide real value and support to their work.

Minimum viable partnership

Over the past few years, a variety of network and partner models have developed through Mozilla’s learning and leadership work. Hives are closely knit city-wide networks of educators and orgs. Maker Party is a loose network of people and orgs around the globe working on a common campaign. Open News and Mozilla Science sit within communities of practice with a shared ethos. Mozilla Clubs are much more like a global network of local chapters. And so on.

As we develop our Mozilla Learning strategy, we need to find a way to both: a) build on the strengths of these networks; and b) develop a common architecture that makes it possible for the overall network to grow and scale.

Striking this balance starts with a simple set of categories for Mozilla Learning partners and networks. For example:

  • Member: any org participating in Mozilla Learning.
  • Partner: any org contributing to Mozilla Learning.
  • Club: a locally-run node in the Mozilla Learning network.
  • Affiliate network: group of orgs aligned with Moz Learning.
  • Core network: group of orgs coordinated by Mozilla staff.

This may not be the exact way to think about it, but it is certain that we will need some sort of common network architecture if we want to build partners and networks into everything. Working through this model will be an important part of the next phase of Mozilla Learning strategy work.

Partners = open source

In theory, one of the benefits of networks is that the people and organizations inside them can build things together in an open source-y way. For example, one set of partners could build a piece of software that they need for an immediate project. Another partner might hear about this software through the network, improve it for their own project and then give it back. The fact that the network has a common purpose means it’s more likely that this kind of open source creativity and value creation takes place.

This theory is already a reality in projects like Open News and Hive. In the news example, fellows and other members of the community post their code and documentation on the Source web page. This attracts the attention of other news developers who can leverage their work. Similarly, curriculum and practices developed by Hive members are shared on local Hive websites for others to pick up and run with. In both cases, the networks include a strong social component: you are likely to already know, or can quickly meet, the person who created a thing you’re interested in. This means it’s easy to get help or start a collaboration around a tool or idea that someone else has created.

One question that we have for Mozilla Learning overall is: can we better leverage this open source production aspect of networks in a more serious, instrumental and high impact way as we move forward? For example, could we: a) work on leadership development with partners in the internet advocacy space; b) have the fellows / leaders involved produce high quality curriculum or media; and c) use these outputs to fuel high impact global campaigns? Presumably, the answer can be ‘yes’. But we would first need to design a much more robust system of identifying priorities, providing feedback and deploying results across the network.

Questions

Whatever the specifics of our Mozilla Learning programs, it is clear that building in partnerships and networks will be a core design principle. At the very least, such networks provide us diversity, scale and a ground game. They may also be able to provide a genuine ‘open source’ style production engine for things like curriculum and campaign materials.

In order to design the partnership elements of Mozilla Learning, there are a number of questions we’ll need to dig into:

  • Who are current and desired partners? (make a map)
  • What value do they seek from us? What do they offer?
  • Specifically, do they see value in our leadership and advocacy programs?
  • What do partners want to contribute? What do they want in return?
  • What is the right network / partner architecture?

A key piece of work over the coming months will be to talk to partners about all of this. I will play a central role here, convening a set of high level discussions. People leading the different working groups will also: a) open up the overall Mozilla Learning process to partners and b) integrate partner input into their plans. And, hopefully, Laura de Reynal and others will be able to design a user research process that lets us get info from our partners in a detailed and meaningful way. More on all this in coming weeks as we develop next steps for the Mozilla Learning process.

SeaMonkeyWin32 l10n Nightlies.

Finally managed to get the l10n nightly trunk done.  (l10n is such a complicated beast… I’m amazed at how anyone can figure it out.)

Please check them out; but do note the following caveats:

  1. I manually generated them. (While there was a bit of some automation used, it was mostly manually done.)
  2. There could be errors in the translation process. (Did I mention that l10n is complicated?)

We’ve been pretty much busted for the past two weeks or so because of changes from m-c and really had to get the code patched; which explains why no updated nightlies.  (Linux32/64 are currently busted due to the default gtk3 build, but that should be sorted out soon.)

With that sort of out of the way,  I’d like to mention that we *are* trying to get the release done soon.  We’ll update the situation as it is.

Again, thank you for your patience.

Meeting NotesMozilla Project: 2015-07-27

  • Every Monday @ 11:00am Pacific Time (19:00 UTC)
  • http://air.mozilla.org/ to watch and listen
  • join irc.mozilla.org #airmozilla for backchannel discussion
  • Presenters only: Vidyo room “Brownbags”. Do not use this room if you’re not planning to speak.
  • 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

All-hands Status Meeting Agenda

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

Friends of Mozilla

Upcoming Events

Wednesday, 29 July
Thursday, 30 July

Project Status Updates (voice updates)

Firefox and Cloud Services

Speaker Location: Vancouver – Remote (mmayo)

  • Windows 10 launches this week! Majority of our work lands in 40, Aug 11.

Speakers

The limit is 3 minutes per topic. It’s like a lightning talk, but don’t feel that you have to have slides in order to make a presentation. If you plan on showing a video, you need to contact the Air Mozilla team before the day of the meeting or you will be deferred to the next week.

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
Larissa Shapiro Eng Program Manager, in this case supporting MDN via reps OSCON 2015 Live from my home office in Santa Cruz Sharing some images and data from my screen https://docs.google.com/presentation/d/1a3UXPL8kk_uulxisxAqpgVbIOuPBeQyiX-g2bicDaM4/edit#slide=id.g5c179cf50_0_8 coming soon!
Amy Tsay AMO & Marketplace Community Manager Unicorn theme snippet MV No https://docs.google.com/presentation/d/1fr69Zv8815mk1F9zdotS3IBhfYmSZJ-sZgQhB4wAqQI/edit#slide=id.p https://addons.mozilla.org/firefox/themes/
Tantek Çelik Web Standards Lead Social Web Acid Test v0 milestone at IndieWebCamp 2015 SF No Video after I give a short intro: https://archive.org/details/SWAT0-live-demo_201507/ For more details (open source and open standards used) see: User flow and permalinks from #IndieWeb #SWAT0 achievement
Chris Manchester Automation and Tools Engineer mach try SF No http://chmanchester.github.io/blog/2015/07/26/introducing-mach-try/

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
Kate McKinley Stephen Workman San Francisco San Francisco Privacy Engineering

<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

Mozilla ITProduct Delivery Migration: What is changing, when it’s changing and the impacts

As promised, the FTP Migration team is following up from the 7/20 Monday Project Meeting where Sean Rich talked about a project that is underway to make our Product Delivery System better.

As a part of this project, we are migrating content out of our data centers to AWS. In addition to storage locations changing, namespaces will change and the FTP protocol for this system will be deprecated. If, after reading this post, you have any further questions, please email the team.

Action: The ftp protocol on ftp.mozilla.org is being turned off.
Timing: Wednesday, 5th August 2015.
Impacts:

    After 8/5/15, ftp protocol support for ftp.mozilla.org will be completely disabled and downloads can only be accessed through http/https.
    Users will no longer be able to just enter “ftp.mozilla.org” into their browser, because this action defaults to the ftp protocol. Going forward, users should start using archive.mozilla.org. The old name will still work but needs to be entered in your browser as https://ftp.mozilla.org/

Action: The contents of ftp.mozilla.org are being migrated from the NetApp in SCL3 to AWS/S3 managed by Cloud Services.
Timing: Migrating ftp.mozilla.org contents will start in late August and conclude by end of October. Impacted teams will be notified of their migration date.
Impacts:

    Those teams that currently manually upload to these locations have been contacted and will be provided with S3 API keys. They will be notified prior to their migration date and given a chance to validate their upload functionality post-migration.
    All existing download links will continue to work as they do now with no impact.

Air MozillaMozilla Weekly Project Meeting

Mozilla Weekly Project Meeting The Monday Project Meeting

QMOFirefox 40 Beta 7 Testday Results

Hello Mozillians!

As you may already know, last Friday – July 24th – we held a new Testday event, for Firefox 40 Beta 7.

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 the Bangladesh QA Community, for testing Firefox Hello context, WebGl, Adobe flash plugin and also verifying lots of bug fixes: Hossain Al Ikram, Nazir Ahmed Sabbir, Rezaul Huque Nayeem, MD.Owes Quruny Shubho, Mohammad Maruf Islam, Md.Rahimul Islam, Kazi Nuzhat Tasnem, Md. Ehsanul Hassan, Saheda.Reza Antora, Fahmida Noor, Meraj Kazi, Md. Jahid Hasan Fahim, Israt, Towkir Ahmed and Eyakub.

Special thanks go out to participants of Campus-Party Mexico that attended Firefox 40 beta 7 testday and helped with the testing of Firefox Hello context, WebGl and Adobe flash plugin: Mauricio Navarro Miranda, LASR21 Sánchez,  diegoehg, nataly Gurrola, Jorge Luis Flores Barrales, EZ274, Armando Gomez, Karla Danitza Duran Memijes and Eduardo Arturo Enciso Hernández.

Also a big thank you goes to all our moderators.

Keep an eye on QMO for upcoming events! :)

Rumbling Edge - Thunderbird2015-07-24 Calendar builds

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

  • Fixed: 359007 – Event printed multiple times with same time if it is a multiday event
  • Fixed: 674088 – Lightning hammers webdav server with repeated OPTIONS and PROPFIND when incorrectly configured as caldav
  • Fixed: 1153615 – Use SVG graphics for the Lightning toolbar buttons
  • Fixed: 1153752 – Tracking bug for Lightning 4.0 release [meta]
  • Fixed: 1165396 – Calendar changes the time of the events to the opposite timezone
  • Fixed: 1167939 – Long date uses OS date so it appears in OS language instead of Sorbian because there is no Sorbian OS
  • Fixed: 1168525 – Port |Bug 1166538 – Use mozbuild.jar-based zip tool instead of $(ZIP) for simple cases| to Calendar
  • Fixed: 1170482 – Update internal timezone database to version 2015e
  • Fixed: 1172237 – Automatically set up aliases when timezones have changed
  • Fixed: 1172582 – Remove the usage of the calendar-windows assignment
  • Fixed: 1174397 – No current or upcoming Events in Today Pane
  • Fixed: 1176936 – Event extraction broken with single locale Lightning
  • Fixed: 1180471 – Error dialog doesn’t get prompted
  • Fixed: 1180522 – Fix timezone alias for Buenos Aires
  • Fixed: 1182264 – Possible dataloss after editing calendar properties
  • Fixed: 1186547 – mReadOnly and mDisabled do not reflect readOnly and disabled properties

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

Windows builds Official Windows

Linux builds Official Linux (i686), Official Linux (x86_64) (2015-07-22 builds)

Mac builds Official Mac

Rumbling Edge - Thunderbird2015-07-24 Thunderbird comm-central builds

Thunderbird-specific: (24)

  • Fixed: 978558 – Column Size has tooltip “Click to sort by size” instead of “Sort by size” in normal message list and in message search results list
  • Fixed: 1137159 – App menu is empty, only shows “Quit”
  • Fixed: 1159338 – Reminder: switch mozilla-repo in client.py-args to undo mozilla-release hardcode
  • Fixed: 1167003 – JavaScript warning: chrome://messenger/content/newmailaccount/accountProvisioner.js, line 776: flags argument of String.prototype.{search,match,replace} is deprecated
  • Fixed: 1172240 – Add Windows 10 media queries
  • Fixed: 1172241 – Get rid of messageWindow-aero.css
  • Fixed: 1172242 – Don’t duplicate the communicator directory in TB
  • Fixed: 1172243 – Don’t duplicate the newsblog directory in TB
  • Fixed: 1173261 – Take “Bug 1143570 – Copy/Paste into plain text editor deletes newlines from quoted text” in TB 38.x
  • Fixed: 1174505 – thunderbird OAuth2 POP access should not offer OAuth2
  • Fixed: 1175063 – lightning calendar didn’t get installed when upgrading to thunderbird 38.0.1
  • Fixed: 1175607 – Icons not inverted on tab bar with Ambiance theme
  • Fixed: 1175908 – No dictionary selected after upgrade from TB 31 to TB 38 when xy_XY dictionary was selected before upgrade
  • Fixed: 1176215 – TEST-UNEXPECTED-FAIL | toolkit/components/places/tests/unifiedcomplete/test_searchSuggestions.js | singleWordQuery – [singleWordQuery : 236] Got as many results as expected – 0 == 2
  • Fixed: 1176612 – TEST-UNEXPECTED-TIMEOUT | netwerk/test/unit/test_predictor.js | Test timed out
  • Fixed: 1176671 – Changing dictionary language from spellcheck dialogue is not persisted after closing the dialogue
  • Fixed: 1176719 – Add missed Win10 media queries
  • Fixed: 1176749 – nsIScriptError.h:21 nsStringFwd.h:15:2: error: Internal string headers are not available from external-linkage code. after bug 1143006
  • Fixed: 1177330 – package-manifest : Missing file(s): bin/components/profile.xpt in mail/
  • Fixed: 1183328 – port bug 1181040 (Include mozconfig.cache after mozconfig.common.override) to thunderbird
  • Fixed: 1183332 – TEST-UNEXPECTED-FAIL | toolkit/components/captivedetect/test/unit/test_captive_portal_not_found.js + test_captive_portal_found.js + test_captive_portal_found_303.js
  • Fixed: 1183762 – port bug 1182407 (Use unpack feature of tooltool wherever possible) to thunderbird
  • Fixed: 1186282 – HTTPError: HTTP Error 404: Not Found: on XPCShell and MozMill tests during ‘python archiver_client.py mozharness..’ step.
  • Fixed: 1186283 – TEST-UNEXPECTED-FAIL | check-sync-dirs.py | build file copies are not in sync: differing file: {linux32,linux64,macosx64}/clang.manifests and macosx64/releng.manifest

MailNews Core-specific: (21)

  • Fixed: 837552 – crash in nsMsgDatabase::CopyHdrFromExistingHdr with filters
  • Fixed: 1018589 – Can’t add RSS feed with Cyrillic URL -> support idn urls for feeds
  • Fixed: 1132478 – Feed Reader sends wrong Accept header
  • Fixed: 1151448 – Cross-posts won’t send because Newsgroups: groups are separated with comma+space, not just comma
  • Fixed: 1151497 – Web site from RSS feed not rendered correctly (due to noscript tags) – tab part
  • Fixed: 1174159 – thunderbird 38.0.1: cannot send email through exchange server (NTLM)
  • Fixed: 1174580 – Doesn’t display GB2312 encoded texts correctly for Chinese Characters
  • Fixed: 1175055 – Remove Eudora and Outlook import options since they are busted in TB 38 and trunk
  • Fixed: 1175190 – Thunderbird 38 crashes in mozilla::mailnews::EncodedHeader [msvcr120.dll | nsCOMArray_base::Adopt | mozilla::mailnews::EncodedHeader]
  • Fixed: 1175348 – oauth related crash in nsMsgAsyncWriteProtocol::SendData(char const*, bool)
  • Fixed: 1175410 – Update comm-central for PLDHashTable changes in bug 1174625
  • Fixed: 1176599 – Backout Bug 1141548 because libmozalloc.so is missing from comm-beta (39) SeaMonkey/Thunderbird builds
  • Fixed: 1176773 – OAuth2 does not work with imap.gmail.com after upgrade
  • Fixed: 1177979 – Gtk3 build fail with /usr/bin/ld: libxul.so: hidden symbol `_ZN26nsMessengerUnixIntegrationC1Ev’ isn’t defined
  • Fixed: 1178413 – GMail OAuth2 scope should be https:// not http://
  • Fixed: 1180071 – Remove uses of PL_DHashTableEnumerate() in comm-central
  • Fixed: 1180356 – Cannot find wrl.h : No such file or directory when building WindowsUIUtils.obj
  • Fixed: 1181434 – Fix fallout from bug 905127 due to missing headers for mail/ and mailnews/
  • Fixed: 1181985 – TEST-UNEXPECTED-FAIL: /builds/slave/test/build/application/thunderbird/xpcshell: error while loading shared libraries: liblgpllibs.so: cannot open shared object file: No such file or directory
  • Fixed: 1183729 – error: ‘HasDangerousPublicDestructor’ is not a template
  • Fixed: 1185583 – Thunderbird broken by mozilla-central Bug 1143922 nsPop3Protocol.obj : error LNK2001: unresolved external symbol “public: virtual enum nsresult __stdcall nsMsgProtocol::Open2(class nsIInputStream * *)” (?Open2@nsMsgProtocol@@UAG?AW4nsresult@@PAPAVnsIInput

Windows builds Official Windows, Official Windows installer

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

Mac builds Official Mac

Mozilla Korea“Mozilla의 Maker Party가 시작되었습니다.”

“Maker Party 가 시작되었습니다!”

7월 15일부터 31일까지 전세계 Mozilla 커뮤니티 멤버들이 모여 웹으로 재밌고 창의적인 활동들을 벌입니다. 지난 파티들에서는 로봇과 교육용 브라우저 게임들에서부터 오리지널 작품 만들기와 댄스 모션들을 만들어 보았답니다. 이번에는 어떤 멋진 작품들이 만들어질지 매우 기대됩니다.

2015mozila party

17일간의 여정에서 저희는 웹 리터러시(web literacy)을 공유하는 활동들을 할 거에요. 특별히 웹 상 언어들을 읽고, 쓰고, 웹에 직접 참여하는 것에 중점을 두었답니다. 이건 함께하는 작업이죠. 저희는 이를 위해 같은 생각을 가진 기관들과 개인들과 함께 전 세계적인 웹 리터러시(web literacy)를 이루려고 일하고 있어요. Maker Party에 참여하거나 여러분 자신의 웹의 주인이 되어보세요. 주변 친구들과 가족, 커뮤니티도 초대 하시구요.

  • 첫 번째 Maker Party 활동을 알려드릴께요. 저희는 여러분이 웹을 읽을 수 있게 도와주는 게임(The IP Address Tracer game)을 만들었어요. 이 활동으로 어떻게 여러분의 기기가 인터넷에 연결하는지 알 수 있어요. 노트북이나 데트크탑, 스마트폰에 관계 없이 모든 장비는 자신만의 고유한 IP주소라는 걸 가지고 있어요. 이 고유한 주소가 왜 개인정보인지, 이것을 보호하는 것이 여러분의 개인정보를 어떻게 보호 해주는지 알게 될 거에요. 인터넷 연결이 되지 않았다면 Mozila의 lo-fi version 을 사용해서 종이와 펜만을 가지고 연결을 시도 해볼 수 있죠.

두 번째는 웹 언어로 글을 써볼거에요. 새로운 오픈소스 Android 앱인 Mozilla의 Webmaker 로 기존에 있던 컨텐츠를 공유하고 새롭게 만들 수 있죠. Webmaker는 스마트폰을 사용하는 누구나 사용할 수 있게 간단하고 직관적으로 만들어져 있어서 몇 분만에 온라인에 멋지게 만들 수 있답니다. 요리책, 생일카드, 사진앨범, 연재 만화에 이르기까지 다양하게 만들 수 있어요. 게다가 여러분이 만든 걸 아주 쉽게 친구들과 공유하고 바꿀 수도 있구요. 기기가 없거나 인터넷 연결을 할 수 없다구요? lo-fi version 활동을 해 보세요. 그럼 문제 없답니다!

세 번째는 Hack My Media 활동이라고 하는데 역시 웹에서 하는 활동이죠. 여기서는 웹사이트에 숨겨진 코드를 살펴볼 수 있는 Mozilla’s X-Ray Goggles 툴을 사용하세요. 이 툴로 HTML을 변형시켜 여러분만의 것으로 만들어보세요. 사진과 헤드라인 및 다른 자료를 옮겨 특별한 개성이 담긴 여러분의 사이트를 만들어보세요. 오프라인이라면 lo-fi version을 사용 해보시구요.

Maker Party를 생각하기 시작하셨다면…저희가 여러분을 돕기위해 여기 있다는 걸 기억 해주세요! 위에서 알려드린 세 가지 활동들과 더불어 Mozilla는 웹을 알려드리는 다른 몇가지 방법들도 가지고 있으니까요. Teaching Activities 페이지에서 찾아보실 수 있어요.

여러분의 Maker Party를 훌륭하게 만들고 싶다면 Event Resources page 를 방문 해보세요. 여기서 모든 종류의 장식들을 다운받으실 수 있거든요. 그리고 저희는 멋진 장소를 찾는 방법과 미디어 등을 초대하는 것들에 도움을 드려서 여러분의 이벤트를 잘 계획하실 수 있게 도울거에요.

부엌 테이블에서 세 명의 친구들이 함께하는 Maker Party이든 50명의 학생들이 모인 교실이든 저희가 도와드릴게요. makerparty@mozilla.org 로 메일을 보내주세요.

저희와, 그리고 전 세계 사람들에게 여러분만의 파티를 공유하는 걸 잊지마세요. 아래 메세지를 트윗 해주시구요. ^^

저는 이번 7월에 @Mozilla’s #MakerParty 에 참여합니다! 함께 온라인에 멋진 작품을 만들어요!:)  도움말#TeachTheWeb: mzl.la/makerparty

열심히 읽어주셔서 감사합니다. 자, 이제 파티를 시작 해볼까요?

Air MozillaWebmaker Demos July 24 2015

Webmaker Demos July 24 2015 Webmaker Demos July 24 2015

SUMO BlogWhat’s up with SUMO – 24th July

A warm “hello” to all our readers across SUMO and Planet Mozilla! Here we go with another round of the good, the bad, and the reminders… ;-)

Say “hello” to the newcomers!

If you joined us recently, don’t hesitate – come over and say “hi” in the forums!

Contributors of the week

  • Big thanks to Safwan, Orvi, Anush and pollti for all their Kitsune fixes the last few months!
  • Kudos to pollti once again, for his mozilla.org SUMO fixes!
  • Our awesome Arabic localizers for hitting the Top 20 Firefox OS milestone!
  • Tobias for helping with the final push of getting German l10n to 100%!
 We salute you!

Last Monday SUMO Community meeting

Reminder: the next SUMO Community meeting…

  • …is going to take place on Monday, 27th of July. Join us!
  • If you want to add a discussion topic to upcoming the live meeting agenda:
    • Start a thread in the Community Forums, so that everyone in the community can see what will be discussed and voice their opinion here before Monday (this will make it easier to have an efficient meeting).
    • Please do so as soon as you can before the meeting, so that people have time to read, think, and reply (and also add it to the agenda).

Help needed – thank you!

Let’s work together on the script for the tutorial videos for SUMO l10n

    ! Use the “comments” feature to leave your feedback and ideas in the document.

Developers

Community

Support Forum

Knowledge Base

Firefox

Firefox OS

Thunderbird

  • Reminder: as of July 1st, Thunderbird is 100% Community powered and owned! You can still +needinfo Roland in Bugzilla or email him if you need his help as a consultant. He will also hang around in #tb-support-crew.

Don’t forget that we are on Twitter! And don’t forget to cool off in the heat of the cruel summer (if you happen to have one, that is). See you on Monday!

Meeting NotesChannel: 2015-07-23

Attendees

KaiRo, Jorge, Ritu, lmandel, rrayborn, fabio

Schedule Update

  • 40.0b7 desktop gtb today

Add-ons

  • No updates.

Stability

Aurora / Dev Edition

  • Overall rate: 3.1
    • still going down after recent backouts, largest remaining issues still e10s+a11y

Beta

  • Overall rate: 1.3 (target: 1.2-1.4), plugin hangs: 0.19 (target: <0.10)
    • The patch to fix the plugin hangs landed in b6, we “lost” >30% of the hangs within a day!
    • bug 1159751 (gfx shutdownhang, WARP on Win7) is 5% in b6, should be fixed for b7
    • bug 1158189 (HTTP shutdownhang) is 1.8%
    • bug 1106264 (large OOM in nsSameProcessAsyncMessageBase) is 1.6%
      • Patch is mostly diagnostic messaging. Approved for uplift to Aurora.
    • bug 1182197 (dom::Promise::MaybeSettle) 1%
    • bug 1177278 (large OOMs in CacheFileMetadata::WriteMetadata) is 0.9%, patch landed on m-c yesterday

Release

  • Overall rate: 1.0
    • no issues.

Mobile

  • rates look good.

User Advocacy

  • No updates

Special Topics

Post-Mortem (Tues 2wks from GA Release)


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

WebmakerAdvocating for Web Literacy

I often throw around big numbers when I talk about web literacy: “Soon we’ll have five billion people on the web. We need to make sure they all understand how it works and how to wield it.” I believe this. And, I believe that Mozilla needs to play a key role here. But the question is: how?

Advocating for web literacy

Moving through Mozilla Learning planning, we’ve concluded we need two interlinked strategies: leadership development and large scale advocacy. Leadership development is fairly straightforward: Mozilla already has programs focused on this. Advocacy — or shifting understanding and thinking about the web — is harder. We have experience and talent here, but it is more nascent. Where to invest and how to move forward is less clear. This post lays out baseline thinking on a Mozilla Learning advocacy agenda with an aim of fueling a deeper discussion about our approach.

Impact

The first step toward figuring out where we want to invest is agreeing on the impact we want to have. At the core, it’s something like:

Impact = everyone knows how to read, write and participate on the web.

This is ultimately what we’re aiming at. It’s big and abstract, but substantively it is what we want: universal web literacy. Like universal language literacy, we will never fully reach the goal. But we can meaningfully make and measure progress across the globe.

Within this overall goal, there are specific places that might be more or less important to have impact. For example:

Impact = new internet users understand the full scope of the web.
Impact = more people know how to protect their privacy.
Impact = gov’ts, foundations and companies value web literacy.

We need to pick two or three focusing impact statements like these to guide our work, at least for the next few years. There could be dozens of impact statements like this that are worthy — but we’ll only succeed if we know which ones we’re going after, and then drive hard toward them.

Tactics

Mozilla is already doing good work that improves public understanding of the web and promote web literacy.

For example, we run advocacy campaigns on topics like net neutrality and mass surveillance. As a result, Firefox users learn about these complex issues in a simple way and are able to talk to others about them. They become more literate about the issues facing the internet today.

Or, a very different example: we give talks, create curriculum and offer software to encourage other organizations to participate in our web literacy agenda. This makes it easy for the kinds of organizations that belong to Hive or run Maker Parties — or, eventually, for governments or philanthropies — to connect the educational work they already do everyday to our cause of teaching the world the web.

While we’re already having an impact in areas like these, we want to have impact at a larger scale. What we need to do is take a look at which tactics are most impactful. Some options are:

  1. Advocating for the web: building a strong educational element into a regular series of political and advocacy campaigns. E.g. our recent net neutrality campaigns.
  1. Advocating for web literacy: promoting the importance of web literacy and giving others around the world the tools to teach it. E.g. lobbying governments and educational orgs to deploy curriculum from Mozilla Clubs, MDN, etc.
  1. Consumer education: building educational messages about topics like privacy into our product channels, advertising or other places where we have a large audience. E.g. Smart On campaigns or internet onboarding programs w/ phone carriers.
  1. Ambient learning: putting features and cues inside our mainstream consumer software in ways that are likely to help people better understand the web. E.g. tinker mode in Webmaker or private browsing in Firefox.
  1. Thought leadership: defining an agenda around the future of the web or web literacy and then talking about it loudly in public. E.g. a more robust version of Shape of the Web backed by an extensive public relations and media campaign.

Part of our work with Mozilla Learning is to: a) look at these tactics and others; b) line them up against our impact statements; and c) decide which ones should be at the center of our overall strategy. Specific questions we’ll need to answer include:

  • What concrete impact do we want in the next three years?
  • Where are the best opportunities to reach a large audience?
  • What tactics help us grow our constituency? (aka relationships)
  • How do constituency and audience lead to impact?
  • How do we measure impact and change?

As we do this, we need to keep in mind that the ultimate goal of the Mozilla Learning strategy is universal web literacy. Whatever we do needs to be driving back to that goal in a way that we can understand and measure, at least over time.

Finding the right mix

When I think about other organizations I admire, they use an artful mix of reinforcing strategies. National Geographic mixes mass media with environmental education with adventure travel packages. The American Lung Association mixes anti-tobacco policy work with stop smoking programs with social marketing. The Sierra Club mixes environmental activism with hiking and canoeing. This kind of mix makes for effective and lasting organizations, with impacts at scale.

As we refine the Mozilla Learning plan, and our overall strategy as an organization, I think we need a mix something like:

A. Mainstream software with Mozilla’s values

complemented by

B. Leadership development
C. [still to be defined large scale advocacy efforts]

We already have A (Firefox). And we’re getting close on B (Hive, Clubs, fellows, etc.). The chunk of work we need to do now is figure out C.

As part of the next phase of Mozilla Learning strategy, Ben Moskowitz and David Ascher are going to lead a series of discussions on this ‘moving the needle on massive web literacy’ topic. Key people from MoFo’s advocacy and product teams will also play a leadership role in this process. And there will be chances along the way for anyone who has interest to join the conversation. More info will be available when the process kicks off in mid-August. In the meantime, I wanted to throw out these questions for discussion and debate.

about:communityTen years of evolution of MDN

Logo for MDN 10 year anniversaryThis week marks the tenth anniversary of Mozilla Developer Network (MDN) as a wiki. This post offers a deep dive into where MDN came from, how it has evolved in various ways, and where it may be going.

(This post is based in large part on a round table discussion about MDN that was held during the “Hack on MDN” weekend in Berlin in April 2015, and on Florian Scholz’s history of MDN’s JavaScript documentation.)

What is MDN today?

For many web developers, MDN is the reference manual for the Web, the place they go to look up or learn about open web technologies. MDN offers much more than that. It is a resource for learning about the Web, and a place for developers to share their skills and knowledge. MDN’s strength lies in its openness, where anybody can help make the resources incrementally better, or substantially better. MDN can also encourage the growth of web technologies into new spaces from where they’ve been in the past.

MDN is a community of programmers, writers, and localizers. A few of these are paid staff of Mozilla, but they are a subset of the larger community of people who make small or large contributions.

One of the coolest things for those who contribute to MDN is that every time we talk to developers, they tell us how much they love MDN. It’s not, “Oh MDN is kind of cool,” or “It’s great.” The response is: “I love MDN. It’s the best resource out there.” It’s tremendously gratifying to feel that you are part of something that people really love.

Who is MDN for?

MDN serves a variety of audiences:

  • Web developers, first and foremost
  • People who want to teach themselves about web development
  • Teachers of web development skills and concepts
  • Developers in the ecosystem of Mozilla products, such as Firefox add-ons, and Firefox OS apps
  • Developers working on the Mozilla codebase

Beginnings of MDN

The site that became MDN, developer.mozilla.org or “Devmo,” started as a redirect to a developer-oriented page on the main mozilla.org site. Later that content was moved over to Devmo; it contained primarily information for developers contributing to the Mozilla codebase.

Just as the Mozilla project emerged from the remains of Netscape, also MDN as we know it began with documentation originally written at Netscape. The site known as “Netscape DevEdge” documented web technologies, such as JavaScript, and other things that were implemented in Netscape products. After Netscape was acquired by AOL, the DevEdge site eventually was shut down, and that information disappeared from the Web.

Mitchell Baker (Chair of Mozilla) and others from Mozilla worked out an arrangement with AOL to release the DevEdge content, which she announced in February 2005. At the same time, Deb Richardson was hired to migrate and curate the DevEdge content into Devmo.

Mitchell and Deb made the decision to put the content into a wiki, to enable open contributions to maintain and update the content. Previously, the DevEdge content was in a CVS source control system, and published as a static site. Using a wiki for documentation was a novel concept at the time, and it took a while for some core developers within the Mozilla project to warm to this way of working. However, others quickly embraced the idea, and the many of the earliest contributors to the Devmo wiki were developers who were active elsewhere in the Mozilla project.

Deb and some volunteers spent a few months mining and migrating the still-useful content from DevEdge, working on a test server. This effort was still in progress when the content was migrated to the Devmo site, now titled “Mozilla Developer Center” or “MDC” in July 2005. We mark this as the starting point of what we now call Mozilla Developer Network.

Platform evolution

MDN has lived on three different wiki platforms in the course of its history: first MediaWiki, then MindTouch DekiWiki, and now Kuma, a Mozilla-developed platform. Looking at the technical infrastructure is interesting not just from a technical point of view, but also because technology influences social structures like community.

MediaWIki

The wiki platform used for the first iteration of MDC was MediaWiki, the open source software that underlies Wikipedia. It was the most robust and widely-used wiki at the time. The Devmo project began to discover that software designed for writing a general-purpose encyclopedia was not necessarily ideal for writing developer-oriented technical documentation. For example, it did not handle code examples well, reformatting them to be unreadable. Mozilla tried to fix such issues by creating its own fork of MediaWiki, which then ended up being quite difficult to maintain.

On the level of contributions, using MediaWiki was initially an advantage, because many technical people were already familiar with how to use it. However, the project eventually reached a plateau, where it became difficult to keep contributors coming back. This, combined with the technical quirks, led to a search for a more user-friendly platform.

Dekiwiki

After an evaluation process that looked at all the wiki products available on the market (not just open source ones), the choice was made of DekiWiki by MindTouch. One advantage of DekiWiki was that the source format for articles was HTML, rather than wiki markup. It seemed a logical choice for a site targeting web developers, to have the source format be a standard web language. This required migrating all of the content from MediaWiki markup format to HTML, which was a major migration project. The choice of DekiWiki was announced in November 2007, and the site switched to it in August 2008.

While DekiWiki was a quality product, one way that the selection process was flawed was that it did not include a major group of stakeholders: volunteers who contributed to the site. The rate of contribution nose-dived, because the platform was not embraced by the contributor community. In particular, localization communities, who translated the content into various languages other than English, were severely disrupted. They had built tools and processes around working with MediaWiki, and these tools didn’t work with DekiWiki. After a few months, many of these groups simply disbanded and decided not to contribute any more, with the result that translated documentation started to become stale, and became more and more out of date over time.

DekiWiki was also written in C#, and designed to run in a Microsoft .NET environment. This was a mismatch with Mozilla’s technical infrastructure, which is Linux-based. Trying to run DekiWiki on Mono led to a great deal of instability, with the site being down for days and weeks at times.

These issues, after a couple of years, led to looking for another solution. The best candidates on the market were still MediaWiki and DekiWiki. Now that the content was all written in HTML, migrating back to MediaWiki markup syntax was not feasible. No product seemed suited to the specific needs of an open developer documentation site, so Mozilla decided to create its own.

Kuma

The current platform for MDN, known as Kuma, is written in Python with Django. It started as a fork of Kitsune, the platform for the Mozilla support site, and was adapted to the needs of a wiki site for developers rather than end users. (Also, “kitsune” means “fox” in Japanese, and “kuma” means “bear”. Because users : foxes :: developers : bears, right?)

Like DekiWiki, Kuma uses HTML as the source format for the content. The migration effort in this case was converting the scripts and macros used on the site. DekiWiki used “DekiScript,” based on Lua, while Kuma introduced KumaScript, which is based on JavaScript, using Node.js. KumaScript is the brainchild of developer Les Orchard. As with creating content in HTML, KumaScript means that MDN is implemented using the same technologies that it documents, and that its contributors are familiar with. It was possible to migrate about 70% of the existing macros automatically, but the rest had to be manually converted.

The goal when launching the Kuma platform was to achieve feature parity with the DekiWiki implementation of MDN. The content was migrated to the new system, and changes from the production server were periodically updated on the Kuma staging server. Thus, the Kuma instance was kept in sync with the production DekiWiki server. While the months leading up to the launch of Kuma were involved a great deal of migration work, the actual launch was very smooth. A routing switch was flipped, and traffic shifted to the new site seamlessly, without even disrupting login sessions.

Community evolution

From the beginning, the community for the DevMo site grew organically, starting with contributors who were already active in other parts of the Mozilla project. Like other areas of Mozilla, communication happens through a mailing list and IRC chat channel. By mid-2007, contributions were typically 250 per month. As mentioned before, the migration to Dekiwiki led to a dramatic drop-off in localization contribution, and total contribution declined as well.

Doc contributors sitting around a table, in Paris, in October 2010

MDN doc sprint, Paris 2010


As part of an effort to engage the community more actively, I (Janet Swisher) was hired as a staff technical writer in mid-2010. I brought experience with open source developer documentation, and in particular, experience with the “book sprints” methodology used by the FLOSS Manuals project to produce manuals for free software in five days or less. The first MDN “doc sprint” took place in October 2010, in the Mozilla Paris office. Doc sprints bring together a number of MDN contributors, either physically or virtually, for focussed, collaborative work, typically over a weekend. These were held about once a quarter for about three years. More recently, they have evolved into less frequent but broader “Hack on MDN” events, whose scope includes hacking on the platform or tools, as well as on content, to make them more attractive to developers.
Idea pitches at HackOnMDN weekend, Berlin 2015

Idea pitches at HackOnMDN weekend, Berlin 2015


In addition, the MDN community holds a number of regular online meetings, both for general information, and for tracking specific projects. These community activities, as well as the migration to Kuma in 2012, have led to a significant increase in contributions, now around 1000 per month.

Branding evolution

In the beginning, the DevMo site was known as “Mozilla Developer Center.” At first, it simply sported that title, with a simple skin on MediaWiki. With the move to DekiWiki, the word “Mozilla” became the Mozilla wordmark, followed by “<developer center/>”, to convey slightly more webbiness.

Wordmark for Mozilla Developer Center

Wordmark for Mozilla Developer Center

In September 2010, the name of the site was changed from “Mozilla Developer Center” to “Mozilla Developer Network” or MDN. This change was met with some skepticism from the developer audience at the time, though by now they simply accept MDN as MDN. The visual design of the site changed at the same time, to a darker theme, and MDN acquired a logo, the “robot dino,” which it had never had before.

MDN robot dino logo

MDN robot dino logo

Along with these visual changes, features were added to the site to broaden its scope beyond just documentation. One successful feature is known as “Demo Studio”, an area where developers can upload code demos, share them, and show them off.

When MDN migrated from DekiWiki to Kuma, the visual appearance was preserved, so there was very little visual difference between the pre- and post-migration sites. After six to eight months of bug-fixing on Kuma, a project was started to change not only the visual design, but also the content structure. These changes were rolled out using feature flags, to users who chose to be beta testers. Thus, while most users continued to see the old design, while beta testers saw and tested the new visuals and structure. “Launch day” for the redesign consisted of simply flipping a switch in the database to make the new features visible to everybody.

The redesign brought not only a new logo, the dino-head-map that we see today, but also structural features like the navigation sidebar, which varies depending on which content area an article is in. In localized pages, items in the sidebar that are not yet translated link to their English versions, and show an invitation to translate them.

Content evolution

We mark the start of MDN “as we know it” from the acquisition and republication of the Netscape DevEdge content in 2005. But in the early days, the content was very slanted toward Mozilla products and technology. Not only was there documentation of XUL and internal Mozilla APIs (which are still there), but documentation of web technologies tended to be focused on Mozilla and Firefox, for example, with big banners like “works in Firefox 2.0″ or explanations of Gecko’s support of a feature in the middle of an otherwise neutral article.

As Mozilla began engaging more actively with the MDN community in 2010, community members began to express a vision of MDN as a vendor-neutral resource for web developers, whatever browsers they are targeting. Adopting this as a strategy required a lot of clean-up effort to remove Firefox-specific content from articles about web standards, and to create the compatibility tables that exist now, with information about all major browsers. Not coincidentally, as the content on MDN became more browser-agnostic, MDN started seeing contributions from other organizations.

MDN today and tomorrow

Two current projects on MDN are having a major impact on the shape of MDN in the near to medium term: the Learning area, and the compatibility data project.

MDN’s information about web technologies has long been a resource for experienced web developers. But it has poorly supported beginners to web development. The aim of the Learning area is to change that by offering tutorials and other resources to people who want to teach themselves about web development. This effort is happening in response to surveys we’ve done of our audience, who reported basic learning material as a significant gap. The Learning area project has been underway for about a year, and in that time has created a large Glossary about web technology concepts, and a number of new tutorials, corresponding to the Web Literacy Map developed by the Mozilla Foundation. The Learning area is a great opportunity to get started in contributing to MDN, since learners and teachers are as needed as technical experts.

Currently, data on MDN about browsers’ compatibility with web technology features is maintained in tables on the relevant pages. The data is pretty good, thanks to many, many crowd-sourced contributions. But this approach is not very sustainable or maintainable; for example, every table must be replicated on all localized versions of the page. The compatibility data project aims to improve the quality of the data, make data contribution easier, make access to the data easier, and allow reuse of the data, through a centralized data store. This project is action-driven rather than time-bound; contributions and involvement are welcome.

MDN in 10 years?

MDN as it exists today is quite different from its beginnings ten years ago. The Web has evolved, Mozilla has evolved, and MDN has evolved. We can expect even greater changes in the next ten years. Perhaps the vision of a direct brain interface to virtual reality “cyberspace” will finally come to pass. We know for sure there will be many more web developers, many more types of devices, and many standards that are not yet written.

Some things won’t change: Mozilla’s mission will continue to be to work towards an Internet that is a global public resource, open and accessible for all. MDN will continue to be a means towards that mission, by providing resources to enable anyone to become a creator of the Web, and to develop on the Web as a primary platform. MDN’s content, no matter how it’s delivered, will continue to be contributed by a global community of people who are passionate about learning and sharing knowledge about the Web.

Air MozillaWeb QA Weekly Meeting

Web QA Weekly Meeting This is our weekly gathering of Mozilla'a Web QA team filled with discussion on our current and future projects, ideas, demos, and fun facts.

Air MozillaJuly Brantina on Prototyping with Tom Chi

July Brantina on Prototyping with Tom Chi At this month's July 23 Brantina Tom Chi (one of the founders of GoogleX) will share some best practices as well as things to avoid...

SeaMonkeyWINDOWS SeaMonkey 2.35 “Pre-RC” available

We have something very similar to a Release Candidate, “all-bugfixes included“, but not localized.

That version contains a lot of bug-fixes compared to SeaMonkey 2.33 (no warranty for completeness) , intensive testing is appreciated.

Be careful with Language Packs (and may be other add-ons) for 2.33, they might cause big problems with 2.35, and currently I do not know whether fix for Bug 1084258 Language pack compatibility should be bound to Gecko branch, else undefined entity errors possible already will avoid such problems.

Backup your profile before you install and test!

Linux Users: please consider Bug 1057581 old profile crashes on startup [@ nsRDFPropertyTestNode::FilterInstantiations]

On the same download page you will find an Aurora 2.38a1 build.

The Mozilla BlogMDN celebrates 10 years of documenting YOUR Web

Today, Mozilla proudly celebrates the 10th anniversary of the Mozilla Developer Network, one of the richest and also one of the few multilingual resources on the Web for documentation. It started in February 2005, when a small team dedicated to the open Web took DevEdge (Netscape’s developer materials) and set out to create an open, free, community-built online resource for all Web developers. Just a couple of months later, on 23 July, 2005 the original MDN wiki site launched and has evolved steadily ever since for the convenience and the benefit of its users.

MDN_10-Milestones_UK
Today, ten years later, not only has the amount of documentation grown – 34,500 documents and climbing – but also MDN’s global volunteer community is bigger than ever. Currently, MDN has more than 4 million users and over 1000 volunteer editors per month creating and translating documentation, sample code, tutorials and other learning resources for all open Web technologies, including CSS, HTML, JavaScript and everything that makes the open Web as rich and versatile as it is.

MDN_10_Facts_UK

For a wide range of Web developers, from learners to hobbyists to full-time professionals, MDN provides useful explanations for coding practice. It aims to inspire ideas, encourage collaboration, innovation and ultimately, foster the growth of the open Web. Moreover, as the digital industry flourishes and the demand for coding skills at young age rises, the importance of well-organized resources like MDN grows exponentially. That is why in 2014 MDN started to feed and expand all its learning pages into a “Learn the Web” area for beginning web developers, including a web terminology glossary, which MDN’s technical writers and volunteers will continue to develop over the next years.

All these efforts, which would not be possible without the active MDN volunteer base, are being greatly acknowledged by developers from all over the world who would not be doing what they do without MDN – or at least not as good.

Let’s hear it for MDN!

For more information:

Web: https://developer.mozilla.org/
MDN at 10: https://developer.mozilla.org/en-US/docs/MDN_at_ten
Twitter: https://twitter.com/MozDevNet

All graphics are also available in French, German, Italien, Spanish and Polish.

Meeting NotesMobile: 2015-07-22

Schedule

Topics for This Week

A/B Testing Discussion
Happening today
Great or Dead
Quality program. More context to follow

Tracking Review

Beta

  • Next Build:
ID Summary Status Assigned to Last change time
1163937 Downloads are not cleared from about:downloads when “Clear on exit” is used ASSIGNED Dylan Roeh (:droeh) 2015-07-14T18:12:38Z
1164027 crash in ElfLoader::~ElfLoader() NEW Jamie Nicol [:jnicol] 2015-07-21T01:02:06Z
1170651 crash in js::jit::GetPropertyIC::update(JSContext*, JS::Handle<JSScript*>, unsigned int, JS::Handle<JSObject*>, JS::MutableHandle<JS::Value>) NEW 2015-07-22T16:41:30Z
1174144 Wrong doorhanger offset for some tablets NEW Chenxia Liu [:liuche] 2015-07-16T06:51:43Z
1178818 Apps cannot be launched after installing them on Android using the latest Nightly REOPENED Eugen Sawin [:esawin] 2015-07-22T23:58:43Z
1180958 crash in libmozglue.so@0x21152 mostly Samsung Tablets NEW Jamie Nicol [:jnicol] 2015-07-09T17:36:24Z


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

Aurora

  • Next Build:
ID Summary Status Assigned to Last change time
886969 Fennec allows scrolling of pages with overflow:hidden on the body element NEW James Willcox (:snorp) (jwillcox@mozilla.com) 2015-07-09T18:24:46Z
1016555 Disable OCSP checking for certificates covered by OneCRL ASSIGNED David Keeler [:keeler] (use needinfo?) 2015-06-17T16:43:20Z
1129614 Regression: Sometimes thumbnails in the tabs drawer are not updated, they expire ASSIGNED Mark Finkle (:mfinkle) 2015-07-02T02:57:32Z
1132508 Last tab is cut off in tab tray after rotation REOPENED Martyn Haigh (:mhaigh) 2015-07-20T12:42:03Z
1144534 bad looking text depending on scroll NEW Timothy Nikkel (:tn) 2015-05-14T17:30:29Z
1164052 Autophone – intermittent Crash [unknown top frame] NEW (on vacation July 18- 25) Ted Mielczarek [:ted.mielczarek] 2015-07-08T16:40:16Z
1170724 Autophone – 2015-05-20 Throbber start regression in S1S2 on fx-team NEW Michael Comella (:mcomella) 2015-07-23T00:33:19Z
1171337 black window during browsing NEW Randall Barker [:rbarker] 2015-06-11T17:55:55Z
1175457 Reading list super toast generated by long tapping on the reader view icon from URL Bar is displayed too short on screen NEW 2015-07-15T22:53:01Z
1177414 Queued tabs stall on load ASSIGNED Martyn Haigh (:mhaigh) 2015-07-22T14:53:21Z
1178503 Remove nightly-only flag for QR code input NEW Karim Benhmida (:karim) 2015-07-22T19:46:40Z
1179184 Webm video does not start to play automatically with Autoplay preference enabled NEW Randall Barker [:rbarker] 2015-07-02T17:44:55Z
1180597 Wrong display for more than two doohangers NEW Chenxia Liu [:liuche] 2015-07-17T18:48:50Z
1183559 “Import from Android” crashes on Android M preview 2 NEW Sebastian Kaspari (:sebastian) 2015-07-22T16:44:31Z


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

Nightly

  • Next Build:
ID Summary Status Assigned to Last change time
1047127 Panning very stuttery on this page with overflow-x NEW 2015-06-10T18:43:44Z
1114096 Wrong tab got mirrored NEW 2015-06-17T18:30:58Z
1126244 Create a maximum reader mode cache size and evict records when necessary ASSIGNED Vivek Balakrishnan[:vivek] 2015-04-30T17:08:28Z
1131084 Can not mirror tab to Chromecast device NEW Randall Barker [:rbarker] 2015-06-17T18:31:14Z
1148391 Tapping the bottom of the screen will make the reader mode toolbar bounce up and down NEW 2015-05-28T17:18:33Z
1156553 Tab queue makes captive portal use annoying ASSIGNED Martyn Haigh (:mhaigh) 2015-06-30T14:53:55Z
1168867 Size of new Gecko selection carets doesn’t take font inflation into account NEW 2015-06-18T17:33:40Z
1171860 Tapping the tab queue notification will open the link in normal browsing with “Open links in Private browsing” pref enabled NEW 2015-06-08T17:30:23Z


8 Total;
8 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.

iOS:

  • allenngn fixed bug 1178394 – Screenshot tab when leaving a tab through a link

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!

JChen

  • TRIBE
Fixed
Working on

GCP

Last week:

  • PTO

This week:

  • Fixup Shared memory video IPC buffer pools
  • Tracking Protection work

Randall Barker

Last Week:

  • PTO

This Week:

  • Catch up on bugmail
  • Figure out what needs to be done to wrap up Autoplay blocker.

Eugen Sawin

  • PTO
  • Looking into webapp regression
Fixed
Working on

Dylan Roeh

Fixed
Working on

Brian Nicholson

  • PR up for search debounce regression (bug 1186318)
  • PR up for URL bar refactor (bug 1184239)
  • Next up: Fixing session store

Bryan Munar

Bugs Killed:

Bugs Going to Die:

WesJ

  • bug 1184582 – Group top sites tiles by domain. Debate about if we should do this or not, but patch is up.
  • bug 1184783 – FaviconFetcher should use a way of loading urls that uses our UserAgent. Ratholed myself into some extra fixes here. Splitting this us into smaller patches. Screenshots in the PR if you’re interested: https://github.com/mozilla/firefox-ios/pull/779
  • bug 1183393 – Favicon dates should be stored in the faviconSites table. Punting on Favicon expiration till 1.1 probably. There’s also some disucssion about the schemas in here.
  • bug 1167334 – Remember Password prompt automatically dismisses on sign-in. Looking on it.
  • Next week is my last week :( Will un-assign and make sure any WIP is up and available before then.

liuche

Highlights: Mixed Content notifications, handling passive mixed content

Present:

karim

Past:

Present:

Margaret

Highlights:

Past:

Present:

jonalmeida

  • Making amends to reviews
  • Looking into Robocop intermittent failures.
  • (Maybe this week) Early start looking into moving fonts into an addon.

Past:

Present:

mcomella

(Read-only, available intermittently today – errands)

  • Intent handling
  • Sec bugs
  • Search engine bar regression
  • TODO: PB refinements

Past:

Present:

rnewman

  • Android: crash fix for Beta (needs to be uplifted), reviews.
  • iOS: landed local visit upweighting. Open in Firefox reference project is done. Reviews and planning.
  • Indian community meeting and fatfennec guidance.
  • Miscellaneous meetings, reviews, the usual.
Fixed
Working on

Sebastian

Highlights:

Noise:

Martyn Haigh

Past:

Present:

Steph

Fixed:

  • Land Tab Tray animation fixes
  • Investigate more scrolling issues

Ally

  • about:logins
    • original mvp list is done
    • expanded to include:
      • 1183319 Add telemetry probe in about:logins for load time of getAllLogins() in the wild
        • in privacy review
      • 1183234 Telemetry probe for usage of about:logins
        • in privacy review
      • 1101746 Display message when no passwords are present
        • in review
      • 1155345 UI affordance during loading of list items in about:passwords
        • landing later today
      • 1185780 – disable save if you delete the entire password in about:logins

|

  • kidfox https://wiki.mozilla.org/Mobile/Projects/Kinderfox
    • figuring out lightweight theme + restricted profiles + fun = 1182514
    • ui changes
      • 1125980 KidFox: Restricted profiles – Hide other non-essential Settings items – Privacy > Clear now
      • 1125979 KidFox: Restricted profiles – Hide other non-essential Settings items – Privacy > Clear on exit
      • 1125977 KidFox: Restricted profiles – Hide other non-essential Settings items – Privacy > Use master password

Emily

Past:

Present:

BLassey

Fixed
Working on

Antlam

  • Past
  • Upcoming

Robin

  • Last week: attended TRIBE.

This week:

  • Kinderfox!
  • all the UI-Reviews
  • Wrapping up empty panels
  • View Later extension toasts

QA

Feature Focus

  • Android Roadmap in Aha!
  • Suggest new features for the Android Roadmap Here
  • Tracking Protection tracking doc – On track for 42, but there are a couple of blocked items
    • Latest Status Report is HERE
  • Kinderfox tracking doc – in a very early state, not a lot to report yet in terms of progress
    • Status report in progress. Will be published HERE by the end of the week
  • iOS Roadmap in Aha!
  • iOS Trello Board
  • Suggest new features for the iOS Roadmap Here
  • New status report to be published later today HERE
  • Team working to burn down tracked bugs. Generally progressing well. On average about 40 new tracking nominations coming in per week, but the tracking bug count is trending down, not up. Will be a pretty chart in the status report :-)
  • Aiming to make the Go/No-Go for store submission shortly after the end of the month
  • Latest survey results are in: Click Here to read the report.
  • Some preliminary discussion around planning for V1.1 and v2.0 but no heavy discussions planned until after V1.0 is out the door, so early September.

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-07-22

Schedule & Progress onUpcoming Releases (Liz/Sylvestre/Lawrence/Ritu)

  • 40.0b5 release was dropped
    • The build was not available in time for QE to sign-off
  • 40.0b6 desktop and mobile released yesterday (7/21/15)
  • Next up: 40.0b7 gtb Thursday 7/23/2015

Firefox Desktop & Platform (Javaun/Chad/Martin)

Current Releases

42 Campaign work (TP)
Desktop Control Center and TP work is on track. We are highly aware of string freeze deadline and have imposed early deadlines for creative and legal reviews so that we can hit our 8/10 uplift. There are some known unknowns. Doing are best to make L10N’s life easier.

40
We will put win64 builds out on /all. We don’t have sandboxing until 41, nor some other added UX features. We won’t promote heavily until we have those safety/user features in there, since these are better for a broader audience.


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

Mozilla Add-ons BlogAdd-ons Update – Week of 2015/07/22

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.

Add-ons Forum

As we announced before, there’s a new add-ons community forum for all topics related to AMO or add-ons in general. The Add-ons category is one of the most active in the community forum, so thank you all for your contributions! The old forum is still available in read-only mode.

The Review Queues

  • Most nominations for full review are taking less than 10 weeks to review.
  • 308 nominations in the queue awaiting review.
  • Most updates are being reviewed within 10 weeks.
  • 127 updates in the queue awaiting review.
  • Most preliminary reviews are being reviewed within 12 weeks.
  • 334 preliminary review submissions in the queue awaiting review.

The unlisted queues aren’t mentioned here, but they are empty for the most part. We’re in the process of getting more help to reduce queue length and waiting times for the listed queues.

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 40 Compatibility

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

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. The wiki page on Extension Signing has information about the timeline, as well as responses to some frequently asked questions.

A recent update is that Firefox for Android will implement signing at the same time as Firefox for Desktop. This mostly means that we will run the automatic signing process for add-ons that support Firefox for Android on AMO, so they are all ready before it hits release.

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 content code in a different process than browser code. 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 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: Classes

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.

Today, we get a bit of a respite from the complexity that we’ve seen in previous posts in this series. There are no new never-before-seen ways of writing code with Generators; no all-powerful Proxy objects which provide hooks into the inner algorithmic workings of the JavaScript language; no new data structures that obviate the need for roll-your-own solutions. Instead, we get to talk about syntactic and idiomatic cleanups for an old problem: object constructor creation in JavaScript.

The Problem

Say we want to create the most quintessential example of object-oriented design principles: the Circle class. Imagine we are writing a Circle for a simple Canvas library. Among other things, we might want to know how to do the following:

  • Draw a given Circle to a given Canvas.
  • Keep track of the total number of Circles ever made.
  • Keep track of the radius of a given Circle, and how to enforce invariants on its value.
  • Calculate the area of a given Circle.

Current JS idioms say that we should first create the constructor as a function, then add any properties we might want to the function itself, then replace the prototype property of that constructor with an object. This prototype object will contain all of the properties that instance objects created by our constructor should start with. For even a simple example, by the time you get it all typed out, this ends up being a lot of boilerplate:

function Circle(radius) {
    this.radius = radius;
    Circle.circlesMade++;
}

Circle.draw = function draw(circle, canvas) { /* Canvas drawing code */ }

Object.defineProperty(Circle, "circlesMade", {
    get: function() {
        return !this._count ? 0 : this._count;
    },

    set: function(val) {
        this._count = val;
    }
});

Circle.prototype = {
    area: function area() {
        return Math.pow(this.radius, 2) * Math.PI;
    }
};

Object.defineProperty(Circle.prototype, "radius", {
    get: function() {
        return this._radius;
    },

    set: function(radius) {
        if (!Number.isInteger(radius))
            throw new Error("Circle radius must be an integer.");
        this._radius = radius;
    }
});

Not only is the code cumbersome, it’s also far from intuitive. It requires having a non-trivial understanding of the way functions work, and how various installed properties make their way onto created instance objects. If this approach seems complicated, don’t worry. The whole point of this post is to show off a much simpler way of writing code that does all of this.

Method Definition Syntax

In a first attempt to clean this up, ES6 offered a new syntax for adding special properties to an object. While it was easy to add the area method to Circle.prototype above, it felt much heavier to add the getter/setter pair for radius. As JS moved towards a more object-oriented approach, people became interested in designing cleaner ways to add accessors to objects. We needed a new way of adding “methods” to an object exactly as if they had been added with obj.prop = method, without the weight of Object.defineProperty. People wanted to be able to do the following things easily:

  1. Add normal function properties to an object.
  2. Add generator function properties to an object.
  3. Add normal accessor function properties to an object.
  4. Add any of the above as if you had done it with [] syntax on the finished object. We’ll call these Computed property names.

Some of these things couldn’t be done before. For example, there is no way to define a getter or setter with assignments to obj.prop. Accordingly, new syntax had to be added. You can now write code that looks like this:

var obj = {
    // Methods are now added without a function keyword, using the name of the
    // property as the name of the function.
    method(args) { ... },

    // To make a method that's a generator instead, just add a '*', as normal.
    *genMethod(args) { ... },

    // Accessors can now go inline, with the help of |get| and |set|. You can
    // just define the functions inline. No generators, though.

    // Note that a getter installed this way must have no arguments
    get propName() { ... },

    // Note that a setter installed this way must have exactly one argument
    set propName(arg) { ... },

    // To handle case (4) above, [] syntax is now allowed anywhere a name would
    // have gone! This can use symbols, call functions, concatenate strings, or
    // any other expression that evaluates to a property id. Though I've shown
    // it here as a method, this syntax also works for accessors or generators.
    [functionThatReturnsPropertyName()] (args) { ... }
};

Using this new syntax, we can now rewrite our snippet above:

function Circle(radius) {
    this.radius = radius;
    Circle.circlesMade++;
}

Circle.draw = function draw(circle, canvas) { /* Canvas drawing code */ }

Object.defineProperty(Circle, "circlesMade", {
    get: function() {
        return !this._count ? 0 : this._count;
    },

    set: function(val) {
        this._count = val;
    }
});

Circle.prototype = {
    area() {
        return Math.pow(this.radius, 2) * Math.PI;
    },

    get radius() {
        return this._radius;
    },
    set radius(radius) {
        if (!Number.isInteger(radius))
            throw new Error("Circle radius must be an integer.");
        this._radius = radius;
    }
};

Pedantically, this code isn’t exactly identical to the snippet above. Method definitions in object literals are installed as configurable and enumerable, while the accessors installed in the first snippet will be non-configurable and non-enumerable. In practice, this is rarely noticed, and I decided to elide enumerability and configurability above for brevity.

Still, it’s getting better, right? Unfortunately, even armed with this new method definition syntax, there’s not much we can do for the definition of Circle, as we have yet to define the function. There’s no way to get properties onto a function as you’re defining it.

Class Definition Syntax

Though this was better, it still didn’t satisfy people who wanted a cleaner solution to object-oriented design in JavaScript. Other languages have a construct for handling object-oriented design, they argued, and that construct is called a class.

Fair enough. Let’s add classes, then.

We want a system that will allow us to add methods to a named constructor, and add methods to its .prototype as well, so that they will appear on constructed instances of the class. Since we have our fancy new method definition syntax, we should definitely use it. Then, we only need a way to dfferentiate between what is generalized over all instances of the class, and what functions are specific to a given instance. In C++ or Java, the keyword for that is static. Seems as good as any. Let’s use it.

Now it would be useful to have a way to designate one of the methods of the bunch to be the function that gets called as the constructor. In C++ or Java, that would be named the same as the class, with no return type. Since JS doesn’t have return types, and we need a .constructor property anyway, for backwards compatibility, let’s call that method constructor.

Putting it together, we can rewrite our Circle class as it was always meant to be:

class Circle {
    constructor(radius) {
        this.radius = radius;
        Circle.circlesMade++;
    };

    static draw(circle, canvas) {
        // Canvas drawing code
    };

    static get circlesMade() {
        return !this._count ? 0 : this._count;
    };
    static set circlesMade(val) {
        this._count = val;
    };

    area() {
        return Math.pow(this.radius, 2) * Math.PI;
    };

    get radius() {
        return this._radius;
    };
    set radius(radius) {
        if (!Number.isInteger(radius))
            throw new Error("Circle radius must be an integer.");
        this._radius = radius;
    };
}

Wow! Not only can we group everything related to a Circle together, but everything looks so… clean. This is definitely better than what we started with.

Even so, some of you are likely to have questions or to find edge cases. I’ll try to anticipate and address some of these below:

  • What’s with the semicolons? – In an attempt to “make things look more like traditional classes,” we decided to go with a more traditional separator. Don’t like it? It’s optional. No delimiter is required.

  • What if I don’t want a constructor, but still want to put methods on created objects? – That’s fine. The constructor method is totally optional. If you don’t supply one, the default is as if you had typed constructor() {}.

  • Can constructor be a generator? – Nope! Adding a constructor that’s not a normal method will result in a TypeError. This includes both generators and accessors.

  • Can I define constructor with a computed property name? – Unfortunately not. That would be really hard to detect, so we don’t try. If you define a method with a computed property name that ends up being named constructor, you will still get a method named constructor, it just won’t be the class’s constructor function.

  • What if I change the value of Circle? Will that cause new Circle to misbehave? – Nope! Much like function expressions, classes get an internal binding of their given name. This binding cannot be changed by external forces, so no matter what you set the Circle variable to in the enclosing scope, Circle.circlesMade++ in the constructor will function as expected.

  • OK, but I could pass an object literal directly as a function argument. This new class thing looks like it won’t work anymore. – Luckily, ES6 also adds class expressions! They can be either named or unnamed, and will behave exactly the same way as described above, except they won’t create a variable in the scope in which you declare them.

  • What about those shenanigans above with enumerability and so on? – People wanted to make it so that you could install methods on objects, but that when you enumerated the object’s properties, you only got the added data properties of the object. Makes sense. Because of this, installed methods in classes are configurable, but not enumerable.

  • Hey, wait… what..? Where are my instance variables? What about static constants? – You caught me. They currently don’t exist in class definitions in ES6. Good news, though! Along with others involved in the spec process, I am a strong proponent of both static and const values being installable in class syntax. In fact, it’s already come up in spec meetings! I think we can look forward to more discussion of this in the future.

  • OK, even still, these are awesome! Can I use them yet? – Not exactly. There are polyfill options (especially Babel) so that you can play around with them today. Unfortunately, it’s going to be a little while before they are natively implemented in all major browsers. I’ve implemented everything we discussed here today in the Nightly version of Firefox, and it’s implemented but not enabled by default in Edge and Chrome. Unfortunately, it looks like there’s no current implementation in Safari.

  • Java and C++ have subclassing and a super keyword, but there’s nothing mentioned here. Does JS have that? – It does! However, that’s a whole other post’s worth of discussion. Check back with us later for an update about subclassing, where we’ll discuss more about the power of JavaScript classes.

I would not have been able to implement classes without the guidance and enormous code review responsiblity of Jason Orendorff and Jeff Walden.

Next week, Jason Orendorff returns from a week’s vacation and takes up the subject of let and const.

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 MozillaBugzilla Development Meeting

Bugzilla Development Meeting Help define, plan, design, and implement Bugzilla's future!

Meeting NotesChannel: 2015-07-21

Attendees

lmandel, rayborn, kairo, kglazko, ritu, bhearsum, kbrosnan, milan

Schedule Update

  • 40 b5 desktop dropped
    • Builds could not be generated due to GPG signing issue.
  • 40 b6 mobile shipped to Play store
  • 40 b6 desktop on schedule to ship today

Stability

  • Nightly: Huge spike because of e10s+a11y, see bug 1185726

Aurora / Dev Edition

Beta

  • Overall rate: 1.3 (target: 1.2-1.4), plugin hangs: 0.32 (target: <0.1)
  • plugin hangs: bug 1170231 should fix that in b6.
  • gfx shutdownhang bug 1159751 is 4.1% in b4
  • bug 1158189 (net::nsHttpConnectionMgr::Shutdown) 1.8%
  • bug 1106264 (large OOM in nsSameProcessAsyncMessageBase) is 1.4%, #2 crash score
  • bug 1181735 (AudioMixer::FinishMixing() is 0.8%, #3 crash score
  • bug 1181714 (MS Office IME) 0.6%, disabling TSF in b6 should help
  • bug 1182207 (GC OOM) is 1%
  • bug 1182197 (dom::Promise::MaybeSettle) is 1%

Release

  • Overall rate: 1.0
  • Flash crashes seem to go down, looks like the fix from them helped for our issue as well.

Mobile

QE

Beta

  • waiting for updates to be available on beta-cdntest

Mobile

  • had some issues with the Play Store publishing b4
    • needs investigation

RelEng

  • New GPG key deployed

User Advocacy

  • No updates

Special Topics

Post-Mortem (Tues 2wks from GA Release)


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 NotesFirefox Status: 2015-07-21

General Topics / Roundtable

(tips/tricks, productivity improvements, industry news)

  • New BrowserTestUtils directory for shared testing utilities
    • BrowserTestUtils has a bunch of useful utilities for testing and avoids having duplication between head.js files.
    • ContentTask.spawn is useful for running code in the content process in an e10s-safe way.
  • How to get a profile from a hung process (Mac and Linux)
  • Easily add live pref-controlled logging to your module which outputs to stdout and the Browser Console (with inspectable objects):

XPCOMUtils.defineLazyGetter(this, "log", () => {
  let ConsoleAPI = Cu.import("resource://gre/modules/devtools/Console.jsm", {}).ConsoleAPI;
  let consoleOptions = {
    maxLogLevelPref: PREF_LOG_LEVEL,
    prefix: "My Log Prefix",
  };
  return new ConsoleAPI(consoleOptions);
});

  • Frequency of this meeting
    • May change to once every 2 weeks. No decision made yet.
  • What is the status of feature reviews?
    • Need to ask bsmedberg. mfinkle gave examples of more things being considered for the list.
  • What is the status of product line reviews?
    • One happened yesterday. An update should occur shortly.
  • Have we centrally documented our new sub-team structure?
    • Helps to find whom to ask if you have a question about something
    • Existing module system doesn’t have answers for User Experience and Product
    • Mossop will document out what the sub-teams are and possibly list members.

Friends of the Firefox team

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

Thanks to the following people for regular contributions to the desktop Firefox front-end in the last year!

  • Alice White [:Alice0775]
  • Aryx [:archaeopteryx][:aryx]
  • Brian R. Bondy [:bbondy]
  • Ekanan Ketunuti
  • Ian Moody [:Kwan]
  • Luís Miguel [:Quicksaver]
  • Masatoshi Kimura [:emk]
  • Richard Marti [:Paenglab]
  • Sören Hentzschel
  • Tim Nguyen [:ntim]
  • Tooru Fujisawa [:arai]
  • and probably others who were missed!

Project Updates

e10s

  • Team is in “M8″ – see list of M8 bugs here
    • M8 slated to be finished over the rest of the quarter
    • The end goal of M8 is to make e10s ready enough to be enabled by default on Aurora
    • Nobody is perfect. There are lingering M7 and M6 bugs still. :/ We’re working on it.
  • Team is starting to shift focus from “make e10s work” to “fix add-ons with e10s” and “make e10s fast”
  • Fun facts:
  • Reminder:
    • Bugs that should be triaged by the e10s team should be marked with the tracking-e10s flag set to ?
    • Triage occurs every Tuesday (4PM ET) and Thursday (12PM ET) in the e10s vidyo room.
    • Come join us in #e10s for your e10s questions.

Go Faster

Privacy/Security

  • Control center replaces Larry
  • Planning to ship Tracking Protection in Private Browsing for 42
    • Likely one tracking list with a tour (spec).
  • Interns are continuing great work on the password manager for 42.

Search

  • Aiming to ride 42 train
    • Unified Autocomplete bugs still being resolved
    • Search suggestions in the awesomebar

Windows 10

  • Ensure Firefox is not completely broken in Firefox 40 (fix critical bugs) and tweak UI to make it fit in better with Windows 10 look and feel overall.
    • Windows 10 updates officially to start to go out on July 29th, 2015.
    • Firefox 40 GA on Aug 11th, 2015.
  • Looking into changes to how default applications are set

Details

  • Third Tuesday of the month – 8:00am Pacific, 11:00am Eastern, 15:00 UTC
  • Handy local meeting time link
  • Dial-in: conference# 91337
    • US/Toll-free: +1 800 707 2533, (pin 369) Conf# 91337
    • US/California/Mountain View: +1 650 903 0800, x92 Conf# 91337
    • US/California/San Francisco: +1 415 762 5700, x92 Conf# 91337
    • US/Oregon/Portland: +1 971 544 8000, x92 Conf# 91337
    • CA/British Columbia/Vancouver: +1 778 785 1540, x92 Conf# 91337
    • CA/Ontario/Toronto: +1 416 848 3114, x92 Conf# 91337
    • UK/London: +44 (0)207 855 3000, x92 Conf# 91337
    • FR/Paris: +33 1 44 79 34 80, x92 Conf# 91337
  • irc.mozilla.org #fx-team for backchannel
  • “Firefox” Vidyo Room

Meeting NotesSeaMonkey: 2015-07-21

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

  • Need to check if the carousel within Add-On Manager can be used for SeaMonkey specific content. Ted might know.

OPEN

  • 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

Status of the SeaMonkey Buildbot Master and Tree

  • Notes:
    • Windows nightly trunk builds are unavailable due to various bugs such as bug 1092468 and bug 1108970. Migrating our Windows builders to Win2008 and our compiler toolchain to VS2013 would likely solve this and other bustages.
    • Ratty has put up some win32 contributed builds on http://seamonkey.callek.net/contrib/.
    • 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.
    • 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).
    • For various reasons we don’t have a working SeaMonkey Treeherder.
    • wrt bug 1155011, we already have a Soccoro token. The patches on bug 1155013 require approval and then pushed and the work-around patches backed out.
  • [21th July 2015]
    • All trees:
      • Windows platform still busted due to needing Win2008R2 installed.
      • We have a loaner which ewong is working on (see blog for more information).
    • comm-central:
      • All platforms: Busted due to bug 1185583. Patch is awaiting review.
  • See RelEng page for the RelEng status history.

Release Train

SeaMonkey 2.35 Release
  • We plan to release SeaMonkey 2.35 asap in July.
    • For windows builds, we have a loaner win machine from Mozilla for us (i.e. ewong) to do manual window builds.
    • Ratty has landed various patches on the comm-release’s SEAMONKEY_2_35_RELEASE_BRANCH (bug 1177041) and merged recent post-38.1.0 checkins into it on mozilla-esr38.
ewong
  • I have (albeit inconsistently) generated Nightly Win32 trunk builds (2.39a1) and have uploaded them to http://ftp.mozilla.org/pub/mozilla.org/seamonkey/nightly/latest-comm-central-trunk.
  • bug 1177634 prevented me from building on the loaner. The patch attached to that bug is hot-patched to the source prior to the build. (Since this is a ‘building’ issue and not an application code issue, it shouldn’t affect running SeaMonkey.)
  • Complete/partial snippets are not available as I’m trying to figure ’em out.
  • After having done it for a day, the windows builds were broken by bug 1180065 and bug 1180356.
    • The patch attached to bug 1180065 was manually applied to the buildbotmaster, so it’s working now (but needs to be reviewed and pushed to the buildbotcustom repo),
    • bug 1180356 is fixed.
  • Trying to refactor the process to also include the l10n repack steps (which I’m still trying to figure out as I go along).
Ratty

DONE:

  • bug 1177041 (SM2.35-Uplift) Bugs / Patches to be uplifted to comm-release for SeaMonkey 2.35 (and dependencies).
  • bug 1185824 (SM2.35-mozilla-esr38-Uplift) Bugs / Patches to be uplifted to mozilla-esr38 relbranch for SeaMonkey 2.35.
  • Created SEAMONKEY_2_35_RELEASE_BRANCH on mozilla-esr38 (bug 1179808) and comm-release (bug 1180911.
    • SEAMONKEY_2_35_RELEASE_BRANCH on mozilla-esr38 is branched off THUNDERBIRD_38_VERBRANCH. This should contain all the stability and security fixes for mozilla-esr38 which saves us a lot of work. (seems to be the way to go)
    • Also I’ve been doing regular merges from default to SEAMONKEY_2_35_RELEASE_BRANCH which means we are at par with Gecko 38.1.0.

IN PROGRESS:
TO DO:

Extensions and Plugins Compatibility Tracking

  • See Basics page. Please only list current changes here.
  • Addon Compatibility Listings
  • We are looking for a new place to host the Addon Compatibility Listings for the Add-on Converter in order to make it easy to maintain and to serve as the main database for the AMO browsing extension in the future. The details are in this post.
  • 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 [1].
    • looking for a better(?) home for extension-converter pages, along with a way to track successful and conversion-failed add-ons, and respective integration into SeaMonkey by add-on or manager overlay [2], bug 1145026.
    • 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.
  • The Thunderbird team is now shipping Lightning with Thunderbird. IanN will work on shipping lightning too. Related bugs:
    • bug 516026 Integrate Lightning Into SeaMonkey by Default and Ship SeaMonkey with Lightning Enabled
    • 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.

2.x (Last, Current, Next)

2.33

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

2.35

open tracking (1)
tracking requests (3)
targeted (0)
fixed (40)

  • SeaMonkey 2.35 Release Notes (yet to come)
  • Mozilla-central bugs that affect us:
    • Current 38.0-branch releases are subject to Logjam weak-encryption downgrade attack [3] due to security.ssl3.dhe_rsa_aes_128_sha and security.ssl3.dhe_rsa_aes_256_sha being enabled by default
      • bug 1138554 fixed in NSS 3.19.1, uplifted to branches for 39.0+ with bug 1166031, and verified fixed for SM 2.36
      • 2.35 release branch has been established per bug 1179808 to proceed with mozilla-esr38 (THUNDERBIRD_38_VERBRANCH) so it will ship with NSS 3.19.2
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:
  • 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)
      • further work to separate function from style in CSS for about:privatebrowsing in bug 1178008 (3rd-party themes)
    • 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.
      • SeaMonkey won’t be allowed to use the Firefox Sync 1.5 servers. Ewong has set up a FxA 1.5 server and is looking into hosting our own FxAccounts 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 and Thunderbird have migrated to jsdownloads.
    • 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. Neil has a WIP patch on hand.
    • Removal of SSL 3.0 support after POODLE Attack with 2.36, see bug 1106470.
      • bug 1137991 has removed SSL 3.0 checkbox from SSL preferences
      • bug 1149581 covers removal of the related strings
      • Firefox has proceeded with the removal in 39.0 given that Chrome goes the same way [4]
    • We’ve picked up he default for security.tls.version.min from Mozilla Core, but security.tls.version.fallback-limit is new. So we need to consider adding the latter to our preferences UI (bug 1123673).
      • Currently unclear whether or not this should be done after bug 1084025 disable insecure TLS version fallback entirely by default [5]
      • alternative proposal is to make whitelist for acceptable fallback sites available in the UI, which seems to make more sense.

Feature List, Planning

With Firefox announcing that XUL/XBL will be removed in the next couple of years probably, what is SM’s long-term plan to be able to maintain its UI? Discuss.

  • was discussed last time and deferred due to the lack of any specific roadmap and insufficient information what exactly is planned.

Bug statistics for the last two (full) weeks: 30 new, 13 fixed, 19 triaged.

  • Medium triaging effort, 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:
46 review
5 super-review
5 ui-review
11 feedback

  • See Feature List page for major wanted/needed features.
  • TODO:
    • 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).

ewong
  • ‘Fixed':
    • Non-SM bugs that fixes some bustages that affect SM.
      • bug 1177634 – error occurred while processing the following file: access denied to suite/app.mozbuild
      • bug 1181434 – Fix fallout from bug 905127 due to missing headers for mail/ and mailnews/
  • Still working on the loaner: repacks and builds.
IanN
  • Usual testing, reviewing and commenting.
  • Fixed:
  • Fixed for c-c:
  • Fixed for m-c:
  • Fixed for m-i:
  • Pending tree opening:
  • Pending approval for check in:
  • Checked in pending review:
  • Waiting for feedback/review/information:
    • bug 1061348 Port |bug 575283 – Cleanup mozconfig files on all platforms| to SeaMonkey
    • bug 1163441 Use FINAL_TARGET_FILES and DIST_FILES for Thunderbird themes
  • 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 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.
Rainer Bielefeld
Pending from Meeting 2015-07-07

I am going to contact lemon_juice and to discuss with him how to get some progress for folowing bug reports Rrbd (talk) 09:13, 21 July 2015 (PDT)

    • Anything new about bug 1151227 – Add-on Manager discovery pane: add Banner with link to Add-on-converter? Rrbd (talk) 04:09, 7 July 2015 (PDT)
    • Anything new about bug 1145026 – AMO Add-On-Descriptions: Add link function leading to SeaMonkey add-on-converter and filling URL input pane? Rrbd (talk) 04:11, 7 July 2015 (PDT)
New
  • This Page is more or less the only existing source with information concerning currently discussed issues, project progress and so on. But for people only reading from time to time it is difficult to see what are pending items and what are latest news. We should try to add such info without causing too much more work. Rrbd (talk)
  • The picture at the right shows weekly statistics for German Language SeaMonkey Blog Rrbd (talk)
Ratty

Worked on SeaMonkey 2.35 Release. Bug triage and necessary preparations.

  • bug 1177041 (SM2.35-Uplift) Bugs / Patches to be uplifted to comm-release for SeaMonkey 2.35 (and dependencies).
  • bug 1185824 (SM2.35-mozilla-esr38-Uplift) Bugs / Patches to be uplifted to mozilla-esr38 relbranch for SeaMonkey 2.35 (and dependencies).
  • Created release branches on comm-release, and mozilla-esr38.

In Progress:

  • bug 507676 Port bug 435804 Remaining rdf cleanup for FilterListDialog| to SeaMonkey.
  • bug 1011857 Implement CustomizableUI for SeaMonkey.
  • bug 1164817 .eml files should be opened in a mail message window and not in a browser window
  • bug 1176602 In message compose make sure that the dictionary stored in spellchecker.dictionary is valid (Adapt Thunderbird bug 1175908).

Has Review:

  • bug 1153577 Users should be able to hide the menubar and show it with the ALT key.
  • bug 1174601 Copy nsDragAndDrop.js from toolkit to SeaMonkey because it will be removed in bug 1162050.
  • bug 1177979 Gtk3 build fail with /usr/bin/ld: libxul.so: hidden symbol `_ZN26nsMessengerUnixIntegrationC1Ev’ isn’t defined.
  • bug 1178459 Run password autofill code when a password field is added to a document outside of a <form> (Port relevant parts of bug 1168707).
  • bug 1183351 Update suite moz.build files for GTK3.

Fixed:

TODO:

  • Packaging updates.
  • Safe Browsing updates.
  • According to John-Galt the reason we have a blank space in the discovery pane of the addons manager is that our carousel is empty. So we can fill it with links to the addon converter etc (we may need admin access). Need to ask Mossop who in Firefox land is responsible for updating their Carousel and what the procedure is.

Other stuff:

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

Still waiting for checkin:

  • bug 1141324 Upgrade the SSL panel in Privacy & Security preferences to refer to TLS {instead,too}.

Still waiting for ui-review or review:

  • bug 1152644 Add UI in Notifications preference pane whether or not to use libnotify for new-mail alerts on Linux.
  • bug 1032302 8BITMIME keyword ignored in EHLO greeting, BODY=8BITMIME absent in MAIL request for 8-bit transfers. (MailNews)

Still waiting for feedback:

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

Reopened for a minor follow-up fix, awaiting review:

  • bug 1139004 Rename all “Character Encoding” to “Text Encoding” in Help content (Toolkit bug 951695).

May need retargeting:

  • bug 1123673 Consider exposing security.tls.version.fallback-limit in SSL prefpane to accommodate SSL 3.0 legacy sites.

Waiting for dependencies:

  • bug 1149581 Remove SSLv3 strings from SSL panel in Privacy & Security preferences.
    • to be reviewed once bug 1137991 has hit the releases (Firefox 39.0 was shipped with the SSLv3 removal code).
    • per bug 1141394, emk wants to wait until Chrome 44 is released before removing Firefox strings and interfaces.

Other:

  • Bug triage, testing, and commenting for SeaMonkey and MailNews Core.
  • End-user information and discussion on MozillaZine.

Any other business?


SeaMonkey Meeting Details

QMOHelp us Triage Firefox Bugs – Introducing the Bug Triage tool

Interested in helping with some Firefox Bug Triage?  We have a new experimental tool that makes it really easy to help on a daily basis.

Please visit our new triage tool and sign up to triage some bugs. If you can give us a few minutes of your day, you can help Mozilla move faster!

Air MozillaJuly Privacy Lab - Crypto Wars with guest speakers from CDT and EFF

July Privacy Lab - Crypto Wars with guest speakers from CDT and EFF July's Privacy Lab will include guest speakers from CDT and EFF to talk about backdoors and crypto wars.

Mozilla ITTroubleshooting the Internet

Introduction

If you’re working from home, a coffee shop or even an office and are experiencing “issues with the Internet” this blogpost might be useful to you.
We’re going to go through some basic troubleshooting and tips to help solve your problem. At worse gather data so your support team can investigate.

Something to keep in mind while reading is that everything is packets. When downloading a webpage, image, email or video-conferencing, you have to imagine your computer splitting everything into tiny numbered packets and sending them to their destination through pipes, where they will be reassembled in order.
Network issues are those little packets not getting properly from A to Z, because of pipes full, bugs, overloaded computers, external perturbations and a LOT more possible reasons.

Easy tests

We can start by running some easy online tests, even if not 100% accurate, you can run them in a few clicks from your browser (or even phone) and can point toward the right direction.

Speedtest is a good example. Hit the big button and wait, don’t run any download or bandwidth heavy applications. The best is to know what a “normal” value is, so you can compare both.

As some sneaky providers can prioritize connections to the famous Speedtest, you can try another less known website like ping.online.net. Start the download of a large file and check how fast it goes.

Note that the connection is shared between all the connected users. So one can easily monopolize the bandwidth and clog the pipe for everyone else. This is less likely to happen in our offices where we try to have pipes large enough for everyone, but can happen in public places. In this case there is nothing much you can do.

Next is a GREAT one: Netalyzr. You will need Java but it’s worth it (first time I have ever said that). There is also an Android app but it’s better to run it from the device experiencing the issue (but it’s also interesting to see how good your mobile/data “Internet” really is). Netalyzr will runs TONS of tests, DNS, blocked ports, latency, etc… And give you a report quite easy to understand or share with a helpdesk. See Mozilla’s Paris office.

Screenshot of Netalyzr resultSome ISPs start to roll out a new version of the Internet, called IPv6 (finally!). As it’s “new” for them, there can be some issues. To check that, run the test on Test-ipv6.

Basic connectivity

If the previous tests show that something is wrong or you still have a doubt, these tools are made to test basic connectivity to the Internet as well as checking the path and basic health of each network segments from you to a distant server.

“ping” will send probes each second to a target and will reports how much time it takes (round trip) to reach it. For an indication, a basic time between Europe and the US west coast is about ~160ms, US east to US west coast ~90ms, Taipei to Europe ~300ms. If it is higher than that you might indeed see some “laggish/slow Internet”.

Screenshot of pings to Wikipedia“traceroute” is a bit different; it does the same but shows you the intermediate hops in between source and destination.

The best in this domain is called “mtr” and is a great combination of the previous 2: for each hop, it runs a continuous ping. Add –report so you can easily copy and paste the result if you need to share it. Having some higher latency or packet loss for a hop or two is usually not an issue. This is because network devices are not made to reply to those tests, they just do it if they are not too busy with their main function, redirecting a packet in a direction or another. A good issue indicator is if many nodes (and especially your target) start showing packet loss or higher latency.

Screenshot of an mtr to www.mozilla.orgIf the numbers are high on the first hop this means something is wrong between your computer and your home/office/bar’s Internet gateway.

If the issues appear “around the middle” it’s an issue with your ISP or your ISP’s ISP and the only thing you can do is to call their support to complain or change ISP when possible. That is what happened with Netflix in the US.

If the numbers are high near the really end it’s probably an issue with the service you’re testing, try to contact them.

Wireless

An easy one when possible. If you are on wireless try to switch to a wired network and re run the tests mentioned above. It might be surprising but wireless isn’t magic :)

Most of the home and small shops wifi routers (labeled “BGN” or 2.4Ghz) can only use 1 out of 3 frequencies/channels to talk to their clients, and clients have to wait for their turn to talk.
So imagine your neighbor’s wifi is on the same frequency. Even if your wifi distinguishes your packets from your neighbor’s, they will have to share the channel. If you have more than 2 neighbors (Wireless networks visible in the wifi list), you will have an non optimal wireless experience and this is exponential.

To solve/mitigate it you can use an app like “Wifi Analyzer” on Android. X are the frequencies, only 1, 6 and 11 are really usable as they don’t overlap. and Y is how noisy they are. Locate yours, then if a channel is less busy go in your wireless router’s settings and move to that one.

Screenshot of wifi analyserIf they are all busy, last option is to buy a router that supports more recent standard, labeled “ABGN” (even now “AC”) or 5Ghz. Most high end phones and laptop support it as well. That range has around 20 usable channels instead of 3.

Another common issue in public places is when some people can’t connect at all but other people don’t have any issue. This is usually due to a mechanism called DHCP that allocates an address (here you can see it as a slot) to your device. Default settings are made for small networks and remember slots for a long time even if they are not used anymore. It’s usually possible to reduce the “remember” time and/or enlarge the pool of slots in the router’s settings.

Wired

These are less complicated to troubleshot. You can start by unplugging everything else connected to your router and see if it’s better. If not the issue might come from that box. Also be careful not to create physical loops in your network (like plugging 2 cables between your router and a switch).

Air MozillaMartes mozilleros

Martes mozilleros Reunión bi-semanal para hablar sobre el estado de Mozilla, la comunidad y sus proyectos.

about:communityHacking Tech Evangelism in Bangalore: Q & A With Kaustav Das Modak

Back in May, we completed the pilot run of a new program. Mozilla Tech Speakers is designed to empower and support technical evangelists around the world who are serving their communities as speakers and trainers, presenting Mozilla and open web technologies at conferences, workshops, and events. We’ve already posted about the first phase of the program and shared examples of talks and activities from our first cohort of participants.

Not long after that post went up, I learned that Mozilla Rep and Mozillian Tech Speaker Kaustav Das Modak was organizing a Tech Evangelism Workshop with a group of volunteers from Mozilla India’s Bangalore community. Their goal: Work together over a weekend to build confidence and communication skills for technical evangelism. Have each participant finish the weekend with a new presentation and accompanying blog post or article ready to go. The reported results were impressive.

Photo by Kaustav Das Modak

Photo by Kaustav Das Modak

I invited Kaustav to share his activity and its outcome with more Mozillians, who might want to replicate a version of this event in their own communities. The basics apply for all presenters, so you don’t have to be a technologist to find value. Here’s what I learned from Kaustav (in Q & A format):

1) Kaustav, tell us a little about who you are and the work you do as a Mozilla contributor and technical evangelist.

I’m currently working on my start-up, Applait, where we are building a unified layer for real-time communications over the internet.

I’ve been publicly involved with Mozilla a little over 2 years now. Meeting people all over the world and working on open technologies has been my motivation to volunteer with Mozilla.

I’ve always enjoyed sharing what I know with everyone else, since my childhood. My inspiration to pursue technical evangelism as a profession, and then as a passion, came from attending a workshop on technical evangelism conducted by Christian Heilmann, Robert Nyman and Ali Spivak in Bangalore in 2013.

Photo by Kaustav Das Modak.

Photo by Kaustav Das Modak.

I was involved with the Mobilizers team during the Firefox OS launch, and I try to coordinate community evangelism for Mozilla in India, whenever I can.

2) What inspired you to create this event?

I’ve been planning over a year to conduct workshops to help fellow Mozillians get more confident in presenting themselves. I have helped folks individually all along. But, the Tech Speakers pilot programme finally made me get over the lethargy and actually the start the event. I plan to make this into a series, generating a ton of useful content in the process.

3) Can you share your thinking about the agenda and how you designed it?

The core goal of the Tech Evangelism Workshop is to help participants get better at what they are already good at. Participants are asked to choose a topic in which they think they have sufficient knowledge. Then, through the rest of the workshop, they practice building content around that topic – they give 2 presentations, write a talk abstract and an article.

By the end of the workshop, they realize that they already had the capability within them. The true success of this workshop is to make participants realize that all they needed was to do quality research, better practice and letting go of the shyness within.

4) What advice would you offer for other Mozillians who would like to organize a training/workshop like this to prepare presentations and practice public speaking? Do you have specific advice for technical presenters?

One thing that has always helped is to do your homework. _Nothing_ beats a healthy research. Research your audience and respect cultural differences.

5) What are you planning next? What advice do you have for other Mozillians who want to organize a workshop focused on technical evangelism skills?

I’m already planning for a second run of this workshop. I’m also eager to help any Mozillian who needs help individually. It’s okay to ping me anytime on IRC, my nick is kaustavdm.

Meeting NotesMozilla Project: 2015-07-20

  • Every Monday @ 11:00am Pacific Time (19:00 UTC)
  • http://air.mozilla.org/ to watch and listen
  • join irc.mozilla.org #airmozilla for backchannel discussion
  • Presenters only: Vidyo room “Brownbags”. Do not use this room if you’re not planning to speak.
  • 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

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, 20 July
  • Weekly Bug Triage Day
  • OSCON, Portland, OR. 20th to 24th.
    • Held for more than 15 years, and created by O’Reilly, the aim is to show the leading and innovative technologies in OpenSource.
    • In this edition, Mozilla will have presence with a community booth, where we will show the VR technology. Mozillians: Benjamin Kerensa, Prashish Rajbhandari, Rabimba Karanjai, and Larisa Shappiro.
Tuesday, 21 July

Backdoors and Crypto Wars Privacy Lab – 4-6pm Pacific, SF Office and Air Mozilla. Remote Q&A via #privacy in IRC. Speakers from Mozilla, CDT and EFF will talk about the current federal proposals for backdoors and how and why the crypto wars are unfolding (again) in Washington, as well as what we can affirmatively do to stop any weakening of security measures.

Wednesday, 22 July
  • Weekly Bug Verification Day
  • Campus Party Recife. Olinda, Brazil. 22nd to 26th.
    • The biggest technology event at the north of Brazil. Where developers, geeks, entrepeneurs, gamers, and people interested in technology meet together. This year, we will have a lot of activities lead by the brazilian community.
    • More info on the Reps Event page.
Thursday, 23 July

At 9am PT / 4pm UTC, our open monthly Speaker Series continues. Tom Chi is co-founder of GoogleX with previous experience at Microsoft and Yahoo! Tom will talk about his approach to rapid prototyping which he’s used to lead teams to work more effectively and quickly as part of an ongoing innovation process to help solve both product and business problems.

Friday, 24 July

Project Status Updates (voice updates)

MozFest

Sarah Allen, London: Update on MozFest and recent MozRetreat planning session in Scotland.

Webmaker

Cecile Pompei, Uganda: Update on Webmaker research and workshops in Bangladesh and beyond.

Speakers

The limit is 3 minutes per topic. It’s like a lightning talk, but don’t feel that you have to have slides in order to make a presentation. If you plan on showing a video, you need to contact the Air Mozilla team before the day of the meeting or you will be deferred to the next week.

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
Sean Rich IT Product Delivery Migration Project Impacts San Francisco no n/a ftpmigration@mozilla.com
Mike Hoye Engineering Community Manager Introducing TriageBot Mozilla Toronto No None https://triagebot.mozilla.org/

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
Matt Storm Annelise Shonnard New York Office New York Office Ad Operations Manager

<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
Engagement

Mozilla L10NMozilla Baltic l10n Meet-up

At the beginning of June, together with my colleague Axel, we headed to Vilnius (Lithuania) for the Baltic l10n meet-up. The plan for the week-end was to meet some of our localization teams in the Baltic and East Europe area, get them up to speed on Mozilla’s mission and future, and discuss each team’s status and needs.

Vilnius - June 2015

The event was hosted at the Mathematics and Informatics faculty of Vilnius University, and it wouldn’t have been possible without the help and logistical support of Rimas Kudelis, historical maintainer of the Lithuanian localization, and host extraordinaire.

We managed to gather localizers for Estonian, Latvian, Lithuanian, Polish, and Ukrainian, in the same room, all together possessing a very diverse mix of experience. Localization is one of the groups at Mozilla with the highest number of “old guard” contributors, but we had a lot of people who only recently joined the project, with involvement ranging from 1 month to 1 year. As far as I know, this meet-up also holds the record for our youngest l10n contributor (Jānis, Latvian).

Given the number of “new-guard” contributors, we started the first day with an introduction on Mozilla’s mission, largely based on the presentation that Mitchell gave in Portland at the end of 2014. Then moved to other themes like Firefox 38.0.5, plans for the next southern-spring release, and the decision making process at Mozilla. On the second morning we focused on tools and Firefox OS, leaving the afternoon – like the day before – to each team to catch up with actual localization work.

During the various discussions, one interesting idea came from the Latvian team: Google is doing an incredible job with doodles, celebrating local relevant dates, historical figures, etc. Can we use home page snippets in a similar way to promote localization? For example: create a snippet with a national Latvian theme, promoting localization and targeting en-US users in Latvia. That, together with the idea of promoting alternative downloads emerged at the Celtic meet-up, would greatly improve the visibility of some of our localizations.

We also need to figure out the secret behind the growth of the Lithuanian team: it moved from being a one-man band for several years, to having several active contributors in just a couple of years.

Here’s a brief list of other topics that, I believe, require more thinking and follow-ups:

  • Decision making: sometimes localization teams feel excluded from discussions. Mozilla needs to improve the way it communicates key decisions, not just to the general public, but more importantly to the community of core contributors.
  • How can we improve the interaction with Reps, and make localization as appealing as other initiatives (maker parties, app development, etc.)?
  • l10n mailing lists: can we improve the signal to noise ratio?
  • l10n testing: how do we get access to platforms that are not available in a localization team (e.g. Windows or OS X machines, iOS devices, etc.)?

Note to self: make always sure that someone is covering the event with photos, and organize the group shot at the end of the first day. Also write these posts earlier, before memories get foggy 😉

I’d also like to thank publicly our colleague Jeff Beatty: it’s so easy to travel around the world without worries only because there’s someone behind you who’s taking care of organizing these trips down to the smallest detail, and managing the immense amount of paperwork and emails. Thanks Jeff, both from your colleagues and all the localizers who, thanks to your work, are able to enjoy these events to the fullest.

SUMO BlogWant to be a star in a SUMO video? Keep on reading!

gi-hero-questionsDear SUMO Warriors (and everyone else reading these words)!

A SUMO video?

A SUMO video! We would like to put together a fun video with your help – a video to show what SUMO is about, in an entertaining way. We want users around the world to have an instant visual reminder that the great community around Mozilla (yes, this means YOU!) have their back when trouble and errors strike.

How can you get involved?

It’s super simple!

  • Record a short (2-5 seconds) video of you, your family or friends experiencing “problems in front of a computer”.
  • Make it fun, but obvious that the person (or people) using the computers are not having a good time and they need help.
  • Record the video in .MOV, .MPEG4, .MP4 or in .AVI format.
  • Send the video via email to Michał or Madalina

More details as we get the videos from you!

Go forth and record! :-)

QMOFirefox 40 Beta 7 Testday, July 24th

I’m writing to let you know that this Friday, July 24th, we’ll be hosting the Firefox 40.0 Beta 7 Testday. The main focus of this event is going to be set on Hello – Context, Flash Plugin and Graphics. Detailed participation instructions are available in this etherpad.

No previous testing experience is required so feel free to join us on the #qa IRC channel and our moderators will make sure you’ve got everything you need to get started.

We’re looking forward to seeing you all this Friday! Let’s make Firefox better together!

Air MozillaGestión ágil de proyectos comunitarios

Gestión ágil de proyectos comunitarios En esta formación explicaremos cómo gestionar proyectos de la comunidad utilizando metodologías ágiles y cómo utilizar waffle como herramienta.

Air MozillaWebdev Beer and Tell: July 2015

Webdev Beer and Tell: July 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 in...

hacks.mozilla.orgES6 In Depth: Proxies

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.

Here is the sort of thing we are going to do today.

var obj = new Proxy({}, {
  get: function (target, key, receiver) {
    console.log(`getting ${key}!`);
    return Reflect.get(target, key, receiver);
  },
  set: function (target, key, value, receiver) {
    console.log(`setting ${key}!`);
    return Reflect.set(target, key, value, receiver);
  }
});

That’s a little complicated for a first example. I’ll explain all the parts later. For now, check out the object we created:

> obj.count = 1;
    setting count!
> ++obj.count;
    getting count!
    setting count!
    2

What’s going on here? We are intercepting property accesses on this object. We are overloading the "." operator.

How it’s done

The best trick in computing is called virtualization. It’s a very general-purpose technique for doing astonishing things. Here’s how it works.

  1. Take any picture.

    (picture of a coal power plant)

    Photo credit: Martin Nikolaj Bech

  2. Draw an outline around something in the picture.

    (same photo, with the power plant circled)
  3. Now replace either everything inside the outline, or everything outside the outline, with something totally unexpected. There is just one rule, the Rule of Backwards Compatibility. Your replacement must behave enough like what was there before that nobody on the other side of the line notices that anything has changed.

    (the circled part is replaced with a wind farm)

    Photo credit: Beverley Goodwin.

You’ll be familiar with this kind of hack from classic computer science films such as The Truman Show and The Matrix, where a person is inside the outline, and the rest of the world has been replaced with an elaborate illusion of normalcy.

In order to satisfy the Rule of Backwards Compatibility, your replacement may need to be cunningly designed. But the real trick is in drawing the right outline.

By outline, I mean an API boundary. An interface. Interfaces specify how two bits of code interact and what each part expects of the other. So if an interface is designed into the system, the outline is already drawn for you. You know you can replace either side, and the other side won’t care.

It’s when there’s not an existing interface that you have to get creative. Some of the coolest software hacks of all time have involved drawing an API boundary where previously there was none, and bringing that interface into existence via a prodigious engineering effort.

Virtual memory, Hardware virtualization, Docker, Valgrind, rr—to various degrees all of these projects involved driving new and rather unexpected interfaces into existing systems. In some cases, it took years and new operating system features and even new hardware to make the new boundary work well.

The best virtualization hacks bring with them a new understanding of whatever’s being virtualized. To write an API for something, you have to understand it. Once you understand, you can do amazing things.

ES6 introduces virtualization support for JavaScript’s most fundamental concept: the object.

What is an object?

No, really. Take a moment. Think it over. Scroll down when you know what an object is.

(picture of Auguste Rodin’s sculpture, The Thinker)

Photo credit: Joe deSousa.

This question is too hard for me! I’ve never heard a really satisfying definition.

Is that surprising? Defining fundamental concepts is always hard—check out the first few definitions in Euclid’s Elements sometime. The ECMAScript language specification is in good company, therefore, when it unhelpfully defines an object as a “member of the type Object.”

Later, the spec adds that “An Object is a collection of properties.” That’s not bad. If you want a definition, that will do for now. We’ll come back to it later.

I said before that to write an API for something, you have to understand it. So in a way, I’ve promised that if we get through all this, we’re going to understand objects better, and we’ll be able to do amazing things.

So let’s follow in the footsteps of the ECMAScript standard committee and see what it would take to define an API, an interface, for JavaScript objects. What sort of methods do we need? What can objects do?

That depends somewhat on the object. DOM Element objects can do certain things; AudioNode objects do other things. But there are a few fundamental abilities all objects share:

  • Objects have properties. You can get and set properties, delete them, and so on.
  • Objects have prototypes. This is how inheritance works in JS.
  • Some objects are functions or constructors. You can call them.

Almost everything JS programs do with objects is done using properties, prototypes, and functions. Even the special behavior of an Element or AudioNode object is accessed by calling methods, which are just inherited function properties.

So when the ECMAScript standard committee defined a set of 14 internal methods, the common interface for all objects, it should come as no surprise that they ended up focusing on these three fundamental things.

The full list can be found in tables 5 and 6 of the ES6 standard. Here I’ll just describe a few. The weird double brackets, [[ ]], emphasize that these are internal methods, hidden from ordinary JS code. You can’t call, delete, or overwrite these like ordinary methods.

  • obj.[[Get]](key, receiver) – Get the value of a property.

    Called when JS code does: obj.prop or obj[key].

    obj is the object currently being searched; receiver is the object where we first started searching for this property. Sometimes we have to search several objects. obj might be an object on receiver’s prototype chain.

  • obj.[[Set]](key, value, receiver) – Assign to a property of an object.

    Called when JS code does: obj.prop = value or obj[key] = value.

    In an assignment like obj.prop += 2, the [[Get]] method is called first, and the [[Set]] method afterwards. Same goes for ++ and --.

  • obj.[[HasProperty]](key) – Test whether a property exists.

    Called when JS code does: key in obj.

  • obj.[[Enumerate]]() – List obj’s enumerable properties.

    Called when JS code does: for (key in obj) ....

    This returns an iterator object, and that’s how a forin loop gets an object’s property names.

  • obj.[[GetPrototypeOf]]() – Return obj’s prototype.

    Called when JS code does: obj.__proto__ or Object.getPrototypeOf(obj).

  • functionObj.[[Call]](thisValue, arguments) – Call a function.

    Called when JS code does: functionObj() or x.method().

    Optional. Not every object is a function.

  • constructorObj.[[Construct]](arguments, newTarget) – Invoke a constructor.

    Called when JS code does: new Date(2890, 6, 2), for example.

    Optional. Not every object is a constructor.

    The newTarget argument plays a role in subclassing. We’ll cover it in a future post.

Maybe you can guess at some of the other seven.

Throughout the ES6 standard, wherever possible, any bit of syntax or builtin function that does anything with objects is specified in terms of the 14 internal methods. ES6 drew a clear boundary around the brains of an object. What proxies let you do is replace the standard kind of brains with arbitrary JS code.

When we start talking about overriding these internal methods in a moment, remember, we’re talking about overriding the behavior of core syntax like obj.prop, builtin functions like Object.keys(), and more.

Proxy

ES6 defines a new global constructor, Proxy. It takes two arguments: a target object and a handler object. So a simple example would look like this:

var target = {}, handler = {};
var proxy = new Proxy(target, handler);

Let’s set aside the handler object for a moment and focus on how proxy and target are related.

I can tell you how proxy is going to behave in one sentence. All of proxy’s internal methods are forwarded to target. That is, if something calls proxy.[[Enumerate]](), it’ll just return target.[[Enumerate]]().

Let’s try it out. We’ll do something that causes proxy.[[Set]]() to be called.

proxy.color = "pink";

OK, what just happened? proxy.[[Set]]() should have called target.[[Set]](), so that should have made a new property on target. Did it?

> target.color
    "pink"

It did. And the same goes for all the other internal methods. This proxy will, for the most part, behave exactly the same as its target.

There are limits to the fidelity of the illusion. You’ll find that proxy !== target. And a proxy will sometimes flunk type checks that the target would pass. Even if a proxy’s target is a DOM Element, for example, the proxy isn’t really an Element; so something like document.body.appendChild(proxy) will fail with a TypeError.

Proxy handlers

Now let’s return to the handler object. This is what makes proxies useful.

The handler object’s methods can override any of the proxy’s internal methods.

For example, if you’d like to intercept all attempts to assign to an object’s properties, you can do that by defining a handler.set() method:

var target = {};
var handler = {
  set: function (target, key, value, receiver) {
    throw new Error("Please don't set properties on this object.");
  }
};
var proxy = new Proxy(target, handler);

> proxy.name = "angelina";
    Error: Please don't set properties on this object.

The full list of handler methods is documented on the MDN page for Proxy. There are 14 methods, and they line up with the 14 internal methods defined in ES6.

All handler methods are optional. If an internal method is not intercepted by the handler, then it’s forwarded to the target, as we saw before.

Example: “Impossible” auto-populating objects

We now know enough about proxies to try using them for something really weird, something that’s impossible without proxies.

Here’s our first exercise. Make a function Tree() that can do this:

> var tree = Tree();
> tree
    { }
> tree.branch1.branch2.twig = "green";
> tree
    { branch1: { branch2: { twig: "green" } } }
> tree.branch1.branch3.twig = "yellow";
    { branch1: { branch2: { twig: "green" },
                 branch3: { twig: "yellow" }}}

Note how all the intermediate objects branch1, branch2, and branch3, are magically autocreated when they’re needed. Convenient, right? How could it possibly work?

Until now, there’s no way it could work. But with proxies this is only a few lines of code. We just need to tap into tree.[[Get]](). If you like a challenge, you might want to try implementing this yourself before reading on.

(picture of a tap in a maple tree)

Not the right way to tap into a tree in JS. Photo credit: Chiot’s Run.

Here’s my solution:

function Tree() {
  return new Proxy({}, handler);
}

var handler = {
  get: function (target, key, receiver) {
    if (!(key in target)) {
      target[key] = Tree();  // auto-create a sub-Tree
    }
    return Reflect.get(target, key, receiver);
  }
};

Note the call to Reflect.get() at the end. It turns out there’s an extremely common need, in proxy handler methods, to be able to say “now just do the default behavior of delegating to target.” So ES6 defines a new Reflect object with 14 methods on it that you can use to do exactly that.

Example: A read-only view

I think I may have given the false impression that proxies are easy to use. Let’s do one more example to see if that’s true.

This time our assignment is more complex: we have to implement a function, readOnlyView(object), that takes any object and returns a proxy that behaves just like that object, except without the ability to mutate it. So, for example, it should behave like this:

> var newMath = readOnlyView(Math);
> newMath.min(54, 40);
    40
> newMath.max = Math.min;
    Error: can't modify read-only view
> delete newMath.sin;
    Error: can't modify read-only view

How can we implement this?

The first step is to intercept all internal methods that would modify the target object if we let them through. There are five of those.

function NOPE() {
  throw new Error("can't modify read-only view");
}

var handler = {
  // Override all five mutating methods.
  set: NOPE,
  defineProperty: NOPE,
  deleteProperty: NOPE,
  preventExtensions: NOPE,
  setPrototypeOf: NOPE
};

function readOnlyView(target) {
  return new Proxy(target, handler);
}

This works. It prevents assignment, property definition, and so on via the read-only view.

Are there any loopholes in this scheme?

The biggest problem is that the [[Get]] method, and others, may still return mutable objects. So even if some object x is a read-only view, x.prop may be mutable! That’s a huge hole.

To plug it, we must add a handler.get() method:

var handler = {
  ...

  // Wrap other results in read-only views.
  get: function (target, key, receiver) {
    // Start by just doing the default behavior.
    var result = Reflect.get(target, key, receiver);

    // Make sure not to return a mutable object!
    if (Object(result) === result) {
      // result is an object.
      return readOnlyView(result);
    }
    // result is a primitive, so already immutable.
    return result;
  },

  ...
};

This is not sufficient either. Similar code is needed for other methods, including getPrototypeOf and getOwnPropertyDescriptor.

Then there are further problems. When a getter or method is called via this kind of proxy, the this value passed to the getter or method will typically be the proxy itself. But as we saw earlier, many accessors and methods perform a type check that the proxy won’t pass. It would be better to substitute the target object for the proxy here. Can you figure out how to do it?

The lesson to draw from this is that creating a proxy is easy, but creating a proxy with intuitive behavior is quite hard.

Odds and ends

  • What are proxies really good for?

    They’re certainly useful whenever you want to observe or log accesses to an object. They’ll be handy for debugging. Testing frameworks could use them to create mock objects.

    Proxies are useful if you need behavior that’s just slightly past what an ordinary object can do: lazily populating properties, for example.

    I almost hate to bring this up, but one of the best ways to see what’s going on in code that uses proxies… is to wrap a proxy’s handler object in another proxy that logs to the console every time a handler method is accessed.

    Proxies can be used to restrict access to an object, as we did with readOnlyView. That sort of use case is rare in application code, but Firefox uses proxies internally to implement security boundaries between different domains. They’re a key part of our security model.

  • Proxies ♥ WeakMaps. In our readOnlyView example, we create a new proxy every time an object is accessed. It could save a lot of memory to cache every proxy we create in a WeakMap, so that however many times an object is passed to readOnlyView, only a single proxy is created for it.

    This is one of the motivating use cases for WeakMap.

  • Revocable proxies. ES6 also defines another function, Proxy.revocable(target, handler), that creates a proxy, just like new Proxy(target, handler), except this proxy can be revoked later. (Proxy.revocable returns an object with a .proxy property and a .revoke method.) Once a proxy is revoked, it simply doesn’t work anymore; all its internal methods throw.

  • Object invariants. In certain situations, ES6 requires proxy handler methods to report results that are consistent with the target object’s state. It does this in order to enforce rules about immutability across all objects, even proxies. For example, a proxy can’t claim to be inextensible unless its target really is inextensible.

    The exact rules are too complex to go into here, but if you ever see an error message like "proxy can't report a non-existent property as non-configurable", this is the cause. The most likely remedy is to change what the proxy is reporting about itself. Another possibility is to mutate the target on the fly to reflect whatever the proxy is reporting.

What is an object now?

I think where we left it was: “An Object is a collection of properties.”

I’m not totally happy with this definition, even taking for granted that we throw in prototypes and callability as well. I think the word “collection” is too generous, given how poorly defined a proxy can be. Its handler methods could do anything. They could return random results.

By figuring out what an object can do, standardizing those methods, and adding virtualization as a first-class feature that everyone can use, the ECMAScript standard committee has expanded the realm of possibilities.

Objects can be almost anything now.

Maybe the most honest answer to the question “What is an object?” now is to take the 12 required internal methods as a definition. An object is something in a JS program that has a [[Get]] operation, a [[Set]] operation, and so on.


Do we understand objects better after all that? I’m not sure! Did we do amazing things? Yeah. We did things that were never possible in JS before.

Can I use Proxies today?

Nope! Not on the Web, anyway. Only Firefox and Microsoft Edge support proxies, and there is no polyfill.

Using proxies in Node.js or io.js requires both an off-by-default option (--harmony_proxies) and the harmony-reflect polyfill, since V8 implements an older version of the Proxy specification. (A previous version of this article had incorrect information about this. Thanks to Mörre and Aaron Powell for correcting my mistakes in the comments.)

So feel free to experiment with proxies! Create a hall of mirrors where there seem to be thousands of copies of every object, all alike, and it’s impossible to debug anything! Now is the time. There’s little danger of your ill-advised proxy code escaping into production… yet.

Proxies were first implemented in 2010, by Andreas Gal, with code reviews by Blake Kaplan. The standard committee then completely redesigned the feature. Eddy Bruel implemented the new spec in 2012.

I implemented Reflect, with code reviews by Jeff Walden. It’ll be in Firefox Nightly starting this weekend—all except Reflect.enumerate(), which is not implemented yet.

Next up, we’ll be talking about the most controversial feature in ES6, and who better to present it than the person who’s implementing it in Firefox? So please join us next week as Mozilla engineer Eric Faust presents ES6 classes in depth.

Mozilla L10NMozilla Nordic L10n Hackathon 2015

At the end of April 2015, Axel Hecht, Matjaž Horvat, George Roter, and I took a trip to Stockholm to organize a l10n hackathon for the Nordic l10n teams. The last time we did something like this was in 2013. Essentially, Brian King, Axel, and I organized a central Nordic hackathon in Copenhagen, then we hopped in a car and drove from there to Gothenburg, Oslo, and Stockholm, organizing MozCafes all along the way to learn more about the Nordic community. On my way to meet with Brian and Axel in Copenhagen, I also stopped into Reykjavík for Iceland’s first MozCafe.

Since that experience, members from various Nordic communities expressed a lot of interest in holding another Nordic community meetup targeted at localization within the region. We were more than happy to help! Not only were we happy to help, but staff from Wikimedia Sverige were very happy to allow us to use their office space for the event. They shared with us how their community is growing and were excited to be able to collaborate with Mozilla for this event.

The agenda was tailored to discussing both global l10n & Mozilla topics as well as topics specific to l10n in Nordic countries. Axel and George provided a good overview of updates from the last Mozilla All-Hands work week in Portland, as well as discussed the virtuous participation cycle. Everyone also left with a thorough understanding of the Firefox release and development focus for 2015.

We then jumped into how each Nordic l10n community’s status and how they’re seeing their products being used in their region. One of the most impactful lessons that the l10n-drivers took away from this experience is that Nordic localizers are most empowered when they know their localizations are being used. With changes to the Mozilla metrics systems, it’s been difficult to identify and interpret practical usage data on a per locale basis. Understanding that this is key to Nordic localizer empowerment has caused metrics to rise higher in our priorities to better understand and share with locale leaders.

Sunday was the day for project catch-up work. All teams updated their l10n wiki pages. We got new projects up-and-running, provided some one-on-one training where requested, and translated many strings across all 6 locales present.

Finally, we ended the day with a Swedish outdoor pastime, kubb. The tournament consisted of each l10n team competing to take home a custom Firefox kubb set. We knew the matches were getting more and more intense when the healthy trash talk moved from English to Nordic languages. 😉 After some intense matches, the Danish l10n team left both victorious and with the Firefox kubb set, with the Swedish l10n team coming in second place.

Here are some stats from the event:

Number of participants: 12, with at least one localizer representing each Nordic l10n team
New projects started: 3, all for iOS
Strings localized: >1000
Updated l10n wiki pages: 6
Pizzas consumed: ~30
Kubbs knocked over: >40

I want to thank Wikimedia Sverige for hosting the event. We couldn’t have done it without their generosity. Thank you! I also want to thank Oliver Propst for providing these great pictures of the event and Luna Jernberg for making sure our pizza fuel was never short.

P1020165

The victorious Danish l10n team!

P1020005

George Roter on Mozilla Participation.

P1020080

Axel Hecht with Håvar Henriksen and Bjørn Svindseth from the Norwegian l10n teams.

P1020052

George Roter on the virtuous participation cycle.

P1020099

Listening in and translating strings.

P1020076

Jeff Beatty and Ville Pohjanheimo discussing Finnish localization.

P1020082

Kristján Mathiesen discussing Icelandic localization with George Roter.

P1020117

Making sure l10n projects are up-to-date.

P1020107

Andreas Pettersson training Luna Jernberg on using hg to maintain Firefox Beta localizations in Swedish.

P1020124

Jeff Beatty vouching for Nordic Mozillians next to Firefox and Fennec kubb king pieces.

P1020111

Discussion between Jeff Beatty and Matjaž Horvat.

P1020119

Post-it notes about Nordic l10n community efforts.

P1020158

Jeff Beatty teaching the group how to throw a kubb baton.

P1020142

Beautiful day for kubb outside Stockholm City Hall.

P1020180

The Nordic l10n group!

P1020149

Preparing the kubb pitch.

P1020172

Luna Jernberg takes home the Fennec king piece.

SUMO BlogWhat’s up with SUMO – 17th July

Hello, SUMO Nation (and Planet Mozilla, woohoo!) It is time again to give you a fresh slew of updates and reminders (I know you love reminders) from the world of SUMO!

New SUMO warriors, assemble & support!

If you joined us recently, don’t hesitate – come over and say “hi” in the forums!

Contributors of the week

  • Philipp – for rounding up bugs/common issues on the forums
  • Michael – for being an all-star host in the forums and helping with the Templates
  • Vanja – for localizing all Serbian Templates and his on-going awesomeness in the l10n corner of SUMO

Gentlemen, we salute you!

Monday SUMO Community meeting

Reminder: the next SUMO Community meeting…

  • …is going to take place on Monday, 20th of July. Join us!
  • If you want to add a discussion topic to upcoming the live meeting agenda:
    • Start a thread in the Community Forums, so that everyone in the community can see what will be discussed and voice their opinion here before Monday (this will make it easier to have an efficient meeting).
    • Please do so as soon as you can before the meeting, so that people have time to read, think, and reply (and also add it to the agenda).

Help needed – thank you!

Developers

Community

Support Forum

  • New advanced search will be hopefully coming this quarter!
  • The One and Done SUMO Contributor Support Training is live. Start here!

Knowledge Base

  • A few light experiments are going on for new article request forms and an easier-to-use article submission form via Google Docs.
  • There could be more Windows 10 articles coming up – Joni is working this out with the UX team.

L10n

Firefox

  • Adobe Flash became a hot topic recently for all the wrong reasons. If you want to get the most up-to-date information about our community actions around this, visit this thread.
  • Win64 in Firefox 40

Firefox OS

  • Recent launches for 2.0 devices happened in South Africa, Mauritius, Niger, Mali, Senegal, Tunisia and Botswana. Hooray for Africa!

Firefox for Android

  • The documentation for v40 started this week with the password manager.

Thunderbird

  • Reminder: as of July 1st, Thunderbird is 100% Community powered and owned! You can still +needinfo Roland in Bugzilla or email him if you need his help as a consultant. He will also hang around in #tb-support-crew.

There you go – we hope you enjoyed this round of updates and will join us for the Monday meeting. In the meantime, stay cool!

 

Mozilla: View Source FundraisingFundraising Team Charter

Whistler Work Week, June 2015 Why are we here? The world needs Mozilla. Mozilla needs sustainable philanthropic revenue to succeed for the next 100 years. We want more people to understand and connect to Mozilla’s work; engaging through giving gives … Continue reading

Open Policy & AdvocacyDecisive moment for net neutrality in Europe

UPDATE:

Yesterday, the European Union moved one step closer to enacting real net neutrality across the continent. The European Parliament’s Industry, Research, and Energy Committee (ITRE) approved an agreement on the Telecom Single Market Regulation (TSM), after drawn out negotiations between the three EU policymaking branches: the Parliament, the Council, and the Commission. This draft legislation includes proposed rules specifying that all traffic must be treated equally as well as rules prohibiting paid prioritization and blocking.

The ITRE Committee will vote in the fall to formally adopt the text and it will then move to the full Parliament plenary for a final vote. However, amendments can be offered before both the ITRE vote and the plenary vote, and the European Council (the body representing EU member states) must also ratify the final text before it becomes law.

While the current rules are ambiguous in places and give significant deference to national regulatory authorities, overall this is a significant step to protect the open Internet in Europe. We urge European policymakers to finish strong and enact clear, enforceable rules against blocking, discrimination, and fast lanes.

ORIGINAL POST:

After years of negotiations, the E.U. Telecom Single Market Regulation (which includes proposed net neutrality rules) is nearing completion. If passed, the Regulation will be binding on all E.U. member states. The policymakers – the three European governmental bodies:  the Parliament, the Commission, and the Council – are at a crossroads: implement real net neutrality into law, or permit net discrimination and in doing so threaten innovation and competition. We urge European policymakers to stand strong, adopt clear rules to protect the open Internet, and set an example for the world.

At Mozilla, we’ve taken a strong stance for real net neutrality, because it is central to our mission and to the openness of the Internet. Just as we have supported action in the United States and in India, we support the adoption of net neutrality rules in Europe. Net neutrality fundamentally protects competition and innovation, to the benefit of both European Internet users and businesses. We want an Internet where everyone can create, participate, and innovate online, all of which is at risk if discriminatory practices are condoned by law or through regulatory indifference.

The final text of European legislation is still being written, and the details are still gaining shape. We have called for strong, enforceable rules against blocking, discrimination, and fast lanes are critical to protecting the openness of the Internet. To accomplish this, the European Parliament needs to hold firm to its five votes in the last five years for real net neutrality. Members of the European Parliament must resist internal and external pressures to build in loopholes that would threaten those rules.

Two issues stand out as particularly important in this final round of negotiations: specialized services and zero-rating. On the former, specialized services – or “services other than Internet access services” – represent a complex and unresolved set of market practices, including very few current ones and many speculative future possibilities. While there is certainly potential for real value in these services, absent any safeguards, such services risk undermining the open Internet. It’s important to maintain a baseline of robust access, and prevent relegating the open Internet to a second tier of quality.

Second, earlier statements from the E.U. included language that appeared to endorse zero-rating business practices. Our view is that zero-rating as currently implemented in the market is not the right path forward for the open Internet. However, we do not believe it is necessary to address this issue in the context of the Telecom Single Market Regulation. As such, we’re glad to see such language removed from more recent drafts and we encourage European policymakers to leave it out of the final text.

The final text that emerges from the European process will set a standard not only for Europe but for the rest of the world. It’s critical for European policymakers to stand with the Internet and get it right.

Chris Riley, Head of Public Policy
Jochai Ben-Avie, Internet Policy Manager

Air MozillaIntern Presentations

Intern Presentations 2 San Francisco interns will be presenting the projects they worked on this summer. Franziskus Kiefer Making the web more private (maybe) -- from refer(r)er...

Air MozillaMaking the Web More Private (Maybe)

Making the Web More Private (Maybe) Making the web more private (maybe) -- from refer(r)er policies Franziskus Kiefer Introduces referrer attributes for navigation and embedding elements that allow fine grained control...

Air MozillaMigrations Don't Suck!

Migrations Don't Suck! Anhad Jai Singh talks about why migrations don't suck if done properly, how to do them, and what you gain from them.

Air MozillaPermission to copy : GRANTED

Permission to copy : GRANTED Michael Layzell, a Mozilla intern working in Toronto talks about eradicating Flash from GitHub, preparing permissions for the future, and ensuring the correctness of our...

WebmakerWeb Literacy and Leadership

We’ve been talking about ‘leadership development’ since early on in the Mozilla Learning (aka Academy) planning process. Basically, the idea is to get more people to teach and advocate for web literacy. If we can create a global network of these people — and help them be great at what they do — our whole web literacy agenda moves faster and is more likely to succeed.

 

leaders

This sort of leadership development is something we’ve been doing through Hive and fellowships for years. What’s become increasingly clear over the last month or so is: a) this has become one of our core strengths and b) it is one of the biggest places we could have impact going forward. This has lead us to the conclusion that leadership development should be one of the core elements of our overall learning strategy. With this in mind, I want to lay out some initial thinking about what we mean by ‘leadership’, describe the kind of impact we’re trying to have and pose some questions we need to answer.

The basics

Let’s start with some basic definitions. For discussion purposes, the kind of ‘leaders’ we want to find and develop are:

Leaders = people who in one way or another are helping others to read, write and participate on the web (aka ‘web literacy‘).

These leaders could be helping others through teaching or mentoring. Or through organizational change or learning projects. Or by explicitly designing and organizing programs to promote web literacy. I consider all of these to be acts of leadership that advance our cause.

When we talk about ‘leadership development’, we are describing the process of:

Leadership development = helping these people become more skilled, self aware and networked by getting them working on concrete projects.

The approach that we’ve been using — and will continue to develop — borrows from the field of service learning. We focus on hands-on, experiential learning where people develop skills by working on a project in service of a bigger goal aligned with Mozilla’s mission. These experiences simultaneously: a) help people become better at hard skills (e.g. coding or research); b) provide opportunities to learn soft skills (e.g. teamwork or mentoring); and c) contribute concretely to the work of Mozilla or a partner organization.

Impact

Ultimately, there are two core places where we hope this part of our strategy will have an impact:

Global = more people teach and advocate for web literacy.
Personal = individuals have more skills, confidence and opportunity.

Combined, these things create both a talent pool and motivational economics that will build momentum. And, ultimately, they make it more likely that we will succeed with our overall agenda of universal web literacy.

On the global level, we are already having a meaningful impact. Hive, Mozilla Clubs and our fellowships are already resulting in:

  • University students sharing web skills with friends. (Maker Party)
  • Educators weaving web literacy into their teaching. (Hive)
  • Scientists teaching other scientists about open data. (Science Lab)
  • Coders helping activist organizations adopt open tools and thinking. (Advocacy Fellows)
  • Organizers bringing together others to teach web literacy. (Mozilla Clubs)

The question we have to answer at this stage isn’t ‘can we get more people doing this stuff?’ but rather ‘how many people? and with what sort of downstream impact?’

Which brings us to the second point about giving people more skills, confidence and opportunity. We do this on some level already through our existing programs, but not systematically. I believe we need:

Learning experiences and curriculum that help people a) develop strong open source leadership skills that b) make them more effective and c) open up new personal or career opportunities.

In some sense, this is simply about helping people hone certain aspects of their web literacy skills on a very deep level. One person might want to develop better research (read), open data management (write) and knowledge sharing (participate) skills so they can mentor their peers. Another might want to develop better content harvesting (read), web design (write) and online community management (participate) skills to create a piece of interactive online curriculum. And so on.

In both examples, these are skills that are a) useful in the kind of web literacy work we want people doing and b) highly valued in the job market. A key part of creating a robust leadership development strategy is implementing a method to consistently help people hone these skills and find opportunities to use them both in our work and on the job market. This is a part of the process that Mozilla is not yet skilled at as an organization.

Questions

We’re nearing the end of phase one of our Mozilla Learning (aka Academy) planning process. I’ll post an update on this later next week.

In the meantime, I can say with confidence: leadership development will be one of the key strategies Mozilla invests in to advance web literacy.

I’ve outlined the ‘why?’ (more people teaching and advocating) and the ‘what?’ (service learning programs that develop leaders) above. What we need to do in the next phase is map the ‘what?’ to the ‘how?’. Key questions about leadership development programs will be:

  • What specific impact do we want to have here? By when?
  • What skills and mindsets do we need to develop to have this impact?
  • What skills and experiences do emerging leaders want? Partners?
  • What curriculum and experiences are needed to develop these skills?
  • Pragmatically, how do we align and integrate our existing programs?

The good news is that the existing Hive, Mozilla Clubs, Science Lab and Advocacy Fellows teams have already started to dig into these questions at our recent retreat in Whistler. For example, the Science Lab team created an initial outline of a basic ‘working in the open’ on-boarding curriculum for leaders. And the Hive / Clubs (aka Mozilla Learning Networks) teams started to develop a quite advanced operating model that integrates many of the existing activities that we have in place across these programs.

Over the next couple of months, these teams will take a next step in answering these questions and coming up with a more detailed theory of how our leadership development program will work. As I noted above, I’ll post more about the overall process next week.

Air MozillaWeb QA Weekly Meeting

Web QA Weekly Meeting This is our weekly gathering of Mozilla'a Web QA team filled with discussion on our current and future projects, ideas, demos, and fun facts.

Meeting NotesMobile: 2015-07-15

Schedule

Tracking Review

Beta

  • Next Build:
ID Summary Status Assigned to Last change time
1130066 crash in java.lang.IllegalStateException: Not initialized. at org.mozilla.gecko.health.BrowserHealthRecorder.ensureEnvironment(BrowserHealthRecorder.java) NEW Richard Newman [:rnewman] (rnewman) 2015-07-16T02:03:19Z
1163937 Downloads are not cleared from about:downloads when “Clear on exit” is used ASSIGNED Dylan Roeh (:droeh) (droeh) 2015-07-14T18:12:38Z
1164027 crash in ElfLoader::~ElfLoader() NEW Jamie Nicol [:jnicol] (jnicol) 2015-07-13T12:52:12Z
1170651 crash in js::jit::GetPropertyIC::update(JSContext*, JS::Handle<JSScript*>, unsigned int, JS::Handle<JSObject*>, JS::MutableHandle<JS::Value>) NEW 2015-07-16T00:11:40Z
1174144 Wrong doorhanger offset for some tablets NEW Chenxia Liu [:liuche] (liuche) 2015-07-13T22:20:20Z
1180958 crash in libmozglue.so@0x21152 mostly Samsung Tablets NEW Jamie Nicol [:jnicol] (jnicol) 2015-07-09T17:36:24Z


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

Aurora

  • Next Build:
ID Summary Status Assigned to Last change time
886969 Fennec allows scrolling of pages with overflow:hidden on the body element NEW James Willcox (:snorp) (jwillcox@mozilla.com) (snorp) 2015-07-09T18:24:46Z
1016555 Disable OCSP checking for certificates covered by OneCRL ASSIGNED David Keeler [:keeler] (use needinfo?) (dkeeler) 2015-06-17T16:43:20Z
1129614 Regression: Sometimes thumbnails in the tabs drawer are not updated, they expire ASSIGNED Mark Finkle (:mfinkle) (mark.finkle) 2015-07-02T02:57:32Z
1132508 Last tab is cut off in tab tray after rotation REOPENED Martyn Haigh (:mhaigh) (mhaigh) 2015-07-15T17:10:46Z
1144534 bad looking text depending on scroll NEW Timothy Nikkel (:tn) (tnikkel) 2015-05-14T17:30:29Z
1164052 Autophone – intermittent Crash [unknown top frame] NEW Ted Mielczarek [:ted.mielczarek] (ted) 2015-07-08T16:40:16Z
1170724 Autophone – 2015-05-20 Throbber start regression in S1S2 on fx-team NEW Michael Comella (:mcomella) (michael.l.comella) 2015-07-16T02:22:00Z
1171337 black window during browsing NEW Randall Barker [:rbarker] (rbarker) 2015-06-11T17:55:55Z
1175457 Reading list super toast generated by long tapping on the reader view icon from URL Bar is displayed too short on screen NEW 2015-07-15T22:53:01Z
1175532 No visible action when choosing “Share” from Action Bar and Reader View toolbar NEW Michael Comella (:mcomella) (michael.l.comella) 2015-07-14T18:55:13Z
1177414 Queued tabs stall on load ASSIGNED Martyn Haigh (:mhaigh) (mhaigh) 2015-07-15T19:19:44Z
1178503 Remove nightly-only flag for QR code input NEW Karim Benhmida (:karim) (kbenhmida) 2015-07-10T17:14:23Z
1179184 Webm video does not start to play automatically with Autoplay preference enabled NEW Randall Barker [:rbarker] (rbarker) 2015-07-02T17:44:55Z
1180597 Wrong display for more than two doohangers NEW Chenxia Liu [:liuche] (liuche) 2015-07-09T18:41:46Z
1181866 QR code reader crashes Firefox on Nexus 5 NEW Karim Benhmida (:karim) (kbenhmida) 2015-07-09T21:24:33Z


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

Nightly

  • Next Build:
ID Summary Status Assigned to Last change time
1047127 Panning very stuttery on this page with overflow-x NEW 2015-06-10T18:43:44Z
1114096 Wrong tab got mirrored NEW 2015-06-17T18:30:58Z
1126244 Create a maximum reader mode cache size and evict records when necessary ASSIGNED Vivek Balakrishnan[:vivek] (vivekb.balakrishnan) 2015-04-30T17:08:28Z
1131084 Can not mirror tab to Chromecast device NEW Randall Barker [:rbarker] (rbarker) 2015-06-17T18:31:14Z
1148391 Tapping the bottom of the screen will make the reader mode toolbar bounce up and down NEW 2015-05-28T17:18:33Z
1156553 Tab queue makes captive portal use annoying ASSIGNED Martyn Haigh (:mhaigh) (mhaigh) 2015-06-30T14:53:55Z
1168867 Size of new Gecko selection carets doesn’t take font inflation into account NEW 2015-06-18T17:33:40Z
1171860 Tapping the tab queue notification will open the link in normal browsing with “Open links in Private browsing” pref enabled NEW 2015-06-08T17:30:23Z


8 Total;
8 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.

  • Dusek
    • bug 1180629 – Tab tray could report better scrolling status to VoiceOver
    • bug 1180630 – Tab should be closable for VoiceOver also by left/right scrolling gestures
    • bug 1164231 – Provide long-press actions as accessibility custom actions
    • bug 1152697 – When saving a page to the reading list, post a VoiceOver announcement when the action finished successfully
    • bug 1178015 – Accessibility escape not dismissing editing mode in editing-mode URL bar when keyboard is not shown
    • bug 1178072 – Location view domain highlighting could be “translated” to VoiceOver using voice pitch
    • bug 1182612 – Search suggestions engine image does not have accessibility label
    • bug 1158523 – Correct accessibility hint for Reload button (non-imperative, Double-tap instead of tap)
    • bug 1182752 – Provide grouping for 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!

JChen

  • At TRIBE
Fixed
Working on

Eugen Sawin

  • MP3 demuxer
    • Added tests for stream resources
    • Investigating failed resource reads (during initialization or seeking)
  • PTO rest of the week
Fixed
Working on

Dylan Roeh

Past:

Present:

Brian Nicholson

  • Fixing URL bar regressions
    • bug 1183353 – URL bar not updated for hostname URLs
    • bug 1183174 – URL bar text isn’t updated correctly when cancelling
    • bug 1183326 – UI tests for URL bar entry
    • (WIP) bug 1183250 – Regression: URL location field clear button is misaligned
  • bug 1183329 – Session is restored when running tests
  • bug 1182274 – Browser UI not updated after DOM pushState/popState with back/forward
  • (WIP) bug 1181716 – Session history intermittently breaks after restore
  • Loads of reviews (thanks, Dusek!)

Bryan Munar

Fixed:

Working on:

WesJ

  • bug 1169379 Landed a new top sites stuff
    • Watching for regressions?
  • Looking at favicon expiration. Writing lots of tests for things.

liuche

Tribe (read-only)

Highlights:

Present:

Past:

karim

Past:

Present:

Bluetooth keyboard shortcuts for iOS

Margaret

<Read Only>

Highlights:

  • Partner stuff, commenting in bugzilla, talking to people

Past:

Present:

jonalmeida

Highlights:

  • No more fixing tests (yay!)
  • RecyclerView for the search bar to finish and put for review.

Past:

Present:

mcomella

Tribe today & tomorrow: read only, yo.

  • Intent handling
  • p11
  • Sec

Past:

Present:

rnewman

  • Next seven days:
    • Keeping other people unblocked and moving in the right directions.
    • Version code computation, perhaps.
    • Chasing down build 24 crashes.
  • Reviews:
    • Send tab (Emily).
    • Version code computation (Nick).
    • Syncing password timestamps on desktop.
    • Piles of small iOS stuff.
  • Landed:
    • New icons for sent tabs on Android. Sorry for the wait, antlam!
  • Partners:
    • Multilocale builds (Margaret).
    • Distro questions (Karen).
  • Misc:
    • Back from ‘vacation’.
    • Designing iOS bookmark sync. Converging on an approach that’s relatively simple, considering the domain complexity.
    • Continuing discussions with Nick around Android version code scheme. We’re keen to get it right.
    • Apple ID wrestling. I can now see crashes.
    • A little A/B testing, quality, etc. noodling.
    • Chatting with mconnor about exposing installer size as a metric that we’ll track and eventually consider as important as a Ts regression.
    • Booking travel for Swift Summit.
    • Lots of meetings, triage, etc.
Fixed
Working on

nalexander

I will be PTO July 17 through 27

<Read Only>

Sebastian

Highlights:

  • Testing and building with Android M Preview 2 system image / SDK
    • New issues, see meta bug: 1169425
    • New meta bug for Building against M SDK: 1183061
  • Working on Restricted profiles aka KidFox 1125984
  • Home Panel API: Footers 1157540

Noise:

Martyn Haigh

<Read Only>

Past:

  • Hacking with antlam in London on a load of UX stuff. Talked a lot about Tracking Protection, Private Browsing, Tab Queue V2 and Tabs Tray.
  • Saw lucasr – he’s doing well :)

Present:

Stefan

Past:

Present:

  • Getting tests back on track

Steph

Last week:

  • Investigating startup delays when launching Firefox testflight/dev builds
  • Scrolling issues with browser view
  • Tab Tray Animation issues w/ status bar changes
  • Initial Breakpad integration

Ally

  • about:logins
    • edit login page has landed, marking the end of mvp (1170786)
    • Try it out please!
    • probably going to hold for ui polish, landing soon
      • 1101746 Display message when no passwords are present
      • 1155345 UI affordance during loading of list items in about:passwords
    • opinions on what should be in v2 (1183225)? Talk to me or Barbara
    • v2
      • 1183319 Add telemetry probe in about:logins for load time of getAllLogins() in the wild
      • 1183234 Telemetry probe for usage of about:logins
  • kidfox
    • https://wiki.mozilla.org/Mobile/Projects/Kinderfox
      • mvp bug list on the above wiki
    • partner related research, please see Sam Fang
    • v1
      • 1125980 KidFox: Restricted profiles – Hide other non-essential Settings items – Privacy > Clear now
      • 1125979 KidFox: Restricted profiles – Hide other non-essential Settings items – Privacy > Clear on exit
      • 1125977 KidFox: Restricted profiles – Hide other non-essential Settings items – Privacy > Use master password
  • Misc
    • partner, search partner data collection fun
    • fhr & telemetry – UP on desktop
    • review queue – be careful what you wish for

Emily

Highlights:

  • Landed sent tabs!
  • Visitors from beyond the sea
  • Fixing tests
  • stack trace hell

Past:

Present:

BLassey

Fixed
Working on

Antlam

Read-only

  • Past
    • bug 1175967: Tracking Protection on Android
    • bug 1153389: Private browsing improvements
    • bug 1183659: Cleaning up “receiving tabs” notification
    • About:logins feedback
    • Partner UX work
  • Upcoming
    • Partner meetings
    • Q3 Android UX

Robin

<Read Only – @ Tribe>

iOS

  • Empty panel states, Bookmarks, History, and layout issues on Remote Tabs and Reading List panels.
  • Still working with bkmunar on Let other developers directly open pages in Firefox for iOS and Add a Sync Now button
  • UI-review for Reading List, Reader View bugs
  • Clear browsing data (not v1)

Android

  • Kinderfox: First-run screen, light-weight theme(s)

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-07-15

Schedule & Progress onUpcoming Releases (Liz/Sylvestre/Lawrence)

  • 40.0 beta4 shipped on Tuesday
    • Next up: Desktop: gtb beta5 Thursday
  • Team is triaging and approving uplifts for Aurora and Beta.

Firefox Desktop & Platform (Javaun/Chad/Martin)

Current Releases

Nightly (42)
  • Firefox 42.0/Fall campaign Meetings are going well. Plan of record is being solidified. August 5th is the day we’d like to Lock Down on Feature set.

Feedback Summary (Rob/Tyler/Matt)

General

Negative feedback cycle from Pocket articles calming down

Desktop

Pulled flash crash feedback

Mobile

No updates, looks good


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