Google Summer of Code 2017

Skip to end of metadata
Go to start of metadata

Google Summer of Code 2017 Projects

Project 1: Interactive Template Tool for 2D and 3D STEM Learning

What is the project?

Benetech is proposing a 2017 Google Summer of Code project that aims to make interactive templates available on a website so that instructors can dynamically input key data to generate customized models that provide learners with interactive objects that facilitate mastery of key concepts. Such a web-based tool could provide an easier mechanism for educators to produce 2D and 3D physical objects for set categories such as: pie charts, maps, Venn Diagrams, physics circuits, and geometric figures. The goal is to provide a web-based interface that connects to various resources including our existing Repository-Registry of Accessible Images (RRAI).

Producing 2D and 3D tactile graphics has typically been a highly technical and time-intensive process that requires specialization in alternative media production. This project aims to provide guided, web-based templates that open up the production of alternative resources to a broader group of educators. The pre-defined templates builds in best practice guidelines and expertise based on research previously generated by the Benetech’s DIAGRAM Center community. In addition to building a front-end mechanism to input specific data to help render these models digitally, we also aim to make connectors to a .stl library that allows these files to be printed using a 3D printer. 

Why this project?

In 2016, Benetech designed and built the Repository-Registry of Accessible Images (RRAI), a collective image repository that makes accessible educational resources available in more mediums (e.g., videos, simulations, audio descriptions, 2D/3D models). While early users have provide positive feedback about this digital collection of resources, some have commented on the criticality and inability to create variations of basic images and diagrams. For example, while a single standard deviation model might be used to introduce a concept, students cannot be expected to fully comprehend this concept without additional variations to practice and test on. 

One size does not fit all when it comes to education — learners span a wide range of backgrounds and represent an even broader set of needs and preferences. Fortunately, technology is making it easier, faster, and cheaper to produce educational resources including models and manipulatives that students can interact with. This not only supports students with specific disabilities that require alternative mediums for learning, but also caters to the various learning styles and needs of individuals.

Details on technical needs

  • Strong Javascript
  • Familiarity with Java
  • Basic HTML, CSS
  • Familiarity with databases such as PostgreSQL
  • RRAI repository:
  • Additional resources that might be helpful:
    • 3D CAD modeler
    • Wolfram Alpha: add on for graphic rendering capabilities and .STL generator
    • tool that provides a front-end interface for users to input key data then generate customized models; this tool is not open source and encountered problems with printing the generated files

What impact are we hoping to have?

We are hoping to grow the collection of accessible tactile resources available in an existing image repository. Make it possible for educators to produce customized 2D and 3D learning objects in the area of STEM (science, technology, engineering, mathematics), which would otherwise not be available due to the expensive and time-intensive requirements involved in production.

Project 2: Benetech Open Referral API for Social Services Data

What is the project?

Through the Open Referral API project, we will build an open source reference implementation for the Human Services Data Specification (HSDS), which is an open data exchange format for information about the accessibility of health, human, and social services. An Open Referral API, and its supporting website, administrative, and developer portal will give human services organizations a low-cost alternative for delivering human services that will play nicely with existing systems.

This project will iterate upon years of work to establish interoperability across the landscape of information systems that connect people in need to resources available in their community. The Summer of Code fellow will work in tandem with a project funded by the Markets for Good program. In dialogue with human service referral providers across the country and the world, we will develop functioning open source software that both provides a baseline of code for use by any government, nonprofit, or other civic institution, and serves as a standardizing reference point for the entire field of software vendors.

Why this project?

Today, information about vital human services like health care, mental health counseling, food assistance, job training, and other essential resources need to be accessible beyond just a single organization or even a single website. The Open Referral initiative has aligned a previously-siloed field around a common data schema (the Human Services Data Specification) that enables resource directory data to be structured and exchanged in predictable ways. In part through this work, many organizations are now adopting API-based approaches to sharing this critical public information, so our data format must evolve up a level: an API implementation of HSDS would allow organizations to build and disseminate web, mobile, and system-to-system integrations across geographies, institutional contexts, and technological languages.

Details on technical needs

Open Referral is partnering with Benetech to design and implement modular, redeployable open source software that reaches the widest possible audience. We are not dogmatic about the programming language used to develop the project (though we feel that Python, Ruby, or PHP would speak to many of the types of organizations that operate existing human service platforms).

The individual technical components of the Open Referral API platform would be the following:

  • Database - Development of a SQL database following the HSDS specification, acting as a backend for the API that will drive the website, administrative system, as well as 3rd party integrations.
  • Compute - Development of a modular, containerized approach to deploying and providing compute resources using a base open source operating system, and separate configurations for delivering separate containers for the API, website, and administrative portal.
  • Storage - Design and deployment of a centralized cloud storage solution for all heavy objects including images and documents for use across each individual system component available in separate containerized environment.
  • DNS - Crafting of a DNS blueprint that can be used by any organization deploying an open referral implementation, providing a consistent URI structure for use across the API, website, administrative, and developer portal.
  • API - Development of a web API providing JSON read and write access to all data resources in an HSDS compliant format, leveraging HTTP and web technologies that can be securely used by the web and administrative components, as well as the 3rd party integrations.
  • Website - Development of a standardized website implementation allowing users to browse, navigate, search, and engage with human service resources, using a simple HTML interface that employs the API as a data source.
  • Administrative - Development of a standardized administrative interface that allows platform operators to manage all human services data, as well as the website and API developer end-users.
  • Developer Portal - Development of a simple developer portal hosted on Github pages using Jekyll, allowing for publishing of interactive documentation, and other resources for developers to put to use when integrating.
  • User Interface - The user interface across the website, administrative, and developer portal will leverage the Twitter Bootstrap graphical interface, providing a standardized and extensible user interface that many organizations will be able to easily put to use.

While the Open Referral system will leverage a single popular programming language, and employing HTML, CSS, and JavaScript so that it will run on any system, this implementation will developed to operate on the Google Cloud Platform. The project architecture, code reviews, and oversight will be provided by Kin Lane, and Benentech, with organizational and HSDS compliance reviews brought by Greg Bloom and the Open Referral team. The current team has the technical expertise required, all we need is the passion and energy of a Summer of Code student.

What impact are we hoping to have?

With this project, Open Referral and Benetech are looking to build on the momentum we've already developed around the HSDS specification, and existing Ohana implementations. We are looking to provide an open source solution that any non-profit or commercial organization can download or fork, and quickly deploy using the Google Cloud Platform and deliver valuable human services to cities across the country.

This project would help providers deliver human services through multiple channels, sharing with trusted partners, and even opening up data to passionate civic developers who are interested in helping lend a hand to make their communities a better place. With success, we will help decrease the cost of maintaining information about human services and increase the quality and accessibility of that information, thereby improving service discovery and deliverability, yielding healthier people, more resilient communities, and better informed decision makers.

Project 3: Google Home "Actions" Voice Commands for Bookshare Accessibility

Benetech's Bookshare ( is the world's largest online library of accessible electronic books with over 500,000 titles and counting! 

With the rise of voice commands operating people's devices, we want to offer Bookshare members who have purchased a device like Google Home the opportunity to access their books using voice commands. With this series of actions or skills, a Bookshare member can access books from the Bookshare collection and have them read aloud using the text-to-speech capability on the device. There are more than 500,000 titles available in the collection, which can be opened upon command!  Open Sesame.

The following actions are examples of what users on Bookshare may want to be able to do using voice commands (with basic instructions on how):

1. As a Bookshare member, I want to be able to set up my device to sign into Bookshare.

  • Using the API (see, user account can be authenticated

2. As a Bookshare member, I want to be able to open a book that I have previously downloaded from Bookshare

  • Using the user history API call, the action can list a set of titles that have been downloaded in the past 30 days from Bookshare
  • User would then select one of those books and the action would either immediately open the previously-packaged book (depending upon format*) or request a new download of that title (in the applicable format*)
  • Because it can take a few seconds to a few minutes to package the title for that specific user, it may be a good user experience to offer the user an option to "Do you want to look for another book while you are waiting? I can notify you when the title is ready." 
  • *Note: research is needed as to which format would be most-easily read as text-to-speech by the device: EPUB 3 or DAISY?

3. As a Bookshare member, I want to be able to find a newspaper or periodical that is available in Bookshare and open the most-recent edition that is available to me.

  • Using the search periodicals API call, the action can list a set of periodicals that are available from Bookshare.
  • User would then select one of those periodicals
  • The action would then request the latest edition of that periodical that is available on Bookshare (which hold a max of 3 editions, e.g. 3 days of a daily, 3 weeks worth of a weekly, or 3 months of a monthly, etc) 
  • The action would then confer with the user that they want the latest date (or a previous edition)
  • Then the action will download that edition for the user (in the applicable format*)
  • Because it can take a few seconds to a few minutes to package the title for that specific user, it may be a good user experience to offer the user an option to "Do you want to subscribe to this periodical? You can then just ask for the next edition."

4. As a Bookshare member who has previously found a periodical that I like to read, and saved it as a local subscription on my device, I want to open a specific edition of that periodical and read it aloud.

  • Once the above action is built, and the user has "subscribed", then the device will have one or more periodicals noted locally, so don't have to search for titles again, just figure out which periodical to read first.
  • The user may have a list of periodicals to which they have "subscribed", so action needs to read out the list of subscribed titles and the user will select one to read now.
  • For that selected periodical, the action should check Bookshare to see if there is a more-recent edition of the periodical than the latest one already downloaded to the device.
  • If so, then ask the user if they want to re-open the last one they were reading, or download the next edition.

5. As a Bookshare member, I want to be able to find a book using a title search within Bookshare and then open it. 

Note: there are many different ways to discover books within the Bookshare collection, such as looking for the "most-recently added" titles, the "most popular" titles, books with a particular title, ISBN, or by an author, tagged with a category, etc. All of those discovery mechanisms would use the same basic concept, but would call a different search API. This first example of a "book whose title includes this keyword/phrase" is representative of the other types of actions, with TITLE being the best first step in discovering a book:

  • Passing a keyword or text phrase to the title search API call, the action can list a set of titles that are available Bookshare that have a title that includes the keyword.
  • User would then select one of those books and the action would either immediately open the previously-packaged book (depending upon format) or request a new download of that title (in the applicable format)
  • Note: research is needed as to which format would be most-easily read as text-to-speech by the device: EPUB 3? DAISY?

6. As a Bookshare member, I would like to be able to navigate forward and backward within the book, and jump to a section or chapter (we will need to support navigation within the book). I would also like to speed up or slow down the playback.

*Additional Feature Request: If the volunteer still has time and interest, we also have V2 API calls, which are RESTful and will support all of our new features in the future. The first functional area that has been written to that spec is in the area of Reading Lists, which serve as a way of organizing and/or assigning books to people. Each member has access to a "list of lists", which then has a "list of books" on it. Students are assigned school reading lists, individual members pull together favorites, and Bookshare librarians build shared reading lists of best sellers, award winners, grade-level suggestions, etc., all represented as reading lists.

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.