14
votes
Accepted
Making a language agnostic Plugin system
How do I design a plugin that I can use in my C++ program that is unbound to language (or allows for the broadest compatibility)?
You cannot do that for exactly the same reasons explained in my ...
7
votes
Accepted
How to process large image with a minimum time lag
I cannot and will not recommend any libs or frameworks for this, but if you are willing to implement a system by yourself, here is a simple outline of what might work:
send the image to the server ...
7
votes
Making a language agnostic Plugin system
Process-boundary plugins are a great fit where the compromises you have to make for them (discussed below) are acceptable.
I work on a project with many different types of plugins and for our ...
6
votes
What is the best way to run untrusted hooks/plugins?
If you do not trust the code, do not execute it - period.
If you wish to trust the code.
Constrain what is permitted as code
reject specific operations such as eval(...)
reject unbounded loops
...
4
votes
Accepted
How to deal with conflicting dependencies/versions?
There is no easy solution here. If an incompatible version of a library/library is released, there is little you can do using technology. But I find that kind of situation unlikely.
If a plugin or ...
3
votes
How to deal with conflicting dependencies/versions?
User facing plugins should not use other plugins as common dependencies. They may share a common library (which is neither a stand-alone plugin nor user-facing). Still new libraries must be backwards ...
3
votes
Accepted
What is the best way to run untrusted hooks/plugins?
Python has no security model that would allow you to safely execute untrusted code. If you want to execute untrusted Python code you need to apply operating system level safety measures, for example ...
3
votes
Plugin framework for extensible software
Personally, I'd implement the client side of this using WebComponents and the concept of "micro-frontends". Though your question is pretty broad it seems like you already have the backend part figured ...
2
votes
Accepted
Is there an architecture pattern for "microservice as a plugin"?
There seem to be an incompatibility between the two concepts:
Microservices are by design meant to be independently deployable services that remain loosely coupled.
Plugins are meant to extend ...
2
votes
How to share dependent classes between a main app and plugins in Java?
First, I should point out that external dependencies (not from source code of your project or it's subprojects, in Gradle terms) are not included into jars, unless you specifically create a "fat" jar (...
2
votes
How to architecture and expose an API for creating custom data filters?
If you think about it, all that data consist (at lowest level) of some standard primitive types (eg. location is just set of two doubles with arbitrary meaning).
I would go with defining set of ...
2
votes
How to process large image with a minimum time lag
If it were me, I would probably implement it locally on the users machine using a GPU-based toolkit like WebGL. This allows you to do the processing very quickly and in parallel. This solves several ...
2
votes
Plugin system design core component access: Common practice?
Anything you make available to plugins becomes part of the public API of your application and cannot be changed without big costs. With that in mind, you should try to keep your public API as small as ...
2
votes
How to deal with conflicting dependencies/versions?
There are some policies regarding backwards compatibility that you can force upon your plugin writers:
Not breaking the signature of public types, methods and properties.
When a method or type is ...
1
vote
Application plugin interface design
The challenge with plugins are twofolds:
one is the application binary interface, since you need a way to dynamically link the symbols. Every OS provides some means to do that, for example windows ...
1
vote
Using a Plugin to call the Main fuctions
A common approach here is to solve this by some event mechanics:
the plugin does not set the main form to "invisible", it does not "rebuild the list of plugin instances" directly, ...
1
vote
Is there an architecture pattern for "microservice as a plugin"?
I don't know what you are talking about already exists.
But I feel that it is not something unusual. It sounds like something that is "ideal state" of (micro)service-oriented architecture. The ...
1
vote
Accepted
Java design pattern for handling configuration options and responding to changes in them
The usual way to propagate change is through the Observer pattern.
The HUD components register themselves as observers of the object holding the HUD configuration options.
The object holding the HUD ...
1
vote
How to process large image with a minimum time lag
Very similar to Doc Brown's answer:
let the user choose the file using dropzonejs or something similar. Do not upload the file to the server yet;
create a HTML canvas that holds a smaller version of ...
1
vote
Accepted
Best way to design a class interface passed to library/plugin
Of those three, number 2 is the way to go: introduce an interface. Classes with pure virtual functions are a legitimate C++ concept. The language supports interfaces even though it has no special ...
1
vote
Accepted
Custom maven mojo and tools
I think the first option with standard dependencies would be the say to go. I would suggest that you use released version of the 3rd party tools. As a back up you could a provide an 'offline' mode ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
plugins × 71architecture × 14
plugin-architecture × 13
java × 12
c++ × 7
extensibility × 7
javascript × 4
jquery × 4
eclipse × 4
web-development × 3
licensing × 3
api × 3
modules × 3
maven × 3
design × 2
c# × 2
python × 2
.net × 2
web-applications × 2
api-design × 2
security × 2
interfaces × 2
asp.net × 2
dependency-injection × 2
language-agnostic × 2