Plugin vs. module vs. library vs. extension

I’ve been readinghttps://wiki.jmonkeyengine.org/legacy/doku.php/sdk:development:extension_library and it sounds great, but I’m still unclear on some of the basics.

Would someone please explain to me what the distinctions are (if any in this context) between a “plugin”, a “module”, a “library”, and an “extension”?

A “plugin” is anything you can tick in the plugin manager of the SDK. It can contain editors, simple “Java SE Libraries” that you can add to your projects as jar files and other things like project templates etc.

A “module” is the project type that allows you to create plugins, strictly speaking all plugins are modules but there can be modules that are never shown in the plugin list and only exist as dependencies of other modules.

A “library” is an entry for a jar file (and optionally sources and javadocs) which can be added to a SDK project to be used and distributed with it

An “extension” is a generic name for stuff that extends the jME engine, like your SkyDome…

So in the end you would make your extension a library by creating a module that the users can download as a plugin :slight_smile:

3 Likes

And to answer your question from the other thread… You can make one plugin with multiple libraries inside. The example projects can be project templates also contained in the plugin (theres a wizard to create them).

Thanks @normen that clarifies a lot.

For the record, my extension is called SkyControl, not SkyDome. “SkyDome” was the name of @t0neg0d 's plugin.

The project which contains SkyControl is called “jme3-utilities”, and it contains 10 Java classes and various assets. In my mind, the files fall into several categories:
(1) files required for SkyControl but unlikely to have any other use
(2) files required for SkyControl which might prove useful in other JME3 projects (e.g. math and debug classes)
(3) files used to demonstrate/test SkyControl (or generate assets for it) but not required to use SkyControl it in a JME3 app
(4) files unrelated to SkyControl which might prove useful in other JME3 projects – these have not been formally released yet

Some of categories (3) and (4) depend on third-party projects like Guava and JCommander. I’d want developers to be able to get categories (1) and (2) without requiring them to any 3rd-party projects. Can I do that with a single plugin?

Yeah, you could make two library entries then plus some example projects.

1 Like

Which reminds me, that plugin was put out there for someone to grab and continue dev on… is there a way to remove it as to further the not confusion? :wink:

@normen said: And to answer your question from the other thread.. You can make one plugin with multiple libraries inside. The example projects can be project templates also contained in the plugin (theres a wizard to create them).

If I create multiple libraries, would there by any upside/downside to creating multiple plugins as well?

@sgold said: (2) files required for SkyControl which might prove useful in other JME3 projects (e.g. math and debug classes)

Also, depending on what exactly these are… some of these might be worthy for including into core util or something.

@pspeed said: Also, depending on what exactly these are... some of these might be worthy for including into core util or something.

I like to think so, yes. But it’s hard for me to tell.

It would be nice to have an experienced JME developer look through my utility classes and methods and tell me which are worth integrating into JME, which duplicate existing functionality, and which have little potential for reuse.

@sgold said: I like to think so, yes. But it's hard for me to tell.

It would be nice to have an experienced JME developer look through my utility classes and methods and tell me which are worth integrating into JME, which duplicate existing functionality, and which have little potential for reuse.

I might try to find the time to look through. It might save me some time if you can point to the classes (with links preferably) you think might be the most useful.

1 Like

MyMath.java might be a good place to start. Most of these could be easily integrated into FastMath.

@t0neg0d said: Which reminds me, that plugin was put out there for someone to grab and continue dev on... is there a way to remove it as to further the not confusion? ;)
I added a note to SkyControl to your original thread. Do you think that'll suffice?

Oh, but do you mean that SkyDome is still available as a plugin in the SDK? I can’t check right now but if that’s the case then it should definitely be removed, yeh. I don’t think we’ve discussed how to transition users from one plugin to another yet. My suggestion would be to update the deprecated plugin with a notice of some sort, something you can’t miss in the code, and leave that in there for a while before it’s removed completely.

@erlend_sh said: I added a note to SkyControl to your original thread. Do you think that'll suffice?

Awesome… I’ll add a note to the plugin download description pointing them at this plugin once it’s there.

@sgold said: If I create multiple libraries, would there by any upside/downside to creating multiple plugins as well?

People could install one without the other if you also separate it into plugins. Ofc that leaves you with updating and version-bumping both of them.

1 Like
@t0neg0d said: Which reminds me, that plugin was put out there for someone to grab and continue dev on... is there a way to remove it as to further the not confusion? ;)

We can remove the SkyDome plugin from the update center, yeah. Its dysfunctional anyway.

@normen said: We can remove the SkyDome plugin from the update center, yeah. Its dysfunctional anyway.

While your at it, could you remove my duplicated jME code templates plugin? :smiley:

http://code.google.com/p/jmonkeyplatform-contributions/source/browse/#svn%2Ftrunk%2FjMECodeTemplate

cheers

@wezrule said: While your at it, could you remove my duplicated jME code templates plugin? :D

http://code.google.com/p/jmonkeyplatform-contributions/source/browse/#svn%2Ftrunk%2FjMECodeTemplate

cheers

Yep, removed that too.

1 Like

thanks

I’ve committed a pared-down version of SkyControl (one library containing assets and packages needed at runtime) to the jmonkeyplatform-contributions repository.

If I did this right, SkyControl should show up as a jME3 library plugin sometime in the next 24 hours. If I didn’t do it right, please correct the situation or let me know what I should do.

Looking good, I expect it to appear in a few hours, too :slight_smile: (build runs at 1AM EST)

1 Like