project update - ryvencore #50
Replies: 3 comments 12 replies
-
I'm following Ryven for some some time without actually trying it out. But about 11 years ago I did a master thesis which focused on BPMN (workflow stuff) and was looking for a similar tool as is being described here under the name "ryvencore". For the UI (user interface) I in the end stayed with https://demo.bpmn.io/new (it's open source), but that's just "sketcher" without all the interesting stuff under the hood (though admittedly I like the UI so much, that I'd now welcome something like that in Ryven/ryvencore). I'm really glad you're working on it and will follow the development. Feel free to ask any questions as I did some thorough analyses back then and can probably answer even some advanced questions (among other things I'm a lot into "stream/live/reactive/..." concepts in UI, databases, etc. and parallelism). |
Beta Was this translation helpful? Give feedback.
-
Hey, great work on this project! I had been looking for something like this to implement in a project I'm working on, namely interactive data processing focused on plot visualization. I'm extending glueviz at the moment for the plotting part, and implementing Ryven for the function execution. I had implemented a crude tool like this simply using an interactive plot of circles and lines, and have some ideas to share from that experience.
and run the ryven GUI from the command line with:
In the Ryven software, we then have an importer, not unlike the current Node importer. The user selects a folder/Python file, and the importer loads it in, and automatically creates a Ryven Package with all the decorated functions it finds. This would likely be limited to functions with simple input/output specifications without special main widgets, but that's probably a majority of use cases. The Sorry for the wall of text. I look forward to helping out where I can. -Marcin |
Beta Was this translation helpful? Give feedback.
-
Hi, |
Beta Was this translation helpful? Give feedback.
-
Hey! This is an attempt to try out the discussions feature, I think this could be great, and to give interested people an update on the project. If you have any ideas or comments/feedback, please use this to mention them, I think you can also open your own threads for new topics. Here I'll just give a little insight into what I've been working on and what's in the pipeline, cuz I think it's pretty cool.
So, some of you already know, based on the Ryven project I've been working on abstracting away a framework for building these flow-based visual scripting editors. I think Ryven's basic concept is great, however Ryven is supposed to be rather "general purpose" and the true power for this paradigm lies in the optimization for specific domains. And I've made a lot of progress during the last weeks, so the first (presumably buggy) alpha will probably be released very soon. This new thingy, called ryvencore, will be an easy to use python library to create Qt based Ryven-like editors for python, so they can be optimized towards specific domains, no matter whether it regards workflow automization, machine learning, a web API, realtime data processing or whatever.
Future Ryven versions, i.e. from Ryven 3 onwards, will be based on ryvencore too. I also made a lot of progress there but this might take a bit more time because there are some features like code generation that don't really work yet and I won't be able to work on it so much during the next months, as my study is going to be quite demanding. If you want to see how Ryven will look like, take a look at the dev branch. But it's worth to mention that quite a few internal systems, such as the nodes system, were completely reimplemented and work very different in ryvencore now. Of course, ryvencore will also experience mayor changes in the future, but compared to the last Ryven version, the code and implementations have been improved a lot, to support scalability. ryvencore will provide you with the backend structure for all the abstract components (nodes, flows, scripts, session, vars manager, logger, etc.) as well as the whole GUI for the flows.
There really have been tons of improvements, but listing all the technical details would be boring, I'll probably summarize this in the release notes of Ryven 3, so here I'll just show two big additions that strongly affect the usage.
The first big thing is a prototype for function scripts, basically scripts that represent a function and are registered as node. A function script's flow has an input node and an output node and you can add and remove parameters and returns easily.
A function script's flow is just a normal flow, so you can add any node, even the function node itself. Here I made this flow of a function script
foo
:And then you can just use the function script's node anywhere. When you modify the properties, like adding/removing parameters and returns, all instances will be updated.
Oh, right, and there is a completely new design system with new themes and they can now be modified using a json config.
Another thing that I worked on for months now is threading compatibility, and I think this is a really really big deal. Whenever you want to do some realtime analysis and/or modification on data, you want to thread your application. Since ryvencore also provides the GUI for the flows and everything contained, if you want to keep your abstract components in a separate thread while your GUI runs in the main thread, all communication between those components must be implemented accordingly. While this is not planned as a feature for the Ryven editor since it does complicate programming nodes, i.e. implementing communication between custom widgets and the node, and this can be a bit hard if you don't have experience in parallel programming, I feel like this feature could be of crucial importance in the future as it opens the door to the world of reatime data processing.
You can see a short demo editor I made below, where an expensive OpenCV effect is applied on a large image, but the whole computation happens in a separate thread. Just as proof of concept.
open_cv.mp4
Other than that, I added a bunch of things that make it more intuitive to use like collapsing nodes
hiding unconnected ports of nodes, node icons, html descriptions and so on.
A lot of work went into this and I think it's pretty neat. But what do you think?
Cheers.
Beta Was this translation helpful? Give feedback.
All reactions