Skip to main content
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 ...
Basile Starynkevitch's user avatar
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 ...
Doc Brown's user avatar
  • 214k
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 ...
Blrfl's user avatar
  • 20.5k
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 ...
Kain0_0's user avatar
  • 16.3k
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 ...
Euphoric's user avatar
  • 37.8k
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 ...
Doc Brown's user avatar
  • 214k
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 ...
amon's user avatar
  • 135k
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 ...
user1274649's user avatar
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 ...
Christophe's user avatar
  • 80.6k
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 (...
scriptin's user avatar
  • 4,432
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 ...
Vir's user avatar
  • 131
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 ...
user1118321's user avatar
  • 4,991
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 ...
Bart van Ingen Schenau's user avatar
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 ...
Kasper van den Berg's user avatar
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 ...
Christophe's user avatar
  • 80.6k
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, ...
Doc Brown's user avatar
  • 214k
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 ...
Euphoric's user avatar
  • 37.8k
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 ...
Marco's user avatar
  • 337
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 ...
turdus-merula's user avatar
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 ...
amon's user avatar
  • 135k
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 ...
emeraldjava's user avatar

Only top scored, non community-wiki answers of a minimum length are eligible