# KDE Frameworks

KDE Frameworks es una colección de bibliotecas y de varios Framework de software por parte de KDE, que sirven como base tecnológica para KDE Plasma 5 y las Aplicaciones de KDE distribuidas bajo la GNU Lesser General Public License (LGPL).
Los Frameworks individuales incluidos ofrecen una amplia variedad de funciones necesarias para la prestación de soluciones incluyendo la integración con el hardware, soporte de formatos de archivos, gráfica de elementos de control adicional, representación de funciones, la corrección ortográfica y más. Los Frameworks están disponibles para varios sistemas operativos.
KDE Frameworks representa un esfuerzo de renovación en la Plataforma de KDE 4 en un conjunto de individuos, independientes de plataforma de módulos que estarán disponibles para todas las aplicaciones basadas en Qt. La transición de la Plataforma KDE a KDE Frameworks comenzó en agosto de 2013, guiada por la parte superior de los colaboradores técnicos de KDE.
Después de la versión inicial de KDE Frameworks 5.0 y sin el estrés de un plazo muy breve, los desarrolladores se centran en la adición de características a los componentes de KDE Frameworks 5, un ejemplo de mejoras en la integración de Firefox en KDE.
Es posible instalar KDE Frameworks 5 en tiempo de ejecución, junto con una KDE Platform 4 para las aplicaciones. Se puede utilizar cualquiera de ellos.

## Adopción

El código fuente en KDE Frameworks ha sido de alrededor desde KDElibs 1. Además de la Compilación de Software KDE, puede haber otros usuarios, como por ejemplo los de los entornos de escritorio de LXQt, MoonLightDE, Hawaii o de aplicaciones, tales como Amarok, Avogadro, Trojitá o Subsurface.
La versión 3.0 de Krita, el editor de gráficos de trama de la suite Koffice, que fue lanzado el 31 de mayo de 2016, depende de KDE Frameworks 5 y Qt 5.2. La versión anterior, 2.8, depende de la Plataforma de KDE y Qt 4.

## Desarrollo

Desde la división de la Compilación de Software KDE en KDE Frameworks 5, KDE Plasma 5 y las Aplicaciones de KDE, cada subproyecto puede escoger su propio ritmo de desarrollo. En este caso, KDE Frameworks 5 será lanzado en una base mensual, y con el uso de git.

### La API de ABI y su estabilidad

La plataforma de lanzamientos de versiones principales comienza en una serie (número de versión X. 0). Sólo estos grandes lanzamientos tienen permitidos romper tanto los binarios y el código fuente de compatibilidad con el predecesor. Por otro lado, liberaciones en el menor de la serie (X. 1, X. 2, ...) se garantiza fuente y portabilidad binaria (API & ABI). Esto significa que, por ejemplo, que el software que fue desarrollado por KDE 3.0 funcionará en todas las versiones (futuras) de KDE 3; sin embargo, una aplicación desarrollada para KDE 2 no está garantizada para ser capaz de hacer uso de bibliotecas de KDE 3. Las versiones con una serie mayor siguen principalmente el ciclo de lanzamiento de Qt, lo que significa que KDE SC 4 se basa en Qt 4, mientras que KDE 3 se basa en Qt 3.

### Sistemas operativos compatibles

El repositorio de cada marco debe contener un archivo con el nombre de la metainformación.yaml. Estos archivos documentan el mantenedor del Framework, el tipo, el sistema operativo soportado y otra información. El mantenedor de KConfig´s es mdawson, cuyo nivel es 1, su tipo es el funcional, el soporte de las plataformas, como Linux, Windows, MacOSX y Android, no es un portingAid ni está obsoleto.

## Arquitectura de Software
### Estructura

Los Framework tienen una clara dependencia de la estructura, dividida en "categorías" y "niveles". Las "categorías" se refieren a las siguientes dependencias en tiempo de ejecución:
* Los elementos funcionales no tienen dependencias en tiempo de ejecución.
* Su integración designa el código que pueda requerir dependencias en tiempo de ejecución para la integración, dependiendo de lo que el sistema operativo o la plataforma ofrezca.
* Soluciones que tienen dependencias en tiempo de ejecución obligatoria.
Los "Niveles" se refieren a las dependencias en tiempo de compilación de otros Framework
* El nivel 1 de los Framework no tienen dependencias dentro de los Framework y sólo necesita Qt y otras organizaciones competentes de las bibliotecas.
* El nivel 2 los framework puede confiar sólo en el Nivel 1.
* El nivel 3 de los framework pueden depender de otros Framework así como el nivel 2 y nivel 1.

### Componentes

El paquete de KDE Frameworks consta de más de 60 paquetes. Estos existen como un único paquete con el nombre de kdelibs, en KDE SC 4. Kdelibs se dividió en varios Framework de referencia, algunos de los cuales no son parte de KDE, pero fueron integrados en Qt 5.2.
KDE Frameworks se agrupan en cuatro niveles diferentes de acuerdo a la dependencia de otras bibliotecas. Los Framework de nivel 1 solamente dependen de Qt o de otras bibliotecas del sistema. Los Framework de nivel 2 pueden depender de las bibliotecas de nivel 1, Qt o de otras bibliotecas del sistema y así sucesivamente.

#### Paquetes de Software

Las distribuciones de Linux pueden utilizar algún sistema de gestión de paquetes para el paquete de software que distribuyen. Debian, por ejemplo, distribuye KGlobalAccel bajo el nombre de paquete libkf5globalaccel, mientras que Fedora lo distribuye bajo el nombre rf5-kglobalaccel.

## Historia

La primera versión de KDE Frameworks fue la versión 5, para tener en cuenta el hecho de que el código base es de la versión 4 de KDE (la única versión de la Plataforma de KDE). Por lo tanto, la versión 5 de KDE Frameworks significa que mientras había ocurrido un reemblaje, todo el código base se había llevado de su predecesor.
Las principales mejoras orientadas en Frameworks 5 incluyen el aumento de la modularización. En anteriores versiones de KDE, las bibliotecas fueron agrupados como un solo paquete grande. En KDE Frameworks, las bibliotecas se dividen en pequeños paquetes. Esto facilitará la utilización de las bibliotecas por otras en software basado en Qt, ya que las dependencias pueden ser mantenidas en un mínimo.
Mientras que KDE 4 se basaba en la versión 4 del Qt, KDE Framework 5 se basa en la versión 5 del mismo. Qt 5 permite un uso más generalizado de QML, un simple lenguaje basado en Javascript, para el diseño de interfaces de usuario. El motor de procesamiento de gráficos utilizado por QML permite más fluidez de interfaces de usuario a través de diferentes dispositivos.