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 <mailto: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
    <mailto:s.dinkelac...@dkfz-heidelberg.de>>;
    mitk-users@lists.sourceforge.net
    <mailto: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
    <mailto: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
        <mailto:e.bek...@yandex.com>>
        *Gesendet:* Donnerstag, 10. September 2020 02:03
        *An:* Dinkelacker, Stefan; mitk-users@lists.sourceforge.net
        <mailto: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
        <mailto: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
            <mailto:e.bek...@yandex.com>>
            *Gesendet:* Dienstag, 8. September 2020 17:27
            *An:* mitk-users@lists.sourceforge.net
            <mailto: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.

            
https://commontk.org/index.php/Documentation/CTK_Plugin_Framework:_Setting_up_a_project#Project_Layout

            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 <mailto: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 <mailto: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.

                    https://discord.gg/yVmNAbv

                    Best Regards

                    08.09.2020, 14:00, "Ramazan Ergüder Bekrek"
                    <e.bek...@yandex.com <mailto: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
                        <mailto:mitk-users@lists.sourceforge.net>
                        https://lists.sourceforge.net/lists/listinfo/mitk-users

                    ,,

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

                ,,

                _______________________________________________
                mitk-users mailing list
                mitk-users@lists.sourceforge.net
                <mailto: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