Ever since day one, I’ve always wanted AirMessage to be a project directed by the community.
From tracking issues to building features to release, I’ve aimed to make sure that AirMessage becomes something that myself, the community, and non-technical users alike can enjoy using and have a say in the process.
In an effort to put AirMessage further into the hands of the community, I’m happy to say that AirMessage’s source code is now available on GitHub!
What does this mean for AirMessage users?
AirMessage’s source code is now available for anyone to read, scrutinize, improve, or use to compile their own version of AirMessage.
It means anyone can improve and develop AirMessage (or create their own versions). It means that new and creative features will come from a broader community of developers.
Since I can only work on AirMessage in my free time, it also means that other interested developers can help support the project with features and bug fixes. This means faster updates, broader compatibility, and improved security for everyone.
If you’re a developer, read on for more details on how you can get involved.
AirMessage on GitHub
If you want to jump right in, all of AirMessage’s repositories are listed under a new GitHub organization at github.com/airmessage.
Each repository’s README explains how to properly configure and build each app or program.
About AirMessage Connect (community)
AirMessage Connect is the name of the server program used to handle proxying messages between devices when you sign in with a Google account. While much of the functionality is shared whether you’re using a direct connection or a proxied connection, there are certain behavioral differences between the two (such as push notifications or contact fetching).
AirMessage Connect (community) is an implementation of AirMessage’s primary connect servers that is separately maintained, but still completely protocol-compliant.
Its main purpose is to make set-up easier for developers who want to work with the source code of one of AirMessage’s apps. These apps are by default configured to connect to a separate server running this implementation of AirMessage Connect.
The program is also open-source, so if you’re curious about how it works, want to propose a change that would require updates to AirMessage Connect, or want to host your own instance, you may do so.
Which repository should I contribute to?
Since AirMessage consists of a number of different projects that must remain compatible, it can be difficult to tell which repository to start at.
If you want to report or fix a simple client-side bug, you can simply bring it up at the repository for that app.
If you want to report an issue concerning AirMessage’s communications protocol, please create it under AirMessage Server.
If you want to create a pull request that requires an update to AirMessage’s communications protocol, please create a pull request under all associated repositories, and mention them from the pull request under AirMessage Server.
If you’re not familiar with the technologies used in a particular app and can’t implement the required changes across all of AirMessage’s apps, you can create the pull request under the apps you are familiar with, and then myself or another contributor can help port your changes to other platforms.
What’s next for AirMessage?
Firstly, I’d like to bring AirMessage Cloud to the stable channel. If you’re enrolled in the beta program, please raise any issues in a GitHub issue or submit a pull request, or submit a post to r/AirMessage if you don’t have a GitHub account.
Next, I’d like to migrate AirMessage for Android to Kotlin. As of writing this, about 10% of AirMessage for Android’s source code is Kotlin, converted from AirMessage’s helper classes.
I’d like to thank the AirMessage community for continuing to support the project over the years.
I’m excited to see where the community will take AirMessage, and how we can make iMessage even more accessible and powerful.