Project:KDE/Frameworks

KDE Frameworks 5 (KF5) is the next major release of the KDE libraries. The major focus is refactoring, which will allow applications to make use of KDE libraries without having to depend on large packages like kdelibs. Some code was even migrated upstream to Qt 5, which frameworks depends upon.

High level overview
KDE libraries are split into individual frameworks organised in tiers. Tier 1 libraries may only depend on Qt frameworks or other system libraries. Tier 2 libraries may only depend on tier 1 libraries, Qt frameworks or other system libraries, and so on. KDE workspaces build upon frameworks to provide the user environment. KDE applications build upon frameworks and workspace to complete the picture.

In order to match the distinct three-way upstream categorisation, we will introduce three new categories: kde-frameworks, kde-workspace, and kde-apps. As individual upstream projects move to frameworks, we too will move them to kde-apps, eventually leaving kde-base empty.

We will introduce at least one new eclass (kde-frameworks) in order to make a clean break from the old eclasses, which have accumulated a lot of legacy code over time. Depending on how frameworks, workspaces, and applications are eventually released, it may prove useful to maintain individual eclasses (perhaps with a base common eclass) for each of the three to keep things simple.

Upgrade notes

 * Meta packages are slotted, causing blocks when a dependency changes slot between versions
 * qt5 USE flag needs to be manually enabled in KDE profile

Todo

 * Follow up test failures with upstream
 * New overlay wiki page for frameworks 5
 * New overlay wiki page for plasma 5
 * kde wiki page refactoring
 * New kde wiki page for frameworks 5
 * New kde wiki page for plasma 5
 * Eclass: make tests optional as some upstream maintainers refuses to accept optional test patches
 * Eclass: make handbook optional if some upstream maintainers refuses to accept optional test patches
 * A lot of frameworks now require linguist-tools, review what to do when translations are shipped?
 * Check handbook stuff.

✅

 * Urgent - patch kde4-meta.eclass to use KDE/4.x branch for kde-workspace 9999 ebuilds, as master will soon be KF5
 * Tests are optional to build, but dependencies required for them are still pulled in. The add_subdirectory entry for autotests should just be commented out when tests are disabled. tests/ and examples/ should always be removed.
 * Create a new or update existing bump script for releases
 * Review local coinstallability changes eg. many binaries are renamed upstream, but we still install everything into a custom directory
 * Audit which packages have tests and add FRAMEWORKS_TEST="false" as appropriate
 * Some frameworks with X USE flag now have runtime detection. Drop USE flag where appropriate, and look at porting the dep checks upstream away from deprecated HAVE_X11 (which unconditionally requires xproto and libX11) to the specific header
 * doc USE flag is turned on by default by kde-frameworks eclass, but this is likely only required for actual frameworks.
 * KF Keyword file generation
 * Eclass: implement subslots
 * Overlay wiki page refactoring

Blockers

 * Naming scheme - kde-workspace master will become KF5 soon, breaking all -9999 overlay ebuilds from that repo ✅
 * Parallel installation (kde-base/kdelibs and kde-frameworks/* naturally collide) ✅
 * Qt 5 in the tree ✅
 * New eclass approval
 * New category approval

Everything
All implementation details should be discussed to ensure we implement the best solution.