Wrapping up Google Summer of Code 2016
2016-09-28 Summaries of Servo's GSoC projects
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:
- network request interception
- the DOM API for registration
- a new thread for coordinating ServiceWorker instances
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 Blob
s to/from ArrayBuffer
s (due to the lack of ArrayBuffer
bindings at the time),
URL.createFor
, and handling fragments in blob URIs.
Notable pull requests include:
- The
File
andBlob
DOM APIs - Filepicker integration, using the
tinyfiledialog
library - Support for on-disk file-backed
Blob
s - Storing and loading Blob URIs
- Reference counting logic for the blob store
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!