Skip to content

Google Summer of Code 2025

Susan Rati Lane edited this page Feb 6, 2025 · 7 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 2025 is here. Additional instructions are linked from the application form.

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.

  • 2025 components TBD

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

Trainable ChatBot interface and AI component

Brief Explanation: App Inventor has a growing offering of artificial intelligence features and is looking to add more cutting-edge AI learning experiences. We are looking to build a tool to create a trainable and customizable ChatBot that can be imported into an App Inventor app. This would be a similar experience to our Personal Image Classifer (PIC) and Personal Audio Classifer (PAC) extensions wherein there are external websites to build and train models, and these models are then exported and imported into App Inventor.

Familiarity with RAG implementations and SLMs will be helpful.

Technical Difficulty: Hard

Estimated Time Commitment: 350 hours

Knowledge Prerequisites: Java, GWT, Javascript.

Potential Mentors: Natalie Lao

Property editor for creating transfer-learning ML models

Brief Explanation: Our Personal Image Classifer (PIC) and Personal Audio Classifer (PAC) components 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

Component Projects

Update of ListView component update

Brief Explanation: The ListView component offers a sophisticated set of behavior options. It supports both the addition of simple list elements by comma-delimited string and complex items by an interactive editor in the web designer. It supports several different layouts of list elements that include strings and images. Lists elements can display in a scrolling list style or a "swipe left" single element card style. Several parts of this need to be enhanced or refactored.

Expected Results: Add features: New layout matching a swipe-left card browser with a large central image an text as captions; refactor of web designer list item editor to use UIBinder layout template, be more user-friendly, and be keyboard navigable; multi-select support. Update some features iOS that do not work as well as the Android version.

Knowledge Prerequisites: Java, swift

Technical Difficulty: Medium

Estimated Time: 175 hours

Potential Mentors: Susan Rati Lane

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

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

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

Additional Projects

Github workflow hooks

Brief Explanation: The appinventor_sources repository behaves differently from the Github workflow expectations. In particular, we have two branches that function as master: master and ucr (Upcoming Component Release). Changes that must be installed on devices (Android or iOS Companion) need to be released at specific times of the year, so that work is branched from and merged into ucr. Changes that affect the web desiger can be released at any time and are branched into/merged into master. Github does not recognize ucr for the purpose of updating linked issues and other features.

Expected Results: Write Github hooks to match our dual-master workflow.

Knowledge Prerequisites: Python, Git, Github

Technical Difficulty: Medium

Estimated Time: 175 hours

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