Announcing Project Async & Responsive
April 10, 2013 § 24 Comments
Project Snappy has been retired and replaced by several smaller projects, including Async & Responsive. The objective of this project is to improve the responsiveness of Firefox and the Mozilla Platform by converting key components to make them asynchronous and, wherever possible, to move them off the main thread.
Project Snappy was formed about 18 months ago to focus the effort by Mozilla developers to fight this perceived sluggishness. During this period, we have made tremendous progress, thanks to the commitment of everyone involved. Indeed, most of the long-term objectives of Snappy have been reached already. We have therefore decided to retire project Snappy, in favor of both a larger project Performance, and several sub-projects focusing on distinct aspects of Performance.
Let me introduce Asynchronous & Responsive , one of the sub-projects of Performance.
Despite considerable progress, much of Firefox still behaves as a single-threaded application. Most services and components are initialized sequentially in the main thread, run in the main thread, are shutdown sequentially in the main thread. Also, most add-ons execute essentially in the main thread. As a consequence, any long-lived task can disrupt the user experience.
There are historical reasons for this, but in most cases, there is not deep blocker that would prevent us from rewriting services. Project Asynchronous & Responsive is now starting to support and focus the ongoing effort to get rid of main thread services and components, both in platform code and in add-on code, for the betterment of all Mozillakind.
- identifying blockers that prevent platform and add-on developers from deploying their code on non-main threads (generally, worker threads);
- helping platform and add-on developers transition their code off-main thread;
- actually transitioning some of our services and components off the main thread.
Following our progress
As I am the tech lead of this project, you will find more information on this blog, under category Performance.
I will try and post updates every second week.