I would like to reopen this ticket because I've realized that I was trying to port ITK version 5.1.2 for Blueberry Framework. Actually I had to work on ITK version 4.13 since MITK is still running on ITK 4.13.
I created a ticket on discourse : https://discourse.itk.org/t/creating-a-module-group-with-custom-modules-not-compiling-for-itk-4-13/3906
I redid the same work for 4.13 in a new branch and I am getting some errors I cannot understand. Here's the link for the new branch : https://github.com/al-sabr/ITK/tree/itk-4.13-foundation-internal-kwsys+vxl
The same work I did for ITK 5.1.2 can be found here : https://github.com/al-sabr/ITK/tree/itk-basic-internal-kws-vxl

9>------ Build started: Project: ITKFoundationCommon, Configuration: Debug x64 ------
9>Build started 2/24/2021 2:10:14 AM.
9>Target ResolveProjectReferences:
9>Target InitializeBuildStatus:
9> 聽Touching "ITKFoundationCommon.dir\\Debug\\ITKFound.1E359120.tlog\\unsuccessfulbuild".
9>Target CustomBuild:
9> 聽All outputs are up-to-date.
9>Target GetReferencedVCProjectsInfo:
9> 聽Target AddPublicIncludeDirectoriesToProjectsInfoForReference:
9> 聽 聽Target AddPublicBMIsToProjectsInfoForReference:
9>Target VcpkgTripletSelection:
9> 聽Using triplet "x64-windows" from "G:\\vcpkg\\scripts\\buildsystems\\msbuild\\..\\..\\..\\installed\\x64-windows\\"
9>Target ClCompile:
9> 聽All outputs are up-to-date.
9>Target Link:
9> 聽 聽 Creating library G:/programming/cpp/CTK/build/ITK-build/lib/Debug/ITKFoundationCommon-4.13.lib and object G:/programming/cpp/CTK/build/ITK-build/lib/Debug/ITKFoundationCommon-4.13.exp
9> 聽itkObjectFactoryBase.obj : error LNK2019: unresolved external symbol "public: static struct HINSTANCE\_\_ \* \_\_cdecl itk::DynamicLoader::OpenLibrary(char const \*)" (?OpenLibrary@DynamicLoader@itk@@SAPEAUHINSTANCE\_\_@@PEBD@Z) referenced in function "private: static void \_\_cdecl itk::ObjectFactoryBase::LoadLibrariesInPath(char const \*)" (?LoadLibrariesInPath@ObjectFactoryBase@itk@@CAXPEBD@Z)
9> 聽itkObjectFactoryBase.obj : error LNK2019: unresolved external symbol "public: static int \_\_cdecl itk::DynamicLoader::CloseLibrary(struct HINSTANCE\_\_ \*)" (?CloseLibrary@DynamicLoader@itk@@SAHPEAUHINSTANCE\_\_@@@Z) referenced in function "public: static void \_\_cdecl itk::ObjectFactoryBase::UnRegisterAllFactories(void)" (?UnRegisterAllFactories@ObjectFactoryBase@itk@@SAXXZ)
9> 聽itkObjectFactoryBase.obj : error LNK2019: unresolved external symbol "public: static void \* \_\_cdecl itk::DynamicLoader::GetSymbolAddress(struct HINSTANCE\_\_ \*,char const \*)" (?GetSymbolAddress@DynamicLoader@itk@@SAPEAXPEAUHINSTANCE\_\_@@PEBD@Z) referenced in function "private: static void \_\_cdecl itk::ObjectFactoryBase::LoadLibrariesInPath(char const \*)" (?LoadLibrariesInPath@ObjectFactoryBase@itk@@CAXPEBD@Z)
9> 聽itkObjectFactoryBase.obj : error LNK2019: unresolved external symbol "protected: \_\_cdecl itk::DynamicLoader::DynamicLoader(void)" (??0DynamicLoader@itk@@IEAA@XZ) referenced in function "public: static class itk::SmartPointer\<class itk::DynamicLoader> \_\_cdecl itk::DynamicLoader::New(void)" (?New@DynamicLoader@itk@@SA?AV?$SmartPointer@VDynamicLoader@itk@@@2@XZ)
9> 聽itkOutputWindow.obj : error LNK2001: unresolved external symbol "public: virtual void \_\_cdecl itk::Win32OutputWindow::DisplayText(char const \*)" (?DisplayText@Win32OutputWindow@itk@@UEAAXPEBD@Z)
9> 聽itkOutputWindow.obj : error LNK2019: unresolved external symbol "protected: virtual \_\_cdecl itk::Win32OutputWindow::~Win32OutputWindow(void)" (??1Win32OutputWindow@itk@@MEAA@XZ) referenced in function "protected: virtual void \* \_\_cdecl itk::Win32OutputWindow::\`vector deleting destructor'(unsigned int)" (??\_EWin32OutputWindow@itk@@MEAAPEAXI@Z)
9> 聽itkThreadPool.obj : error LNK2019: unresolved external symbol "public: static unsigned int \_\_cdecl itk::ThreadPool::GetGlobalDefaultNumberOfThreadsByPlatform(void)" (?GetGlobalDefaultNumberOfThreadsByPlatform@ThreadPool@itk@@SAIXZ) referenced in function "public: static unsigned int \_\_cdecl itk::ThreadPool::GetGlobalDefaultNumberOfThreads(void)" (?GetGlobalDefaultNumberOfThreads@ThreadPool@itk@@SAIXZ)
9> 聽itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: static void \_\_cdecl itk::ThreadPool::PlatformCreate(void \* &)" (?PlatformCreate@ThreadPool@itk@@KAXAEAPEAX@Z) referenced in function "public: void \_\_cdecl itk::ThreadPool::AddWork(struct itk::ThreadJob const &)" (?AddWork@ThreadPool@itk@@QEAAXAEBUThreadJob@2@@Z)
9> 聽itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: static void \_\_cdecl itk::ThreadPool::PlatformWait(void \* &)" (?PlatformWait@ThreadPool@itk@@KAXAEAPEAX@Z) referenced in function "public: void \_\_cdecl itk::ThreadPool::WaitForJob(void \* &)" (?WaitForJob@ThreadPool@itk@@QEAAXAEAPEAX@Z)
9> 聽itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: static void \_\_cdecl itk::ThreadPool::PlatformSignal(void \* &)" (?PlatformSignal@ThreadPool@itk@@KAXAEAPEAX@Z) referenced in function "public: void \_\_cdecl itk::ThreadPool::AddWork(struct itk::ThreadJob const &)" (?AddWork@ThreadPool@itk@@QEAAXAEBUThreadJob@2@@Z)
9> 聽itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: static void \_\_cdecl itk::ThreadPool::PlatformDelete(void \* &)" (?PlatformDelete@ThreadPool@itk@@KAXAEAPEAX@Z) referenced in function "public: void \_\_cdecl itk::ThreadPool::WaitForJob(void \* &)" (?WaitForJob@ThreadPool@itk@@QEAAXAEAPEAX@Z)
9> 聽itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: static bool \_\_cdecl itk::ThreadPool::PlatformClose(void \* &)" (?PlatformClose@ThreadPool@itk@@KA\_NAEAPEAX@Z) referenced in function "protected: void \_\_cdecl itk::ThreadPool::DeleteThreads(void)" (?DeleteThreads@ThreadPool@itk@@IEAAXXZ)
9> 聽itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: void \_\_cdecl itk::ThreadPool::AddThread(void)" (?AddThread@ThreadPool@itk@@IEAAXXZ) referenced in function "public: void \_\_cdecl itk::ThreadPool::AddThreads(unsigned int)" (?AddThreads@ThreadPool@itk@@QEAAXI@Z)
9> 聽G:\\programming\\cpp\\CTK\\build\\ITK-build\\bin\\Debug\\ITKFoundationCommon-4.13.dll : fatal error LNK1120: 13 unresolved externals
9>Done building target "Link" in project "ITKFoundationCommon.vcxproj" -- FAILED.
9>
9>Done building project "ITKFoundationCommon.vcxproj" -- FAILED.
9>
9>Build FAILED.
9>
9>itkObjectFactoryBase.obj : error LNK2019: unresolved external symbol "public: static struct HINSTANCE\_\_ \* \_\_cdecl itk::DynamicLoader::OpenLibrary(char const \*)" (?OpenLibrary@DynamicLoader@itk@@SAPEAUHINSTANCE\_\_@@PEBD@Z) referenced in function "private: static void \_\_cdecl itk::ObjectFactoryBase::LoadLibrariesInPath(char const \*)" (?LoadLibrariesInPath@ObjectFactoryBase@itk@@CAXPEBD@Z)
9>itkObjectFactoryBase.obj : error LNK2019: unresolved external symbol "public: static int \_\_cdecl itk::DynamicLoader::CloseLibrary(struct HINSTANCE\_\_ \*)" (?CloseLibrary@DynamicLoader@itk@@SAHPEAUHINSTANCE\_\_@@@Z) referenced in function "public: static void \_\_cdecl itk::ObjectFactoryBase::UnRegisterAllFactories(void)" (?UnRegisterAllFactories@ObjectFactoryBase@itk@@SAXXZ)
9>itkObjectFactoryBase.obj : error LNK2019: unresolved external symbol "public: static void \* \_\_cdecl itk::DynamicLoader::GetSymbolAddress(struct HINSTANCE\_\_ \*,char const \*)" (?GetSymbolAddress@DynamicLoader@itk@@SAPEAXPEAUHINSTANCE\_\_@@PEBD@Z) referenced in function "private: static void \_\_cdecl itk::ObjectFactoryBase::LoadLibrariesInPath(char const \*)" (?LoadLibrariesInPath@ObjectFactoryBase@itk@@CAXPEBD@Z)
9>itkObjectFactoryBase.obj : error LNK2019: unresolved external symbol "protected: \_\_cdecl itk::DynamicLoader::DynamicLoader(void)" (??0DynamicLoader@itk@@IEAA@XZ) referenced in function "public: static class itk::SmartPointer\<class itk::DynamicLoader> \_\_cdecl itk::DynamicLoader::New(void)" (?New@DynamicLoader@itk@@SA?AV?$SmartPointer@VDynamicLoader@itk@@@2@XZ)
9>itkOutputWindow.obj : error LNK2001: unresolved external symbol "public: virtual void \_\_cdecl itk::Win32OutputWindow::DisplayText(char const \*)" (?DisplayText@Win32OutputWindow@itk@@UEAAXPEBD@Z)
9>itkOutputWindow.obj : error LNK2019: unresolved external symbol "protected: virtual \_\_cdecl itk::Win32OutputWindow::~Win32OutputWindow(void)" (??1Win32OutputWindow@itk@@MEAA@XZ) referenced in function "protected: virtual void \* \_\_cdecl itk::Win32OutputWindow::\`vector deleting destructor'(unsigned int)" (??\_EWin32OutputWindow@itk@@MEAAPEAXI@Z)
9>itkThreadPool.obj : error LNK2019: unresolved external symbol "public: static unsigned int \_\_cdecl itk::ThreadPool::GetGlobalDefaultNumberOfThreadsByPlatform(void)" (?GetGlobalDefaultNumberOfThreadsByPlatform@ThreadPool@itk@@SAIXZ) referenced in function "public: static unsigned int \_\_cdecl itk::ThreadPool::GetGlobalDefaultNumberOfThreads(void)" (?GetGlobalDefaultNumberOfThreads@ThreadPool@itk@@SAIXZ)
9>itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: static void \_\_cdecl itk::ThreadPool::PlatformCreate(void \* &)" (?PlatformCreate@ThreadPool@itk@@KAXAEAPEAX@Z) referenced in function "public: void \_\_cdecl itk::ThreadPool::AddWork(struct itk::ThreadJob const &)" (?AddWork@ThreadPool@itk@@QEAAXAEBUThreadJob@2@@Z)
9>itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: static void \_\_cdecl itk::ThreadPool::PlatformWait(void \* &)" (?PlatformWait@ThreadPool@itk@@KAXAEAPEAX@Z) referenced in function "public: void \_\_cdecl itk::ThreadPool::WaitForJob(void \* &)" (?WaitForJob@ThreadPool@itk@@QEAAXAEAPEAX@Z)
9>itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: static void \_\_cdecl itk::ThreadPool::PlatformSignal(void \* &)" (?PlatformSignal@ThreadPool@itk@@KAXAEAPEAX@Z) referenced in function "public: void \_\_cdecl itk::ThreadPool::AddWork(struct itk::ThreadJob const &)" (?AddWork@ThreadPool@itk@@QEAAXAEBUThreadJob@2@@Z)
9>itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: static void \_\_cdecl itk::ThreadPool::PlatformDelete(void \* &)" (?PlatformDelete@ThreadPool@itk@@KAXAEAPEAX@Z) referenced in function "public: void \_\_cdecl itk::ThreadPool::WaitForJob(void \* &)" (?WaitForJob@ThreadPool@itk@@QEAAXAEAPEAX@Z)
9>itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: static bool \_\_cdecl itk::ThreadPool::PlatformClose(void \* &)" (?PlatformClose@ThreadPool@itk@@KA\_NAEAPEAX@Z) referenced in function "protected: void \_\_cdecl itk::ThreadPool::DeleteThreads(void)" (?DeleteThreads@ThreadPool@itk@@IEAAXXZ)
9>itkThreadPool.obj : error LNK2019: unresolved external symbol "protected: void \_\_cdecl itk::ThreadPool::AddThread(void)" (?AddThread@ThreadPool@itk@@IEAAXXZ) referenced in function "public: void \_\_cdecl itk::ThreadPool::AddThreads(unsigned int)" (?AddThreads@ThreadPool@itk@@QEAAXI@Z)
9>G:\\programming\\cpp\\CTK\\build\\ITK-build\\bin\\Debug\\ITKFoundationCommon-4.13.dll : fatal error LNK1120: 13 unresolved externals
9> 聽 聽0 Warning(s)
9> 聽 聽14 Error(s)
9>
9>Time Elapsed 00:00:01.17
\========== Build: 8 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
Can someone tell me why it is compiling but not linking?
I did some modifications to this file : https://github.com/al-sabr/ITK/blob/18d0c605ad1a58f3c720bbbf9391beba9ab095ba/CMake/ITKModuleMacros.cmake#L143
I also added these conditions : https://github.com/al-sabr/ITK/blob/18d0c605ad1a58f3c720bbbf9391beba9ab095ba/CMake/ITKModuleMacros.cmake#L236
I am not really sure about this modification which make sense to me but might be wrong: https://github.com/al-sabr/ITK/blob/18d0c605ad1a58f3c720bbbf9391beba9ab095ba/CMake/ITKModuleMacros.cmake#L270
I changed the CMakeLists.txt file from Core/Common and adapted it pretty similarly with : https://github.com/al-sabr/ITK/blob/itk-4.13-foundation-internal-kwsys%2Bvxl/Modules/Foundation/Common/CMakeLists.txt
I did the same with the itk-module.cmake with : https://github.com/al-sabr/ITK/blob/itk-4.13-foundation-internal-kwsys%2Bvxl/Modules/Foundation/Common/itk-module.cmake
I also renamed all references in source code for ITKCommon_EXPORT by replacing them with ITKFoundationCommon_EXPORT as an example with one of the errors triggered : https://github.com/al-sabr/ITK/blob/18d0c605ad1a58f3c720bbbf9391beba9ab095ba/Modules/Foundation/Common/include/itkObjectFactoryBase.h#L61
It is all dandy but I don't get why it doesn't compile, the EXPORT file is generated at root level with the BYPASS_OWNERSHIP & GENERATE_EXPORTS_MODULE_ROOT as you can see on this picture :聽

I followed this tutorial which shows how to create your own module : https://itk.org/ITKSoftwareGuide/html/Book1/ITKSoftwareGuide-Book1ch9.html
This ticket is the continuation of #2325
I have just noticed something which caught my attention :聽
9>itkObjectFactoryBase.obj : error LNK2019: unresolved external symbol "public: static struct HINSTANCE\_\_ \* \_\_cdecl itk::DynamicLoader::OpenLibrary(char const \*)" (?OpenLibrary@DynamicLoader@itk@@SAPEAUHINSTANCE\_\_@@PEBD@Z) referenced in function "private: static void \_\_cdecl itk::ObjectFactoryBase::LoadLibrariesInPath(char const \*)" (?LoadLibrariesInPath@ObjectFactoryBase@itk@@CAXPEBD@Z)
Instead of being static struct HINSTANCE\_\_ \* \_\_cdecl itk::DynamicLoader::OpenLibrary isn't it cdecl supposed to be dllexport since I am developing on Windows 10?
After having done these modifications somehow the compilation for ITKFoundationCommon goes through without any problem. Can someone explain to me the difference between the new added lines and the previously commented one?
Now that the ITKFoundationCommon module is compiling it is not generated as a DLL.
I also added this condition so that when the EXPORT header is generated at the module's root folder to add it in the itk_module\INCLUDE_DIRS.
Can someone provide some guidance to why the exported classes are not generated in the DLL?
Does it have to do with Symbol visibility flags for the compiler ?
itk_module_add_library seems to validate by checking is ENABLE_SHARED and do things in consequence am I right?
Yes, ENABLED_SHARED must be set in an itk-module.cmake for the module to build shared libraries.
That said, forking and hacking ITK in this way will not be maintainable.
I really didnt change much really but it should be able to compile. Why isn't it compiling? I did the same exercise for ITK 5.1 and it worked with the same changes. What is different from ITK 4.13 and ITK 5.1?
That said, forking and hacking ITK in this way will not be maintainable.
What I am doing is modularizing more granularly than what it is right now. It is no hacking and when I am changing something I make sure that it is backward compatible.
Yes, ENABLED_SHARED must be set in an itk-module.cmake for the module to build shared libraries.
When I remove the flag the static library gets compiled. It doesn't work with the dynamic library.
I looked at the properties for the linker as shown in screenshot:

..\..\..\..\lib\Debug\itkdouble-conversion-4.13.lib
..\..\..\..\lib\Debug\itksys-4.13.lib
..\..\..\..\lib\Debug\ITKVNLInstantiation-4.13.lib
ws2_32.lib
Psapi.lib
..\..\..\..\lib\Debug\itkvnl_algo-4.13.lib
..\..\..\..\lib\Debug\itkvnl-4.13.lib
..\..\..\..\lib\Debug\itkv3p_netlib-4.13.lib
..\..\..\..\lib\Debug\itknetlib-4.13.lib
..\..\..\..\lib\Debug\itkvcl-4.13.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
Everything seems to be fine. But why is there a linker error?

G:\programming\cpp\CTK\build\ITK\Modules\ThirdParty\DoubleConversion\src
G:\programming\cpp\CTK\build\ITK-build\Modules\ThirdParty\DoubleConversion\src\double-conversion
G:\programming\cpp\CTK\build\ITK-build\Modules\ThirdParty\KWIML\src
G:\programming\cpp\CTK\build\ITK\Modules\ThirdParty\KWIML\src
G:\programming\cpp\CTK\build\ITK-build\Modules\ThirdParty\KWSys\src
G:\programming\cpp\CTK\build\ITK\Modules\ThirdParty\VNL\src\vxl\v3p\netlib
G:\programming\cpp\CTK\build\ITK\Modules\ThirdParty\VNL\src\vxl\vcl
G:\programming\cpp\CTK\build\ITK\Modules\ThirdParty\VNL\src\vxl\core
G:\programming\cpp\CTK\build\ITK-build\Modules\ThirdParty\VNL\src\vxl\v3p\netlib
G:\programming\cpp\CTK\build\ITK-build\Modules\ThirdParty\VNL\src\vxl\vcl
G:\programming\cpp\CTK\build\ITK-build\Modules\ThirdParty\VNL\src\vxl\core
G:\programming\cpp\CTK\build\ITK\Modules\ThirdParty\VNLInstantiation\include
G:\programming\cpp\CTK\build\ITK-build\Modules\Foundation\Common
G:\programming\cpp\CTK\build\ITK\Modules\Foundation\Common\include
G:\programming\cpp\CTK\build\ITK-build\Modules\ThirdParty\KWSys\src\KWSys
G:\programming\cpp\CTK\build\ITK\Modules\ThirdParty\VNL\src\vxl\core\vnl\algo
G:\programming\cpp\CTK\build\ITK\Modules\ThirdParty\VNL\src\vxl\core\vnl
%(AdditionalIncludeDirectories)
@dzenanz Any thoughts or wisdom concerning this ticket?
This is the command line I used to generate the CMake configuration for CTK :
cmake .. -DITK_BUILD_DEFAULT_MODULES:BOOL=OFF"-DPython3_EXECUTABLE:FILEPATH="C:\Users\bob\AppData\Local\Programs\Python\Python39\python.exe" -DCMAKE_TOOLCHAIN_FILE:FILEPATH="G:/vcpkg/scripts/buildsystems/vcpkg.cmake" -DITKGroup_Core:BOOL=OFF -DITKGroup_Foundation:BOOL=ON -DCTK_QT_VERSION:STRING="5" -DITK_USE_KWSTYLE:BOOL=OFF -DBUILD_TESTING:BOOL=OFF -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 16 2019" -A x64
You are in essence doing major refactoring of ITK's build system. That is endeavor which requires a lot of persistence and debugging. I am too busy with my own projects to devote the necessary time to reproduce your problems locally. As your are straying off the beaten path a lot, I don't have minor immediate suggestions.
Who said that porting Blueberry Framework outside of MITK was an easy task? :D I don't like easy jobs that's why I enjoy difficul challenges. That said I was successful with the task but soon I realized that some parts of MITK like the Workbench are tightly coupled with ITK and VTK. Due to compilation errors within ITK and VTK, I had to use that refactoring to just get some kind of FoundationCommon which has basic compilation with KWSys and VXL.
There's the possibility to extract enough of ITK so that it can become a library inside of CTK which has no external dependencies. The way I envisioned it almost fulfilled itself except some thinks which worked in ITK 5.1 which didn't quiet worked in ITK 4.13.
I thought that it will work as is but I was wrong. Luckily Blueberry is now usable outside of MITK which is awesome. That exercise thought me a lot about CMake which I kind of start to like a bit more. I finally understand why the people at Kitware are String junkies...
What I am doing is modularizing more granularly than what it is right now. It is no hacking and when I am changing something I make sure that it is backward compatible.
No, you are creating a fork that has issues, then opening issues on this repository and asking others to address them. Please do not open issues unless they are directly related to this repository's master or release branch.
No, you are creating a fork that has issues, then opening issues on this repository and asking others to address them. Please do not open issues unless they are directly related to this repository's
masterorreleasebranch.
You are totally wrong here and I don't accept your perspective about what I am trying to do. I am following the documentation for something which is supposed to work and based on the same principles I am modifying the core to suit my needs by respecting the standards the project is supposed to function upon. If it doesn't work it is not because I am doing something wrong because a good architecture when used adequately should be malleable in such a way that doesn't give much trouble.
If I want to increase the granularity of something existing my intention is to bring an increase in the value for what it is already there. That said if I decide to improve something and see that there's roadblock then this is a sign that something is not ok and that something pin-point the places where there's a need for improvement. Normally a piece of good modular software should not impose that much restriction concerning the possibilities because I believe that any good source code can be manipulated to suit my needs. If something which is working in ulterior versions of a software doesn't work with the same kind of modifications on anterior versions it means that there's a breaking change and that change should be documented in the documentation.
Actually I am doing a good service to add new sections in the documentation with links to all the contribution that I am providing with my free time. But when I constantly get reminded and told to not do what ever kind of creative work I see it as and old dogmatic control structure which doesn't give space for free expression then I just want to drop working on this project. I will continue do what ever direction I am planning to and I will close all the repos connected to some of these projects and work privately. If you don't want to get out of your comfort zone and continuously judge what I am doing that's going to be the consequence.
Best Regards
You are not just totally free to modify ITK in ways you want, you are encouraged to do so. A bit problematic is your expectation for us to provide nontrivial help, for free. We provided some help already. If that is not enough, we do offer paid support.
No, you have not followed the documentation correctly or the guidance from the community. Also, you are creating issues in your changes, then falsely attributing the issues to ITK and other projects.
Most helpful comment
What I am doing is modularizing more granularly than what it is right now. It is no hacking and when I am changing something I make sure that it is backward compatible.