Well you can use FroxlorEvent::fire('CustomEvent', $eventdata); If one module depends on the other, they could theoretical use events (and if something is missing it simple won't get an answer). I made a pull request for the current changes (rebased and updated to last release): https://github.com/Froxlor/Froxlor/pull/344 Do I think it's the right way? Depends. From the technical standpoint plugins can run on their own quite nicely. when they need to interact with code in Froxlor there are lot technical problems with the current codebase. I use the plugin system to create nssextrausers and autoconfiguration of thunderbird clients (adds a alias line to apache config), so nothing big yet.
For testing purpose I wrote a plug-in to manage additional let's encrypt certs database entries, to see if the code works for UI tasks. Froxlor leaks to much state in global variables, the UI plugin code code currently gets tunnelled via admin_plugin.php and there are still to much hardcode dependencies, like for doing a redirect.