Skip to content

Latest commit

 

History

History
111 lines (71 loc) · 8.29 KB

README.en.md

File metadata and controls

111 lines (71 loc) · 8.29 KB

Easer Build Status weblate codecov Download
matrix-chat Backers on Open Collective

Get it on F-Droid

Ease your life by automatically performing routine actions.

Notice: Due to recent time constraints (since late 2020), Easer's maintainance speed will be affected. But since the main structure and hierarchy is stable, no drastic changes to Easer's structure need to be made (but extensions may require some changes of course), except for supporting remote Plugins of Events and Conditions (and supported federated inter-machine automation, as the long-term vision). Interested people can read the relevant sections below to lear how to add the functions you would like to see, or how to locate bugs. PRs will be read whenever there is time, and be merged and release in the usual way -- beta first, and then stable.

Introduction

Make your smart phone smarter: tell it what to do under different situations. It can handle Events, Conditions, and combine events to new custom complex events.

This document centers on development-related things of Easer.

If you are looking for the description of Easer's functionality, please refer to the website.

Extending Easer

There are three main topics of adding functions to Easer: mechanism, skills (used to be called local plugin), and remote skill (plugin).

Mechanism is the core part of Easer, and adding this requires a good understanding of Easer's code; optimization and documenting are also welcome. For most cases, what needed is to add new Event, Condition and Operation, which is done by adding skill or remote skill (plugin).

Skill

Adding a skill needs to add your Event, Condition or Operation to the skills package of Easer's code. There are a few scripts to simplify the process, and existing skills can act as examples.

Details are described in this document.

Remote Skill (Plugin)

Remote Skill (called Remote Plugin previously) is introduced in v0.7, aiming at using standalone applications to extend Easer's functionality. Each remote skill is a stanalone app; it is in theory also possible to include multiple remote skills in one app. Note this feature is rather new and the interface might not be stable yet (though it's unlikely the interface will change much).

Currently, only Operation can be extended as remote skills. The diagram directory contains some useful information, e.g. a sequence diagram. This repo is an example implementation of remote operation plugin, as well as documents. Better documentations are also welcome.

Support Easer

Translation

Easer's translation work is hosted on Hosted Weblate, the official hosted instance of weblate, an FLOSS platform for crowd-sourced web translation.

We kindly welcome anyone to contribute any amount of translation. Translations will be licensed under CC-0 by default, which effectively means they will enter Public Domain; please contact us in advance if you would like a different license.

Raising issues, commenting on issues and solving issues

If you encounter problems when using Easer, you can submit an issue. The more detail you can provide, the better -- it will let the issue be pinned down faster. You can also open an issue if you think there are features that Easer should have.

You are also welcome to comment on existing issues. If you believe you have the same problem (or idea), you can provide more information about it. Discussion is always welcome. Issue expecting ideas are labeled with RFC.

Want to do more but don't know where to start? See issues labeled with GFC (Good For Contributors) L0, L1, L2. These issues usually have clear target and involve few components; the L0, L1 and L2 are my subjective classification of the level of difficulty (ascending).

If you are a developer, you may possess the knowledge and time to solve some issues. You can fork the repo, solve the problem, and create a pull request. Then, your code can be merged, and you can be appreciated by others (and you will be listed in the Contributors list unless you don't like to). You're also welcome to create pull requests for issues not raised by others, but first, please create an issue describing what you want to do (and that you are going to do it).

Test coverage

Test is important. Easer is far from being tested too much -- in fact, most of its code has not been automatically tested.

Contribution to test is very much appreciated, especially to the core (including the UI, data backend and the services).

Donation

If you would like to make a donation, please see DONATE.

Any amount of help is appreciated.

Acknowledgement

Contributors and Backers

The development of Easer receives the support and donation from the community. Thank you guys.

The Contributor document lists this in more detail.

Third-party

Licensing

Copyright (c) 2016 - 2021 Rui Zhao (renyuneyun) renyuneyun@gmail.com

Unless otherwise stated, the program is licensed under GPLv3+ (See LICENSE)

Tools under utils/ directory are licensed under Apache 2.0 (See utils/LICENSE)

Why GPL?

The expected functions of Easer require access to personal information (e.g. location, calendar) and networking capabilities. We would never want a tool that is expected to better facilitate our lives to spy on us, so we must prevent that from happening as best as we can. The only way to do this is to allow anyone to inspect every part of Easer, which is to say that Easer (and any derived works) must be made open source. Because of the design of Easer, functionality will eventually become modules / plugins. The GPL requires that derived works also be licensed under the GPL, and thus prevents malicious code from sneaking into these parts.

In fact, ensuring that derived works / plugins are licensed under the GPL is unnecessary -- they only need to be open source. However, GPL is the only license (that I know of) which requires that derived works / plugins are open sourced, so it's the only choice.