-
Notifications
You must be signed in to change notification settings - Fork 491
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
Plans for a new release? #1047
Comments
Currently there is no difference between what would be a tagged release versus a regular commit along the CTK development line. There isn’t one stable commit over another as #839 was probably hoping there would be. CTK is used as a remote toolkit primarily in the context of supporting 3D Slicer which does have tagged stable releases. Slicer specifies a commit hash of CTK to use. Are you using CTK in the context of 3D Slicer? Is there another reason why you may be requesting a tagged release and not using a specific commit hash like 3D Slicer? |
3D Slicer's CMakeLists only uses The reason I asked is that we have the FreeBSD port for CMT which is never updated because there are no new tags in the repository. |
Slicer is typically built with a superbuild project that pulls and builds CTK based on a commit hash of CTK rather than reusing from a CTK source on system. This is because Slicer frequently updates CTK to a new commit hash rather than generating a CTK tagged release. I’m not sure how helpful tagging a specific CTK release will be considering it would only be compatible with very specific and likely non-stable version of Slicer. Do you know of CTK used elsewhere? |
I don't know other users. |
Did you get Slicer building with your FreeBSD ports as you were mentioning a few years ago in https://discourse.slicer.org/t/is-vtkguisupportqtopengl-available-in-8-2-0-with-vtk-rendering-backend-opengl2/4854/5?u=jamesobutler? CTK/VTK/ITK are used to build Slicer and we’ve updated major versions of VTK and ITK since that post. |
MITK is one other large open-source project that relies on CTK. I heard about a number of closed-source projects using CTK (mainly the DICOM browser feature). They are all fine with using specific hashes on the main branch, but we can add a tag time to time if there is a specific need for it. |
Many port/package systems have new version auto-discovery mechanism that notifies maintainers, and without new tags these ports remain un-updated. |
Currently 3DSlicer isn't compatible with CTK.
|
3D Slicer uses latest CTK master. There are no build errors on any platforms: https://slicer.cdash.org/index.php?project=SlicerPreview |
It can't hurt to make a tag, although it is more maintenance burden for us. Maybe tag the commit the one we used for Slicer 5. and we can make 5.2 when Slicer 5.2 is released. Just so you understand where we are coming from @yurivict Slicer has a number of dependencies that we sometimes need to patch so we have found it hard in the past to support the libs that come with any particular OS (it's been tried in the past with debian and we finally gave up). That's why Slicer is distributed with it's own whole ecosystem of libs (python, vtk, qt, etc) so it doesn't get broken by an OS update. I'm sure that sounds like bloat from an os perpective but it's the best use of our resources. It would be great to see slicer's build system ported to freebsd but I don't know that anyone has experience with that. |
This would make matching the releases of Slicer and CTK easier. |
Ideally there should be a variable for each such dependency, for example Bundling dependencies isn't sustainable. Also package builders don't allow downloads during build for security reasons. |
@yurivict Do you have plans to update the ITK version? I see the ports is specifying ITK 5.0.1 https://github.com/freebsd/freebsd-ports/blob/main/science/InsightToolkit/Makefile while Slicer uses a version based on ITK 5.3rc04. Are you maintaining the latest versions of things in FreeBSD-ports and making sure things are compatible with other packages? Slicer developers don’t have the funding/resources to maintain this when the majority of the Slicer community does not use FreeBSD. |
Yes, it's possible to use the system libraries for all our dependencies (USE_SYSTEM_) but in practice, as James points out with the ITK example, even the most diligent package maintainers never seem to have the versions we need.
That's what I suspected you would think, but the fact is it's worked for us for 20 years. : ) |
All ports in the FreeBSD tree are compatible. There could be some run-time issues since maintainers don't necessarily test things exhaustively. But everything at least builds. I'll look into updating ITK.
According to Repology only Arch Linux has a port for 3DSlicer, which is a binary port. Others have policy against binary packages for security reasons, and they aren't able to build it from source. So your users don't have a benefit of installing your software in a normal, comfortable way, and have to do it manually. |
Yes, it is a burden for us and our users to have the current system and I would like if if there were a cleaner way to distribute software across platforms. But realistically most big applications work the same way Slicer does where you get a package for your OS and it comes with what you need. Realistically we need to keep all our versions in sync (linux, mac, and windows) because otherwise support would be impossible. It would be great to add FreeBSD to that list so that users could benefit from an up to date application version that works the same the version other uses have. We require a community built around our software than around the OS they choose to use for everything else. But if Arch Linux can be up to date with our current release, then it should be possible for other distributions to do so as well, it just takes dedicated effort. |
@yurivict This is becoming an interesting conversation. I did not see the rationale behind your question, but I understand it much better now. For me the main question is how multiple applications could all use the same system libraries? For example, VTK, ITK, CTK, DCMTK, etc. libraries are continuously developed, and each application that use them needs very specific version of each library, built with a very specific set of options. So, even if Slicer application used the same VTK version as MITK application, their VTK would be still incompatible because they were built with different options. How/where could this be addressed? |
What are the examples of incompatible options in VTK? Last time I looked was yesterday, and VTK build options are incremental. They have a lot of optional modules that are or aren't built. There is also an option that enables all modules. With all modules enabled VTK should be compatible with all users, no? |
Yes, many options are kind of incremental, but still there are a lot of incompatible options. Some examples:
Some choices are more common than others, but there are so many of these options that even if we use the most common choices, overall this common VTK build would be unusable for almost all VTK-based applications. Probably it could be possible to share some parts VTK between applications if VTK was split up to smaller, more independent libraries. Splitting up could be useful for some other reasons, too, but it would require significant effort and may mean increased development and maintenance workload, so it would be unlikely to happen in the foreseeable future. |
Some listed above options are also incremental: Some other listed options ( And These types of potential incompatibilities and matched options happen for many projects, but they still work without bundling libraries. |
They might still work, but they won't be using the same configuration as another 3D Slicer user on a different platform. For debugging issues we prioritize that the same configuration is used cross-platform, not slight variations where some use C++14 and others use C++17 as the standard or some use option A and others option B. This will continue the Linux "use at your own risk" because the unique configuration of options is not going to be tested or recommended compared to the defined specific configuration of a tagged 3D Slicer release for cross-platform use. |
Xref the Slicer issue Slicer/Slicer#5271 that is on this topic of using regular system packages rather than downloaded versions during the build process. |
I would totally support systematic versioning and releases for CTK. It would be a great help for the Systole project (https://github.com/SystoleOS/gentoo-overlay) as packaging of 3D Slicer dependencies is one of the main features. |
A released was created on Corresponding issue was the : Moving forward, we will plan on releasing CTK on a quarterly basis prior releasing Slicer. |
Closing. Creation of an issue template with the steps for releasing CTK will be added shortly: |
The last release was in 2018. There were many commits since.
The text was updated successfully, but these errors were encountered: