-
Notifications
You must be signed in to change notification settings - Fork 245
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add SlicerVESPA extension #1925
base: main
Are you sure you want to change the base?
Conversation
5b30727
to
21329e9
Compare
Does this extension build C-GAL? If so I understand that would make the extension GPL. |
Dear @pieper , The SlicerVESPA extension has its own license, under the BSD3 terms. The code of this extension is only under this license. Also, if someone has the commercial license of CGAL (it is under dual licensing) and build the extension, the resulting executable may not be GPL any more as the terms of the commercial license will replace it). |
Thanks for the clarification @CharlesGueunet . As a rule we don't rely on GPL code for Slicer application (e.g. see this discussion). Is there a way the GPL code could be build as executables that are independently downloaded? |
If we only build CLI executables (ensured by the EXECUTABLE_ONLY option) then the GPL requirements are fulfilled. I don't think that installing the extension would restrict usage and distribution of Slicer. We just need to clearly document in the license file, extension description, and readme file that GPL code is used internally because most companies would want to avoid any relationship with any copyleft-licensed code. |
I see only one limitation with this, which may be very significant for medical applications: tivoization. I.e., you can only use the CGAL executables on the system if the user can replace them. But in a regulatory approved medical device it may not be feasible to give the user such low-level access. So, the non-permissive license warnings should be very clear and visible, and we should work towards replacing CGAL with software that uses permissive license (Boolean operation -> vtkbool, IsotropicRemesher -> ACVD, AlphWrapping -> WrapSolidify using ACVD for remeshing; subidivision, filling, and smoothing tools in VTK are probably about as good as CGAL). |
If my understanding is correct, Vespa (and the related CGAL) will already be contained in a specific CLI with its specific libraries. Slicer will call them but will not be impacted by the GPL.
I am not sure what you means here. Can you provide an example of what such a replacement would be ?
We can improve the documentation on VESPA and on the extension as you need. The readme of the VESPA project already states this on the first lines. I think some of the questions remarks may be shorter to discuss in a quick meet (I will write a summary here after), @lassoan do you think we can schedule a 20 min meet ? |
The issue is that gpl3 prohibits tivoization. In short: if the application is not linked to gpl3 code (so the user could replace/modify the gpl3 component) but the user has no access to the file system from outside then the gpl3 requirements are not fulfilled. For example, you cannot modify program files on a CT scanner, because the system boots directly into the application and you cannot exit the application or switch to another. Only the manufacturer's service engineers can modify program files on the system. Can you create a doodle poll and post the link? It would be nice if @pieper could join the meeting, too. |
Here is a poll to find the best meeting time, everyone that would like to join can fill it: |
It seems that next Thursday would be the first day when all interested people could join a meeting. We could discuss the overall long-term strategy. In the meantime we can probably continue the discussion of specific questions here. For example, I'll review and test the extension and give feedback or ask questions. |
I've tested the extension on Windows. Build was successful and all modules worked vrery nicely. Even if somebody cannot use the modules due to licensing restrictions, it is useful to have them as a reference (e.g., see if vtkbool is as robust as CGAL's Boolean operations, compare speed and quality of ACVD remesher to CGAL, see if shrinkwrapping with vtkSmoothingFilter+ACVD is as good as Alpha wrapping, etc.). A few questions/issues:
|
No, I have not tried to port it to Mac at all, but it shouldn't be hard to adapt windows specific code
Building GMP and MPFR on Windows using MSVC is a nightmare, that why CGAL provides pre-built packages. The only real way to build them on Windows would be to rely on MSYS or Cygwin, but I don't want to constrain users to have them installed. I agree that a comment should be added to explain this.
Linker search for ligmp.so.6 and I didn't want to lose time for this so I just added symlinks. If you know a better, easier, solution, please let me know. It is probably possible to tweak the linker to search for the full name.
I followed the template, at least I think I did. What is different ?
I will fix that, thanks for the input.
Yes, there is a lack of documentation in both the CLI module, but also VESPA. |
Here is a link to a google event including the google meet room, if everyone is ok with that technology (more convenient to setup on our side). Also, concerning vtkbool, I can ensure it is not as robust as CGAL. Using exact computation, CGAL is able to give a clean and exact cut/merge even with intricate concave shapes. Maybe some other project may be considered ? |
The Clipper2 option sounds worth exploring. If it works well enough, a clean new implementation would be way better than perpetuating a GPL'd codebase with nightmare build systems. I agree though that having something that works well enough for now is better than not having it, but providing clear explanations of the limitations will be important. |
Last week I spent some time fixing up the build-system:
More work is needed, especially in the Footnotes |
I will not be able to join the meeting. |
Update scmurl, iconurl and screenshoturls to reference to the renamed repository (`vtk-cgal/SlicerVESPA` -> `vtk/meshing/SlicerVESPA`) Update description to list the provided features along with licensing caveats.
Waiting the build-system updates are finalized: |
Unable to force push changes onto AlexyPellegrini/ExtensionsIndex@vespa-cli, the updated changes are published here main...jcfr:ExtensionsIndex:AlexyPellegrini-vespa-cli Consider running the following command to update this pull request:
|
New extension
3d-slicer-extension
GitHub topic so that it is listed here. To edit topics, click the settings icon in the right side of "About" section header and enter3d-slicer-extension
in "Topics" and click "Save changes". To learn more about topics, read https://help.github.com/en/articles/about-topicsSettings
and in repository settings uncheckWiki
,Projects
, andDiscussions
(if they are currently not used)About
in the top-right corner of the repository main page and uncheckReleases
andPackages
(if they are currently not used)