Skip to content
Mathew Sachin edited this page Jan 13, 2018 · 11 revisions

Introduction

Please apply for GSoC 2017 through Google’s Site GSoC 17 Website. All applications have to go through Google.

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

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.

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.

  • 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 GitHub, 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.

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 Jeff Schiller.

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

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

Improvements in ListView

  • Brief explanation: Adding different layouts for list views is one of the most asked for improvement from users. Exploring how to use a recycler view within App Inventor can also be attempted.

  • 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 Jose Dominguez.

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.

Visualisation component

  • Brief explanation: A component that can easily visualise and plot data such as time-series coming in from the accelerometer and gyroscope (or other data sources such as plain files).

  • Expected results: This should be a new component that offers an easy way to create data plots. Integration with a library such as MPAndroidChart may be the way to go.

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

  • Difficulty and estimated time: medium; half summer project.

  • Mentor: Potentially Jose Dominguez.

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.

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.

Background-powered components

  • Brief explanation: Research into different ways of integrating long lived or scheduled operations into App Inventor. Note this is related to the previous idea, but approached from a different angle.

  • Expected results: A report on the work done and some kind of working prototype that allows to create an app that uses a scheduled task. 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: Hard; this would be a full summer project.

  • Mentor: Potentially Jose Dominguez.

CDK (Component Developer Kit) Enhancements

  • Brief explanation: Work has been done during the last few GSoC sessions in developing a Component Developer’s Kit to App Inventor. This facility provides for loading externally developed components into App Inventor. However this work is currently limited in scope. In particular only components that have no visible UI elements can be added. We would like to extend the CDK capabilities to include extensions with UI elements. Extensions are currently only available in English. We would like an enhancement to that extension writers can provide strings in other languages as well, as is the case with builtin components.

  • Expected results: The ability to build and add extensions with text in non-English languages as well as access to UI elements.

  • 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 Hal Abelson, Andrew McKinney and/or Jeff Schiller

Extensions

  • Brief Explanation: As described in the previous project, we now 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.

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

  • Knowledge Prerequisite: Java and familiarity the Android SDK. Knowledge of any devices you might want to interface with.

  • Difficulty and estimated time: Moderate; The exact amount of work will depend on the complexity of the proposed extension.

  • Mentor: Potentially Jeff Schiller and Jose Dominguez.