Some of the web platform team at Google recently met to plan for 2014. I’d like to share some of our thoughts with the larger Blink community and solicit your own.
Web usage continues to shift from desktop to mobile. Yet the mobile web remains far from reaching its potential -- in part because web engines (e.g. Blink) are not nearly as good on performance-constrained devices as they need to be. To be successful on mobile, Blink must exit 2014 much more mobile-awesome.
Primarily this means improving Blink’s performance on less-powerful devices. Blink should be hands-down the best performing mobile web engine. We must achieve:
Constant improvement to our core metrics
Smoothness (scrolling & 60hz animation)
Input Responsiveness
Initial Load Time
#1 on (credible/realistic) mobile web benchmarks
Reduced memory consumption
Lowest power consumption
Additionally we need to continue to improve the mobile web platform itself -- make it easy for authors to ship fast, awesome web apps. In 2014 we plan to:
Expose capabilities on the open-web competitive to “native” offerings
Responsive images
ServiceWorker
Improved permissions model on the open-web
Better-than-AppCache Offline
Push notifications
Device capabilities (Screen Orientation, Presentation API, etc.)
Empower better App frameworks by rationalizing the platform layering [1]
Web Animations, Pointer Events, Custom Elements, etc.
Improve our own (and enable others to build) mobile-focused web developer tools
Make it easy to find fast paths and figure out when/why you fall off
Expose mobile design & performance insights in DevTools.
Enable building modern batteries-included developer workflows for the Web (e.g. crash reporting, package management, IDE, testing infrastructure)
Create, share and consume our guidelines for making responsive mobile apps
Finally, the long-term health of both the web platform and the Blink project must always be a top priority. In 2014 we need to:
Find ways to deprecate & remove large platform features with minimal breakage.
Merge Blink repository into Chromium without loss of history.
Add safer (garbage collected) memory management (Oilpan). [2]
Update Blink to be more multi-process aware and ready for out-of-process iframes. [3]
Further modularize and homogenize Blink codebase.
Reduce the time from when we ship a feature to when developers can use it.
Make Blink and Chromium more accessible and welcoming to all contributors.
We are a very large project with many diverse ideas. I look forward to hearing your thoughts! Hopefully this summary of some of our thinking will help inform your own planning for 2014.
1. https://docs.google.com/a/chromium.org/document/d/1ZkV1PpPsJJgdSZOA10Jh0VrThR6D_Q0XWv_2B9-0gGE/edit
2. https://docs.google.com/document/d/1y7_0ni0E_kxvrah-QtnreMlzCDKN3QP4BN1Aw7eSLfY/edit
3. http://www.chromium.org/developers/design-documents/site-isolation
That is a great list of goals Eric! I am very excited.
I would also like to see it being a goal that we unify our graphics
pipelines, such that we can have impl-side rendering, pinch zoom
support enabled on all our platforms. Without that it is impossible to
ship features like CSS Device Adaptation (@viewport rule) on all
platforms at the same time, which can lead to it being very hard to
enable on desktop later (for example it is quite difficult to enable
viewport meta on desktop right now as many desktop sites actually
define it and expects it to be ignored). As more or our work are
geared toward mobile, this might even become more relevant to not
create a bigger divide between desktop and mobile.
Merge Blink repository into Chromium without loss of history.
Add safer (garbage collected) memory management (Oilpan). [2]
Update Blink to be more multi-process aware and ready for out-of-process iframes. [3]
Reduce the time from when we ship a feature to when developers can use it.
Make Blink and Chromium more accessible and welcoming to all contributors.
On Fri, Jan 10, 2014 at 1:32 PM, Eric Seidel <ese...@chromium.org> wrote:
Merge Blink repository into Chromium without loss of history.
Looking forward to that. Looks like it depends on migrating Chromium repository to git, right?
Garbage collection is a front-and-center issue for game development, and there really doesn't appear to be a great way to completely avoid having the performance rug pulled out from under you. Those drastic frame drops every 30 seconds or so affect even the most optimized game engines.
I know the V8 folks are reluctant to go in for AOT compiling, so I won't even broach the issue. Perhaps we gamedevs really do need an ulterior path. It is a somewhat niche use-case, but the problem is pervasive within that niche.
Apparently it's now working (broken) as intended.
For more info and some pics see http://code.google.com/p/android/issues/detail?id=62378
All I'm suggesting is beware of losing core functionality/useability in order to render a few milliseconds quicker
Well, Good that Chrome wants to develop, but as of now need option to disable images..
On Fri, Jan 10, 2014 at 1:32 PM, Eric Seidel <ese...@chromium.org> wrote:
Merge Blink repository into Chromium without loss of history.
Looking forward to that. Looks like it depends on migrating Chromium repository to git, right?
Reduce the time from when we ship a feature to when developers can use it.
Interesting. Does it mean some changes to our current approx. six weeks release cycle?
Make Blink and Chromium more accessible and welcoming to all contributors.
Sounds good. Are there some specific changes you have in mind? Maybe I could help somehow, as it's also very important for me.
Paweł
Hacking on Chromium requires pretty powerful computers (for building)
and a good Internet connection for downloading the repository. Some of
this can be worked around by fixing the guides. If the guides are
accurate, there's less trial-and-error required. Two other things that
I think would help are being upfront about the requirements (you'll
need ~1-2 days to checkout and build), and pointing out the steps that
will take a long time ("fetch blink" and "ninja -C ..."), so people
know when to do something else.
Last on contributions, I think neither WebKit nor Blink are
capitalizing on layout tests as much as we could. In an ideal world,
Web developers would be able to provide layout tests when filing bugs,
and Blink developers would be able to use the try infrastructure and
confirm that they're valid, all from a Web interface, without touching
a checkout. An easy way to get going on this could be publishing a
template like http://jsbin.com/eVoWIDiC/1/edit, along with some good
examples.
Here are some comments from the perspective of a new contributor. I
hope they're helpful.
Victor
I think the first goal would help the second one a lot.
On Wed, Jan 15, 2014 at 3:18 AM, Eric Seidel <ese...@chromium.org> wrote:
> I'd like us to think about at last:
> - An easier to navigate Chromium.org (I often get lost trying to find the
> docs I want).
> - Much easier-to-get-working compile setup ('fetch' has helped a lot, but
> webkit.org still does this *much* better).
For example, compare these two guides.
Chromium: https://code.google.com/p/chromium/wiki/LinuxBuildInstructions
My notes: http://pwnall.herokuapp.com/blog/2013/10/24/build-your-own-chromium/
The official guide (linked from http://www.chromium.org/Home as "Build
Chromium on...") requires following other pages, so I had to go back
and forth, and I tried to read all the linked documents, to see what
applies to me and what doesn't.
My notes are a linear list of steps that hopefully represent the
recommended defaults, and have links for special situations. I think
this format is easier to follow, so I'm bringing it up. (I'll never
know for sure, I wrote my notes so I'm biased)
> - Better documentation of our code, goals, policies, etc.There is a gap in the process documentation. "How to become a
committer" [1] seems to assume a @chromium.org address. However, by
browsing the other pages, the only way to get that seems to be
triaging bugs [2].
[1] http://dev.chromium.org/getting-involved/become-a-committer
[2] http://dev.chromium.org/getting-involved/get-bug-editing-privileges
> - Find ways to attract a more diverse set of contributors (languages,Hacking on Chromium requires pretty powerful computers (for building)
> regions, gender). If we want to successfully serve as wide an audience as
> we do, we need better representation from that audience in our contributor
> base!
and a good Internet connection for downloading the repository. Some of
this can be worked around by fixing the guides. If the guides are
accurate, there's less trial-and-error required. Two other things that
I think would help are being upfront about the requirements (you'll
need ~1-2 days to checkout and build), and pointing out the steps that
will take a long time ("fetch blink" and "ninja -C ..."), so people
know when to do something else.
Another issue where WebKit does better is try server access. I think
that I could use EWS on my first patch, whereas it took a non-trivial
amount of effort to get try server access. This really helps a lot,
because getting a Windows build set up (or a Linux build, if you're on
Windows) has a very non-trivial cost in terms of time and
computational resources (cpu, ram, disk, bandwidth).
Kevin, if you have any web apps that are mobile-like that feel particularly janky, we'd love to know more. Feel free to send them my way off-thread.
http://imageshack.com/a/img546/6007/0wbf.png
Seriously?