Easer icon indicating copy to clipboard operation
Easer copied to clipboard

Switch to Plugin-Main / Client-Server structure

Open renyuneyun opened this issue 7 years ago • 2 comments

Easer now supports a client-server structure for Operations, and the similar support for Events and Conditions can be done in a similar way. There is a sequence diagram for how that works. Refer to the README for more information.

For potential contributors: as mentioned, there is an example implementation for Operations. If someone is willing to help, he/she can do similar things for Event and Condition. I'm happy to review PRs.

Sorry my time is much constrained recently as I'm approaching graduation. This has to be delayed a lot if it's going to be implemented by me... Debugging, writing IPC-related stuffs and UI are very time-consuming, and requires full blocks of time (at least for me), which I'm short of. Yet replying to questions/PRs doesn't.


---- Original post below, on 2018-3-31

As you may (or may not) know, Easer has a design goal of splitting to main app and plugin apps in mind. Therefore, even though it currently hasn't been split into different apps, the code itself supports and is in this style.

However, after searching many times, I don't find any good examples or frameworks about how to write apps in this style. I (myself) also can't come up with any design methods about how to achieve that. The best I can come up with is similar to "Locale API" mentioned in (#69), but this isn't ideal (I have some comments about why in #69).

But, there are some apps written in this style, though I haven't tried every of them yet. For example, MAXS seems to be able to be extended by "modules" (plugin apps); Tasker (which was mentioned by many people, e.g. originally in #69) seems to be able to be extended by plugin apps (but I don't have any experience with it).

Therefore, there must be someway to create such apps, but the only problem is I don't know how.

Does anyone have any experience or suggestions?

renyuneyun avatar Mar 31 '18 17:03 renyuneyun

would standardizing on the "Locale API" provide access to that existing library of plugins? if so, that might be an argument for going that direction, even if the other architectural differences are less than ideal.

khimaros avatar Nov 09 '20 22:11 khimaros

@khimaros I think so, but it looks like the Local API is not getting much attention, and Tasker is having a different mechanism compared to Easer. (Though I would hope there is a way to make a bridge.) Actually Easer now supports plugins, though currently only Operations. I have updated the post with more information.

renyuneyun avatar Jan 03 '21 17:01 renyuneyun