Skip to content

Google Summer of Code 2024

Susan Rati Lane edited this page Mar 8, 2024 · 6 revisions

Introduction

Welcome to Google Summer of Code with MIT App Inventor.

We have an application process in addition to Google's application process. You must do both. Please apply to Google for GSoC through Google’s Website. All applications have to go through Google.

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

Below 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

Our application form for GSoC 2024 is here. Additional instructions are linked from the application form.

Please note that GSoC is not open for proposals until March 18, and our form will not be open for proposals until then.

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

Artificial Intelligence Projects

AI components for Android and iOS

Brief Explanation: App Inventor has a growing offering of artificial intelligence and data science features. You can find Anomaly Detection, Regression, and Chatbot components currently in the designer. Others exist as Android-only extensions. Re-implement these as core App Inventor components in both Android (most code will be reusable), and iOS (entirely new).

All components should inherit from a common superclass, which can be designed with the help of the App Inventor team.

Technical Difficulty: Medium

Estimated Time Commitment: 175 hours for two components and 350 for all four.

Knowledge Prerequisites: Swift, Java.

Potential Mentors: David Kim, Evan Patton

Property editor for creating transfer-learning ML models

Brief Explanation: Our Personal Image Classifer (PIC) and Personal Audio Classifer (PAC) extensions use external websites to build and train models. Those models then have to be exported and imported into App Inventor. It's a cumbersome process.

Build these sites as property editors in core App Inventor.

Technical Difficulty: Hard

Estimated Time Commitment: 350 hours

Knowledge Prerequisites: Java, GWT, Javascript.

Potential Mentors: Jeff Schiller

Designer Projects

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

Responsive (Mobile phone) layout

Brief Explanation: In 2023, App Inventor rolled out an extensive refactor of our user interface to support GWT's UiBinder framework. This allows us to provide multiple user interface layouts based on device or user preferences. We see a growing number of users accessing App Inventor with mobile phones, and handheld devices are globally more accessible than desktops or laptops. We would like to provide a user interface option that makes App Inventor a more practical option for small screens.

Technical Difficulty: Medium

Estimated Time Commitment: 350 hours

Knowledge Prerequisites: Java, GWT, UiBinder.

Potential Mentors: Susan Lane

Keyboard navigation

Brief Explanation: App Inventor has poor and inconsistent keyboard navigation. We would like to increase our accessibility to users by implementing a consistent system of keyboard-based navigation and hotkeys.

Technical Difficulty: Medium

Estimated Time Commitment: 350 hours

Knowledge Prerequisites: Java, GWT, UiBinder.

Potential Mentors: Susan Lane

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.

Improve the Blockly workspace multi-select plugin

Brief Explanation: App Inventor maintains the Blockly workspace-multiselect plugin that allows you to drag, select, and manipulate multiple blocks in the workspace. It was a project for Google Summer of Code 2022, check out this talk at Google Blockly Summit 2023 if you would like to learn more.

Enhancements to plugin:

Technical Difficulty: Medium

Estimated Time Commitment: 175 (2 tasks) / 350 (all 4 tasks) hours, the IDragger one is compulsory, others are free to combine.

Knowledge Prerequisites: Javascript

Potential Mentors: Songlin Jiang ([email protected]), Evan Patton

Build old App Inventor functionality into Blockly plugins

Brief Explanation: App Inventor uses Google's open source Blockly library but actually predates it. Because of this, we have a lot of our own unique functionality layered on top of Blockly. In recent years, Blockly has moved to a plugin system. This functionality needs to be built as Blockly plug-ins and submitted to the Blockly project.

  • Warning/Error handler
  • Typeblocking

Technical Difficulty: Medium

Estimated Time Commitment: ?? A project can be one or both features.

Knowledge Prerequisites: Javascript

Potential Mentors: Evan Patton

iOS Projects

iOS versions of Android components

MIT App Inventor was original written to build projects for Android. We have released an iOS version of the Companion, but there are still components that have not been ported. The current status of iOS component development can be found at Does App Inventor Run on iOS?. This components are implemented for Android, and the Java source can be used as reference for the swift implementation. Most components with substantial unimplemented features could make a good project.

Exclude: Lego Mindstorms

Of particular interest: File component (under Storage), ListView (under User Interface), several sensor components for sensors supported by iOS (Not all sensors can be ported to iOS due to lack of hardware support), Spreadsheet, Chart, BluetoothLE, Micro:bit, AI extensions

Note: The GSoC applicant needs to have access to a Mac computer. We can't provide this.

Technical Difficulty: Medium or Hard

Estimated Time: 175 or 350 hours

Knowledge Prerequisite: Swift

Potential Mentors: Evan Patton, Susan Lane, David Kim

iOS versions of Kodular components

We are working with Kodular to implement some of their component in App Inventor. These components will need iOS implementations in addition to Android.

Of particular interest: ???

Technical Difficulty: Medium or Hard

Estimated Time: 175 or 350 hours

Knowledge Prerequisite: Swift

Potential Mentors: Diego or Vishwas

Example Android Sources

This listing is not yet complete

Better behavior for unimplemented components

Currently, when an Android-only component is added to a project and loaded into the iOS Companion, the app just crashes. We would like our iOS Companion to be able to detect that it is trying to load an unimplemented component and present the user with useful information about it. We would also like the app to run if it is possible without the unimplemented component.

Technical Difficulty: Medium

Estimated Time: 175

Knowledge Prerequisite: Swift

Potential Mentors: Evan Patton, Susan Lane

Security for Visible Extensions

Brief Explanation: A previous GSOC project explored implementing visible extensions for App Inventor using nested iframes to embed component logic (https://github.com/mit-cml/appinventor-sources/pull/2223). Before this can be deployed, the security needs to be hardened so that malicious extension code is not run in the user's browser. This involves some architecture and design work with the App Inventor team. Options we have considered include Webworkers, a limited javascript interpreter, web assembly.

Technical Difficulty: Difficult

Estimated Time: 350

Potential Mentors: Jeff Schiller or Evan Patton

Assets Library

Brief Explanation: Allow users to upload sets of assets to be imported easily into different projects.

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: Medium

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