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

Reply via email to