So, The app in question will be used to visualize some complex 3D models for scientific purposes.
I’m aware that QT has an good integration possibility but the licensing scheme makes it very hard for us to use it since +5 companies are involved in the project.
The GUI toolkit should be either open source or should have a straightforward and reasonable pricing scheme.
Thanks in advance
Qt’s free LGPL license is suitable for most commercial projects. Is there anything specific that you think would prevent you from using this license?
That said, The Qt Company is not behaving nicely, they excluded non-paying users from LTS releases, they are harrassing developers to pay for the unreasonably expensive commercial license, and they barely do any improvements in classic widgets. So, I would be interested in hearing about experiences with other GUI toolkits.
Don’t forget to look at Java and Python as well.
From my understanding, LGPL cannot be distributed as a closed source software.
It is not good at all for commercial software…
LGPL basically just means that you need to ship the Qt part as shared libraries so that anyone could swap in their own recompiled/modified versions of those libs. And that if you provide modified versions of Qt you need to release the source code of those modifications. Neither of those is a show stopper for commercial software in my experience.
If you are making a serious commercial product you should get legal help to evaluate these licenses and see if using Qt under LGPL is really a problem for your product plans. Or you should assess the cost of getting a Qt commercial license. Buying a license may not make sense for research but could be a reasonable business decision.
Thank you for the insight. I’m sorry but I had GPL in mind when I wrote that. I keep getting confused between the two.
Many of the components that we need are under the GPL license. As for your suggestion to use electron. I believe that this means that we should use VTKjs, which might not be performant enough for are use cases. We are active in both research and industry and therefore we prefer a software with a less complicated or more affordable pricing scheme.
300$ per month per dev is waay too expensive for a small company like ours.
The UI uses vue.js widgets in html, which are really nice.
Thank you for the reply.
correct me if I’m wrong but using web technologies means using VTK.JS which is using webgl for rendering. Webgl is a wrapper for opengl and therefore it under performs when it comes to dense datasets.
VTKjs did not yet reach functionalities parity with VTK yet.
Can trame pass the data by pointer/reference (without copying or network transfer) in case of client-side rendering, if the client and server are on the same computer? If not, is there any chance that it could be implemented in the future (is there any mechanism that allows data sharing between the native rendering server and a web client on the same computer)?
I don’t believe this is prohibited but am not sure it is currently done. @Sebastien_Jourdain ?
trame can rely on server-side rendering which means all the code execute within VTK/C++ layer and only serve an image stream to the web front-end.
Trame aims to let your write your application in plain Python quickly and effortlessly.
Also once a trame application is available, the resulting can be served as a service in the cloud or as a desktop application using either pywebview (default) or tauri. Trame/tauri documentation is coming.
For local rendering, unfortunately you have to copy the surface mesh around (or image data for volume rendering) due to security constraint of browser.
With tauri, it might be possible (with some new capabilities coming) to have a shared GL context where the VTK/C++ could actually feed the GL context directly that get natively displayed into the web view.
The vtk specific examples in trame can be used as reference with various local/remote/client rendering.
I’m really looking forward to seeing an example combining Trame and tauri!
They might need an update but you can find some examples here: trame-tauri/examples at master · Kitware/trame-tauri · GitHub