Open-source project
mit-cml/appinventor-sources avatar
mit-cml/appinventor-sources

MIT App Inventor Sources for Self-Hosting and Contributions

MIT App Inventor Public Open Source

1,751 stars2,343 forksJavaApache-2.0

At a glance

What is it?
MIT App Inventor Public Open Source contains the Java service and supporting projects behind MIT's application-building platform. It is intended for experienced operators and contributors, not for people who only need the public App Inventor service.
Who is it for?
Operators with the Java and Google Cloud infrastructure needed to run an App Inventor service can use this repository, while contributors should first budget for its multi-component build and test requirements. People who only need to create applications should use MIT's public instance instead.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What MIT App Inventor Sources Provides

MIT App Inventor Public Open Source is the source repository behind the MIT-hosted App Inventor service. It addresses two related needs. It publishes the implementation for reference, and it gives experienced contributors a codebase they can operate as their own App Inventor instance. It is not a general-purpose Android build library and it is not required for someone who only wants to create applications on MIT's public instance. The README makes that distinction explicitly.

The intended users are operators who want to run the service and contributors who want to change it. A self-hosting decision therefore involves more than installing a Java package. The code is designed to run in Google's App Engine, so a private deployment requires suitable Google Cloud services and credentials. A developer who only wants to experiment with blocks and applications should use MIT's public instance instead of treating this repository as an SDK.

The top-level repository contains an `appinventor` directory, build tooling under `buildtools`, platform-specific entry points such as `buildtools` and `buildtools.cmd`, and separate iOS documentation. Its primary language is Java, while the iOS workspace described in the README includes Swift and Objective-C-related projects. This is a full service codebase rather than a small library with a narrow API. Installation, compilation, testing, and deployment are separate concerns in its documented workflow.

The App Inventor Service Architecture and Dependencies

The documented deployment target is Google's App Engine. The Java sources are compiled with Ant, and iOS support is described through the `AppInventor.xcworkspace` Xcode workspace. That workspace includes `SchemeKit`, `AIComponentKit`, and `AICompanionApp`. `SchemeKit` uses Picrin with additions for foreign function calls to Objective-C and Swift, while the other projects provide App Inventor component implementations and the iOS companion. The repository therefore spans server-side Java work and mobile companion development.

Picrin is required for local compilation even though most contributors are not expected to change it. It is a Git submodule, so the checkout must initialize it before the build. The README also identifies Blockly as a dependency. It points to a modified version 10 in the `mit-cml/blockly` repository, so an arbitrary upstream Blockly checkout should not be assumed to match the version expected by this codebase.

Compilation and execution have different prerequisites. Compilation needs a full Java JDK and an auth key. Running development servers needs the Google Cloud SDK. Source changes are expected to use an automated test suite, which adds NodeJS 20 or newer and Firefox. Ruby 2.6 or 2.7 is needed only for Markdown documentation changes. This split reflects a service with build, deployment, browser testing, and documentation workflows rather than a standalone desktop application.

Clone the Repository and Initialize Picrin

The repository documents separate choices for contributors and local operators. A fork is suggested when the intent is to change the sources. A clone is sufficient when the goal is simply to run the code locally. The fork commands use a placeholder for the account name, so replace `YOUR_USER_NAME` before executing them.

After cloning or forking, copy the repository's sample ignore file to the expected local ignore file. Then initialize the submodules. These commands establish the source tree and fetch the Picrin dependency required by local compilation.

bash
$ git clone https://github.com/YOUR_USER_NAME/appinventor-sources.git
$ cd appinventor-sources
$ git remote add upstream https://github.com/mit-cml/appinventor-sources.git
$ cp sample-.gitignore .gitignore
$ git submodule update --init

The `$` prefixes in the README are prompt markers rather than shell syntax. A terminal running the commands would normally omit them. If the repository is switched to a branch that does not contain the dependency in the tree, the README says to clear the submodule first, then repeat initialization after switching back.

bash
$ git submodule deinit --all

That branch-handling sequence is worth noticing because the build dependency is not merely downloaded by Ant. It is tracked in the repository structure.

Check the Local Toolchain With buildtools doctor

Before compiling, the README asks contributors to diagnose their environment with `buildtools doctor`. The command is intended to identify common installation issues and offer a solution. It is documented separately for Linux and macOS, where it is invoked as `./buildtools doctor`, and Windows, where it is invoked as `buildtools doctor`.

bash
./buildtools doctor

The required versions are specific enough to affect adoption planning. The Java dependency is a full JDK, version 11, with OpenJDK preferred. A JRE is not sufficient. Ant version 1.10 is required. The Google Cloud SDK is required for development servers, and its setup may involve installing Python 3.11. If the selected Python version causes trouble, the README points to the `CLOUDSDK_PYTHON` environment variable, which can direct the CLI to another version.

This diagnostic step is useful because the project has several independent tools. A machine with Java alone cannot satisfy the documented workflow. The build also needs the auth-key setup described in the next section, while contributor testing needs NodeJS and Firefox. The README does not document a container image or a one-command installation path, so the documented setup remains a manually assembled environment.

Create the Auth Key and Compile the Java Sources

The Java compilation instructions begin inside the `appinventor` directory. An auth key is required before the normal build is run. The documented command creates that key, after which the full Ant build is invoked from the same directory. The README says that a successful build eventually prints a message similar to `Build Successful`.

bash
$ cd appinventor
$ ant MakeAuthKey
$ ant

The key creation and compilation steps should not be combined with assumptions about a different cloud account or deployment tool. The README describes Google App Engine as the target and links to an external document for details about the auth key. It does not provide a simplified local-only command that bypasses this setup.

iOS support introduces another build choice. On a Mac, a contributor who does not want to build the iOS companion can set the `skip.ios` property to `true`. On operating systems other than macOS, iOS builds are skipped automatically.

bash
ant -Dskip.ios=true

The documented behavior is a full Java build with an authentication prerequisite, plus a separate iOS path through Xcode. The repository does not state that this is a lightweight package suitable for a normal application build pipeline.

Contribution Workflow and Maintenance Boundaries

The README describes a deliberate review process for changes. Contributors are asked to start a conversation in the Open Source forum about the proposed change. The project uses short, informal design documents containing descriptions, screenshots, and expected behavior, with comments enabled. The purpose is to collect feedback before a change proceeds, and a contributor who implements a change first may still be asked to document it afterward.

For some changes, reviewers may request an instance deployed on `appspot` and a modified Companion app when applicable. That means contribution can involve more than editing Java files. A reviewer may expect an operational deployment and a usable mobile companion so that behavior can be assessed before source review. The repository's `sample-.gitignore`, submodule instructions, doctor script, and platform-specific build commands all add operational detail that a small library would not normally require.

Maintenance status is supported by repository metadata rather than by release history. The repository is not archived, and its last push was on 2026-10-16. It has no GitHub releases, so upgrade planning cannot rely on a documented release cadence or a sequence of packaged releases visible in the repository metadata. The license is Apache-2.0, which identifies the repository's licensing basis but does not by itself answer deployment, compatibility, or support questions.

The main limitation is fit. This is suitable for an organization that already accepts the operational burden of a Google App Engine service and wants to modify App Inventor itself. It is the wrong tool for a developer who wants only to build an application, or for an operator seeking documented Docker deployment steps, because the README does not document those paths. The alternative is MIT's public instance, which the README identifies as the intended option when compiling or operating the source is unnecessary.

Editorial conclusion

Operators with the Java and Google Cloud infrastructure needed to run an App Inventor service can use this repository, while contributors should first budget for its multi-component build and test requirements. People who only need to create applications should use MIT's public instance instead. Before adoption, verify Java 11, Ant 1.10, the Picrin submodule, the modified Blockly dependency, an auth key, and the required cloud services.

Frequently asked questions

How do I set up MIT App Inventor sources locally?

Clone the repository, copy `sample-.gitignore` to `.gitignore` when setting up a fork, and run `git submodule update --init`. Install Java 11, Ant 1.10, and the Google Cloud SDK, then run `buildtools doctor` on Windows or `./buildtools doctor` on Linux and macOS.

Can I use MIT App Inventor without compiling the source code?

Yes. The README says that users who only want to build App Inventor applications do not need to compile or use the source code, because MIT operates a public instance.

What dependencies are required to contribute Java changes?

The documented environment includes Java 11, Ant 1.10, the Google Cloud SDK, NodeJS 20 or newer, and Firefox for the automated test suite. Ruby 2.6 or 2.7 is additionally needed for Markdown documentation changes, and Picrin must be initialized as a submodule.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. mit-cml/appinventor-sources on GitHub
  4. Project website
  5. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/mit-cml-appinventor-sources.svg)](https://hysenlabs.com/projects/mit-cml-appinventor-sources)

Was this useful?