-
Notifications
You must be signed in to change notification settings - Fork 46
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
base: master
Are you sure you want to change the base?
Conversation
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. |
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. |
PS: When we have discussed this in the past, you always only said that Mono.Addins didn't exist, never heard your cons ;-) |
Cons:
Pros:
|
Not sure what to think about Mono.Addins when it comes to Smuxi's hook system as it is a completely different approach. |
An update system is pretty important for Smuxi (on Windows and OS X) but I doubt Mono.Addins is the right approach for that. |
One area where Mono.Addins could fix some big mess is the internal command API of Smuxi, see https://smuxi.im/issues/show/768 |
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.
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).
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?).
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 ;-) ).
Why do you list that as a con? ;)
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). |
Markdown has no strike through, I will edit to make that clearer |
9035eb0
to
9963098
Compare
c7d0e96
to
68ff201
Compare
8ab6c14
to
6383801
Compare
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.
@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 |
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