-
Notifications
You must be signed in to change notification settings - Fork 0
Roadmap
How are we going to move vvvv.js ahead?
In the future, vvvv.js should be usable under those scenarios:
- In the browser, as a solution for graphics and animations in web sites and web applications
- On a server, in a head-less environment. In this case vvvv.js on the server communicates with instances running inside the browsers of users visiting a website.
- As a stand-alone solution for general purpose visual programming and visualisation, similar to vvvv itself.
What are the requirements for those scenarios?
It's already possible. It would be good if we could abstract away differences between browsers a little more, first and foremost the absence of certain APIs should not make the entire loading process fail.
Vvvv.js should be ported to node.js. Therefore, we urgently need an abstraction layer, because many APIs that are part of the window object in the browser are contained in optional node modules or work in an entirely different way on node.js. A move to AMD and requirejs (http://requirejs.org/docs/whyamd.html) is suggested. Also many existing nodes depend on a graphical environment and should not be loaded on a server.
We agree that the same patch should run on the server and the browser side simultaneously. There are currently two possibilities on how to design browser-server communication:
- One instance of a patch running on the server per browser session. (Inter-patch communication should be possible in this case)
- One instance of a patch running per v4p-file on the server catering to multiple browser sessions.
It should be possible to use any kind of server such as Apache to serve the rest of a web site and even v4p patches whereas vvvv.js on node.js only executes patches and communicates with the browser over a separate connection (Web Sockets).
Communication between server-side patches and the browser should work in a fashion similar to boygrouping in vvvv. We need a way to deal with latency transparently.
It should be possible to edit patches on the browser and save them to the web server.
Additional nodes should be created that are specific to server-side execution such as file access and database connections.
Network security is a concern!
A stand-alone version should support all graphical nodes from the browser version as well as nodes from the server version, to allow a maximum of flexibility. Some nodes that are very specific to the browser environment (possibly HTML nodes?) or the server (inter-patch communication) are not needed in the stand-alone version.
There are several suggested platforms for the implementation:
- Phonegap / Cordova
- node-webkit
- Atom Shell
We should carefully evaluate each platform. A maximum of implementation overlap with the browser and server version is desirable.
- Node metadata / name should be moved out of the contructor
- Do it!
- Add fine-grained requirements for each node
Options: a) add object VVVV.Host and add methods/subobjects to it when a feature has to be wrapped b) add an AMD module for each feature that has to be wrapped
Lot's of debugging ahead!
...