Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Core/Engines: migrate to MonoAddins infrastructure #246

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

knocte
Copy link
Contributor

@knocte knocte commented May 11, 2016

Only for the backend for now.
(TODO: Load frontends with mono-addins too.)
This integration work opens the door for more
add-in management love, such as loading/unloading
capabilities at runtime, installing/updating
add-ins from remote repositories (via Cydin[1]), etc.

[1] https://github.com/slluis/cydin

@meebey
Copy link
Owner

meebey commented May 11, 2016

When I wrote the plugin loader of Smuxi, Mono.Addins didn't exist, but I checked a few times how Mono.Addins could enhance Smuxi but never reached the conclusion of the pros outweigh the cons.

@knocte
Copy link
Contributor Author

knocte commented May 11, 2016

I guess one of the cons was "I have to invest time doing it", now you don't :)

I wrote my pros in the commit message.

@knocte
Copy link
Contributor Author

knocte commented May 11, 2016

PS: When we have discussed this in the past, you always only said that Mono.Addins didn't exist, never heard your cons ;-)

@meebey
Copy link
Owner

meebey commented May 11, 2016

Cons:

  • new external dependency (this is an disadvantage when having to ship bugfixes)
  • over the years I have seen DB issues of Mono.Addins that prevents the application (e.g. Banshee and MonoDevelop) to start or work correctly (that is the downside of maintaining state on disk -> higher complexity)
  • refactor Smuxi's frontend plugin loader code

Pros:

  • refactoring of Smuxi's engine plugin loader code already done by @knocte
  • Smuxi's internal command API (to process /foo commands) could get introspection for command auto-completion and extended help. See https://smuxi.im/issues/show/768

@meebey
Copy link
Owner

meebey commented May 11, 2016

Not sure what to think about Mono.Addins when it comes to Smuxi's hook system as it is a completely different approach.

@meebey
Copy link
Owner

meebey commented May 11, 2016

An update system is pretty important for Smuxi (on Windows and OS X) but I doubt Mono.Addins is the right approach for that.

@meebey
Copy link
Owner

meebey commented May 11, 2016

One area where Mono.Addins could fix some big mess is the internal command API of Smuxi, see https://smuxi.im/issues/show/768

@knocte
Copy link
Contributor Author

knocte commented May 11, 2016

new external dependency (this is an disadvantage when having to ship bugfixes)

Sure, but this is a meta-con, as in, it's obvious in general that bringing a dependency is bad, if the pros don't outweigh it.

over the years I have seen DB issues of Mono.Addins that prevents the application (e.g. Banshee and MonoDevelop)

Only seen in Banshee myself, never in MonoDevelop. From the 2 I saw, one of them I fixed it myself in mono-addins, the other one was less frequent and stopped happening (I guess thanks to new versions).

Not sure what to think about Mono.Addins when it comes to Smuxi's hook system as it is a completely different approach.

Well, the hook system doesn't map to the monoaddins infrastructure but would still work. AFAIU you cannot really do much with hooks anyway (you cannot develop a new protocol engine with them, right?).

An update system is pretty important for Smuxi (on Windows and OS X) but I doubt Mono.Addins is the right approach for that.

I completely understand that argument coming from a DD :) I guess you could always disable the update-features of MonoAddins in the Linux version (so that only blessed updates come from the distro), however, developing a proper update system for Winodws/OSX takes time and effort (a would approach would be Squirrel I guess), so we could have this in the meantime (if the core is maintained relatively stable for new versions of plugins to still work on old versions of the AddinRoot; and I grasp that backwards compatibility is already a thing you care about ;-) ).

refactor Smuxi's engine plugin loader code (done by @knocte)

Why do you list that as a con? ;)

refactor Smuxi's frontend plugin loader code

I didn't do that yet because I wanted early feedback first. If I get green light I'll work on the frontend side, which shouldn't be much harder than the backend side (at least the basic migration).

@meebey
Copy link
Owner

meebey commented May 11, 2016

refactor Smuxi's engine plugin loader code (done by @knocte)
Why do you list that as a con? ;)

Markdown has no strike through, I will edit to make that clearer

@knocte knocte force-pushed the monoAddins branch 2 times, most recently from 9035eb0 to 9963098 Compare November 4, 2016 15:03
@knocte knocte force-pushed the monoAddins branch 3 times, most recently from c7d0e96 to 68ff201 Compare October 6, 2018 05:34
@knocte knocte force-pushed the monoAddins branch 2 times, most recently from 8ab6c14 to 6383801 Compare January 14, 2021 14:14
Only for the backend for now.
(TODO: Load frontends with mono-addins too.)
This integration work opens the door for more
add-in management love, such as loading/unloading
capabilities at runtime, installing/updating
add-ins from remote repositories (via Cydin[1]), etc.

(The way to make this build in macOS is similar to
the approach done with log4net[2].)

[1] https://github.com/slluis/cydin
[2] bdbfb26
Because it was removed after this Mono-Addins PR was created.
@knocte
Copy link
Contributor Author

knocte commented Jan 14, 2021

@meebey ping, this is ready! also green in Travis: https://travis-ci.org/github/meebey/smuxi

As you removed old mono version support, then this PR doesn't break CI anymore hehe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants