Thank you Stefan for your clarification. Concerning your recommendation using Eclipse and deal with the native part with dlls I won't go into that direction. The foundation has to be C++ and I try to go away from Java since it is heavy for nothing. Although I like the tooling concerning OSGi like BndTools it was a hard choice.
 
Having found BlueBerry, CTK, CppMicroServices and MITK I am in a cross-road to which am I sticking with.
 
I've compiled CTK and it doesn't depend on neither ITK and VTK.
How can I use BlueBerry with CTK when BlueBerry is depending on some layer from MITK's CMake macros like mitk_.....
 
I think making BlueBerry part of MITK and not one level under with CTK is totally breaking the modularity aspect.
 


14.09.2020, 16:36, "Sascha Zelzer" <sascha.zel...@gmail.com>:

Hi,

as answered on the CppMicroservices GitHub issues page, CppMicroServices and CTK are independent projects with no dependencies on each other.

CppMicroServices was the reincarnation of the service layer from the CTK Plugin Framework, without the module (bundle) layer (well, just the bare minimum of the bundle layer to support the service registry design). I think it will help to read the history on [1] (the first three blog entries).

These days, it doesn't make much sense to use the CTK PluginFramework together with CppMicroServices for new projects. They both provide a similar feature set, but the former is actively developed. Note that the version used by MITK (as far as I know) is old enough to lack major features and the creation of CppMicroServices was motivated by the desire to "register services" from non-CTK bundles.

Regarding all your other questions about modular UI development, my personal point of view is to look at web technologies or just use Eclipse directly since you seem to be familiar with it already. BlueBerry supports a lot of features, but as Stefan said there are certain things missing and it is based on Eclipse RPC 3.x. Using a more widely adopted UI you are familiar with (Eclipse) seems to make sense since you seem to not have a need for the medical imaging and interaction features of MITK. Interfacing the Java UI logic with native libraries (C/C++ if you want) or even with CppMicroServices infrastructure via native libraries might be worth to investigate.

- Sascha

[1] http://blog.cppmicroservices.org/

On 9/11/20 12:03 PM, Dinkelacker, Stefan wrote:

The creator of BlueBerry (and CppMicroServices) is reading this mailing list, so let’s see if he has something to say. :-)

CppMicroServices started like BlueBerry as MITK subproject (Modules/CppMicroservices) and it is still a subproject in its initial version (which we are using). There’s also subsequent versions of CppMicroServices that are completely decoupled and are hosted on http://cppmicroservices.org/ and have nothing to do with MITK anymore (and won’t work out of the box with MITK). At least in the CTK version that we are using, CppMicroservices is not a dependency of CTK or we are not aware of it/not using it/not building it, so I am not sure how you came to this conclusion? :-)

The CTK guys are also active and have a mailing list, if you have CTK-specific questions.

 

Best,

Stefan


 

From: Ramazan Ergüder Bekrek [mailto:e.bek...@yandex.com]
Sent: Friday, September 11, 2020 10:47 AM
To: Dinkelacker, Stefan <s.dinkelac...@dkfz-heidelberg.de>; mitk-users@lists.sourceforge.net
Subject: Re: AW: AW: [mitk-users] Is there any template project that have the foundation to build a modular application with Qt?

 

Can you or someone other in your contacts with whom I can connect who can provide more information about how BlueBerry is working... Based only on the information from MITK documentation it only help not to much in details about how to hook that separate project into CTK for example or CppMicroServices.

 

Where does the initialisation of BlueBerry takes place?

 

I am also confused does CTK have a dependency on CppMicroServices(CMS) or is CMS directly copied in the source code of CTK and just renamed all the its file starting by ctk.....cpp&.h

 

Is there any internal detailed documentation that was not rendered publicly due to forgetting or other kind of policies?

 

How could you direct me to the right people so that I can ask my question to the concerned parties?

 

I would like to also know what kind of development environment are you using to work with MITK. I mean by that if you are using Eclipse and if yes are there any visual tooling which was develop specifically in the Eclipse/IntelliJ environment  connected with the MITK project?

 

Best regards

 

 

11.09.2020, 09:59, "Dinkelacker, Stefan" <s.dinkelac...@dkfz-heidelberg.de>:

Thanks for the explanation. :)

In this case and if you have the time to spend, it could be worth to first try to make BlueBerry a separate project by extracting it from MITK instead of deleting everything from MITK that you do not need. I think BlueBerry was already designed this way not to be too much entangled with the rest of MITK.

 

I also know that there are companies that did it before but it’s not open source unfortunately. We do not have the capacity currently to give much support for such big projects off the beaten path, though. Also note that as far as I know, BlueBerry is not a complete implementation of OSGi and there may be things missing you are used to rely on.

 

Best,

Stefan

 

From: Ramazan Ergüder Bekrek [mailto:e.bek...@yandex.com]
Sent: Thursday, September 10, 2020 1:44 PM
To: Dinkelacker, Stefan <s.dinkelac...@dkfz-heidelberg.de>; mitk-users@lists.sourceforge.net
Subject: Re: AW: AW: [mitk-users] Is there any template project that have the foundation to build a modular application with Qt?

 

Hi again,

 

Thank you for your questions/explanations, I will try to answer them the best way I can. I got impressed by MITK as a complete software product because I myself achieve this kind of modularity with Adobe AIR/Actionscript platform where I could just split all aspects of my app and let the OSGi handle the bundles on UI/Backend side. I needed to migrate from Adobe AIR/Actionscript because of my requirements and I tried to find something as comfortable as my development pipeline. I worked a lot in the Eclipse environment for many years and IMHO that's the most well designed architecture that is around in terms of modularity. I could not find any other language and framework which could beat OSGi and Java. Modularity exists since eons on the Java platform with OSGi and when I discovered it, I never went back to the old paradigm of so called faked modularity/monolith. Once the other language platform got it ans saw the huge potential of OSGi then they started to implement that standard on their side.

 

I thought that MITK was the best framework for me to start upon, but I am realizing that to use BlueBerry I don't need MITK at all only CTK. But from the other side there are lots of unnecessary dependencies that are intrinsic in it that I would like to get rid of it like everything DICOM, VTK, ITK, etc...

 

The help/guidance I need from your part is to direct me which folders can I delete to be able just to use BlueBerry, CTK(without unnecessary imaging deps) and CppMicroServices which I guess is CTK(core).

 

In the folder structure I see that there is the following directories:

 

Applications

Libs

Plugins

Utilities

 

If I understood well this is what can I do based on the modularity of CTK.

 

I am intending to copy from MITK->Plugins folder all the org.blueberry.* plugins inside of CTK->Plugins to be able to use it. I presume BlueBerry is not depending on anything since it is a separate project ... is my presumption correct? Can I just do that move?

 

Which sub-folders in CTK can just delete and it will still compile without a problem? Are my decisions correct? Please let me know :D

 

I will certainly going to keep the followings:

 

CTK->Applications->EventBusDemo

CTK->Applications->ExampleHost

CTK->Applications->ExampleHostedApp

CTK->Applications->PluginBrowser

CTK->Applications->PluginGenerator

CTK->Applications->QtTesting

CTK->Applications->PythonShell

 

since those will be my base for the UI side.

 

CTK->Libs->CommandLineModules

CTK->Libs->Core

CTK->Libs->PluginFramework

CTK->Libs->QtTesting

CTK->Libs->Scripting

CTK->Libs->Testing

CTK->Libs->Widget

 

and concerning the CTK->Plugins folder I presume that all of it will be kept.

 

So from my understanding this seems to be my basic OSGi/Eclipse platform from which I can start to develop on top. I might be wrong but this claim I can only do it because of my understanding from what I have learned.

 

Best Regards

 

 

10.09.2020, 11:52, "Dinkelacker, Stefan" <s.dinkelac...@dkfz-heidelberg.de>:

Hi,

I'm afraid we cannot provide support for fundamental changes from our superbuild structure like using vcpkg instead of our MITK-superbuild.

 

The very core of MITK is based on VTK and ITK (and a few other, smaller toolkits) and these toolkits have dependencies again like HDF5. These transitive dependencies are sometimes used by more than one other dependency which is why we build them separately in our superbuild. This way the same binaries are linked by all dependers. Other reasons may be that we need later versions of certain libraries than the ones that come optionally bundled with dependencies. The "minimal" configuration is indeed the very minumum. If you switch on CTK of course this will result in more dependencies needed by CTK and so on.

At this rate of trying to work against the MITK fundamentals and repacing core parts, though, I'm curious about why you choose MITK in the first place? :-) No offense, I'm really curious. It seems like you are more interested in our dependencies like CTK instead of the actual "contents" of MITK. At least for the beginning I highly recommend to stick with the MITK conventions and superbuild and follow the MITK-ProjectTemplate. Otherwise it certainly will be a very rough start to get things done as it is a complex framework. If you only need a few source components, you could also copy them to your repo (following the requirements of the BSD-license) or even fork MITK if you want to replace the whole superbuild with something custom.

 

Best,

Stefan

 


Von: Ramazan Ergüder Bekrek <e.bek...@yandex.com>
Gesendet: Donnerstag, 10.
September 2020 02:03
An: Dinkelacker, Stefan;
mitk-users@lists.sourceforge.net
Betreff: Re: AW: [mitk-users] Is there any template project that have the foundation to build a modular application with Qt?

 

Ok I am at the last step before compiling MITK with a minimal setup but I again got stopped with a road block.

I installed ITK, HDF5 & DCMTK via vcpkg and all the Config.cmake files are in their respective folder.

I still get this error :

 

Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.19041.

Performing Test HAS_FLAG_-std=c14

Performing Test HAS_FLAG_-std=c14 - Failed

------- Using build configuration "Minimal" -------

Generated: G:/programming/c++/MITK/build/Project.xml

Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)

CMake Error at CMakeLists.txt:877 (find_package):
By not providing "FindITK.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "ITK", but
CMake did not find one.

Could not find a package configuration file provided by "ITK" with any of
the following names:

ITKConfig.cmake
itk-config.cmake

Add the installation prefix of "ITK" to CMAKE_PREFIX_PATH or set "ITK_DIR"
to a directory containing one of the above files. If "ITK" provides a
separate development package or SDK, be sure it has been installed.

 

What should I do now?

 

 

09.09.2020, 04:07, "Dinkelacker, Stefan" <s.dinkelac...@dkfz-heidelberg.de>:

Hi,

 

there are several ways of using MITK. On the most basic level, you have to decide if you want to MITK as a toolkit or as framework.

 

Toolkit means that you use MITK just like any other bunch of libraries and depend on MITK libraries/modules in your CMake-based project with target_link_libraries(). This is the most general approach and usually chosen by developers who just want to use the algorithmic part of MITK in their completely own GUI (or non-GUI) applications. Note that you can switch off BlueBerry, CTK, and even Qt5 to just build the parts of MITK you need. A good starting point is to build the absolute minimum of MITK by setting the following (advanced) CMake variables in the MITK-superbuild and then add the parts of MITK you need as you go on:

MITK_WHITELIST: Minimal

MITK_BUILD_CONFIGURATION: Minimal

 

Framework means that you stick to the conventions of MITK and use all the CMake functionailty of MITK to create new modules, plugins, and applications. As an advantage you can rely on a ton of mainly GUI and application-infrastructure-related code to get things done. You can also use plugins like Image Statistics or Segmentation. The recommended "framework" way is to start with the MITK-ProjectTemplate [1] as a template for your own repository and write your modules, plugins, and applications this way. For the start you can just use the MITK Workbench application as a host for your components but you are not restricted to do so. Check the BlueBerryExample launcher application for examples on writing your completely custom applications that are still based on BlueBerry though.

 

It's hard to recommend the right way for your project without knowing any details but if you are already determinied to write your own GUI and you do not want to use CTK or BlueBerry (and hence none of our plugins/views) you probably want to go full custom with the toolkit approach. From our experience we can say that quite a few developers started this way without noticing all the benefits of the framework approach as there are literally hundreds of thousands lines of code dealing with a lot of complexity you would otherwise have to handle yourself (at the cost of a certain overhead of course). Some developers also did not recognize the possibility to create BlueBerry applications with a nearly completely custom look and feel. All approaches are valid approaches and in the end you have to decide what's best in your project's context.

 

Best,

Stefan

 

[1] https://github.com/MITK/MITK-ProjectTemplate

 


Von: Ramazan Ergüder Bekrek <e.bek...@yandex.com>
Gesendet: Dienstag, 8.
September 2020 17:27
An:
mitk-users@lists.sourceforge.net
Betreff: Re: [mitk-users] Is there any template project that have the foundation to build a modular application with Qt?

 

I found out this tutorial but I don't know how actual it is and unfortunately it only does covers CTK and not other frameworks that I need.

 

 

Could someone confirm that this is still valid or should I just ignore this tutorial?

 

Best Regards

 

 

08.09.2020, 16:16, "Ramazan Ergüder Bekrek" <e.bek...@yandex.com>:

I found out this tutorial but I don't know how actual it is and unfortunately it only does covert CTK and not other frameworks that I need.

 

Could someone confirm that this is still valid or should I just ignore this tutorial?

 

Best Regards

 

 

08.09.2020, 16:13, "Ramazan Ergüder Bekrek" <e.bek...@yandex.com>:

I also want to share the fact that there is now a discord server for everything OSGi related.

There are also sub-channels regarding BlueBerry, CppMicroServices, CTK, OSGi in Java,Python,Actionscript and also Qt.

 

This is the invitation link and I welcome everyone who is willing to expand and share their knowledge of theses platforms.

 

 

Best Regards

 

 

08.09.2020, 14:00, "Ramazan Ergüder Bekrek" <e.bek...@yandex.com>:

Hi it is been since few days I am trying to figure out how to use the combination of BlueBerry, CTK, CppMicroservice, Qt5 & CMake
to have a solid foundation without all the MITK framework and all its components to start my own project.

I have installed MITK to see how it look on the UI with all the modular aspect and actually what I am trying to achieve this:

I would like to have a naked MITK like main windows without any components on the UI and built from that on top by my own UI bundles.

When I digged  inside of the CMake structure and code I just became owerwhelmed and scared. It seems that BlueBerry is an integrated
part of MITK and not a totally independant project which has a vcpkg port like dcmtk, gdcm, cppmicroservice, qt5.

I also realized that CTK is also like the previously mentioned fact and is missing on vcpkg...

How do I setup a CMake foundation if some parts of the MITK are not reachable by vcpkg and I need them for example like:

find_package(CTK REQUIRED)
find_package(BlueBerry REQUIRED)
find_package(CppMicroServices REQUIRED)

Plug how to I setup my CMake to take advantage of all the CTK, BlueBerry, CppMicroService functions and macros to respect
the best practice structure pattern for my own bundles and the structure of my project? I am aware that there is a CMake and CMakeExternals folders
in the root of the project. Can I just take those 2 folder and copy it inside of my own project folder and will it work with CMake?

So the briefly resume my situation how do I setup either a dummy CMake template or make it work with an alternative.

Best Regards


_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users

,,

_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users

,,

_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users



_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users
,,

_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users

_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to