Re: XPIDL trajectory

2018-06-25 Thread Boris Zbarsky

On 6/26/18 12:45 AM, L. David Baron wrote:

What's the relative value of making something not use xpidl anymore
vs. marking an xpidl interface as no longer [scriptable]?


I think the main value is in not using xpidl anymore, for two reasons:

1) You can't devirtualize things while still using xpidl.  Removing 
xpidl bits means your objects might get smaller (fewer vtable pointers), 
our relocatable data gets smaller (fewer vtables), and runtime likely 
gets faster.


2) It's hard to get sane C++ method signatures while using xpidl.  You 
_can_ do it with [notxpcom,nostdcall] and enought native-type 
declaration.  But it requires some hoop-jumping.  And at that point 
what's the benefit of using xpidl for it?


-Boris
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: XPIDL trajectory

2018-06-25 Thread Kris Maglione

On Mon, Jun 25, 2018 at 09:45:22PM -0700, L. David Baron wrote:

On Tuesday 2018-06-26 14:29 +1000, Nicholas Nethercote wrote:

The trend is clearly down, except for the large increase in .xpt size for
the most recent measurement -- note the extra digit! It appears that .xpt
files used to be binary, and now they are JSON. This might be related to
mccr8's recent XPT overhaul (bug 1438688)?


What's the relative value of making something not use xpidl anymore
vs. marking an xpidl interface as no longer [scriptable]?

(I hope that marking it not [scriptable] would mean we don't
generate .xpt data for it... although I haven't checked.  I *think*
mccr8's XPT work means that we no longer have duplicate in-memory
copies of the xpt data across processes, though, so some of this
isn't as big a deal as it used to be.)


For C++, it generally means fewer vtables/virtual calls (which 
is currently a significant win for content process memory), and 
generally a nicer API surface.

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: XPIDL trajectory

2018-06-25 Thread L. David Baron
On Tuesday 2018-06-26 14:29 +1000, Nicholas Nethercote wrote:
> The trend is clearly down, except for the large increase in .xpt size for
> the most recent measurement -- note the extra digit! It appears that .xpt
> files used to be binary, and now they are JSON. This might be related to
> mccr8's recent XPT overhaul (bug 1438688)?

What's the relative value of making something not use xpidl anymore
vs. marking an xpidl interface as no longer [scriptable]?

(I hope that marking it not [scriptable] would mean we don't
generate .xpt data for it... although I haven't checked.  I *think*
mccr8's XPT work means that we no longer have duplicate in-memory
copies of the xpt data across processes, though, so some of this
isn't as big a deal as it used to be.)

-David

-- 
턞   L. David Baron http://dbaron.org/   턂
턢   Mozilla  https://www.mozilla.org/   턂
 Before I built a wall I'd ask to know
 What I was walling in or walling out,
 And to whom I was like to give offense.
   - Robert Frost, Mending Wall (1914)


signature.asc
Description: PGP signature
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


XPIDL trajectory

2018-06-25 Thread Nicholas Nethercote
Hi,

After Firefox 57 removed support for legacy extensions, I decided to
(roughly) track how much XPIDL code we have. Here are some measurements:

Fri, Aug 4, 2017: m-i 372493:72873c109b1b
.idl files: 1167
.idl lines: 110240 total
.xpt bytes: 417621 total

Thu, Aug 17, 2017: m-i 375206:7a794cd2aee1
.idl files: 1150
.idl lines: 108854 total
.xpt bytes: 412984 total

Tue, Sep 26, 2017: m-i 382849:42a6a1c9c4cf
.idl files: 1122
.idl lines: 107963 total
.xpt bytes: 411283 total

Tue, Nov 14, 2017: m-i 391533:479f3105ad3b
.idl files: 1087
.idl lines: 106809 total
.xpt bytes: 409510 total

Thu, Feb 01, 2018: m-i 401956:8ebdf597ade8
.idl files: 1027
.idl lines: 103800 total
.xpt bytes: 398695 total

Tue, Jun 26, 2018: m-i 423583:4a20ed6e2fee
.idl files: 905
.idl lines: 97278 total
.xpt bytes: 3717958 total

The trend is clearly down, except for the large increase in .xpt size for
the most recent measurement -- note the extra digit! It appears that .xpt
files used to be binary, and now they are JSON. This might be related to
mccr8's recent XPT overhaul (bug 1438688)?

The script I use for this is below, for those who are interested.

Nick


#! /bin/sh
#
# Measures various XPIDL things in ./ and o64/. (It assumes o64/ is the
# objdir.) I put the results in ~/moz/txt/xpidl.txt.

if [ ! -d o64 ] ; then
echo "o64/ doesn't exist"
return 1
fi

# Count number of .idl files, excluding ones in objdirs, testing ones, and
# mortar ones.
echo -n ".idl files: "
find . -name '*.idl' | \
grep -v "64[a-z]*\/dist" | grep -v "testing\/" | grep -v "mortar\/" | \
wc --lines

# Count number of lines in those .idl files.
echo -n ".idl lines: "
find . -name '*.idl' | \
grep -v "64[a-z]*\/dist" | grep -v "testing\/" | grep -v "mortar\/" | \
xargs wc --lines | tail -1

# Count number of bytes in .xpt files.
cd o64
echo -n ".xpt bytes: "
find . -name '*.xpt' | xargs wc --bytes | tail -1
cd ..
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Coding style: Making the `e` prefix for enum variants not mandatory?

2018-06-25 Thread Jeff Gilbert
If we can't agree, it shouldn't be in the style guide.

On Mon, Jun 25, 2018 at 2:17 PM, Peter Saint-Andre  wrote:
> And perhaps good reason for removing it from the style guide? ;-)
>
> On 6/25/18 3:08 PM, Emilio Cobos Álvarez wrote:
>> And Kris pointed out that we already had another huge thread on this:
>>
>>
>> https://groups.google.com/d/msg/mozilla.dev.platform/WAuySoTfq_w/-DggRotpBQAJ
>>
>>
>> Looks like there wasn't agreement on that one... But oh well, don't want
>> to repeat a lot of that discussion.
>>
>> I think the argument for consistency with the other systems language we
>> have in-tree, the fact that it's not predominant (at least for enum
>> classes) even though it is in the coding style, and that there wasn't
>> agreement in the previous thread are good reasons for not enforcing it,
>> but...
>>
>>  -- Emilio
>>
>> On 6/25/18 10:41 PM, Emilio Cobos Álvarez wrote:
>>> Our coding style states that we should use an `e` prefix for enum
>>> variants, that is:
>>>
>>>enum class Foo { eBar, eBaz };
>>>
>>> We're not really consistent about it: looking at layout/, we mostly
>>> use CamelCase, though we do have some prefixed enums. Looking at other
>>> modules, enum classes almost never use it either. DOM bindings also
>>> don't use that prefix.
>>>
>>> I think that with enum classes the usefulness of the prefix is less
>>> justified. Plus removing them would allow us to match the Rust coding
>>> style as well, which is nice IMO.
>>>
>>> Would anybody object to making the prefix non-mandatory, removing that
>>> line from the coding style doc? Maybe only making it non-mandatory for
>>> enum classes?
>>>
>>> Thanks,
>>>
>>>   -- Emilio
>>> ___
>>> dev-platform mailing list
>>> dev-platform@lists.mozilla.org
>>> https://lists.mozilla.org/listinfo/dev-platform
>> ___
>> dev-platform mailing list
>> dev-platform@lists.mozilla.org
>> https://lists.mozilla.org/listinfo/dev-platform
> ___
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Coding style: Making the `e` prefix for enum variants not mandatory?

2018-06-25 Thread Peter Saint-Andre
And perhaps good reason for removing it from the style guide? ;-)

On 6/25/18 3:08 PM, Emilio Cobos Álvarez wrote:
> And Kris pointed out that we already had another huge thread on this:
> 
> 
> https://groups.google.com/d/msg/mozilla.dev.platform/WAuySoTfq_w/-DggRotpBQAJ
> 
> 
> Looks like there wasn't agreement on that one... But oh well, don't want
> to repeat a lot of that discussion.
> 
> I think the argument for consistency with the other systems language we
> have in-tree, the fact that it's not predominant (at least for enum
> classes) even though it is in the coding style, and that there wasn't
> agreement in the previous thread are good reasons for not enforcing it,
> but...
> 
>  -- Emilio
> 
> On 6/25/18 10:41 PM, Emilio Cobos Álvarez wrote:
>> Our coding style states that we should use an `e` prefix for enum
>> variants, that is:
>>
>>    enum class Foo { eBar, eBaz };
>>
>> We're not really consistent about it: looking at layout/, we mostly
>> use CamelCase, though we do have some prefixed enums. Looking at other
>> modules, enum classes almost never use it either. DOM bindings also
>> don't use that prefix.
>>
>> I think that with enum classes the usefulness of the prefix is less
>> justified. Plus removing them would allow us to match the Rust coding
>> style as well, which is nice IMO.
>>
>> Would anybody object to making the prefix non-mandatory, removing that
>> line from the coding style doc? Maybe only making it non-mandatory for
>> enum classes?
>>
>> Thanks,
>>
>>   -- Emilio
>> ___
>> dev-platform mailing list
>> dev-platform@lists.mozilla.org
>> https://lists.mozilla.org/listinfo/dev-platform
> ___
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Intent to ship: Some of the mediaqueries-4 syntax improvements.

2018-06-25 Thread Emilio Cobos Álvarez

On 6/25/18 11:01 PM, L. David Baron wrote:

How does the particular set of features that you're planning to ship
vs. not ship align with what other browsers have shipped (or are
close shipping)?


I'm not aware of any other browser implementing or shipping any of the 
changes from MQ3 to MQ4, so we'd be the first to support these.


This subset is somewhat straight-forward, and spec author feedback is 
clear I think:


  https://lists.w3.org/Archives/Public/www-style/2017Feb/0036.html

I'd be fine not shipping it for now and keeping it behind a pref, but I 
don't think it's worth it given how unlikely it is to change. Let me 
know if you think otherwise though.


 -- Emilio



-David

On Monday 2018-06-25 21:13 +0200, Emilio Cobos Álvarez wrote:

In bug 145 I plan to land most of the syntax improvements to
mediaqueries-4.

Some of the features included are:

  * Allowing operators such as >, <, >=, or <= in media feature expressions,
which allows to properly exclude media queries in a way min-* and max-*
cannot, like:

  @media (width >= 900px) { some rules }
  @media (width < 900px) { some other rules }

  Guarantees that either `some rules` or `some other rules` apply, which is
something that is not guaranteed by the existing syntax (see [1] or [2], for
example).

  * Or expressions, and arbitrary expression nesting like:

  @media ((width >= 500px) and (width <= 900px)) or (not (orientation:
portrait))

Things that are _not_ included are:

  * The range syntax, or allowing values before the feature name, that is:

 @media (500px > width) or (500px < width < 900px)

This is nice, but not so trivial to implement, and you can either reverse
the expression (`(width <= 500px)` in the first case), or use the expanded
version of it using `and` expressions for the second.

  * The changes to serialization and parsing that allows basically anything
in a feature expression to be valid, that is, treating as a valid media
query something like:

 @media (orientation: portrait) or (garbage)

Bug 1469174 and bug 1469173 are tracking those two, respectively.

Let me know if you find unknown issues, or think we shouldn't ship this.



___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Coding style: Making the `e` prefix for enum variants not mandatory?

2018-06-25 Thread Emilio Cobos Álvarez

And Kris pointed out that we already had another huge thread on this:


https://groups.google.com/d/msg/mozilla.dev.platform/WAuySoTfq_w/-DggRotpBQAJ

Looks like there wasn't agreement on that one... But oh well, don't want 
to repeat a lot of that discussion.


I think the argument for consistency with the other systems language we 
have in-tree, the fact that it's not predominant (at least for enum 
classes) even though it is in the coding style, and that there wasn't 
agreement in the previous thread are good reasons for not enforcing it, 
but...


 -- Emilio

On 6/25/18 10:41 PM, Emilio Cobos Álvarez wrote:
Our coding style states that we should use an `e` prefix for enum 
variants, that is:


   enum class Foo { eBar, eBaz };

We're not really consistent about it: looking at layout/, we mostly use 
CamelCase, though we do have some prefixed enums. Looking at other 
modules, enum classes almost never use it either. DOM bindings also 
don't use that prefix.


I think that with enum classes the usefulness of the prefix is less 
justified. Plus removing them would allow us to match the Rust coding 
style as well, which is nice IMO.


Would anybody object to making the prefix non-mandatory, removing that 
line from the coding style doc? Maybe only making it non-mandatory for 
enum classes?


Thanks,

  -- Emilio
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Intent to ship: Some of the mediaqueries-4 syntax improvements.

2018-06-25 Thread L. David Baron
How does the particular set of features that you're planning to ship
vs. not ship align with what other browsers have shipped (or are
close shipping)?

-David

On Monday 2018-06-25 21:13 +0200, Emilio Cobos Álvarez wrote:
> In bug 145 I plan to land most of the syntax improvements to
> mediaqueries-4.
> 
> Some of the features included are:
> 
>  * Allowing operators such as >, <, >=, or <= in media feature expressions,
> which allows to properly exclude media queries in a way min-* and max-*
> cannot, like:
> 
>  @media (width >= 900px) { some rules }
>  @media (width < 900px) { some other rules }
> 
>  Guarantees that either `some rules` or `some other rules` apply, which is
> something that is not guaranteed by the existing syntax (see [1] or [2], for
> example).
> 
>  * Or expressions, and arbitrary expression nesting like:
> 
>  @media ((width >= 500px) and (width <= 900px)) or (not (orientation:
> portrait))
> 
> Things that are _not_ included are:
> 
>  * The range syntax, or allowing values before the feature name, that is:
> 
> @media (500px > width) or (500px < width < 900px)
> 
>This is nice, but not so trivial to implement, and you can either reverse
> the expression (`(width <= 500px)` in the first case), or use the expanded
> version of it using `and` expressions for the second.
> 
>  * The changes to serialization and parsing that allows basically anything
> in a feature expression to be valid, that is, treating as a valid media
> query something like:
> 
> @media (orientation: portrait) or (garbage)
> 
> Bug 1469174 and bug 1469173 are tracking those two, respectively.
> 
> Let me know if you find unknown issues, or think we shouldn't ship this.

-- 
턞   L. David Baron http://dbaron.org/   턂
턢   Mozilla  https://www.mozilla.org/   턂
 Before I built a wall I'd ask to know
 What I was walling in or walling out,
 And to whom I was like to give offense.
   - Robert Frost, Mending Wall (1914)


signature.asc
Description: PGP signature
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Coding style: Making the `e` prefix for enum variants not mandatory?

2018-06-25 Thread Emilio Cobos Álvarez
Our coding style states that we should use an `e` prefix for enum 
variants, that is:


  enum class Foo { eBar, eBaz };

We're not really consistent about it: looking at layout/, we mostly use 
CamelCase, though we do have some prefixed enums. Looking at other 
modules, enum classes almost never use it either. DOM bindings also 
don't use that prefix.


I think that with enum classes the usefulness of the prefix is less 
justified. Plus removing them would allow us to match the Rust coding 
style as well, which is nice IMO.


Would anybody object to making the prefix non-mandatory, removing that 
line from the coding style doc? Maybe only making it non-mandatory for 
enum classes?


Thanks,

 -- Emilio
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Intent to ship: Some of the mediaqueries-4 syntax improvements.

2018-06-25 Thread Emilio Cobos Álvarez

Hi,

In bug 145 I plan to land most of the syntax improvements to 
mediaqueries-4.


Some of the features included are:

 * Allowing operators such as >, <, >=, or <= in media feature 
expressions, which allows to properly exclude media queries in a way 
min-* and max-* cannot, like:


 @media (width >= 900px) { some rules }
 @media (width < 900px) { some other rules }

 Guarantees that either `some rules` or `some other rules` apply, which 
is something that is not guaranteed by the existing syntax (see [1] or 
[2], for example).


 * Or expressions, and arbitrary expression nesting like:

 @media ((width >= 500px) and (width <= 900px)) or (not 
(orientation: portrait))


Things that are _not_ included are:

 * The range syntax, or allowing values before the feature name, that is:

@media (500px > width) or (500px < width < 900px)

   This is nice, but not so trivial to implement, and you can either 
reverse the expression (`(width <= 500px)` in the first case), or use 
the expanded version of it using `and` expressions for the second.


 * The changes to serialization and parsing that allows basically 
anything in a feature expression to be valid, that is, treating as a 
valid media query something like:


@media (orientation: portrait) or (garbage)

Bug 1469174 and bug 1469173 are tracking those two, respectively.

Let me know if you find unknown issues, or think we shouldn't ship this.

Thanks!

 -- Emilio

[1]: 
http://damienclarke.me/code/posts/those-1px-gaps-between-media-queries-can-be-a-problem

[2]: https://github.com/twbs/bootstrap/issues/19197

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Slightly delayed Intent to Ship: getComputedStyle changes on some edge cases.

2018-06-25 Thread Emilio Cobos Álvarez

Hi,

Just something I figure was worth sending an email for, due to the 
potential (ideally positive) web-compat impact.


In bug 1467722[1], I brought us closer to the spec and to WebKit / Blink 
in terms of what happens when we can't return a style for an element 
from getComputedStyle (mostly relevant for hidden iframes, for example).


Before that change, we either returned null (if you called 
getComputedStyle _after_ hiding the iframe) or threw an 
NS_ERROR_NOT_AVAILABLE exception (if you call getComputedStyle before 
hiding the frame, but getPropertyValue afterwards).


Now we'll never return null for getComputedStyle(..), and we'll return 
an empty string and a .length of zero when we can't get a style, 
aligning us with other browser's 'no style' behavior[2].


The idea is that this will prevent most of the pain that bugs like [3] 
cause us, and be a step into aligning with the CSSOM spec more closely.


This landed on time for 62, and I don't expect any breakage from it, but 
let me know if you see something.


 -- Emilio

[1]: https://bugzilla.mozilla.org/show_bug.cgi?id=1467722
[2]: WebKit and Blink do not return a style for an element outside of 
the document, for example, and they behave that way in that case.

[3]: https://bugzilla.mozilla.org/show_bug.cgi?id=548397
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


[desktop] Bugs logged by Desktop Release QA in the last 8 days

2018-06-25 Thread Bogdan Maris
Hello,

Here's the list of new issues found and filed by the Desktop Release QA team 
last two weeks.
Additional details on the team's priorities last week, as well as the plans for 
the current week are available at: https://tinyurl.com/yb3fuetd
Bugs logged by Desktop Release QA in the last 8 days

Firefox: Site Identity and Permission Panels
NEW - https://bugzil.la/1470382 - Visibility issues inside permission 
doorhanger on dark theme

Firefox: PDF Viewer
NEW - https://bugzil.la/1470409 - Visual glitches are triggered on zoom inside 
a Pdf. file

Firefox: Keyboard Navigation
NEW - https://bugizl.la/1470410 - "Page Up" doesn't scroll to the beginning of 
the list in Storage Inspector (DevTools)

Core: DOM
NEW - https://bugzil.la/1470419 - Video controls tooltips are offset on 
"spiegel.de"

Core: Audio/Video: Playback
NEW - https://bugzil.la/1469558 - The adds are played on top of a video from 
the bbc website

Core: Layout: Text
NEW - https://bugzil.la/1470136 - [WIN] Text descenders are clipped/covered on 
linkedin's "profile strength" section

Core: DOM: Core & HTML
NEW - https://bugzil.la/1470154 - theGuardian.com - menu Close click goes 
trough To scrollbar under it

Toolkit: Video/Audio Controls
NEW - https://bugzil.la/1470377 - Video context menu does not stay on screen 
and it pauses the video on Twitter

Toolkit: Startup and Profile
NEW - https://bugzil.la/1469314 - "Welcome to Firefox" page is not loaded when 
opening Firefox by dragging and dropping the path to a an .exe file into 
Command Prompt

DevTools: Storage Inspector
NEW - https://bugzil.la/1470406 - Keyboard navigation in Storage Inspector 
(DevTools) doesn't work properly

This is available as a Bugzilla bug list as well: https://tinyurl.com/yc55v63l

Regards,
Bogdan (:bogdan_maris)
Desktop Release QA

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Code Coverage Summary

2018-06-25 Thread dat vu
Vào 06:37:53 UTC+7 Thứ Bảy, ngày 23 tháng 6 năm 2018, Kyle Lahnakoski đã viết:
> ## Overview
> 
>   * **Coverage on recent changesets** - A list of recent changesets and
> the percent of new lines covered by tests.
> https://firefox-code-coverage.herokuapp.com
>   * **Coverage addon** - Use it to show coverage on your patches in
> Bugzilla -
> https://addons.mozilla.org/en-US/firefox/addon/gecko-code-coverage/
>   * **Daily coverage aggregates** - by directory and file -
> https://codecov.io/gh/mozilla/gecko-dev
>   * **Zero coverage reports** -
> https://marco-c.github.io/code-coverage-reports/ with ore details here:
> https://release.mozilla.org/tooling/codecoverage/2018/03/23/code-coverage.html
>   * **Not-so-raw coverage artifacts** - If you are interested in the
> details, you may want to see the artifacts produced by coverage builds:
> https://treeherder.mozilla.org/#/jobs?repo=mozilla-central=ccov
> 
> 
> ## Contact Us
> 
> If you want to know more, or want to participate, stop by and say "hi":
> 
>   * **Mail list** - codecover...@mozilla.com
>   * **IRC** - #codecoverage  
> 
> 
> ## Details 
> 
> This past 6 months have been spent working on minutia and hard problems
> of the CodeCoverage system. There are many platforms, many suites, a
> complex build, and a lot of data. Taming the complexity so we can
> provide "clean" coverage artifacts is proving arduous. Here are some
> examples:
> 
>  * **translating filenames** - Our build has generated source files, and
> files copied to appropriate directories before compile. The file
> reported in coverage artifacts must be mapped back to files we see in
> the tree. Our coverage processing now does this work.
>  * **chunk <-> file mapping** - Our coverage is collected by running
> hundreds of tasks, each responsible for running some part of a test
> suite; called a "chunk".  An interesting question is "if we have a
> changeset, and we know what files it changed, can we schedule less
> chunks?" The chunk<->file mapping allows use to answer that question.
> Turns out the answer is "not really".
>  * **windows coverage** - If you visit Treeherder you will see we are
> collecting coverage on Windows (using clang-cl). This allows us to see
> platform-specific lines.
>  * **grcov improvements** - now faster than before, and can process llvm
> coverage output
>  * **jsdcov e10s** - We had to verify that coverage was getting
> collected by all processes
>  * **frontend refinements** - There has been continued work on the
> frontend to meet Release Management's use cases.  Another cohort of
> UCOSP students has helped fix bugs, and added functionality to the
> frontend. 
>  * **variability analysis** - Coverage at the Firefox-scale has
> variability from many different sources. For instance, running the same
> test on the same revision multiple times shows differences from one run
> to the next. Plus, in some other cases, tests fail, which results in
> different coverage. These situations were explored in more detail to
> better understand what variability we are dealing with.
>  * **jsdcov vs jsvm** - Both are collecting coverage on javascript; they
> appear to be capturing different coverage; we must look into this more
>  * **bugs!** - Many bugs, timing bugs in the tests, and bugs in the
> coverage collection/reporting pipeline.
>  * **android experiments** - Android will be be given more focus in the
> coming year, so we should look at how coverage will help.
>  * **backend improvements** - Work that must be done to deal with data
> volume, but is barely visible to the end user. 
>  * **backend moved to production** - CodeCoverage has moved to
> production; and this took time.
>  * **subtracting baselines** - We reduce our coverage artifact size by
> subtracting no-test coverage from test coverage.  In theory, after
> subtraction, the coverage represents what is uniquely used by the test
> and removes all standard browser/test start and shutdown coverage.
> However, we have found that coverage variability is affecting these
> results as well and are now looking into mitigation strategies.
>  * **per test coverage** - One of our goals is to collect coverage at
> the test level; this can help guide what tests should be run when a file
> changes. It may also help with understanding gaining a deeper
> understanding of what our tests are testing.
> 
> ## The Future
> 
>   * **move off codecov.io** - Our data volume and our use cases, do not
> fit with codecov.io. We will use our own database to store coverage
> artifacts, and enable us to do more. 
>   * **per test coverage** - One of our goals is to collect coverage at
> the test level; this can help guide what tests should be run when a file
> changes. It might also help understanding which tests are important
> (e.g. for evaluating whether to disable or fix intermittent tests)
>   * **compare coverage across revisions** - We want to markup the
> coverage so a reasonable comparison can be done between