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

Use OSGi bundles #750

Open
csmith opened this Issue Jan 1, 2017 · 2 comments

Comments

Projects
None yet
1 participant
@csmith
Member

csmith commented Jan 1, 2017

I think we should look at switching DMDirc to use an OSGi framework for both the client itself and for plugins.

The OSGi framework could replace a lot of stuff we do ourselves, such as:

  • Dependency management
  • Requirements (OS, etc)
  • Meta-data (version, name, description, author)
  • Classloader management
  • Dynamic loading and unloading

It would also support some new features:

  • Dependency networks rather than chains (e.g. plugin X can pull classes from A and B)
  • Security (isolation, permissions)
  • Optional dependencies
  • Localisation
  • Proper lifecycle management

As well as all that, it allows us to split the client up more into separate components without being a pain in the ass, stop bundling all of our dependencies explicitly in a giant jar, share libraries between plugins, etc.

@csmith

This comment has been minimized.

Show comment
Hide comment
@csmith

csmith Jan 1, 2017

Member

I think it will be quite easy to migrate as well. We can ship plugins with both their existing meta-data and the OSGi meta-data and load them either way.

Member

csmith commented Jan 1, 2017

I think it will be quite easy to migrate as well. We can ship plugins with both their existing meta-data and the OSGi meta-data and load them either way.

@csmith

This comment has been minimized.

Show comment
Hide comment
@csmith

csmith Jan 1, 2017

Member

Using OSGi and proper services for plugins would mean we could upgrade to Dagger 2 as well (as we can stop abusing it for plugins)

Member

csmith commented Jan 1, 2017

Using OSGi and proper services for plugins would mean we could upgrade to Dagger 2 as well (as we can stop abusing it for plugins)

csmith added a commit to csmith/DMDirc that referenced this issue Jan 2, 2017

Add OSGI dependency, activator.
This won't affect normal use of the client, other than it having
a few extra unused classes and some additional lines in the
manifest.

Issue #750

csmith added a commit to csmith/DMDirc-Util that referenced this issue Jan 2, 2017

csmith added a commit to csmith/DMDirc that referenced this issue Jan 3, 2017

csmith added a commit to csmith/DMDirc that referenced this issue Jan 4, 2017

csmith added a commit to csmith/DMDirc that referenced this issue Jan 7, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment