banner proiect

Webkit

1. Starling for JS

The Starling framework is a free an open source game engine for Flash, powering games such as the popular Angry Birds.

With the new web getting more and more powerful, and more and more games implemented directly in HTML/CSS/JS, it would be interesting experiment with porting the Starling framework to JavaScript.

Languages/techlongies used:

  • JavaScript/HTML/CSS to implement the new code
  • Flash and ActionScript to understand the existing code

2. Particle effects for CSS

The idea is to brainstorm on particle effects in CSS and create a prototype. For example, have a 'cloud of smoke' when an element lands on the page.

The prototype will be a WebKit branch, and implementing it would require C++ and graphics programming skills (OpenGL).

3. WebInspector support for StratifiedJS

StratifiedJS extends the JavaScript language with a small number of constructs for concurrent programming. It allows you to express asynchronous control flow in a straightforward sequential style. However, debugging StartifiedJS code in WebInspector (Safari) / DeveloperTools (Chrome) is not straightforward, as the WebInspector sees only generated JS files.

The goal of this project is to add direct support for StratifiedJS code in WebInspector, so that web developers can debug the StratifiedJS code directly, instead of the generated JS files.

WebInspector (aka DeveloperTools in Chrome) is part of the open source WebKit project, and has the front-end written in JavaScript and the backend in C++, so this project will require JavaScript/HTML/CSS and C++ knowledge.

4. Line grid implementation prototype

Line grid is a brand new specification from W3C (work in progress), which, when implemented by the browsers will allow web developers to achieve some advanced layout capabilities not possible in today's browsers (like aligning the lines in a multi-column HTML document).

The goal of this project is to prototype an implementation of this new spec in WebKit. Some experiments have already been done in this direction by Apple engineers; this project aims to take that work further towards an implementation.

Languages/technologies: C++

5. Slide tool prototype

As HTML5 is getting more and more powerful, more and more people start creating presentations as HTML pages instead of PowerPoint or Keynote. A number of frameworks for HTML presentation have also been creates (such as Akim El Hatab's Reveal.js framework). However, as cool as these new presentations are, creating them requires manual coding.

The goal of this project is to create a web-based slide authoring tool to author Reveal.js slides. The UI would let the users edit the content visually, chose transitions for the slides, apply shaders etc…

Languages/technologies: HTML/CSS/JavaScript.

6. Converting advanced Photoshop filters (e.g. oil painting effects, cartoon effects) to CSS Shaders

CSS Shaders introduced for the first time the capability to create cinematic effects on the web. However, today they are still in the form of a single GLSL shaders applied on HTML Elements as a custom filter.

The goal of this project is to push the capabilities of CSS Filters even further, experimenting how very complex effects like oil paining effect, or the cartoon effect, which today are available only in tools like Photoshop, can be made available on the web.

This work will involve prototyping support for graphs of shaders in WebKit/Chromium, and porting some Adobe filters from PixelBender to GLSL (with guidance from Adobe engineers).

Languages/technologies: C++, GLSL.

7. Extending video overlays to allow graphics

One of the things people consistently want is the ability to overlay graphics on videos and synchronize these overlays with the video track (similar with how subtitles should work - see the WebVTT spec for details, or this nice intro).

The goal of this project is to extend the work currently done with WebVTT and see what we could do to allow, for example, highlighting cues on a video (for example, you could imagine a tutorial where you can have overlaid graphical indicator on the video to illustrate what the speaker is saying, and these overlays may be localized, hence the need to have a separate 'graphical' track).

Languages/technologies: C++.

8. Support for CSS Regions in WebInspector

CSS Regions is a new spec from W3C that will allow web developers to create advance adaptive layouts which were not previously possible in web pages (see this article for an intro to CSS Regions and the spec); CSS Regions is also currently being implemented in WebKit and IE, and is already available in the latest Chrome releases.

Web developers rely heavily on the tools available in their browser to create and debug their pages (tools such as Web Inspector in Safari and Developer Tools in Chrome, or Firebug in Firefox). They would benefit from having a more direct support for CSS regions in these tools.

The goal of this project is to extend WebInspector with specific support for CSS Regions (from simple functionalities like highlighting a region chain to more complex design features).

WebInspector (aka DeveloperTools in Chrome) is part of the open source WebKit project, and has the front-end written in JavaScript and the backend in C++, so this project will require JavaScript/HTML/CSS and C++ knowledge.

9. Multiple audio tracks for video element, switch between them based on a setting/menu

This feature consists of the possibility of dynamically switching the audio track, if multiple such tracks are available. There are a lot of use cases for such a feature: let's suppose you have the regular audio track of a DVD and another track describing what the scene contains - these are widely known from an accessibility standpoint as "audio descriptions". Besides these use cases, some countries are legally required to provide an audio stream in the native language for videos.

From a technical standpoint, WebKit suppports MP4 which allows native streaming of multiple audio tracks and it would require work to decouple these streams and expose them through an API on the media element (be it video, or audio).

Languages/technologies: C++.

10. Event-based QoS API for video

Implementing Quality of Service support in WebKit represents a way to send relevant data to an auxiliary server regarding to the quality of the video rendering on the client side. If the client is dropping frames or has a bad bandwidth, this information should be reported. The project should consist of an attribute or other method of setting a callback function on the <video> element that regularly sends out information on how the "well" the video is playing.

Sample data that should be collected and reported: bandwidth info, current FPS, dropped FPS (see also this link).

Ideally, there should be an API (event driven) that notifies the client when data is available.

Languages/technologies: C++, JavaScript.

Partners

Adobe Logo Bitdefender Logo Korect Logo Allevo Logo

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Creative Commons License