Google Summer of Code at MITH

Guidelines

Information for Students

Student Application

Ideas

Bitcurator

MITHGrid

Controllers for Touch and Mouse

Additional Data Presentations

RDF-like Data Store

Additional Facets

MITHGrid Demos

Server Side MITHGrid

Extend the MITHGrid Expression Language

Open Annotation Collaboration (OAC)

Streaming Video Annotation Wordpress Plugin

Additional Streaming Video Drivers

Shelley-Godwin Archive (SGA)

Shared Canvas Book Reader

Text and Image Linking Environment (TILE)

Convert TILE to a MITHGrid Foundation

Improve the Auto Line Recognizer

Creating Server Storage for TILE

Woodchipper

Guidelines

Information for Students

These ideas are contributed by MITH staff. They are vague or incomplete because they are ideas of what might be possible in the context of the given projects. Think of them as pie in the sky ideas that we would like to see done, but that we don’t need right now in order to accomplish any of our current funding objectives. If you wish to submit a proposal based on these ideas, you may wish to contact us to find out more about the particular suggestion you are looking at.

We expect you to thoroughly research the technologies and approaches in your proposed project. You may find that you discover a more interesting idea as you research one of the ideas on this page. We do not expect you to simply cut and paste one of the ideas on this page. We are interested in well researched projects which interest you and will contribute to a larger community, regardless of where the ideas originated.

Student Application

We don’t have a formal application format that we expect you to stick to. Instead, write a narrative that explains what you are wanting to do, what you think it will take to accomplish it, and why you think you’re the best person to do it.

 

When reading your application, we are looking to answer the following questions:

  1. What are you hoping to accomplish with your project?
  2. Why is this project important to you? What itch does it scratch?
  3. How do you see this project being important to a particular community? To which community is it important?
  4. What are the major milestones in the project?
  5. Which milestones do you expect to complete by the mid-summer evaluation?
  6. What past experience do you have with the technologies used in this project?
  7. What experience do you have with similar projects?

Ideas

Bitcurator

MITHGrid

MITHGrid is a data-centric, responsibility-oriented JavaScript library built on jQuery and based on ideas from the MIT Simile Exhibit and Fluid Infusion projects. It is a foundational library for parts of the Open Annotation Collaboration and Shelley-Godwin Archive projects.

Controllers for Touch and Mouse

Brief explanation: MITHGrid uses controllers to manage the bindings to UI elements and the translation of UI events to MITHGrid events. Swapping out one set of controllers for another can change how an application interacts with the available input devices.

Expected results: Create a set of MITHGrid controllers that manage common events in applications, such as a next page/previous page controller (where swiping left or right or clicking a previous/next button would be equivalent) that can use either touch or mouse input. This may require reworking some of the MITHGrid API to allow sets of controllers to be swapped in or out as needed by the application.

Knowledge prerequisite: Familiarity with the MITHGrid architecture and CoffeeScript. You will need to be comfortable with function scoping and closures.

Skill level: medium

Mentor: James Smith as general mentor. Specific help for each technology may require help from its developers.

Additional Data Presentations

Brief explanation: MITHGrid uses presentations to manage data displays and lenses (templates) to manage the actual data formatting. MITHGrid defines a few basic presentations that provide a blank HTML area and a Raphaël canvas. Additional presentation types would be nice.

Expected results: Additional presentations capable of managing a paged table, a graph of plotted data, or other structured display of data.

Knowledge prerequisite: Familiarity with the MITHGrid architecture and CoffeeScript. You will need to be comfortable with function scoping and closures.

Skill level: medium

Mentor: James Smith as general mentor. Specific help for each technology may require help from its developers.

RDF-like Data Store

Brief explanation: MITHGrid’s core data management is modeled after the simple triple store in MIT’s Simile Exhibit project. A triple store that is closer to the RDF data model might be useful for some applications. Such a data store would make import and export of RDF much easier.

Expected results: A MITHGrid data store that supports namespaced properties and blank nodes.

Knowledge prerequisite: Familiarity with the MITHGrid architecture and CoffeeScript. You will need to be comfortable with function scoping and closures. Familiarity with XML namespaces or RDF is a must.

Skill level: advanced

Mentor: James Smith as general mentor. Specific help for each technology may require help from its developers.

Additional Facets

Brief explanation: MITHGrid uses facets to provide filtering of data based on user selected criteria. For example, a text search box might be a facet that filters data based on a simple text match against a particular property. Facets provide real-time filtering of data shown in presentations.

Expected results: Additional facets capable of providing a range of selection types. For example, selecting a numeric range or particular items from a list.

Knowledge prerequisite: Familiarity with CoffeeScript. Some familiarity with the MITHGrid architecture may be helpful. You will need to be comfortable with function scoping, closures, and HTML.

Skill level: easy

Mentor: James Smith as general mentor. Specific help for each technology may require help from its developers.

MITHGrid Demos

Brief explanation: MITHGrid doesn’t have very many demos, but it has some interesting technology. Additional demonstrations would help people understand the power of MITHGrid.

Expected results: At least one compelling demonstration of the strengths of MITHGrid along with a web page explaining how the pieces of the demonstration fit together.

Knowledge prerequisite: Familiarity with the MITHGrid architecture. Since MITHGrid is distributed as a JavaScript library, the demonstration will need to be a MITHGrid application written in JavaScript or CoffeeScript and embedded in a web page.

Skill level: medium

Mentor: James Smith as general mentor. Specific help for each technology may require help from its developers.

Server Side MITHGrid

Brief explanation: MITHGrid is designed to work in a browser, but some of its capabilities would be useful in a Node.js application.

Expected results: Make MITHGrid work in the browser and Node.js equally well. A bonus would be a generic way to load additional parts of MITHGrid beyond the core, allowing MITHGrid plugins and extensions.

Knowledge prerequisite: Familiarity with Node.js and CoffeeScript. Some familiarity with the MITHGrid architecture would be helpful.

Skill level: medium

Mentor: James Smith as general mentor. Specific help for each technology may require help from its developers.

Extend the MITHGrid Expression Language

Brief explanation: MITHGrid includes an expression language borrowed from the MIT Simile Exhibit project. This language allows an application to walk the triple store graph and retrieve particular data. It would be nice if this language supported functions and variables or other aspects of regular languages.

Expected results: A JavaScript parser that translates the expression to a JavaScript object that can traverse the data store as needed and produce the expected results.

Knowledge prerequisite: Familiarity with the MITHGrid architecture, CoffeeScript, function scoping, closures, and programming language design. Familiarity with BNF or similar notation systems will be a huge help as will be past experience with programs such as YACC.

Skill level: advanced

Mentor: James Smith as general mentor. Specific help for each technology may require help from its developers.

Open Annotation Collaboration (OAC)

As part of the OAC series of experiments, MITH, in collaboration with Alexander Street Press (ASP), has developed a streaming video annotation client that can be embedded in a web page. The client allows annotations to be text attached to rectangles or ellipses drawn within the video frame. Annotations are imported/exported using the OAC data model.

Streaming Video Annotation Wordpress Plugin

Brief explanation: This tool could be part of a Wordpress plugin to allow blog readers to add annotations to videos embedded in blog posts, possibly as an alternate commenting system.

Expected results: Create a Wordpress plugin that makes it trivial for the blogger to add annotation capabilities to their embedded videos. This plugin will need a way to communicate existing annotations with the browser as well as store new annotations made by readers.

Knowledge prerequisite: Familiarity with the Wordpress plugin architecture is a must. Wordpress is written in PHP, so you will need to be able to write PHP code. The annotation client is written in JavaScript, so some knowledge of Javascript is necessary to tie the pieces together in the blog post. Some familiarity with the OAC data model will help in designing the server side storage of annotations.

Skill level: medium

Mentor: James Smith or Grant Dickie as general mentor. Specific help for each technology may require help from its developers.

Additional Streaming Video Drivers

Brief explanation: As part of the streaming video annotation client project, ASP developed a JavaScript driver API for streaming video players. The annotation client can provide annotation capabilities to any player with such a driver. ASP delivered a dummy driver for testing purposes as well as a driver for Youtube videos. Drivers for additional video services such as Vimeo would make the annotation client more useful.

Expected results: Create additional streaming video player drivers that allow the annotation client to work with videos from a wider array of content providers.

Knowledge prerequisite: The driver is written in JavaScript, so you can use JavaScript or compile from CoffeeScript. You will also need to be familiar with the APIs of the targeted video providers.

Skill level: easy

Mentor: James Smith or Grant Dickie as general mentor. Specific help for each technology may require help from its developers.

Shelley-Godwin Archive (SGA)

Shared Canvas Book Reader

Brief explanation: Shared Canvas is a way of describing a manuscript or other document as a series of annotations onto a shared space, or canvas. As part of SGA, MITH is developing a reader that can display documents using the shared canvas data model. Shared Canvas can be extended to allow many different media annotations. For example, sheet music can be annotated with recordings.

Expected results: Create an interface that resembles the Internet Archive book reader and uses the Shared Canvas data model as its book document format. The best result would be a JavaScript application built using the MITHGrid library that could be embedded multiple times in a single page to allow viewing of multiple documents.

Knowledge prerequisite: JavaScript is the primary language for the SGA shared canvas reader. The shared canvas reader is built on MITHGrid and jQuery. Thus, the book reader interface should be in JavaScript or compiled from CoffeeScript and embedded in an HTML page. You should be comfortable with function scoping and closures in JavaScript/CoffeeScript.

Skill level: advanced

Mentor: James Smith or Grant Dickie as general mentor. Specific help for each technology may require help from its developers.

Text and Image Linking Environment (TILE)

TILE is a JavaScript application built as a core engine and a set of plugins. TILE allows you to associated transcribed text and labels with areas in an image.

Convert TILE to a MITHGrid Foundation

Brief explanation: TILE is designed with its mission in mind, which means that none of the pieces can be used in other projects without a large amount of work. Since completing TILE, MITH has been developing MITHGrid as a way around this problem for its other projects. We’d like to see someone go back and convert TILE to use MITHGrid as its core data management system. This would allow pieces to be shared with the OAC and SGA projects.

Expected results: Convert the TILE engine and core plugins to use MITHGrid for data and presentation management.

Knowledge prerequisites: TILE is written in JavaScript, so at least a reading knowledge of JavaScript is a must. The result of the conversion may be written in either JavaScript or CoffeeScript. You should be comfortable with function scoping and closures in JavaScript/CoffeeScript.

Skill level: medium

Mentor: James Smith or Grant Dickie as general mentor. Specific help for each technology may require help from its developers.

Improve the Auto Line Recognizer

Brief explanation: TILE has the ability to guess where boxes should be drawn around lines of text, but it’s not all that great.

Expected results: Provide an improved algorithm that can find lines of text and tightly bound them without being too tight. It helps if the algorithm can work with dark text on a light background as well as light text on a dark background.

Knowledge prerequisites: TILE is written in JavaScript, so at least a reading knowledge of JavaScript is a must. The auto line recognizer plugin may be written in either JavaScript or CoffeeScript. Some knowledge of image processing and intermediate calculus will be helpful.

Skill level: advanced

Mentor: James Smith or Grant Dickie as general mentor. Specific help for each technology may require help from its developers.

Creating Server Storage for TILE

Brief explanation: During TILE’s development, the philosophy was that users will want to use TILE as a way to store small bits of data on their computer and then re-load them into TILE. After releasing the code and getting feedback we have found that more users want flexibility with what kinds of data they want to insert into TILE and how they back that data up. This is where having a client on the server side comes in.

Expected results: Provide a Java or GWT-based client for saving, storing, and querying TILE data.

Knowledge prerequisites: Java and/or a Java framework such as GWT, OR Javascript as in NodeJS, Websockets. The actual path to solving this issue is open, so however you work out communicating with a server is the best way. As for a server based service

Skill level: Medium

Mentor: James Smith or Grant Dickie as general mentor. Specific help for each technology may require help from its developers.

Woodchipper