Skip to content
Jeffrey I. Schiller edited this page Feb 5, 2019 · 18 revisions

Introduction

We have been accepted for GSoC 15 and we will be accepting applications within the timeframe allocated by the organization (please consult the GSoC 15 website for details). 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 website and register yourself as a student.

If you have any questions, you can contact us through the Open Source group if you should have any questions about projects and the application process. If you'd like to volunteer with us outside of GSoC, please follow our [getting started] (http://appinventor.mit.edu/appinventor-sources/#gettingStarted) instructions in our main site.

IMPORTANT NOTE: The definition of the projects in the list below assumes some familiarity with App Inventor. If you have never used the system, please go through some of the tutorials to get used with the terminology used in the descriptions. As a prerequisite to joining the development team you will be asked to develop a non-trivial app with an App Inventor server running on your local machine. To get the server running you can follow the instructions in our main github repo. If you have any questions regarding getting the server up and running you should first read our very detailed guide, and if you come across any issues contact the open source mailing list.

Project definition

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.

  • Expected results: What would be expected from this particular project at the end of the summer. Again, this might not be super specific at this stage, and the expected results might change and be redefined during the summer.

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

  • Difficulty and estimated time: An estimation of the effort needed for the particular project (legend: Easy || Medium || Hard) and a rough estimation if the project would take the whole summer, or less than that.

  • 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

This is a list of potential projects; some of them might not be totally defined so some work will be expected around definition and fleshing out the ideas exposed in here.

This list will not include smaller fixes or short improvements. As part of your onboarding you will probably start with one or two of the bite-sized issues in our issues list before choosing a main project for the summer.

Also note that there are a number of technologies that are not project-dependent, such as using git and gihub, apache ant, Google AppEngine, Android SDK tools such as adb, or IDEs such as Eclipse or IntelliJ. These technologies are used throughout the project and familiarity is expected, but will not be included in the Knowledge Prerequisites section for each project.

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.

Organizing code in the Blocks editor

  • Brief explanation: Currently there is only one main workspace and all blocks will share that. This can be a limitation when the number of blocks grows. It would be a lot easier to work with bigger projects if there was a way to organize blocks, either by feature, or in folders, or in some other ways.

  • Expected results: Implement an easy way to organize code in the blocks editor. The contributor will also have to design the way that this organization will happen. There might be sub-projects and it could be possible to have more than one person working on this project.

  • Knowledge Prerequisite: JavaScript and familiarity with the Blockly library.

  • Difficulty and estimated time: Medium; this would be a whole summer project.

  • Mentor: Potentially Jose Dominguez, Hal Abelson, Andrew McKinney, Lyn Turbak.

Searching blocks in the Blocks editor

  • Brief explanation: When working on bigger projects, it can be rather difficult to find blocks. A way of searching and focusing on certain blocks would be very useful. Some prototyping work has already been done for this project, so that work could be continued during the summer.

  • Expected results: A new way to filter blocks in the editor by the means of a searching box or similar placed in the workspace. The details of the solution will be fleshed out as part of the project (a few mockups are expected to be discussed before any coding is done).

  • Knowledge Prerequisite: JavaScript and familiarity with the Blockly library.

  • Difficulty and estimated time: Medium; this would be a several week project.

  • Mentor: Potentially Jose Dominguez, Hal Abelson, and/or Lyn Turbak.

Undo for Blocks editor

  • Brief explanation: Implement an undo option for the blocks editor. This would be connected to undo in the designer.

  • Expected results: A new option potentially in the Project menu and also working as a shortcut (ctrl + z || cmd + z) that allows to undo the latest actions in the blocks editor. Note this will be connected with undo in the Designer too.

  • Knowledge Prerequisite: JavaScript and familiarity with the Blockly library for the blocks part, and Java and familiarity with GWT for the designer part.

  • Difficulty and estimated time: Hard; this would be a whole summer project.

  • Mentor: Potentially Jose Dominguez and/or Hal Abelson or Andrew McKinney (https://github.com/afmckinney).

Designer Projects

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

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.

  • Difficulty and estimated time: Easy; no more than a couple of weeks including testing.

  • Knowledge Prerequisite: Java and familiarity with GWT.

  • Mentor: Potentially Jeff Schiller

Alarms/Warnings for assets (size)

  • Brief explanation: There's a current 5MB limit for apps so uploading assets that add up to close to that limit should generate warnings for the user.

  • Expected results: A number of pop ups that warn the user when they are reaching the current 5MB limit when uploading assets.

  • Knowledge Prerequisite: Java and familiarity with GWT.

  • Difficulty and estimated time: Easy; no more than a couple of weeks including testing.

  • Mentor: Potentially Jeff Schiller

My Projects page (improvements)

Organization (folders)

  • Brief explanation: The My projects page could do with a number of improvements, for instance, being able to sort projects within folders.

  • Expected results: A different number of options to organize projects in the My Projects page.

  • Knowledge Prerequisite: Java and familiarity with GWT.

  • Difficulty and estimated time: Easy; no more than a couple of weeks including testing.

  • Mentor: Potentially Jose Dominguez and/or Hal Abelson.

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.

  • Knowledge Prerequisite: Java and familiarity with GWT.

  • Difficulty and estimated time: Easy; 3 to 4 weeks including testing.

  • Mentor: Potentially Jose Dominguez and/or Hal Abelson.

Undo for Designer

  • Brief explanation: Have an undo button for the designer. This would be connected to undo in the blocks.

  • Expected results: A new option potentially in the Project menu and also working as a shortcut (ctrl + z || cmd + z) that allows to undo the latest actions in the designer. Note this will be connected with undo in the Designer too.

  • Knowledge Prerequisite: JavaScript and familiarity with the Blockly library for the blocks part, and Java and familiarity with GWT for the designer part.

  • Difficulty and estimated time: Hard; this would be a whole summer project.

  • Mentor: Potentially Jose Dominguez and/or Hal Abelson.

Component Projects

Augmented Reality apps with the canvas component

  • Brief explanation: Adding a feed for the camera without using the camera app in the device could provide a way of creating Augmented reality apps. The following design could be a head start for anyone wanting to take on this project.

  • Expected results: An improved camera component that allows to use the camera feed to grab a feed in real time and superimpose other elements in the screen.

  • Knowledge Prerequisite: Java and familiarity with the Android SDK.

  • Difficulty and estimated time: Easy; no more than a couple of weeks including testing.

  • Mentor: Potentially Jose Dominguez and/or Andrew McKinney.

Improvements in ListView

  • Brief explanation: Adding different layouts for list views is one of the most asked for improvement from users.

  • Expected results: New options in the ListView component to make its layout more flexible (for instance adding icons, text, pictures, and so forth).

  • Knowledge Prerequisite: Java and familiarity with the Android SDK.

  • Difficulty and estimated time: Easy; no more than a couple of weeks including testing.

  • Mentor: Potentially Aubrey Colter .

Menu options

  • Brief explanation: Another highly asked for improvement is to allow to add menu options.

  • Expected results: This should be a new component that integrates a set of actions for the options menu and provides events that trigger when the added options are clicked on.

  • Knowledge Prerequisite: Java and familiarity with the Android SDK.

  • Difficulty and estimated time: Easy; 3 to 4 weeks including testing.

  • Mentor: Potentially Jose Dominguez and/or Hal Abelson.

Add components programmatically

  • Brief explanation: Currently components as Sprites have to be manually added to a Canvas to be able to use them. In situations like games, it would be a lot more useful if Sprites could be instantiated and created when needed. In Scratch this functionality is called cloning and it would be a great starting point to see how cloning works to design a similar feature in App Inventor.

  • Expected results: An option for components to be instantiated from the blocks; note that this project would need a design proposal and some research and prototyping.

  • Knowledge Prerequisite: Java and familiarity with GWT and the Android SDK.

  • Difficulty and estimated time: Medium; this would be a whole summer project.

  • Mentor: Potentially Jose Dominguez and/or Hal Abelson.

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 in Open Source.

Google cardboard SDK

  • Brief explanation: Research into the cardboard SDK for virtual reality and see how it could be integrated into App Inventor.

  • Expected results: A report on the work done and some kind of working prototype that allows to create an app that uses the cardboard SDK. Note the research intensive nature of this project. You will probably work for a fair bit of the summer directly with the Android SDK before integrating that work into App Inventor.

  • Knowledge Prerequisite: Java and familiarity with the Android SDK.

  • Difficulty and estimated time: Medium; this would be a half a summer project.

  • Mentor: Potentially Jose Dominguez and/or Hal Abelson.

Wearables SDK

  • Brief explanation: Research into the Android Wear and see how it could be integrated into App Inventor.

  • Expected results: A report on the work done and some kind of working prototype that allows to create an app that uses the wearables SDK. Note the research intensive nature of this project. You will probably work for a fair bit of the summer directly with the Android SDK before integrating that work into App Inventor.

  • Knowledge Prerequisite: Java and familiarity with the Android SDK.

  • Difficulty and estimated time: Medium; this would be a half a summer project.

  • Mentor: Potentially Jose Dominguez and/or Aubrey Colter.

Internet of things

  • Brief explanation: Some research on the wide topic of Internet of Things and see how it could be applied and integrated into App Inventor.

  • Expected results: A report on the work done and some kind of working prototype that allows to create an app that connects to some external hardware component connected to the Internet. Note the research intensive nature of this project.

  • Knowledge Prerequisite: Java, familiarity with the Android SDK, and familiarity with hardware and embedded systems.

  • Difficulty and estimated time: Medium; this would be a half a summer project.

  • Mentor: Potentially Jose Dominguez and/or Hal Abelson and/or Andrew McKinney

Apache Cordova Integration

This is a really ambitious project, not for the faint of heart!

  • Brief explanation: The integration could be done at different levels, but one that comes to mind right now is to create a parallel class to Form.java based on the Cordova WebViewer, as opposed to extending from Activity as Form does now. The user would have to choose if they want to create a normal App Inventor Screen or a Cordova Screen, and a number of components with their blocks would have to be created on top of the Cordova API. A big challenge for an intrepid developer (or a team, even!). If you want to discuss it, get in touch.

  • Expected results: A report on the work done and some kind of working prototype that allows to create a hybrid app that can be built with Cordova for different platforms (mainly Android and iOS). Note the research intensive nature of this project.

  • Knowledge Prerequisite: Java, familiarity with hybrid apps and Apache Cordova, JavaScript, the Android SDK and the JavaScript Interface in Android's WebView. Familiarity with iOS development a plus.

  • Difficulty and estimated time: Hard; this would be a whole summer project.

  • Mentor: Potentially Andrew McKinney and/or Jeff Schiller.

Full support for Background processes

  • Brief explanation: This is another BIG and ambitious project; currently App Inventor works on Android Activities. There's been some current work to add support for background services (events that can get triggered even when the phone is not active), and that work can be continued during the summer.

  • Expected results: A new option in the Designer that allows to create some kind of background task or service. This should integrate seamlessly with the way current activities are created and should be straight forward to users (with little to no programming experience), together with documentation and example projects.

  • Knowledge Prerequisite: Java and familiarity with GWT and the Android SDK.

  • Difficulty and estimated time: Hard; this would be a whole summer project.

  • Mentor: Potentially Jose Dominguez and/or Jeff Schiller.

CDK (Component Developer Kit)

  • Brief explanation: This is an idea to allow contributors to create standalone components that can be uploaded dynamically to any server and used in apps. There's some initial work done on this that could be continued during the summer.

  • Expected results: A new option in the designer to upload your own components to be used in an app. The system should also take care of any dependencies that these new uploaded components generate in the system when they are exported (and imported on a different server).

  • Knowledge Prerequisite: Java and familiarity with GWT and the Android SDK. Familiarity with systems integration, release management, and systems architecture is a plus.

  • Difficulty and estimated time: Hard; this would be a whole summer project.

  • Mentor: Potentially Jose Dominguez and/or Hal Abelson and/or Andrew McKinney

Data sharing

  • Brief explanation: TinyWebDB is a good option to send data to the cloud, but it's quite difficult for most of out users to deploy the python script to app engine. There are two types of projects that could be done here, one would be to improve the functionality of TinyWebDB, focusing especially on ease of deployment. The other could be to add a service such as cloud data in Scratch.

  • Expected results: a new way to store information in the cloud with the less possible burden to our users (a self hosting system would be preferred).

  • Knowledge Prerequisite: Java and familiarity with GWT and the Android SDK. Familiarity with microservices/webservices and hosting/deployment techniques or solutions (back end development) is a plus.

  • Difficulty and estimated time: Medium; this would be a half a summer project.

  • Mentor: Potentially Jose Dominguez and/or Jeff Schiller.