KDE Frameworks: Difference between revisions

    From KDE TechBase
    No edit summary
    (Expand information on Frameworks)
    Line 1: Line 1:
    == Presentation ==
    [[File:Konqui frameworks cropped.png|noframe|right|200px|]]
    [https://www.kde.org/products/frameworks/ KDE Frameworks] is a framework of libraries built on the top of [https://www.qt.io Qt]. The libraries are divided in four Tiers that define the chain of dependencies.


    You don't need to use all the libraries: they are divided in a way that allow you to choose what you really need. For instance if you need to localize your application, use the [https://api.kde.org/frameworks/ki18n/html/index.html KI18n] library, if you need an archive tool, use [https://api.kde.org/frameworks/karchive/html/index.html KArchive].
    The [https://kde.org/products/frameworks/ KDE Frameworks], currently version 5 or KF5, is a collection of 80 libraries that are built on top of the [https://www.qt.io Qt application framework] and provides everything from utility classes to asynchronous and network-transparent I/O to additional data model and widgets to desktop-centric integration. If Qt itself doesn't provide a certain functionality or feature, chances are, there's a KDE Framework for that.


    == API ==
    While KF5 does serve as the most basic building blocks of KDE software, they can be used by any Qtx application just like any third-party Qt add-on library. Just like any other KDE software, KF5 uses and favors a CMake build system but all frameworks support QMake as well. Many frameworks are available on multiple desktop operating systems such as Linux and Windows and are even available on Android. Be sure to check each framework's documentation for their supported platforms.
     
    __TOC__
     
    = Guarantees and License =
     
    KDE, of course, takes software quality seriously but even more so when it comes to KF5. The Frameworks come with [https://community.kde.org/Frameworks/Policies quality promises] and to make sure you won't need to wait for your favorite bug to get fixed, a new version is [https://community.kde.org/Schedules/Frameworks released monthly]. And since it's free software developed in an open environment, anyone can participate or comment on its development.
     
    {{Info|The current version of '''KDE Frameworks is 5.58.0'''. Please see the [https://kde.org/announcements/kde-frameworks-5.58.0.php release announcement] for more information.}}
     
    The KDE Frameworks are also released under the [https://community.kde.org/Policies/Licensing_Policy permissive LGPL or BSD/MIT licenses], making them ideal and usable for any type of software.
     
    = Organization =
     
    Each of the KDE Frameworks has a Tier and a Type, as you will see in the [https://api.kde.org/frameworks/index.html API documentation]. While not critical to using the frameworks, this organization can help developers in determining the frameworks' dependencies.
     
    Tiers group the frameworks according to what they link to during compilation.
     
    * Tier 1 Frameworks can depend only on Qt official frameworks or other system libraries;
    * Tier 2 Frameworks can depend only on Tier 1 Frameworks, Qt official frameworks, or other system libraries;
    * Tier 3 Frameworks can depend only on other Tier 3 Frameworks, Tier 2 Frameworks, Tier 1 Frameworks, Qt official frameworks, or other system libraries.
     
    Types, on the other hand, refer to the framework's runtime dependencies:
     
    * Functional Frameworks cannot have runtime dependencies. KArchive, for example, can be used as-is as a drop-in library.
    * Integration Frameworks can have optional runtime dependencies and aim at integrating with the underlying OS/Platform. Solid needs other runtime components to deliver hardware information on different platforms.
    * Solutions have mandatory runtime dependencies to function. KIO, the KDE I/O framework, requires certain daemons to offer a network-transparent virtual filesystem.
     
    = API =
    You can find the API documentation of the Frameworks on [https://api.kde.org/frameworks/ api.kde.org].
    You can find the API documentation of the Frameworks on [https://api.kde.org/frameworks/ api.kde.org].


    == Examples ==
    = Examples =
    == Getting help ==
    = Getting help =
    # Double-check the api
    # Double-check the api
    # Try to debug your application [with LINK to how to debug (on community?)]
    # Try to debug your application [with LINK to how to debug (on community?)]
    # ask for help on #kde-devel or <mailinglist>
    # ask for help on #kde-devel or <mailinglist>
    # Open a bug on <>
    # Open a bug on <>

    Revision as of 09:32, 22 May 2019

    The KDE Frameworks, currently version 5 or KF5, is a collection of 80 libraries that are built on top of the Qt application framework and provides everything from utility classes to asynchronous and network-transparent I/O to additional data model and widgets to desktop-centric integration. If Qt itself doesn't provide a certain functionality or feature, chances are, there's a KDE Framework for that.

    While KF5 does serve as the most basic building blocks of KDE software, they can be used by any Qtx application just like any third-party Qt add-on library. Just like any other KDE software, KF5 uses and favors a CMake build system but all frameworks support QMake as well. Many frameworks are available on multiple desktop operating systems such as Linux and Windows and are even available on Android. Be sure to check each framework's documentation for their supported platforms.

    Guarantees and License

    KDE, of course, takes software quality seriously but even more so when it comes to KF5. The Frameworks come with quality promises and to make sure you won't need to wait for your favorite bug to get fixed, a new version is released monthly. And since it's free software developed in an open environment, anyone can participate or comment on its development.

    Information
    The current version of KDE Frameworks is 5.58.0. Please see the release announcement for more information.


    The KDE Frameworks are also released under the permissive LGPL or BSD/MIT licenses, making them ideal and usable for any type of software.

    Organization

    Each of the KDE Frameworks has a Tier and a Type, as you will see in the API documentation. While not critical to using the frameworks, this organization can help developers in determining the frameworks' dependencies.

    Tiers group the frameworks according to what they link to during compilation.

    • Tier 1 Frameworks can depend only on Qt official frameworks or other system libraries;
    • Tier 2 Frameworks can depend only on Tier 1 Frameworks, Qt official frameworks, or other system libraries;
    • Tier 3 Frameworks can depend only on other Tier 3 Frameworks, Tier 2 Frameworks, Tier 1 Frameworks, Qt official frameworks, or other system libraries.

    Types, on the other hand, refer to the framework's runtime dependencies:

    • Functional Frameworks cannot have runtime dependencies. KArchive, for example, can be used as-is as a drop-in library.
    • Integration Frameworks can have optional runtime dependencies and aim at integrating with the underlying OS/Platform. Solid needs other runtime components to deliver hardware information on different platforms.
    • Solutions have mandatory runtime dependencies to function. KIO, the KDE I/O framework, requires certain daemons to offer a network-transparent virtual filesystem.

    API

    You can find the API documentation of the Frameworks on api.kde.org.

    Examples

    Getting help

    1. Double-check the api
    2. Try to debug your application [with LINK to how to debug (on community?)]
    3. ask for help on #kde-devel or <mailinglist>
    4. Open a bug on <>