Open meastp opened 1 year ago
Hi @meastp and thanks for your interest and good questions. First, at a high-level, what you're describing is definitely a pattern we've seen across different language runtimes (incl JS and Python) and definitely something we want components to be well-suited to address via embedding into those language runtimes.
Going through your questions:
Hi,
I read the meeting notes and follow your progress and am really enthusiastic about the component model and what it will enable for wasm usage. Thanks for your work! :)
I'm sorry, I'm not able to compress this into a short question, bear with me :)
Although my example is specific, the questions are general.
Anyway, I've been thinking the past days about more complex plugin architectures/systems in use today.
One example that I'm just a bit familiar with, is Qt's plugin system. It uses events (signals/slots are the Qt terms) and enables writing plugins in C++. There is also pyQt - a third party project for writing Qt applications in Python. Since this uses Qt's events-system (signals/slots) one is able to choose what parts of the application is written in C++ and Python, which is really nice.
An example of an application that use this is QGIS, which is an open source desktop GIS. The core is written in C++/Qt and the recommended way to write plugins is in Python. Which is mostly okay for tasks that aren't performance sensitive.
C++ plugins aren't recommended simply because they have to be ABI-compatible with every distribution of QGIS (as there is no stability-guarantees, this means one has to build the plugin for every version, on every architecture). So making a plugin outside the official repo is a nightmare.
So, one has to choose between performance (C++/Qt) or ease of distribution and use (Python/pyQT). Not ideal.
This is where wasm and the component model might make a huge difference, but I don't know how toolable and complex this task might be, or if it's even possible or a goal?
(Another example or this type of plugin model is Jenkins, a Java CI project which is very extensible (I think plugins need to be written in Java or JVM, not sure about this)).
--
example:
or something similar for java or Python...?
I would love to hear your thoughts about this? :)