Wrapping up Google Summer of Code 2016

This year Servo had two students working on projects as part of the Google Summer of Code program. Rahul Sharma (creativcoder) tackled the daunting project of implementing initial support for the new ServiceWorker API, under the mentorship of jdm, while Zhen Zhang (izgzhen) implemented missing support for files, blobs, and related APIs under the direction of Manishearth. Let’s see how they did!

ServiceWorker support

Three months is not enough time for a single student to implement the entire set of features defined by the ServiceWorker specification, so the goal of this project was to implement the fundamental pieces required for sharing workers between multiple pages, along with the related DOM APIs for registering and interacting with the workers, and finally enabling interception of network requests to support the worker’s fetch event.

Notable pull requests include:

Rahul put together a full writeup of his activities as part of GSoC; please check it out! His mentor was very pleased with Rahul’s work over the course of the summer - it was a large, complex task, and he tackled it with enthusiasm and diligence. Congratulations on completing the project, and thank you for your efforts, Rahul!

File/Blob support

The second project by Zhen Zhang was to implement most of the File specification. The scope of the project included things like file upload form controls, manipulating files from the DOM, and the creation/management of blob URIs. As of now almost all of the spec is implemented, except for the ability to construct and serialize Blobs to/from ArrayBuffers (due to the lack of ArrayBuffer bindings at the time), URL.createFor, and handling fragments in blob URIs.

Notable pull requests include:

Status updates and design docs live in this repo. The midterm summary is a particularly good read, as it explains the preliminary design for the refcounted blob store. Zhen was quite fun to work with, and showed lots of initiative in exploring solutions. Thank you for your help, Zhen!