Removing dependencies to Qt (and OpenGL)
What changes will be made and why they would make a better Orfeo ToolBox?
As explained in the roadmap for OTB 9 (#2248), we propose to remove Qt from the dependencies of OTB. With this change, we will be able to provide a lighter OTB package, more suitable for usages where a GUI is not required. Users will still have the possibility to use OTB through GUI with the QGIS plugin which was greatly improve in OTB8.
High level description
-
Removal of the "Visualization" module (Ice, Mapla, Monteverdi) -
Removal of the QtAdapters and QTWidget -
Removal of the third party modules (OpenGL, Glew, Glut, GLFW, Qwt, Qt) -
Removal of the "i18n" directory -
Cleaning of the CMake files -
Updating the Continuous Integration Platform -
Updating the documentation
Risks and benefits
Risks
An unseen dependency to the Qt/OpenGL libraries in OTB core. I haven't seen any. But it it happens, we may have remove the functionality that requires it.
Benefits
- Lighter package
- Faster compilation
- Less work for the maintenance
Who will be developing the proposed changes?
The OTB team
Implementation details
Removal of the "Visualization" module (Ice, Mapla, Monteverdi)
Delete the "Modules/Visualization" directory.
Removal of the QtAdapters and QTWidget
Delete the "Modules/Adapters/QtAdapters" and "Modules/Wrappers/QtWidget" directories.
Removal of the third party modules (OpenGL, Glew, Glut, GLFW, Qwt, Qt)
Delete the "Modules/ThirdParty/Glew", "Modules/ThirdParty/GLFW", "Modules/ThirdParty/Glut", "Modules/ThirdParty/OpenGL", "Modules/ThirdParty/Qt" and "Modules/ThirdParty/Qwt" directories.
Removal of the "i18n" directory
Delete the "i18n" directory. Remove references to i18n in the main CMakeList.txt (lines 98, 100, 628 and 629).
Cleaning of the CMake files
Delete the "Superbuild/CMake/External_glew.cmake", "Superbuild/CMake/External_glfw.cmake", "Superbuild/CMake/External_glut.cmake", "Superbuild/CMake/External_qt.cmake" and "Superbuild/CMake/External_qwt.cmake".
Delete the "CMake/FindGLFW.cmake", "CMake/FindQwt.cmake", "CMake/i18n_qt.cmake", "CMake/MonteverdiApplicationMacros.cmake", "CMake/otbgui.bat.in" and "CMake/otbgui.sh.in".
Remove references to Qt etc in "Superbuild/CmakeLists.txt" (lines 295-299, 320 and 322-334) and in "Superbuild/Cmake/External_otb.cmake" (lines 93-121, 212 and 214-218).
Updating the Continuous Integration Platform
In the repository https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-build-env, make a copy of the existing dockerfiles, call them "...-headless", remove the installation of the packages related to Qt, Glew, GLFW, Glut, OpenGL, etc.
In ".gitlab-ci.yml", use the dockers names "...-headless".
Updating the documentation
Delete the "Documentation/Cookbook/rst/GraphicalInterface.rst" and "Documentation/Cookbook/rst/Monteverdi.rst" files. Remove the "System dependencies" paragraph in "Documentation/Cookbook/rst/Installation.rst". Update the "Notes", "FAQ" and "Other packages" paragraphs in "Documentation/Cookbook/rst/Installation.rst". Update the "Documentation/Cookbook/rst/CompilingOTBFromSource.rst" file.