Re: Proposed W3C Charter: Pointer Events Working Group

2016-03-02 Thread Matt Brubeck
I think that Mozilla should comment in favor of the PEWG charter. Mozilla has 
been participating in the WG and it is doing important work for interop and 
performance of pointer input handling.
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Enabling Pointer Events in Firefox (desktop) Nightly

2015-04-24 Thread Matt Brubeck
tl;dr:

We plan to enable Pointer Events for mouse and pen input in Firefox Nightly 
builds within the next few weeks.

Background:

Pointer Events is a W3C recommendation that defines new DOM events for unified 
handling of mouse, touch, and pen input.  It also defines a new 'touch-action' 
CSS property for declarative control over touch panning and zooming behavior:

http://www.w3.org/TR/pointerevents/

The 'touch-action' CSS property is shipping today in both IE11 and Chrome 
stable.  The DOM PointerEvent API is shipping today in IE11, and the Chrome 
team plans to ship it soon.

Status:

Implementation of pointer events and 'touch-action' in Gecko has been in 
progress for several months.  Both features can be enabled in Firefox Nightly 
with prefs, currently off by default.  When these prefs are turned on:

* Events for mouse input are supported on Windows, Mac, and Linux.
* Events for pen input are supported on Windows.
* Events for multi-touch input, and the 'touch-action" property, are a work in 
progress on Windows.  These features depend on e10s, and on Async Pan/Zoom 
(APZ) which is currently preffed off by default on desktop.
* PointerEvent and 'touch-action' are not yet implemented on Android or Firefox 
OS, though in the long term much of the code will be shared between all 
platforms, through the APZ controller.

Plans:

The implementation of Pointer Events should be complete enough to enable in 
desktop Nightly builds within the next few weeks.  This will enable Pointer 
Events for mouse and pen input.  (It will also enable Pointer Events for 
multi-touch input on Windows when e10s and APZ are enabled, though like APZ 
itself this is still experimental and will not yet be turned on by default.)

If no serious problems are found, then we want to consider letting this feature 
ride the train to the Aurora/Dev.Edition channel (but not further).

For the release and beta channels, we may want to wait until after touch input 
is ready to ship on Windows (depends on e10s + APZ), and we might also want to 
wait until it is ready to ship on Android and/or Firefox OS at the same time or 
soon after.  When the time is closer, we will send an "Intent to Ship" email to 
this list for discussion.

See also:

This wiki page has some links to tracking bugs and other information:
https://wiki.mozilla.org/Gecko/Touch
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: mozmake users, upgrade

2013-12-11 Thread Matt Brubeck

On 12/10/2013 4:15 PM, Brian R. Bondy wrote:

Is this the default right now? If someone follows the steps and gets the 
Mozilla Build package on that page[1], will their build fail or succeed?

[1]: 
https://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions/Windows_Prerequisites


That page points to the latest MozillaBuild release (1.8) which does not 
contain any version of mozmake.  Someone who follows those instructions 
will not be affected by this bug, since their build will use pymake by 
default.


The only people who affected by this bug are those who downloaded an 
early version of "mozmake.exe" and installed it manually.

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


Re: Plug-in feature not available in the web platform. Alternatives?

2013-11-12 Thread Matt Brubeck

On 11/8/2013 1:33 AM, fma spew wrote:

3- We haven't found any indication of Mozilla about alternatives for these
kind of plug-ins, meaning plug-ins that need access to, in this case,
Windows stuff. Google has provided alternatives though.


One alternative is a Firefox extension.  Firefox extensions can access 
both native platform APIs and web content.  In particular, extensions 
can use js-ctypes to call C/C++ code.


We've also mentioned the possibility of bundling a traditional plugin 
with a Firefox extension to change the default click-to-play behavior:


"If a plugin is installed bundled within a Firefox extension, the 
extention can enable the plugin by default (for all sites or for 
particular sites) via preferences/permissions. Because the user chose to 
install the addon, I see no problem with allowing this sort of default 
activating."

-- https://mail.mozilla.org/pipermail/firefox-dev/2013-September/000903.html
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Cost of ICU data

2013-10-17 Thread Matt Brubeck

On 10/17/2013 10:24 AM, Ehsan Akhgari wrote:

We used to have codesighs measurements (and perhaps still do) but
historically many people just ignored them.


We stopped collecting codesighs measurements in November 2012 (bug 
803736).  As Ehsan says, it was widely ignored.  It "regressed" 
constantly, and it never seemed reasonable to demand that people 
implement desired features and fixes without adding any code.


For this reason, I'm a bit confused at the level of scrutiny of ICU's 
size when we've added many times that amount to our download size over 
the past couple of years without any pushback or even discussion.


(On a related note, what happened to http://www.arewesmallyet.com/?)
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: devolution of cleartype rendering in Fx chrome

2013-10-16 Thread Matt Brubeck

On 10/16/2013 1:24 PM, Karl Tomlinson wrote:

Many people use browsers for reading text, so I would like to
claim that text rendering quality is usually more important than
performance.

I apologize for not looking through the referenced bugs.


To repeat a point from my previous message: These bugs do not affect 
rendering of text on web pages.  They are about rendering of specific 
items in the Firefox chrome.  (That doesn't mean we should ignore the 
bugs; I'm just addressing the "people use browsers for reading" comment 
above.)

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


Re: devolution of cleartype rendering in Fx chrome

2013-10-16 Thread Matt Brubeck

On 10/15/2013 1:36 PM, al...@yahoo.com wrote:

Why are these ignored?


I can't speak for anyone else, but I would guess it's because no one who 
has looked at them has figured out any useful information to add, or 
found the time to investigate further.


As to whether we should pull someone off of other tasks to focus on 
these XP text-rendering bugs, that's tricky.  They are user-visible 
regressions and a large portion of our users are on XP.  On the other 
hand, they do not affect web content; XP is a (slowly) shrinking 
platform; and the difference between grayscale and subpixel AA is 
jarring to some users but subtle or invisible to others.


In general, if I understand correctly, it's hard to use native subpixel 
AA in layers that use hardware accelerated compositing.  So in some 
cases we might need to choose between speed and subpixel rendering. 
(I'm not at all an expert in this area, though.)

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


Re: Proposal: Email individual patch authors who improve performance

2013-08-27 Thread Matt Brubeck

On 2013-08-12 6:14 PM, Matt Brubeck wrote:

I've posted a patch that would change how the graph server sends email
when a performance *improvement* is detected:
https://bugzilla.mozilla.org/show_bug.cgi?id=904250


I landed this patch, and it will go live with the next graph server 
deployment.  I also just landed some patches that should reduce the main 
causes of false alarms (bug 904322, bug 879903) to minimize any 
noise/spam from this change.


On 8/16/2013 11:27 AM, Mike Hoye wrote:

Can other addresses be CC'ed when this specifically (and in the future,
other automatically-detectable improvements) are accomplished? I'd like
to be able to automate badge-assignment stuff on Mozillians as much as
possible, and this would be a big help.


Yes -- you can either subscribe your address to the dev-tree-management 
mailing list to receive all of the emails, or you could add additional 
logic to the "emailWarning" function in this code:

http://hg.mozilla.org/graphs/file/tip/server/analysis/analyze_talos.py

If you want to do the latter, please file a bug in the "Release 
Engineering: Tools" component in Bugzilla.

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


Re: Proposal: Email individual patch authors who improve performance

2013-08-19 Thread Matt Brubeck

On 8/13/2013 1:57 PM, Jet Villegas wrote:

This is awesome! Is it possible to see a log of the recipients/patches?
Yes - all of the emails for both regressions and improvements are also 
sent to the dev-tree-management list, which is archived at 
https://groups.google.com/forum/#!forum/mozilla.dev.tree-management


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


Proposal: Email individual patch authors who improve performance

2013-08-12 Thread Matt Brubeck
I've posted a patch that would change how the graph server sends email 
when a performance *improvement* is detected:

https://bugzilla.mozilla.org/show_bug.cgi?id=904250

Emails about regressions would be unchanged.  Emails about improvements 
would now be sent to individual patch authors using the same logic as 
regression emails:


* If there are up to five authors in the regression range, email 
dev-tree-management and each of the patch authors.

* If there are more than five authors, just email dev-tree-management.

I've spoken to other developers in a few places, and most were in favor 
of this change.  Those who don't want the extra emails can filter them 
out if they want to.  Motivations for this change:


- When you are expecting a patch to affect performance, the email is 
useful confirmation.  Receiving it directly saves you the work of 
searching through the mailing list archives or manually inspecting graphs.


- When you're not expecting a performance improvement, it may be 
important to know that one has happened so you can figure out why. 
(Sometimes it's a sign of a bug, for example if you accidentally 
disabled some code.)


- Warm fuzzy feeling for developers who write perf wins!

I think the accuracy of the analysis script is now good enough that this 
would not generate too many spurious emails.  If you have any opinions 
or suggestions about this change, please share them here or in bug 904250!

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


Re: std::unique_ptr, std::move,

2013-08-01 Thread Matt Brubeck

On 7/31/2013 4:06 AM, Brian Smith wrote:

On Wed, Jul 31, 2013 at 12:34 PM, Mike Hommey  wrote:


I strongly oppose to any requirement that would make ESR+2 (ESR31) not
build on the current Debian stable (gcc 4.7) and make ESR+1 (ESR24) not
build on the old Debian stable (gcc 4.4). We're not going to change the
requirements for the latter. And b2g still requires gcc 4.4 (with c++11)
support anyways. Until they switch to the same toolchain as android,
which is 4.7.


Why are you so opposed? I feel like I can give a lot of good reasons why
such constraints are a net loss for us, but I am not sure what is driving
the imposition of such constraints on us.


I agree that this constraint would have a cost for us.  Since you ask, 
I'll try to explain some of the benefit; then we can try to decide which 
outweighs the other.


Firefox users on Linux typically depend on their distribution to provide 
security updates.  Needing to backport new compiler versions to old OS 
releases would raise the cost for those distributors to publish Firefox 
updates, possibly to the point where it is no longer feasible.  If so, 
Linux users might lose the ability to easily install Firefox and keep it 
up to date.  (They would still have the option of downloading tarballs 
from ftp.mozilla.org, but this is not really something that I expect any 
non-expert users will do.)


If we want Firefox for Linux to remain viable for Linux users, then we 
probably need to be willing to do *some* work to make it so -- either by 
supporting the compiler versions available in their distributions or by 
providing our own package repositories for popular distributions (like 
Google Chrome does).  Otherwise we might need to tell our Linux users to 
switch to Chrome if they want a usable way to install a secure browser.


Now, I don't think we need to do *quite* as much work as glandium 
proposed above.  For example, I think it would be enough to support just 
the current Debian stable rather than the current and previous stable 
versions.  Users who want an up-to-date Firefox can update their 
distribution.  Debian doesn't keep Iceweasel up to date in oldstable anyway.


(Also: at the moment B2G is holding us back more than Debian Stable.  If 
we can't use the latest compiler on our *own* Linux distribution, why do 
we expect other distributors to do better?)



My position is that we should be doing everything we can to improve
developer productivity


But this is clearly not an absolute, otherwise we'd do things like drop 
Windows XP and OS X 10.6 support today.  We are clearly willing to pay 
some productivity cost in order to support a wider range of platforms, 
and so we need to talk about trade-offs rather than unwavering principles.


As for whether we should care about Linux users:  Just counting users is 
not enough.  For example, a disproportionate number of our contributors 
come from the Linux world.  If Firefox had not been a good browser on 
Linux, I would probably not be a Firefox user or developer today.

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


Re: Shutting off leak tests?

2013-07-17 Thread Matt Brubeck

On 7/17/2013 4:26 AM, Ted Mielczarek wrote:

The only valuable thing we're losing from shutting this off is
tracemalloc coverage, which we don't have elsewhere. I don't have any
evidence to show that anyone has actually looked at the tracemalloc data
or done anything useful with it in recent history, though. Leaks
discovered by tracemalloc don't make the test fail, so we're not
measuring much there.


Trace Malloc measures three things: leaks, max heap size, and number of 
allocations.  All of these are reported to the graph server and use the 
same monitoring as Talos benchmarks.  Like Talos data, this data does 
not have a consistent process or owner responsible for watching it or 
improving it, but there are some people who watch for alerts from the 
monitoring script and try to investigate regressions.


Trace Malloc Leaks is a fairly stable measurement; our monitoring has 
not found regressions in it very often, but it does occasionally (about 
once a year?) help alert us to an actionable bug that might have been 
harder to fix otherwise.  The latest example is: 
https://bugzilla.mozilla.org/show_bug.cgi?id=872947


Trace Malloc MaxHeap is somewhat useful, but largely overlaps with the 
measurements produced by AWSY and Tp5, both of which are probably more 
useful and representative.


Trace Malloc Allocs is not very useful from what I understand; a change 
in this benchmark does not necessarily correlate with any user-visible 
change.


So the main thing we'd lose is graph server monitoring of Trace Malloc 
Leaks.  This is occasionally useful, but in a limited way because the 
monitoring process is unowned, and because the current value of the 
benchmark is high enough that small changes are ignored by the 
monitoring system.  It has some chance of sometimes making large 
regressions easier to detect.

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


Re: Embracing git usage for Firefox/Gecko development?

2013-07-10 Thread Matt Brubeck

On 5/31/2013 12:32 PM, Boris Zbarsky wrote:

On 5/31/13 3:20 PM, Matt Brubeck wrote:

blame mobile/android/chrome/content/browser.xul:
   git 1.015s
   hg  0.830s


Was this a git blame -C (which would be more similar to hg blame), or
just a git blame?


Good catch. (Sorry, I missed your messages on IRC warning me about 
this.)  The above numbers were without -C.  "git blame -C" takes about 
3.7 seconds on this file.

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


Re: Sandboxed, off-screen pages for thumbnail capture

2013-07-10 Thread Matt Brubeck

On 6/17/2013 9:48 PM, Drew Willcoxon wrote:

The desktop Firefox team is building a new Toolkit module that captures 
thumbnails of off-screen web pages. Critically, we want to avoid capturing any 
data in these thumbnails that could identify the user. More generally, we're 
looking for a way to visit pages in a sandboxed manner that does not interact 
with the user's normal browsing session. Does anyone know of such a way or know 
how we might change Gecko to support something like that?


What about launching/forking a separate process to capture thumbnails 
for these pages?  I don't mean an Electrolysis-style child process that 
is tightly coupled to the browser, but rather a separate program that 
does not use the Firefox profile at all.  The browser would pass this 
program a URL and it would just render a page and save the thumbnail.

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


Re: Windows XP virtual memory peak appears to be causing talos timeout errors for dromaeo_css

2013-07-10 Thread Matt Brubeck

On 6/3/2013 7:28 AM, jmaher wrote:

We have a top orange factor failure which is a talos timeout that only happens on windows XP 
and predominately on the dromaeo_css test.  What happens is we appear to complete the test 
just fine, but the poller we have on the process used to manage firefox never indicates we 
have finished.  After doing some screenshots and looking at the process list, I haven't 
found much except that on the failing cases the _Total value for "Virtual Bytes 
Peak" is >2GB, and for all the passing instances it is ~1.25GB.

Are there other things I should look for, or things I could change to fix this 
problem?


This *might* be related to bug 859955 which a few people have been 
actively working on recently:


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


Re: Embracing git usage for Firefox/Gecko development?

2013-07-10 Thread Matt Brubeck

On 5/30/2013 5:56 PM, Johnny Stenback wrote:

Some of the known issues with embracing git are:

   * Performance of git on windows is sub-optimal (we're
 already working on it).


This has become a bit of an urban legend; I often see it repeated but 
seldom with actual measurements.  I don't think it's a valid reason to 
avoid git unless there are specific cases where git's performance on 
Windows is insufficient compared to hg's performance on Windows.


In some brief tests using hg.mozilla.org/mozilla-central versus 
github.com/mozilla/mozilla-central on a modern Core i7 laptop with SSD 
and 8GB RAM, after throwing away the first result (so I'm measuring 
"warm cache" times; "cold" times would be useful too but would take more 
work for me to measure correctly):


log the last 10,000 changes:
  git 0.745s
  hg  2.570s

blame mobile/android/chrome/content/browser.xul:
  git 1.015s
  hg  0.830s

diff with no changes:
  git 2.136s
  hg  2.001s

status:
  git 3.011s
  hg  1.680s

commit one-line change to configure.in:
  git 2.420s
  hg  3.911s

clone from remote:
  git 26m43s
  hg  19m01s

pull from remote to an up-to-date clone:
  git 1.585s
  hg  0.875s

update working dir from tip to FIREFOX_AURORA_23_BASE:
  git 16.008s
  hg  25.704s

There *are* some cases where git is worse than hg on Windows, but hg is 
as bad or worse for many common operations like log, diff, and commit. 
Overall I find both painful on Windows, but neither noticeably better 
than the other.


(And of course some of these tests are highly unfair because the git 
repo has a more complete history than the hg one, or because they test 
network or server performance that is unpredictable and may vary between 
github and hg.m.o.)

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


Re: Proposal for an inbound2 branch

2013-05-02 Thread Matt Brubeck

On 5/2/2013 6:21 AM, Ehsan Akhgari wrote:

On 2013-05-02 5:46 AM, Neil wrote:

Why do we need a separate repo? Can we not simply close the broken head
and start again at the last green changeset?


Multiheaded repos are evil.  They're very hard to deal with, and I don't
think that buildbot can deal with them properly.


Buildbot can deal with a multi-headed Try, so it can probably be 
convinced to deal with a multi-headed inbound, even if it needs to be a 
special case like Try.


Individual developers might have more problems (they'll want to pull 
from inbound, unlike Try) but I think as long as the inactive heads are 
closed it won't freak out Mercurial too much...  The suggested workflow 
with inbound2 would lead to almost-identical multi-headed repos in 
developers' local clones anyway.

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


Re: multiline pref value strings in user.js

2013-04-27 Thread Matt Brubeck

On 4/27/2013 3:26 PM, al...@yahoo.com wrote:

... appear to be possible without the \ escape.  In fact the \ can not be
present as it does not escape the newline but becomes a part of the string.

So it does not seem to follow js rules,  so what is this format?


The format doesn't have a name that I know of; it's "that weird format 
that prefread.cpp parses" and it's not really documented except:

http://mxr.mozilla.org/mozilla-central/source/modules/libpref/src/prefread.cpp#151
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-26 Thread Matt Brubeck

On 4/26/2013 4:14 PM, Justin Lebar wrote:

If I have a patch ready to land when inbound closes, what would be the
sequence of steps that I need to do to land it on inbound2?  Would I
need to have an up-to-date inbound2 clone and transplant the patch
across?


I think mbrubeck or someone knows how to maintain multiple hg branches
in one repo, but I've never figured that out...


Yes, having been a git user for years before I started with Mercurial, I 
simply treat Mercurial as a slightly crippled version of git.  :)


hg clone https://hg.mozilla.org/mozilla-central/
cd mozilla-central
# hack on some stuff
# do some builds and tests
hg new my-patch

# time to push to inbound:
hg qpop
hg pull https://hg.mozilla.org/integration/mozilla-inbound/
hg up -c
hg qpush && hg qfin my-patch
hg push -r tip https://hg.mozilla.org/integration/mozilla-inbound/

# Now, let's backport something to Aurora!
hg pull https://hg.mozilla.org/releases/mozilla-aurora/
hg export -r a3c55bdbe37d | hg qimport -P -n patch-to-uplift
hg push -r tip https://hg.mozilla.org/releases/mozilla-aurora/

# After a good night's sleep, back to work!
# hg pull -u won't work across branches, so:
hg pull https://hg.mozilla.org/mozilla-central/
hg up -c
# do a build
# start hacking again!

This sort of workflow is of course much more natural in git, which makes 
it easy to track the state of the remote repo(s).  The bookmark workflow 
that gps added to MDN basically emulates part of the functionality of 
git remote tracking branches.


I'm actually astounded that Mercurial doesn't have better support for 
this built in; I see Mozilla developers doing crazy time-consuming 
things all the time because of Mercurial's poor support for working with 
remote repositories.  :(

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


"Experimental Technology" in Gecko (Re: Storage in Gecko)

2013-04-26 Thread Matt Brubeck

On 4/26/2013 11:43 AM, Gregory Szorc wrote:

Have you explored using IndexedDB?


Not seriously. The "this is an experimental technology" warning on MDN
is off-putting.


The largest audience for MDN is web developers, so we put that warning 
on anything that's not ready for widespread use on the public web, 
including most things that are prefixed in current browsers.


Here are some other things with the same "experimental technology" 
warning on their MDN pages:


* JavaScript "for...of" loops
* CSS transform, transition, animation
* WebSocket
* Set, Map, WeakMap

Obviously we have no qualms against using these ourselves.  When an 
experimental technology is one that *we* are promoting as part of the 
development platform *we* are building, then of course we should using 
it in our own code.  In fact we should be early adopters, because if 
there are issues that prevent us from using our own APIs, then they will 
often affect other developers on our platform, so we need to know about 
those and fix them.

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


Re: Improving Mac OS X 10.6 test wait times by reducing 10.7 load

2013-04-26 Thread Matt Brubeck

On 4/26/2013 9:10 AM, Armen Zambrano G. wrote:

Just disabling debug and talos jobs for 10.7 should reduce more than 50%
of the load on 10.7. That might be sufficient for now.


I'd be happy for us to disable all Talos jobs on 10.7, on all trees. 
I've been keeping track of Talos stuff recently and I have not seen any 
genuine regressions that are 10.7-specific, so I don't think it's 
providing us much benefit to run these benchmarks on three Mac platforms 
simultaneously.


In terms of tracking regressions, it would be better to have more 
complete data 10.6 alone than to have incomplete data (due to 
coalescing) on 10.6 and 10.7.

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


Re: Preparing for the next windows PGO build memory exhaustion

2013-04-18 Thread Matt Brubeck

On 4/18/2013 12:10 PM, Matt Brubeck wrote:

Since we run PGO builds only a few times a day, the ranges can be large.
  For those that include m-c merges, you could narrow them down using
the m-c data.  WebIDL seems to be a common theme.


I filed https://bugzilla.mozilla.org/show_bug.cgi?id=863492 to 
investigate whether Paris bindings are a particular contributor to 
linker memory usage, and possible solutions.

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


Re: Preparing for the next windows PGO build memory exhaustion

2013-04-18 Thread Matt Brubeck

On 4/17/2013 3:07 PM, Matt Brubeck wrote:

analyze_talos.py does identify several real regressions in that dataset
-- but it suppresses emails for them because each one is an increase of
less than 2% (see bug 822249).  Here are regressions identified by the
latest version of analyze.py:


In case anyone wants to investigate these, I've added regression ranges 
below.  These are automatically generated; I haven't double-checked them 
manually.


Since we run PGO builds only a few times a day, the ranges can be large. 
 For those that include m-c merges, you could narrow them down using 
the m-c data.  WebIDL seems to be a common theme.



changesetmem (KB)   t-test  % change

c1ee454506f6 329686 139.519   1.05%


http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=88543d623c3f&tochange=c1ee454506f6

(Includes several Paris bindings changes, among others)


0acac77dd920 333029  11.809   0.99%


http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=16ddbb6852ec&tochange=0acac77dd920

(More Paris binding changes, and others)


e6ca584f4fe7 335801   9.753   0.86%


http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=a69f329fc7ee&tochange=e6ca584f4fe7

(includes the Win8 Metro merge)


80d52655c8b8 339830  74.742   0.45%


http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=4637a1449900&tochange=80d52655c8b8

(includes some WebIDL-related changes)


d27445d1eac5 345040  26.214   0.99%


http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=92824d900e25&tochange=d27445d1eac5


eaff15332579 346897  70.525   0.52%


http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=e38c5c346840&tochange=eaff15332579

(Olli Pettay — Bug 822399 - Make Event to use Paris bindings)


Perhaps we should modify bug 822249 to ignore the 2% threshold for
specific tests where we *do* care about small changes.  Or for any
change with a very high t-test score.  I filed this bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=863061


A fix has been checked in, so we should start getting alerts for future 
linker memory regressions of any size.

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


Re: Preparing for the next windows PGO build memory exhaustion

2013-04-17 Thread Matt Brubeck

On 4/13/2013 1:28 AM, Mike Hommey wrote:

The first thing to notice in here is the 13 spikes down. The last one is
bug 860371. I wasn't aware of any of the 12 others. It might be worth
looking into them to understand why they happen. Interestingly, my
dev-tree-management archive doesn't show any notification for these
(except for the last one), nor for any of the progressive "regressions".


analyze_talos.py intentionally ignores transient changes.  Until 
recently it required 5 new test runs to show a statistically significant 
difference from the preceding 30 runs.  (Bug 858877 changed this to 12 
new runs and 12 preceding runs, but the concept is still the same.)  So 
it's expected that the one-time spikes were ignored.


analyze_talos.py does identify several real regressions in that dataset 
-- but it suppresses emails for them because each one is an increase of 
less than 2% (see bug 822249).  Here are regressions identified by the 
latest version of analyze.py:


changesetmem (KB)   t-test  % change

c1ee454506f6 329686 139.519   1.05%
0acac77dd920 333029  11.809   0.99%
e6ca584f4fe7 335801   9.753   0.86%
80d52655c8b8 339830  74.742   0.45%
d27445d1eac5 345040  26.214   0.99%
eaff15332579 346897  70.525   0.52%
0ff1755d6359 279976 263.117 -21.58%
1c690be31939 358659  11.241  28.06%

Perhaps we should modify bug 822249 to ignore the 2% threshold for 
specific tests where we *do* care about small changes.  Or for any 
change with a very high t-test score.  I filed this bug:


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


Re: A new way to run mach

2013-04-17 Thread Matt Brubeck

On 4/17/2013 10:50 AM, Gavin Sharp wrote:

I think Rob was talking about the case where you would call e.g.:

"mach build browser/base"

mach could know that on Mac, that also requires the equivalent of
"mach build browser/app" for those changes to actually be repackaged
into the bundle in objdir/dist/, because the build system doesn't.
The plan for cases like this is to integrate jdm's "smartmake" code into 
the build system and allow "mach build" to use it:

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


Re: A new way to run mach

2013-04-17 Thread Matt Brubeck

On 4/15/2013 11:04 AM, Rob Campbell wrote:

On Mac, does mach do the right thing when you rebuild browser, does it also 
rebuild browser/app so your application bundle gets updated?
"mach build browser" is the same as "make -C $objdir/browser" 
(literally, it just executes that "make" command to do all the work), so 
just like "make" it should rebuild all of the sub-directories too as 
long as the dependencies are correct.

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


Re: Landing on Trunk - Target Milestone vs. Status Flag Usage vs. Tracking for Future Releases

2013-04-10 Thread Matt Brubeck

On 4/10/2013 5:14 PM, Gregory Szorc wrote:

I don't really have much to say on the specifics of this post other than
a simple question: why don't we have a checkin hook or bot automatically
update Bugzilla flags when changesets are pushed? This would save
developer time and would reduce the error rate of bugs not updated
properly (especially when you consider that policies change over time).


http://www.graememcc.co.uk/m-cmerge/ is a tool that will automatically 
resolve bugs and set Target Milestone correctly for patches pushed to 
m-c.  It's used by most of the people who regularly merge from inbound 
and other branches to m-c.


It still needs to be invoked explicitly by the person who lands/merges 
the patches, so it's not a fool-proof automatic solution.  Just pointing 
it out for anyone following who doesn't know about this part of the process.

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


CSS outline-color: invert

2013-04-09 Thread Matt Brubeck
Support for "outline-color: invert" was removed in Firefox 3, and a bug 
to restore support was RESOLVED WONTFIX several years ago because it was 
deemed infeasible while using hardware acceleration [1].


Since then, some developers have asked for reconsideration on the bug; 
since some of their questions in the bug remain unanswered, one 
developer asked me to bring it up here.


The specific question is whether the many changes to our graphics 
acceleration since 2009 have made it any more feasible to implement 
"invert" today.  Do IE or Opera use any tricks to do this that could be 
useful for us too?


In addition to the obvious use case of making outlines visible against 
multiple background colors, apparently this can be used for hacks [2] to 
invert entire regions, similar to David Baron's SVG filter demo [3] but 
possibly more flexible.


[1]: https://bugzilla.mozilla.org/show_bug.cgi?id=359497#c24
[2]: http://lea.verou.me/2011/04/invert-a-whole-webpage-with-css-only/
[3]: http://dbaron.org/log/20110430-invert-colors
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


A new way to run mach

2013-03-16 Thread Matt Brubeck
I recently landed a new feature for the "mach" build tool [1].  You can 
now run mach from anywhere in the mozilla source tree.


To get started, add mach to your $PATH.  You can do this by changing the 
PATH environment variable to include the mozilla source directory, or by 
copying the "mach" script from your source directory to a location like 
/usr/local/bin.


Then you can run mach commands from anywhere in your source directory, 
and you can use paths within your current directory.  For example, if 
you are working on some devtools code you might run commands like:


  cd browser/devtools

  # Rebuild the code in browser/devtools/webconsole:
  mach build webconsole
  # Run browser-chrome tests from browser/devtools/webconsole/test:
  mach mochitest-browser webconsole/test

  # Most commands work the same no matter where you run them:
  mach clobber
  mach build   # Do a full rebuild
  mach package
  mach install

You can also run "mach" within an objdir.  If you have multiple objdirs 
with different mozconfigs, mach automatically defaults to the mozconfig 
that built the current objdir.  This means you can switch between 
configurations as easily as:


  cd obj-debug
  mach build
  mach xpcshell-test

  cd ../obj-optimized
  mach build
  mach xpcshell-test

(Note: the automatically-detected mozconfig is used as a default, but 
you can still override it by explicitly setting the MOZCONFIG 
environment variable.)


The "mach" script is now just a wrapper; it loads the actual mach code 
and configuration from whichever source directory you run it in.  So you 
can add mach to your path once and it should work with any current or 
future mozilla-central directory.  (For older trees, like the current 
aurora or beta repos, you still need to run mach the old way, using 
"./mach" in the top source directory.)


For development details, please see bugs 840588 and 840690 (but note 
that the feature changed a bit since those bugs were first filed).  Huge 
thanks to gps and all the other people who helped in the design and 
implementation of this feature!


[1] https://developer.mozilla.org/en-US/docs/Developer_Guide/mach
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=840588
[3] https://bugzilla.mozilla.org/show_bug.cgi?id=840690
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


setTimeout without a DOM window using Timer.jsm

2013-03-02 Thread Matt Brubeck
I noticed a number of places in Mozilla code where setTimeout-like 
functionality is needed, but DOM window.setTimeout is not available 
because the code runs in a non-DOM context like a JSM.  In a few places 
we had created pure-JS implementations of window.setTimeout to solve 
this problem.


With Gavin's encouragement, I extracted one of these into a standalone 
JSM file, to make it easier to share.  If you need to call setTimeout 
without a DOM window, you can now use Timer.jsm:


https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm

This offers two main benefits over just using nsITimer directly: it 
makes it easier to re-use code written for use in a DOM window, and it 
addresses this common nsITimer garbage collection problem:

http://www.joshmatthews.net/blog/2011/03/nsitimer-anti-pattern/

For more details, see bug 840360.  Thank you to Chris Jones who wrote 
the original code, and to several other people who gave feedback on it.

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


Re: Upcoming separation between resource://app and resource://gre

2013-02-08 Thread Matt Brubeck

On 2/7/2013 6:12 AM, Mike Hommey wrote:

- But really, what does it change for developers?

Almost nothing they shouldn't be doing already. The main difference is
that resource://app/ and resource://gre/ urls are not going to point to
the same location anymore, which means I won't have to file bugs about
$randomFile including resource://gre/modules/something.jsm instead of
resource://app/modules/something.jsm.


This seems like a major add-on compatibility issue.  Has anyone looked 
into how many add-ons will now have incorrect resource: URIs?  How can 
we scan for these, and how can we mitigate the breakage?

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


Re: UA string: "Touch" or "Tablet" again

2012-11-12 Thread Matt Brubeck
Here is my personal suggestion for how we should handle this in our 
"Metro" browser, and the reasoning behind my proposal.  This is meant to 
be a minimal step to bring Firefox for Metro in line with other 
platforms, without making changes to any other products.  It might need 
to be tweaked if we make any broader, cross-platform UA changes.


This was originally posted at:
https://bugzilla.mozilla.org/show_bug.cgi?id=809396#c5

ASSUMPTIONS:

A. The UA header is used mainly by sites that serve very different 
content to different devices.  Sites that use the same basic UI for both 
mouse and touch can serve a single page that works with both types of 
input and uses feature detection to determine browser capabilities as 
needed.


B. For any site that serves different content to "desktop" and "mobile" 
users, some portion of users will disagree with the site's default (no 
matter which is the default) and will want to switch to the other version.


C. Users of touch-screen devices will sometimes interact with the device 
primarily through touch, and sometimes interact primarily with a mouse / 
trackpad / other "precise" pointer device.  (Some users will stick to 
one interaction type all the time, while others may switch back and 
forth even on the same device.)


D. *Most* people will prefer the touch-friendly "Metro" Firefox UI while 
they are interacting primarily through touch, and *most* people will 
prefer the mouse-friendly "desktop" Firefox UI while they are 
interacting primarily with precise pointer devices.


E. Many web developers will test on only one or two device types.  More 
variations in the User-Agent header would mean more developers who 
mishandle some of those variations without realizing it.


PROPOSAL:

* We should add "Tablet" to the User-Agent header when the the Metro 
Firefox UI is used *and* the hardware supports touch input.


* For non-touch hardware, we should make no changes to the User-Agent 
header.


* For the classic (desktop) Firefox UI, we should make no changes to the 
User-Agent header.


PROS:

* Users who browse in the mouse-friendly Windows desktop environment 
will see no changes in content.  In particular, users of 
touch-compatible desktops or notebooks who nonetheless prefer the 
traditional "desktop" environment will generally see familiar 
desktop-style web content.


* Users who browse in the touch-friendly Windows "Metro" environment are 
likely to get touch-optimized content by default.


* Sites are unlikely to serve touch-only content to users without touch 
hardware.


* Users have an easy and (somewhat) intuitive way to choose between the 
"tablet" and "desktop" versions of sites, for example by using Metro 
Firefox's "View in desktop" command.


* Sites that follow our existing guidelines to send tablet-optimized 
content to Firefox for Android tablets will not need any changes, and 
will immediately begin serving tablet-optimized content to Firefox for 
Metro.


CONS:

* "Tablet" is not widely used by other browser vendors.  "Touch" would 
be consistent with Internet Explorer.


* "Tablet" is kind of misleading since it refers to a specific form 
factor and is not accurate for all devices where people use our touch 
UI. "Touch" might look more "right", and be more self-documenting.  For 
example, some authors might wrongly assume "Tablet" implies a certain 
screen size.


These and many related issues are discussed in much more detail at: 
https://bugzilla.mozilla.org/show_bug.cgi?id=773355


QUESTIONS:

Q. Why "Tablet" and not "Touch"?

Mainly for consistency with our current UA header, especially on 
Android.  Using both "Tablet" and "Touch" would complicate our UA, 
adding more variations and more chances for authors to make errors. 
Switching from "Tablet" to "Touch" would undo some of our evangelism 
work over the past year, and would involve a transition where both 
variations exist, again complicating web development and testing.


However, I think this is a reasonable question to discuss in bug 773355, 
and I believe the rest of this proposal would still make sense if we 
replaced "Tablet" with "Touch" everywhere.


Q. What about users who want to use desktop Firefox *and* interact with 
web pages through touch?


Ideally, most web developers would use feature detection instead of UA 
sniffing, and serve a single page with good support for both touch and 
mouse interaction, which will work in all browsers.


But for sites that do use UA sniffing, the best we can do is help 
developers choose defaults that work best for the majority of users. 
Users who dislike the default can easily change it by switching between 
Metro and desktop Firefox, or by using an add-on or about:config to 
change the header.

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


Re: The current state of Talos benchmarks

2012-08-29 Thread Matt Brubeck

On 08/29/2012 04:03 PM, Ehsan Akhgari wrote:

I don't believe that the current situation is acceptable, especially
with the recent focus on performance (through the Snappy project), and I
would like to ask people if they have any ideas on what we can do to fix
this.  The fix might be turning off some Talos tests if they're really
not useful, asking someone or a group of people to go over these test
results, get better tools with them, etc.  But _something_ needs to
happen here.


Thanks for starting this discussion.  I have some suggestions:

* Less is more.  We can pay more attention to tests if every alert is 
for something we care about.  We can *track* stuff like Trace Malloc 
Allocs if there are people who find the data useful in their work, but 
we should not *alert* on it unless it is a key user-facing metric.


* I don't like our reactive approach that focuses on trying to identify 
regressions, and then decide whether to fix them in place, back them 
out, or ignore them.  Instead we should proactively set goals for what 
our performance should be, and focus on the best way to get it there (or 
keep it there).  The goals should be based the desired user experience, 
and we should focus only on metrics that reflect those user experience 
goals.


* Engineering teams should have to answer for these metrics; for example 
they should be included in quarterly goals.  At Amazon, item #1 in the 
quarterly goals for each team was always to meet our metrics 
commitments.  Slipping a key metric past a certain threshold should stop 
other work for the team until it's rectified.


* We need staff whose job includes deciding which regressions are 
meaningful, identifying the cause, following up to make sure it's backed 
out or fixed, and refining the process and tools used to make all this 
possible.  Too much slips through the cracks when we leave this to 
volunteers (including "employeeteers" like Ehsan or me).

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


Re: The current state of Talos benchmarks

2012-08-29 Thread Matt Brubeck

On 08/29/2012 04:32 PM, Nicholas Nethercote wrote:

In my experience, a lot of those emails say "there was a regression
caused by one of the following 100 patches", and I will have written 1
of those patches.  I usually ignore those ones (though it depends on
the nature of the patch).

But if I get an email saying something like "there was a regression
caused by one of the following 3 commits", I'll look into it.


I filed https://bugzilla.mozilla.org/show_bug.cgi?id=752002 to stop 
sending mail to every single author when the regression range includes a 
large number of patches.

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