Skip to content

Google Summer of Code 2021

Evan W. Patton edited this page Feb 19, 2021 · 8 revisions

Introduction

Please apply for GSoC 2021 through Google’s Site GSoC '21 Website. All applications have to go through Google.

We will be receiving applications within the timeframe allocated by GSoC. Please consult the GSoC '21 website for details. For bite-sized issues to work on as part of the community introduction phase, please see the help wanted issue list.

This is the list of projects we are proposing for the summer; you can choose one or more projects from the list, or come up with your own project. Also note that these projects could be worked on outside GSoC if you would like to volunteer during the summer.

Information for students

How to apply

Follow these instructions to apply. Also note that you will have to go through the normal application in the GSoC '21 website and register yourself as a student.

Potential Projects

This is what you might expect from projects in the list below:

  • Brief explanation: An explanation of what the project is about. Please note that this might be just an idea, and as part of your work in the project you will be defining and scoping the project.

  • Technical Difficulty: A rough idea of how difficult the project is given knowledge of the language but not necessarily the knowledge of the frameworks involved.

  • Estimated Time Commitment: An estimate for the total number of hours required to be spent on the project to produce a working solution with testing.

  • Knowledge Prerequisite: A brief list of the technologies needed in order to work on this project.

  • Potential Mentor: The currently active team member you will probably be working with during the summer (this can also change depending on which projects are chosen).


Projects list

Blocks Editor Projects

Several projects involve the App Inventor Blocks editor. The main language used in these projects is JavaScript with the Google Closure and Blockly libraries.

Knowledge Prerequisites: javascript. The Blocks Editor is written primarily in javascript. Java and GWT are also useful. Familiarity with the Google Blockly sources is also a plus.

Drag a set of blocks

Brief Explanation: A feature allowing a user to drag-select multiple blocks and move them as a group as shown in the example image

Technical Difficulty: Medium

Estimated Time Commitment: 175 hours

Knowledge Prerequisite: JavaScript, familiarity with Blockly a plus

Potential Mentors: Evan Patton or Li Li

Unified user interface around picking colors in both blocks and designer

Brief Explanation:

Different representations for colors are used in different places in MIT App Inventor.

  • The GUI color picker used in the designer (e.g. BackgroundColor) is an RRGGBBAA hex value
  • The Blocks Editor uses RGB for blocks in the Colors drawer
  • The "Do It" testing command, accessed by right-clicking a collection of blocks, displays an integer

Change all colors to use the same representation and have a unified interface for choosing colors.

Technical Difficulty: Hard

Estimated Time Commitment: 175 hours

Knowledge Prerequisite: Java and JavaScript, familiarity with GWT and Blockly a plus

Potential Mentors: Susan Lane or Evan Patton

Designer Projects

A number of improvements for the Designer view. This part of the system is built mainly with Java using the Google Web Toolkit.

Multiple file uploads

Brief Explanation: The current designer only allows uploading one asset at a time. If you need to upload 10 images, you need to do the process 10 times. It would be a much better experience to be able to upload a number of assets in one go.

Expected results: An improvement in the currently existing file chooser that allows multiple uploads for assets.

Technical Difficulty: Easy

Estimated Time: 100 hours

Knowledge Prerequisite: Java and familiarity with GWT

Potential Mentors: Jeff Schiller or Evan Patton

Autopublish AIA for Help/Support

Brief Explanation: App Inventor provides a forum for support inquiries. Often, people using App Inventor are looking for issues debugging an issue in their projects. This feature would provide a user interface to open an issue in the forum directly from App Inventor and include a copy of the active project.

Technical Difficulty: Hard

Estimated Time: 175 hours

Knowldge Prerequisite: Java, familiarity with GWT, comfortability with REST APIs, specifically the Discourse API

Potential Mentors: Evan Patton or Jeff Schiller

Shortcuts for project actions

Brief Explanation: It would be very useful to be able to download the sources or the apk directly from the projects page.

Expected Results: A new layout for the My Projects page from which a new set of options for downloading different packages are shown. There's some initial work done on this so it could be expanded during the summer.

Technical Difficulty: Medium

Estimated Time: 100 hours

Knowledge Prerequisite: Java and familiarity with GWT.

Potential Mentors: Susan Lane

Component Projects

These projects involve component code that runs on Android devices. Knowledge of Java and Android is a requirement for these projects.

Animation Improvements

Brief Explanation:

The sprite animation features of MIT App Inventor have lots of room for improvement. Some suggestions are:

  • Set origin coordinates for image sprites using standard coordinates
  • Glide block as in Scratch (https://www.youtube.com/watch?v=Ej0Gb_hwvZk)
  • Touching: The current algorithm that checks for sprites touching each other treats them as rectangles and checks for overlaps. This could be updated to a more useful algorithm

Technical Difficulty: Hard

Estimated Time: 175 hours

Knowledge Prerequisite: Java and Android

Potential Mentors: Evan Patton, Susan Lane, or Li Li

Custom Font Support

Brief Explanation: An oft-requested feature in App Inventor is the ability to add custom fonts to a user interface, which would allow for more flexible designs.

Technical Difficulty: Medium

Estimated Time: 100 hours, plus some additional time for integration across other projects

Knowledge Prequisites:: Java, Android, and some JavaScript knowledge needed

Potential Mentors: Li Li, Susan Lane, or Evan Patton

Testing Projects

While not as glamorous as some of the other projects, testing is critical to making sure regressions are added to the App Inventor code base. Projects in this category explore ways in which to shore up App Inventor's test suite to ensure that future changes don't negatively impact end users.

Automated Component Testing

Brief Explanation: App Inventor has implemented a JUnit framework for automated testing of our Java codebase. However, great strides still need to be made in testing coverage of existing code, including the design of meaningful automated tests.

Expected Results: Accurate, meaningful test suites for at least one existing component in App Inventor that demonstrates comprehensive knowledge of the functionality of the component. Preferably, this will be complete for several components, but exact scope will be set as we discover together the effort and time involved.

Knowledge Prerequisite: JUnit, Roboelectric Android framework

Technical Difficulty: Medium

Estimated Time: Anywhere from 80 hours up to 175 hours depending on the number of tests written once the infrastructure has been updated

Potential Mentors: Evan Patton, Susan Lane, or Jeff Schiller

GWT Unit Testing

Brief Explanation: App Inventor uses the Google Web Toolkit (GWT) to power a large part of its web interface. This code is in much need of unit and behavior tests. Potential projects will make use of GWTUnit and PowerMock to increase test coverage of the user interface.

Knowledge Prerequisite: JUnit, Java, familiarity with GWT and PowerMock (https://powermock.github.io/) are a plus

Technical Difficulty: Medium

Estimated Time: Anywhere from 80 hours up to 175 hours depending on the number of tests written

Potential Mentors: Susan Lane, Li Li, or Evan Patton

Prototypes and Proofs of concept

This is a list of more research oriented projects. They might not be merged into the main repository straight away, but prototyping projects are very important of App Inventor development and have evolved into fully fledged features over a longer period of development.

Built-In Block Extensions

Brief Explanation: App Inventor provides the ability to extend the system with custom components written by third parties. However, not all functionality is nicely wrapped up in a component. Built-in blocks define operations in the language (e.g., math operators) that can be used in any context. This project would explore making custom blocks that could be added to App Inventor.

Expected Results: A working extension that performs a useful task that can be loaded into App Inventor.

Knowledge Prerequisites: JavaScript and Scheme required, Java knowledge a plus

Technical Difficulty: Hard

Estimated Time: 175 hours

Potential Mentors: Evan Patton or Jeff Schiller

Extensions Library

Brief Explanation: We have the ability to add external extensions to App Inventor. We would like to host a library of potential extensions that people might want to add to their projects. This might include extensions that use Bluetooth Low Energy to interface with the Internet of Things. Remote sensors, Arduino’s or other external devices that someone might want to interact with from their phone or tablet.

Knowledge Prerequisite: Java and JavaScript

Technical Difficulty: Medium

Estimated Time: 140 hours of development with some time for user acceptance testing

Potential Mentors: Jeff Schiller or Evan Patton