Re: [dev-servo] Roadmap Q2 goal : Pass Acid3

2014-02-25 Thread Patrick Walton

On 2/25/14 3:55 AM, Robert O'Callahan wrote:

I don't think we should be setting these kinds of goals for Servo in the
short term. Passing Acid-style tests or meeting site-compatibility criteria
require doing a lot of work that is not particularly risky and does not
have much architectural impact on the engine ... but there's a lot of work
to do that is risky and does have significant architectural impact, and
that work should be higher priority, IMHO.


If I may defend the Acid tests just a little bit...

From my point of view, especially with my work lately, one of the most 
important questions that Servo needs to answer is how much parallelism 
can we gain on real-world Web sites? To that end, Web site 
compatibility (which Acid2 is a rough proxy for a large subset of, if 
used sensibly [1]) is a useful thing to work on. Otherwise, we don't 
know whether the parallel gains that we are getting will scale up to 
real-world usage, or whether we're only getting them because we don't 
implement the difficult features.


To give a concrete example, the work on block formatting contexts [2] 
and absolute positioning [3] has been hugely illustrative. Not only was 
this work a sea change to our layout algorithm, it helped us establish 
exactly what the parallel hazards with floats were. At the beginning 
before we implemented floats, we got massive parallel gains on all 
sites, but these were unrealistic. In Servo master, we're using a 
conservative algorithm to handle floats that completely erases any 
parallel gains on most sites. Only with this block formatting context 
work--which is also necessary for Web compat--do we start to see gains 
on most sites. Handling absolute positioning properly will let us 
perform further measurements on how much parallelism is impacted on 
sites: in particular, how often in the real world is an absolute frame's 
hypothetical box impacted by floats? We don't know the answer to that 
right now, but this seems to me to be a very important question.


So I agree that we must not make architectural decisions that make it 
difficult to implement Web features. But I do think that Web compat is 
useful, because it helps us to identify the parallel hazards and know 
where we stand in terms of the Web of today, which helps us answer the 
big questions that Servo set out to answer.


Patrick

[1]: Sensibly means implementing the features that the test tests in a 
way that handles even edge cases that are not tested, and not accepting 
patches that would make it hard implement more complex features that are 
not tested, such as incremental reflow, bidi, etc.


[2]: https://github.com/mozilla/servo/pull/1734

[3]: https://github.com/mozilla/servo/pull/1681

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


Re: [dev-servo] Roadmap Q2 goal : Pass Acid3

2014-02-25 Thread Simon Sapin

On 25/02/2014 18:02, Patrick Walton wrote:

So I agree that we must not make architectural decisions that make it
difficult to implement Web features. But I do think that Web compat is
useful, because it helps us to identify the parallel hazards and know
where we stand in terms of the Web of today, which helps us answer the
big questions that Servo set out to answer.


Yes, Web compat is important. But Acid3 in particular is a poor proxy 
for Web compat, IMO.


--
Simon Sapin
___
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo


Re: [dev-servo] Roadmap Q2 goal : Pass Acid3

2014-02-25 Thread Jack Moffitt
 Is it possible to programmatically identify CSS rules or page layouts which 
 would benefit from the parallelism that Servo potentially offers? For the CSS 
 un/prefixing debate I/we had some success in deploying web crawlers that 
 parsed and summarized millions of CSS rules from thousands of sites. Could 
 something similar be of use for quantifying the lowest hanging parallelism 
 fruit for Servo?

 Said another way, is it possible to create a targeted benchmark for Servo 
 compatibility and performance?

I think the answer is yes, but I would be interested in talking about
this more. We've done some preliminary work discussing and estimating
this for specific sites, but it sounds like you are much farther down
this road with tooling. We'd like to leverage what you've already done
if possible.

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


Re: [dev-servo] Roadmap Q2 goal : Pass Acid3

2014-02-25 Thread Robert O'Callahan
On Wed, Feb 26, 2014 at 7:02 AM, Patrick Walton pcwal...@mozilla.comwrote:

 So I agree that we must not make architectural decisions that make it
 difficult to implement Web features. But I do think that Web compat is
 useful, because it helps us to identify the parallel hazards and know where
 we stand in terms of the Web of today, which helps us answer the big
 questions that Servo set out to answer.


That's a good point, but Acid3, and to a lesser extent Acid2, are about
testing edge cases and the presence of obscure features. I don't think they
tell you anything significant about parallelism in the mass of pages on the
Web. No single page can, but Acid3 is probably even worse than picking a
page at random. You'd be much better off picking, say, a Wikipedia page
(which I know you've done!) or the HTML5 single-page spec.

Otherwise, we don't know whether the parallel gains that we are getting
 will scale up to real-world usage, or whether we're only getting them
 because we don't implement the difficult features.


That's a good point too, but the problem is that key parts of the Web like
GMail, Youtube, Facebook etc require so much work for full support that I
don't think we draw broad conclusions until very far in the future, when it
will be far too difficult to make architectural changes. If you must
discover those conclusions earlier then we should probably piggyback some
analysis on an existing browser engine instead of doing it in Servo.

The good news is that I think CSS layout is by far the largest piece of the
Web where we have implicit parallelism that is subject to unpredictable
hazards. Other big chunks of work, like almost all DOM APIs, are either
obviously not parallelizable or obviously parallelizable.

Rob
-- 
Jtehsauts  tshaei dS,o n Wohfy  Mdaon  yhoaus  eanuttehrotraiitny  eovni
le atrhtohu gthot sf oirng iyvoeu rs ihnesa.rt sS?o  Whhei csha iids  teoa
stiheer :p atroa lsyazye,d  'mYaonu,r  sGients  uapr,e  tfaokreg iyvoeunr,
'm aotr  atnod  sgaoy ,h o'mGee.t  uTph eann dt hwea lmka'n?  gBoutt  uIp
waanndt  wyeonut  thoo mken.o w
___
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo