Willing to contribute for gsoc'23


This ultimately depends on the type of project you want to propose. If the project is related to improving or creating a component, then it would likely be fine. If you're planning to address a project in the web editor you'd likely want to start by working on issues related to the frontend rather than implementing a component as a first project.

Please consider taking a look at the list of potential projects for last year:

This might give you a better sense of how we think about and organize GSOC projects.

yeah i read the projects, i would like to ask as a beginner like i know java so which type of projects do you would advise i should work on which involve only knowledge of java, the component projects right

Anything related to the designer or components is likely a good starting point. The designer code is written in Java and uses GWT to transpile to JavaScript, so you don't need to necessarily know much about web dev (but it does help). Components will probably be more approachable for Java knowledge but Android does have its own challenges. In some cases, it's helpful to start building a project in Android Studio first to understand how to get it to work on Android and then translate that knowledge into App Inventor's framework.

is there any video about how to get started with these codes and to study which folder in the repository

Not in particular. If you're looking to add/edit components, everything for that will be done under the components/src/com/google/appinventor/components/runtime directory. For more information about adding/editing components please see this document:


sure ,ill get back if i get any doubts further

So the app inventor framework converts the java android code into to YAIL and its further used in building component right?so the code of the component in the github repo is raw android or its in yail java

You can think of the components module simply as a Java library, just like any other (the class files are put into the artifact AndroidRuntime.jar in the build system). YAIL is introduced with the designer/blocks editor. When you test your app in the companion or elect to build it into an APK, the editor emits YAIL, which is our own dialect of Scheme. We use a library called Kawa, an implementation of Scheme on top of Java, to either interpret the Scheme code (in the companion) or compile it to JVM byte code (for an APK). In either case, the YAIL code is able to reference and instantiate the component classes in the AndroidRuntime.jar file. You can see the Scheme App Inventor generates if you open up you browser dev tools and look at the console.

We also provide a number of macros and functions in Scheme, which are defined in the file buildserver/src/com/google/appinventor/buildserver/resources/runtime.scm. You'll see these functions referenced frequently in the generated Scheme code App Inventor produces.

yeah, so now if i have to add a color in appinventor/components/src/com/google/appinventor/components/runtime/Component.java do i have to update the new color value in any other file also or its just the component file and raise the pr

The constants in Component.java are only for the purpose of referencing them in the Android code. If you're looking to add a new color to the dropdown in the designer, you'll want to instead add it to appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidColorChoicePropertyEditor.java

so whenever i add a new component it should be both referencing in android code and also to the client side so that it can be visible to use and implement the component files should be done at 2 places runtime and also client?correct me if im wrong

If you're adding a new component, all you need to do is include the appropriate annotations on the Java code. At a minimum, you'll need:

@DesignerComponent(version = 1)
public class MyComponent extends ... {

When you build the system, the annotation processors defined in components/src/com/google/appinventor/components/scripts will take the information in those annotations and produce the simple_components.json file that the appengine code uses to generate the web editor's user interface.

If you need to add a new property editor, for instance, then you may need to modify code both in components and appengine but for most new components you really only need to add the Java code in components/src/ and App Inventor should take care of the rest.

so for gsoc projects it goes both they ways right adding component and also property to it or only the component,this is just new to me so im very curious

If you haven't already, please take a look at:

Specifically, Challenge 2 of the instructions call for enhancing the Camera component. You're not required to implement an entire component from scratch.

yeah read it,so for next year gsoc projects also there wont be anything to implement from scratch right?
and one more request if you could tag any helper or developer for personal interaction with me for the gsoc as im wondering asking so many doubts here would not look good

It would Stop other to learn from queries, you would be putting there.

That's really great and make others to learn as well.

Since, this Open Source Development category is ment for contribution and related concern only.

Hello everyone,
I am Sarabjeet, sophomore computer science student.
I got to know about MIT App Inventor from the GSoC orgs list and I completely love the idea of it, creating fully functional apps using block-based coding.

I understand the core concepts of Java, but I am having difficulty in understanding the huge codebase of App Inventor on GitHub. I am aiming to understand the codebase and working of the code in upcoming months, so I can work on projects and gain some experience in development.

Can anyone please help me and others willing to contribute to GSoC with some resources or starting materials to understand how the App Inventor works?
Thank you.

1 Like

Hi sarabjeet,
I am also looking to participate this year, I will suggest you start off with settin up app inventor locally.
I found this really helpful document that summarizes all the steps, https://community.appinventor.mit.edu/t/a-guide-for-building-appinventor-in-both-windows-and-linux/31558/.
Hope this helped.