Fluid is an open source community of designers and developers who help improve the usability and accessibility of the open web. We contribute to a variety of open source projects (such as jQuery UI), and we work on a few projects of our own: the Design Handbook, a guidebook of techniques for improving usability, and Infusion, a JavaScript application framework for developing flexible user interfaces.

Fluid Infusion is built on top of jQuery, providing all the stuff you need to create user interfaces that are incredibly flexible, accessible, and easy-to-use. Infusion is an application framework and a suite of user interface components built with HTML, CSS, and JavaScript. In contrast to many other user interface toolkits, Infusion components aren't black boxes--they're built to be modified, adapted, and changed to suit your application or context. Taking a "one size fits one" approach, Infusion even lets end-users customize their experience with the UI Options component.

We're looking for students to collaborate with us on the Google Summer of Code 2011 program. Working with Fluid gives you a chance to learn more about accessibility and usability while writing code with cutting-edge open web technologies like HTML5 Canvas and Video. Create cool stuff and make a real impact on users at the same time!

Projects

Visualization of declaratively-structured programs using Fluid IoC

Create a visual representation of the component structure as seen by the Framework/IoC

This project is an opportunity to combine your technical and design skills. The Fluid Infusion Inversion of Control (IoC) system has grown a lot in the past year. It has become a robust way of building JavaScript applications where the pieces of the system do not know about each other and can be swapped out for different implementations based on the context they find themselves in. The system relies on JSON specifications (called defaults and demands blocks) to signify what components use in particular contexts. Being based on JSON rather than raw JavaScript code, the system has been aimed at smoothing the path towards creating powerful visualization and design tools. Currently, the IoC system is lacking in developer supports. This is where you come in. You will use HTML5 Canvas , WebGL and/or traditional HTML widgets to create a visualization of an application that has been written using Infusion IoC. The goal of this project is to assist developers in understanding and debugging their applications.

Towards non-visual/accessible programming

Today, for almost every purpose, programming an application implies editing some kind of text file. This is a limiting model, which shuts out a huge community who might otherwise be making applications for their own needs and those of others. The form factors of computers are changing - this year, the majority of computers online are tablets and phones, making these inappropriate devices for a person in the role of a programmer. Liberating programming from the text file model is a great opportunity to broaden access as well as to a different class of device, to a different class of user - those with visual impairments, or those who are in an environment (perhaps a crowded/noisy bus, bar or otherwise "on the move") where whipping out a traditional class laptop with high-res screen and keyboard would be inappropriate. An important idiom in moving towards the "non-visual" model is to reformulate operations which are traditionally performed by "visual scanning" or "skimming" into a population of "non-visual query operations" which the user can adjust and improve to match their favorite style of working. This project may be synergistic with, but independent of, the Fluid GSOC project on IoC visualisation. Creating a model where a program structure is "topologised" is a crucial element of both projects - whereas in the visual project this graph structure will be laid out in visual space, for this non-visual project it will be treated abstractly as pure topology (graph connectivity).

This project will explore this currently completely unvisited frontier of programming idioms, drawing on the wisdom of the ages, including dataflow programming, functional programming and/or functional reactive programming (FRP), context-oriented programming, declarative and state-oriented programming to liberate coding from the era of the typewriter.

HTML5 Image Editor

This project is an opportunity to create an image editing tool entirely with open web technologies, especially HTML5 Canvas. The goal for this component is to provide familiar image processing features such as rotation, skew correction, brightness/contrast, and threshold, all within a standard web page. The contributor is free to experiment with other, more complex image processing algorithms and implement them as desired. The component should be able to export the settings in an easily consumable format (e.g. JSON). The component will support accessibility features such as use of the keyboard instead of the mouse.

Students should have a firm knowledge of open web technologies: HTML, CSS, and JavaScript. A desire to learn emerging technologies such as HTML5 is essential. Familiarity with Fluid Infusion is not required; we'll show you the ropes.

Highly customizable and accessible web based ePub reader.

1 position available
Difficulty: medium
Mentor: Yura Zenevich

This project will focus on implementing a web based ePub reading (possibly, editing) component based on open web technologies (and infusion framework). The result implementation must be screen reader accessible. It also needs to utilize tools for customizing user experience (through UI Options or other means). Having a highly customizable reading experience on the web will contribute to a growing number of new learning tools in the educational domain.

Students should have a firm knowledge of open web technologies: HTML, CSS, and JavaScript. Familiarity with Fluid Infusion framework is not required; we'll show you the ropes.

Inclusive, Web-based Musical Instruments

1 position available
Difficult: medium
Mentor: Colin Clark

The Inclusive Musical Instrument project provides an opportunity to design simple, novel, and accessible ways to play and perform electronic music using entirely Web-based technology. Most current music-making software is complex, inaccessible to assistive technologies, and requires the use of a mouse. This project involves designing and implementing musical keyboard-navigable and assistive technology-friendly instruments on the web for playing music. Students may wish to use Fluid Infusion and the Flocking web-based music synthesis framework to implement their designs.

Students should have knowledge of open web technologies, including HTML, CSS, and JavaScript. More importantly, they should have a desire to experiment with novel user interactions and understand some electronic music and Digital Signal Processing techniques.