Hello all,

I would welcome this dependency a lot. I would definitely note signals and slots mechanism as one of the most important ones -e.g. writing and connecting itk events is just plain annoying. One of course could think that the amount of work to get rid of this dependency in case Qt suddenly changes its licensing policy would be immense (it kind of differs from other open-sources projects in the way it developed), but given the project changed like 3-4 owners since going open source and it still has an LGPL version, I doubt it would happen.

Just one more thing - seems like CMake-Qt interaction is also getting better - cmake modules being included as part of distribution of Qt and automoc support in later versions of CMake all seem to simplify the Qt-related builds and make them more robust.

Overall, +1 for Qt from me :)

Rostislav.


On 15/12/2014 00:20, Taylor Braun-Jones wrote:
Hi Sascha,

Thanks for the response. I agree - there are lots of points to think about...

On Sun, Nov 30, 2014 at 6:30 PM, Sascha Zelzer <[email protected] <mailto:[email protected]>> wrote:


    1. What functionality is required within the core to fulfill its
    role as a foundational library and how does an external library
    support fulfilling that requirement.


Initially many of the features of Qt Core would simply replace existing MITK implementations with something equivalent or better. From the Qt Core documentation page[1], here are some of the most applicable features to fulfilling the role of MITK Core as a foundational library:

- signals/slots
- property system
- a rich suite of container classes that are often more performant and full-featured than their C++ Standard Library equivalents
- full-featured suite of threading classes
- including a high-level abstraction in Qt Concurrent (map, reduce, QFuture, etc)
- state machine framework
- data serialization
- various utility classes such as:
  - QFileSystemWatcher
  - QStorageInfo
  - QTimer
  - QCache
  - QAtomicInteger
  - QStandardPaths

But most importantly, all this functionality is supported across a broad range of platforms - all the ones MITK already supports, but also all the major mobile platforms that MITK will hopefully support in the future. Even bare metal is an option.

    2. Would all stakeholders accept an additional hard dependency or
    can that dependency be moved into a separate module allowing
    higher flexibility.


I would be okay with the additional hard dependency. How about other MITK users out there?

    3. Does the license restrict current or envisioned use cases.


The people who would be affected currently are those using MITK to build an application that:

(1) Does not use Qt
(2) Is closed source
(3) Is statically linked

For current use cases, I think the number of stakeholders who fall into this category is quite small (maybe even zero?)

For envisioned use cases I'll assume, for the sake of discussion, MITK plans to support the two biggest mobile platforms at some point in the medium term. IMO, supporting just Linux/Mac/Windows is not enough anymore since developing medical imaging applications on tablets has value and tablet platforms are dominated by Android and iOS. Thanks to Apple's App Store policy (not a technical limitation of iOS) applications distributed with dynamically linked applications are not allowed. So now you have this catch 22: in order to support as many as 5 different platforms, using a abstraction library like Qt that supports a broad range of platforms becomes very appealing - but by adopting Qt in MITK Core it's now impossible to deploy MITK-based, closed source apps for iOS through the App Store. At least that's my understanding. Please correct me if I'm wrong.

    4. What (if any) overlap in terms of functionality exists with
    current dependencies.


Qt definitely overlaps with some of the abstraction layers provided by ITK, but in general, I think the Qt versions tend to be better/more complete. For example, ITK is missing a readers/writer lock which Qt provides with QReadWriteLock, QReadLocker, and QWriteLocker.

    As a summary, the decision about additional core dependencies
    needs to take many different aspects into account. In my opinion
    the most important ones are concrete requirements, licensing
    issues and community acceptance.


Any other MITK users care to voice an opinion? How would adding Qt as a hard MITK dependency affect you?

Best,
Taylor

[1] http://doc.qt.io/qt-5/qtcore-index.html

On Sun, Nov 30, 2014 at 6:30 PM, Sascha Zelzer <[email protected] <mailto:[email protected]>> wrote:

    Hi Taylor,

    we always welcome these kind of discussions containing good
    arguments and feedback / opinions from the community.

    You are right that one of the main original points for not using
    Qt in the Core was the GUI Toolkit agnostic architecture. As you
    said, Qt went through a thorough modularization process with
    version 5 which alone would validate revisiting that design choice.

    For a MITK Core dependency, we need to consider several points. I
    will try to summarize them shortly below, but this list is not
    authoritative in a sense that it is compiled out of memory based
    on discussions of the MITK developers (we should write them down
    and formalize this):

    1. What functionality is required within the core to fulfill its
    role as a foundational library and how does an external library
    support fulfilling that requirement.
    2. Would all stakeholders accept an additional hard dependency or
    can that dependency be moved into a separate module allowing
    higher flexibility.
    3. Does the license restrict current or envisioned use cases.
    4. What (if any) overlap in terms of functionality exists with
    current dependencies.

    Your point about using Q_PROPERTY and the Qt meta-object system in
    general to ease the integration with other Qt base MITK modules is
    definitely an argument to be considered (point 1). It would be a
    far-reaching design decision for the MITK Core. On the other hand,
    I am currently not aware of any pressing issues which would
    require considerably more effort if the MITK Core is kept Qt-free.
    Of course, also point 4 would need not be considered. Hence one
    question would be:

    What Qt features would be beneficial for the whole MITK eco-system
    and what are the trade-offs when supporting these features in the
    Core directly compared to "decorating" it with another layer (module).

    In the case of Qt, the license has always been one of the most
    discussed issues. AFAIK Qt is now triple-licensed (which seems to
    be a good thing). However, it still requires a commercial license
    for closed-source projects which want to statically link to Qt.
    Although the MITK build system support for static linking was not
    always  kept up-to-date over time we still consider static linking
    as an important feature of MITK applications (not the Workbench
    necessarily). A hard Qt dependency would be a departure from that
    philosophy (for closed source projects).

    As a summary, the decision about additional core dependencies
    needs to take many different aspects into account. In my opinion
    the most important ones are concrete requirements, licensing
    issues and community acceptance.

    Best,

    Sascha



    On 11/20/2014 04:05 PM, Taylor Braun-Jones wrote:

        I know this idea has been discussed before, but now that MITK
        is beginning to make the transition to Qt5, I think it's valid
        to revisit the discussion.

        MITK Core currently does not allow any dependency on Qt
        because MITK Core is meant to be GUI toolkit agnostic (correct
        me if I don't have the rationale correct). Given the
        monolithic architecture of Qt4, I think this policy made
        sense. However, with the more modular architecture of Qt5, it
        is now possible to use just Qt Core in MITK Core and remain
        GUI toolkit agnostic. Being comfortable with the fact that
        this dependency, despite having "Qt" in the name, is not
        GUI-specific just takes a little getting used to :-)

        The advantage is that Qt Core provides a broad, high-quality
        suite of cross-platform abstractions that support all the
        platforms MITK currently targets - plus some platforms that I
        hope MITK would consider targeting at some point in the future
        like Android or iOS. With the OpenGL rendering improvements
        coming soon in VTK[1], running MITK-based applications on
        Android- or iOS-based devices will be feasible and useful for
        certain applications. Regardless of whether the application
        GUI were developed using the native Android/iOS SDK or using
        Qt Quick, having access to Qt Core for the platform
        abstraction would be beneficial.

        Secondly, being able to use Q_PROPERTY and qRegisterMetaType
        in core classes like mitk::DataNode and mitk::DataStorage
        simplifies integration with Qt-based GUIs, especially Qt
        Quick-based ones.

        I'm curious to hear what the the rest of the MITK team and
        community thinks about this idea.

        Regards,
        Taylor

        [1] http://www.kitware.com/source/home/post/144




------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk


_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to