# Easer: user-defined automation for Android

> Easer is an Android application that lets you say what the phone should do in a given situation, by combining events and conditions into custom triggers you define. It is also one of the more carefully argued open source licence choices in the ecosystem, because the application captures location and calendar data, reaches the network, and runs third party plugins.

**renyuneyun/Easer** — User-defined explicit automation for Android

- Repository: https://github.com/renyuneyun/Easer
- Website: https://renyuneyun.github.io/Easer/
- Stars: 987 · Forks: 102
- Language: Java
- License: GPL-3.0
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/renyuneyun-easer

## What the application does

The description in the repository is short: user-defined explicit automation for Android.

The longer introduction explains the idea in a sentence. Easer is software that makes a smartphone smarter and more automated, that can tell the phone what to do in a given situation. It does not only handle events, it can also check state, and it can combine events to form complex custom events.

That combination is the design. A simple automation tool fires a rule when something happens. Easer separates the trigger from the condition, so you can say that when the phone connects to a particular network, and the time is past a certain hour, and the battery is above a certain level, then do this. The condition part is what makes it usable for the cases where a plain trigger would misfire, and the ability to combine events into a custom event is what lets you express the trigger once and reuse it.

The documentation for the whole feature set lives on the project website rather than in the readme, and the readme is explicitly about development rather than usage. So the project has separated the two audiences: people who want to use it read the site, and people who want to change it read this file.

The project is written in Java, is published on the app store for federated distribution, and has a separate English readme, since the primary documentation is in Chinese.

## Three kinds of extension, with very different costs

The contribution guide divides extending the application into three categories, and the division is a good map of the difficulty.

The first is mechanisms, which are the core of the application and require a good understanding of the code. The author is open to improvements to the existing code here, with the caveat not to over-optimise.

The second is skills, and this is where most work happens. For most cases what you want is to add a new event, condition or operation, and you do that by adding your own to the commons package in the source tree. There are scripts to simplify the operation, and the existing plugins serve as examples.

The third is remote skills, which is a feature added in version 0.7 and exists to extend the application through separate software. Each remote skill is a standalone application, and in theory one application can contain several remote skills. The documentation notes the feature is new and its interface is not yet stable, though it is not expected to change much. At present remote skills only support operations, and there is a separate example repository, and the repository holds documents in a diagram directory including a sequence diagram of the communication.

That last point matters. Remote skills are code from outside the application running with the application's permissions, on a device that holds your location and your calendar. The sequence diagram in the repository is there because the boundary between the two is the thing you have to understand before you install one.

## Why the licence is GPL, argued at length

There is a section of the readme devoted to why the project uses the GNU General Public License, and the argument is the most interesting part of the document.

The expected features of Easer include a great deal of capture of private information, such as location and calendar data, and it has the ability to access the network. The author writes that they would never want a tool meant to make life convenient to become a tool for surveilling one's own life, and that the only way to prevent that corruption is to ensure that every part of Easer can be inspected by anyone, which means making Easer, and any derivative software, open source.

There is a second reason, and it is about the future. Because the features of the application will, in time, become modules and plugins, there is a need to ensure those modules and plugins do not become a potential black box, which is why the author wants to rely on the properties of the GPL, where linking software also has to be under the GPL.

And then the honesty. The author notes that forcing every derivative and extension to be under the GPL is not actually necessary, since it is enough for them to be open source, but that the GPL is the only licence the author knows of that can guarantee derivatives are open source, so it is the one chosen.

That last paragraph is the kind of thing that makes a licence choice worth reading. The reasoning is a threat model rather than an ideology, and the author is explicit that the guarantee being bought is stronger than the one strictly needed.

## A tree with three licences in it

The licence section is more complicated than the headline suggests, and an evaluator should know it.

The copyright is held from 2016 to 2019 by the author, and the program code is distributed under the GNU General Public License version 3 or later, unless otherwise stated. The exception is the tools directory, which is distributed under the Apache licence 2.0 with its own licence file in that directory.

Then there is the third party list, and it is a long one: a logging library, a flow layout library, the Guava collection library, a sticky header list library, an introduction library, a graph view library, a locale helper, and a material about library, all under the Apache licence 2.0. And separately, the drawable files whose names end with a particular suffix come from an icon set and are under a Creative Commons Attribution 4.0 licence.

So the repository carries GPL, Apache and Creative Commons material at once, and the readme is precise about which is which. That is normal for an Android application, since the platform libraries themselves are Apache, and it is the kind of detail that matters if you intend to redistribute the application in a product of your own.

## Localisation, and an unusual argument about characters

The translation section is where this project differs from most, and it is worth reading twice.

Translation work is hosted on a public translation platform, which is the official hosted instance of that platform, and the readme welcomes help with it. The default licence for the translation text is a public domain dedication, meaning the text enters the public domain, unless the team is contacted in advance if a different licence is wanted.

Then the character policy, and this is unusual. Because of the author's personal preference, the main Chinese text uses traditional characters as the model, and neither the mainland simplified forms nor the Taiwan standard forms are used. Where a translation from a foreign language causes inconsistent regional terminology, the model follows the mainland version.

The reasoning is that a tool should have one consistent set of forms rather than mixing conventions, and the author also links an essay of their own on the subject, which tells you the position was arrived at deliberately rather than by accident. There is a plan to add automatic conversion based on an open conversion library, run through continuous integration, though the author says there is no time for it at the moment and invites help from anyone with the experience.

For an English reader, the practical consequence is that the readme has a separate English version, and the project documentation site is the place to look for the full feature set.

## Contribution labels, and an honest admission about tests

The issue policy is unusually well thought out, and it is the part of the readme that would make a new contributor feel welcome.

Issues that need more than one opinion are marked as requests for discussion, and the readme invites any comment on them. Issues that a newcomer could realistically pick up are marked with a label meaning good for contributors, at three levels, and the author says plainly that the levels are a personal and subjective division by increasing difficulty, with the general rule that they are issues with a clear purpose and few components involved.

The advice to create an issue before opening a pull request is soft rather than hard. The readme says pull requests are welcome even for work with no existing issue, but suggests describing the work first so that others are aware of it.

The testing section is the most honest passage in the document. The author says testing is important, and that Easer is far from being over-tested, and that in fact most of the code has no corresponding automated test. Help writing tests is gratefully requested, especially for the core parts, which are named as the interface, the data backend and the services.

That is a much more useful statement than a coverage badge would be. A maintainer telling you exactly where the gaps are, and in which three subsystems, is telling you where a contribution would be worth the most.

## The project state and what the tree holds

The repository is an Android application with the usual pieces, and a few that are specific to it.

There is the application directory, the assets, the build files, the documentation, the fastlane configuration for store releases, the Gradle wrapper, a plugin directory for the extension points, and the tools directory that carries the separate Apache licence. There is a diagram directory holding the communication sequence diagram for remote skills, a contributor document listing the people involved, a privacy document, and both the Chinese and the English readme. The continuous integration is Travis, and the badges show a translation platform widget, a coverage report and a download link to a package repository that has since been discontinued by its host.

On the release history, the tags stop in April 2022, with a beta and its preceding patch released on the same day. The last push was on 2026-07-21 and the repository is not archived, so there is recent activity, but it is recent activity on a project whose public releases are four years old.

The maintenance notice at the top of the readme explains that situation in the author's own words. Since late 2020, time constraints have affected the speed of maintenance. However, because the main framework of the program is already stable, and because the core structure should not undergo significant modification, other than adding support for remote plugins for events and conditions, plus a long term plan for interconnecting automation across multiple machines, extensions will still need some modification. The author will try to make time to look at pull requests, then publish a beta version for testing, and then publish the formal release.

That last sentence is the one to hold on to. The release process is a beta first, and a beta means the extension interface is something you should expect to still be adjusting.

## Conclusion

Easer suits a user who wants to automate an Android phone around their own rules rather than a vendor's, and who is comfortable installing a build from outside the store and granting it the permissions it needs. It is a poor fit if you need the project to be actively developed, since the author states plainly that time has limited maintenance since late 2020, and a poor fit if you want every extension to be open, since plugins run third party code. Before you install it, read the privacy document and the licence rationale, and check the plugin situation, because the extension interface is the part the author still calls unstable.

## FAQ

### What is the Easer Android application?

An application for user-defined explicit automation on Android. It handles events, checks conditions and combines events into complex custom events, so you can define what the phone should do in a given situation rather than accepting a vendor's rules.

### Why did the author choose the GPL for Easer?

Because the application captures private data such as location and calendar information and has network access, and the author wants to be sure a convenience tool can never become a surveillance tool. The stated way to guarantee that is to keep every part inspectable and open, and the GPL is named as the only licence the author knows that can also guarantee that derivatives and plugins stay open.

### What are remote skills in Easer and how do they work?

They are a feature added in version 0.7 that extends the application through separate software, with each remote skill being a standalone application. The interface is described as new and not yet stable though not expected to change much, and at present only operations are supported. The repository holds a communication sequence diagram in its diagram directory.

### What is the state of testing and maintenance in the Easer project?

The author says testing is important but that the project is far from over-tested, and that most of the code has no automated test, with help wanted especially on the interface, the data backend and the services. Maintenance has been slowed by time constraints since late 2020, although the core structure is described as stable, and pull requests are reviewed with a beta published before the formal release.

## Sources

- [License: GPL-3.0](https://github.com/renyuneyun/Easer/blob/master/LICENSE)
- [Project website](https://renyuneyun.github.io/Easer/)
- [README](https://github.com/renyuneyun/Easer/blob/master/README.md)
- [Releases](https://github.com/renyuneyun/Easer/releases)
- [renyuneyun/Easer on GitHub](https://github.com/renyuneyun/Easer)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/renyuneyun-easer
