KDE Frameworks/Getting Started: Difference between revisions

From KDE TechBase
(→‎Development Policies: wording tweak)
m (Jucato moved page KF5/Getting Started to KDE Frameworks/Getting Started: Give a more descriptive title)
 
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Proposed_deletion|reason=this stuff has all been moved to community now (mostly to Get Involved)}}
<languages />
<languages />
{{Construction|This is a rewrite of the Getting Stared pages for KF5 using kdesrc-build by John Layt}}
<translate>
<translate>
==Introduction== <!--T:1-->


{{Construction|This is a rewrite of the Getting Stared pages for KF5 using kdesrc-build by John Layt}}
<!--T:2-->
There are many different ways to become [http://community.kde.org/Get_Involved involved in the KDE Community], starting with simply using our software. This guide is to help you get started on the technical side of developing the software itself.


==Introduction==
<!--T:3-->
{{Note|1=If you just want to use stable KDE Software for your everyday computing needs, then you do not usually need to build KDE Software for yourself. See [https://www.kde.org/download/ Getting KDE Software] for information about how to get hold of the software for your system.}}


There are many different ways to become [http://community.kde.org/Get_Involved involved in the KDE Community], ranging from simply using our software all the way through to being a core Frameworks developer.
<!--T:4-->
It is important to note that the version of KDE Software that is provided by your distribution or downloaded via an installer is ''not'' the same as the version that is being worked on by software developers. If you are using KDE CoolApp 1.2, the developers are working on the "development" version, usually called "KDE CoolApp ''master''". This is the version that will become KDE CoolApp 1.3, or maybe 2.0. If you want to get involved in developing KDE Software, you will need to get hold of and build the development versions.


This section of KDE TechBase is designed to help get you started in participating in the technical side of the KDE community. It will explain to you how KDE Software is structured and built, and how you can participate by building KDE Software for yourself.
<!--T:5-->
This guide will aim to show you how to build, run and help improve the development versions of KDE Software. We will primarily be looking at submitting a ''patch'' to change the software, but the information here is also useful if you want to [https://techbase.kde.org/Contribute/Bugsquad test whether a bug still exists in the software], for example.


<!--T:6-->
If you just want to get started building the code then you can skip to the [[Special:myLanguage/KF5/Getting_Started/Build|build instructions]], but it is recommended you first understand the background material presented here.
If you just want to get started building the code then you can skip to the [[Special:myLanguage/KF5/Getting_Started/Build|build instructions]], but it is recommended you first understand the background material presented here.
</translate>


== Using KDE Software ==
<translate>
== Getting Help == <!--T:7-->


If you just want to use stable KDE Software for your everyday computing needs, then you do not need to build KDE Software for yourself. You should instead use the software installer provided by your Linux distribution to install KDE Software.
<!--T:8-->
If you are looking for help in using KDE Plasma or KDE Applications then please visit the [http://userbase.kde.org/ KDE UserBase].


The best place to learn how to do this is through your distribution's normal support channels, although you may find some useful information on the following pages:
<!--T:9-->
* [https://community.kde.org/Distributions Linux and BSD Distributions shipping KDE]
Before you continue with this guide, it is a good idea to get on <abbr title="Internet Relay Chat">IRC</abbr>. This is a realtime text communication system, and the primary "casual" communication tool for KDE developers.
* [[Special:myLanguage/Projects/KDE_on_Windows/Installation|Install KDE Software on Windows]]
* [http://community.kde.org/Mac#Installing_KDE_on_Mac_OSX Install KDE Software on Mac OS X]


== Getting Help ==
<!--T:10-->
You will need a way to connect to the [http://freenode.net/ freenode IRC network]. We suggest [https://konversation.kde.org/ Konversation] (see the [https://docs.kde.org/trunk5/en/extragear-network/konversation/index.html handbook] for help in setting it up), although a convenient alternative if you want to get going quickly is freenode's [http://webchat.freenode.net/ online webchat]. You will need to choose a ''nick'' (the name you appear on the network as), [http://freenode.net/using_the_network.shtml connect to freenode] and join [irc://irc.kde.org/kde-devel #kde-devel].


If you are looking for help in using KDE Plasma or KDE Applications then please visit the [http://userbase.kde.org/ KDE UserBase].
<!--T:11-->
The other main channel for communication is the KDE mailing lists. To start with, you should subscribe to [https://mail.kde.org/mailman/listinfo/kde-devel the kde-devel list] (you will need to subscribe before you can send emails to the list).


If you have any questions or problems with building or developing KDE Software please feel free to [[Special:myLanguage/Development/Getting_Help|ask for help]]. The IRC channel [irc://irc.kde.org/kde-devel #kde-devel] is recommended as the best source of general help. For application-specific help please try the application's own mailing list or IRC channel.
<!--T:12-->
For more information about getting help, see the main [[Special:myLanguage/Development/Getting_Help|Getting Help]] page, and remember that applications often have their own IRC channels and mailing lists that can be better places to ask for help.


<!--T:13-->
Be patient while waiting for a response, and try to work through the problem yourself: we aren't going to do it ''all'' for you.  Working your way through and understanding why something doesn't work is a good way to learn how to do things the right way.
Be patient while waiting for a response, and try to work through the problem yourself: we aren't going to do it ''all'' for you.  Working your way through and understanding why something doesn't work is a good way to learn how to do things the right way.
</translate>
<translate>
==Development Policies== <!--T:14-->


==Development Policies==
<!--T:15-->
KDE Software is a very large, diverse and complex code base and the KDE Community has developed many policies and processes to make the KDE Software development process manageable, which are documented [[Special:myLanguage/Policies|elsewhere in TechBase]]. As you become more involved in KDE Development, you will need to become familiar with them, as well as any policies specific to the projects you are contributing to, but for your first few patches you will not need to worry about most of them.


KDE Software is a very large, diverse and complex code base and the KDE Community community has developed many policies and processes to make the KDE Software development process a lot easier. These are documented elsewhere in TechBase and you should try to familiarise yourself with them over time. You should also learn any specific contribution guidelines for the application that you might be working on.
<!--T:16-->
At this point, the main thing you need to read is the [https://www.kde.org/code-of-conduct/ KDE Community Code of Conduct], because this is the basis for interacting with the KDE Community in general. You will also need to be willing for your code to be licensed under the one of the licenses listed in the [[Special:myLanguage/Policies/Licensing_Policy|licensing policy]].


Don't feel you have to read through every single KDE policy before you even send your first patch. Start with the manifesto and the code of conduct; these are the basis for interacting with the KDE Community in general. When it comes to contributing code, the most important thing to get right is ''how'' to send your contribution (see [[#Contributing|the section about contributing]]). Maintainers and other contributors will be more familiar with the technical policies, and will help you make your contribution adhere to them while you are still starting out.
<!--T:17-->
If you want to make changes to library code, especially the KDE Frameworks, reading the [[Special:myLanguage/Policies/Library_Code_Policy|library code policy]] can help you write code that will satisfy the requirements of those projects.
</translate>


* [https://manifesto.kde.org/ The KDE Community Manifesto] that all KDE Projects follow
<translate>
* [https://www.kde.org/code-of-conduct/ The KDE Community Code of Conduct] that all KDE Community members must adhere to
==KDE Projects== <!--T:18-->
* [[Special:myLanguage/Policies|Development Policies and Procedures to follow]]
* [[Special:myLanguage/Development/Software_Engineering_Framework|The KDE Software Engineering Framework]]
* [[Special:myLanguage/Policies/Application_Lifecycle|The development lifecycle for a new application]]
* [[Special:myLanguage/Schedules/Release_Schedules_Guide|The KDE Release Schedule]]


==Build And Run==
<!--T:19-->
As mentioned above, there is a lot of KDE Software. You may already have a project in mind that you want to help with, in which case it is helpful to know where it fits in the overall structure of KDE Software. If you haven't chosen a specific project, knowing this structure will help you start your search for where to begin contributing.


The following sections explain the steps you need to successfully build and KDE Software from source:
<!--T:20-->
KDE Software is divided into three main Products:
* [http://api.kde.org/frameworks-api/frameworks5-apidocs/ KDE Frameworks]
* [https://www.kde.org/workspaces/ KDE Plasma]
* [https://www.kde.org/applications/ KDE Applications]


* [[Special:myLanguage/KF5/Getting_Started/Source_Code|How the KDE Software source code is structured]]
<!--T:21-->
* [[Special:myLanguage/KF5/Getting_Started/Build|How to Build and Install KDE Software]]
The Frameworks are the libraries that underpin all the other KDE Software. Almost all KDE Software is built on [http://www.qt.io/ Qt], a C++ framework and GUI toolkit. The Frameworks provide additional functionality on top of Qt, and are used both within and outside KDE.
* [[Special:myLanguage/Development/Tools|Development Tools useful in developing KDE Software]]


==Contributing==
<!--T:22-->
KDE Plasma is KDE's desktop environment. Applications built on top of Qt and KDE Frameworks will integrate well with KDE Plasma, but they will also integrate with other desktops. Plasma will also attempt to help other applications (such as GTK-based ones) integrate with it.


Once you have a copy of KDE Software built you can then start contributing code back to the KDE Community. The pages below will help you find out how you can help make KDE Software even better.
<!--T:23-->
Most other KDE projects are applications that come under the KDE Applications umbrella. This contains several coherent groups, such as [https://edu.kde.org/applications/ KDE Education], [https://games.kde.org/ KDE Games], the [https://www.calligra.org/ Calligra Suite] and the [https://userbase.kde.org/Kontact Kontact Suite].


<!--T:24-->
Each of these Products has its own release cycle. For example, a new version of the Frameworks is released every month. KDE also has other projects that are not part of the above Products. These can be divided into the following groups:
<!--T:25-->
* Extragear contains stable software (often applications) that have their own release cycles, separate from the above major Products.
* Playground contains software that is not yet stable.
* Review projects are waiting to move into one of the three main Products, or from Playground to Extragear.
* Unmaintained projects are no longer worked on.
* Sysadmin and Website projects are used to help manage KDE infrastructure.
</translate>
<translate>
==Getting and Building the Source== <!--T:26-->
<!--T:27-->
If you are generally familiar with getting and building open source software projects, you can follow a similar strategy for KDE Software: find the repository on [https://quickgit.kde.org/ KDE QuickGit], clone it and [[Special:myLanguage/Development/CMake#Building_a_project_with_CMake|build it like any other CMake project]]. However, KDE has a lot of interdependent projects, and you can end up spending a lot of time building the dependencies and dependencies-of-dependencies of the project you actually want to contribute to.
<!--T:28-->
The approach we will present here is to use a tool that will manage building all the dependencies for you.
<!--T:29-->
First, we recommend you read about [[Special:myLanguage/KF5/Getting_Started/Source_Code|how to access the KDE source code]]. The tool we will use to build the software will fetch the source code that it needs itself, so reading this is not strictly necessary, but it will give you an overview that will help you understand what the tool is doing, as well as potentially being useful later.
<!--T:30-->
After that, you are ready to [[Special:myLanguage/KF5/Getting_Started/Build|build and install KDE Software]].
</translate>
<translate>
==Testing== <!--T:31-->
<!--T:32-->
TODO: Running unit tests, running the software.
</translate>
<translate>
==Making A Patch== <!--T:33-->
<!--T:34-->
TODO: how to find a task (junior jobs), the edit-compile-fix cycle?
<!--T:35-->
Relevant: [[Special:myLanguage/Development/Tools|Development Tools useful in developing KDE Software]].
</translate>
<translate>
==Submitting Your Change== <!--T:36-->
<!--T:37-->
TODO: Reviewboard/Phabricator
<!--T:38-->
Relevant: [[Special:myLanguage/Contribute/Send_Patches|Send Patches]]
<!--T:39-->
Maybe link to:
* [[Special:myLanguage/Contribute|Contribute]]
* [[Special:myLanguage/Contribute|Contribute]]
* [[Special:myLanguage/Contribute/Send_Patches|Send Patches]]
* [[Special:myLanguage/Contribute/Bugsquad|Bugsquad]]
* [[Special:myLanguage/Contribute/Bugsquad|Bugsquad]]
</translate>
<translate>
==Next Steps== <!--T:40-->
<!--T:41-->
TODO: keep submitting patches, get invited to get a contributor account?
</translate>


<translate>
<!--T:42-->
[[Category:Build_KDE]]
[[Category:Build_KDE]]
</translate>
</translate>

Latest revision as of 09:35, 22 May 2019

 
Proposed for Deletion
This page has been proposed for deletion for the following reason:

this stuff has all been moved to community now (mostly to Get Involved)

Other languages:
  • English
 
Under Construction
This is a new page, currently under construction!


Introduction

There are many different ways to become involved in the KDE Community, starting with simply using our software. This guide is to help you get started on the technical side of developing the software itself.

Note
If you just want to use stable KDE Software for your everyday computing needs, then you do not usually need to build KDE Software for yourself. See Getting KDE Software for information about how to get hold of the software for your system.


It is important to note that the version of KDE Software that is provided by your distribution or downloaded via an installer is not the same as the version that is being worked on by software developers. If you are using KDE CoolApp 1.2, the developers are working on the "development" version, usually called "KDE CoolApp master". This is the version that will become KDE CoolApp 1.3, or maybe 2.0. If you want to get involved in developing KDE Software, you will need to get hold of and build the development versions.

This guide will aim to show you how to build, run and help improve the development versions of KDE Software. We will primarily be looking at submitting a patch to change the software, but the information here is also useful if you want to test whether a bug still exists in the software, for example.

If you just want to get started building the code then you can skip to the build instructions, but it is recommended you first understand the background material presented here.

Getting Help

If you are looking for help in using KDE Plasma or KDE Applications then please visit the KDE UserBase.

Before you continue with this guide, it is a good idea to get on IRC. This is a realtime text communication system, and the primary "casual" communication tool for KDE developers.

You will need a way to connect to the freenode IRC network. We suggest Konversation (see the handbook for help in setting it up), although a convenient alternative if you want to get going quickly is freenode's online webchat. You will need to choose a nick (the name you appear on the network as), connect to freenode and join #kde-devel.

The other main channel for communication is the KDE mailing lists. To start with, you should subscribe to the kde-devel list (you will need to subscribe before you can send emails to the list).

For more information about getting help, see the main Getting Help page, and remember that applications often have their own IRC channels and mailing lists that can be better places to ask for help.

Be patient while waiting for a response, and try to work through the problem yourself: we aren't going to do it all for you. Working your way through and understanding why something doesn't work is a good way to learn how to do things the right way.

Development Policies

KDE Software is a very large, diverse and complex code base and the KDE Community has developed many policies and processes to make the KDE Software development process manageable, which are documented elsewhere in TechBase. As you become more involved in KDE Development, you will need to become familiar with them, as well as any policies specific to the projects you are contributing to, but for your first few patches you will not need to worry about most of them.

At this point, the main thing you need to read is the KDE Community Code of Conduct, because this is the basis for interacting with the KDE Community in general. You will also need to be willing for your code to be licensed under the one of the licenses listed in the licensing policy.

If you want to make changes to library code, especially the KDE Frameworks, reading the library code policy can help you write code that will satisfy the requirements of those projects.

KDE Projects

As mentioned above, there is a lot of KDE Software. You may already have a project in mind that you want to help with, in which case it is helpful to know where it fits in the overall structure of KDE Software. If you haven't chosen a specific project, knowing this structure will help you start your search for where to begin contributing.

KDE Software is divided into three main Products:

The Frameworks are the libraries that underpin all the other KDE Software. Almost all KDE Software is built on Qt, a C++ framework and GUI toolkit. The Frameworks provide additional functionality on top of Qt, and are used both within and outside KDE.

KDE Plasma is KDE's desktop environment. Applications built on top of Qt and KDE Frameworks will integrate well with KDE Plasma, but they will also integrate with other desktops. Plasma will also attempt to help other applications (such as GTK-based ones) integrate with it.

Most other KDE projects are applications that come under the KDE Applications umbrella. This contains several coherent groups, such as KDE Education, KDE Games, the Calligra Suite and the Kontact Suite.

Each of these Products has its own release cycle. For example, a new version of the Frameworks is released every month. KDE also has other projects that are not part of the above Products. These can be divided into the following groups:

  • Extragear contains stable software (often applications) that have their own release cycles, separate from the above major Products.
  • Playground contains software that is not yet stable.
  • Review projects are waiting to move into one of the three main Products, or from Playground to Extragear.
  • Unmaintained projects are no longer worked on.
  • Sysadmin and Website projects are used to help manage KDE infrastructure.


Getting and Building the Source

If you are generally familiar with getting and building open source software projects, you can follow a similar strategy for KDE Software: find the repository on KDE QuickGit, clone it and build it like any other CMake project. However, KDE has a lot of interdependent projects, and you can end up spending a lot of time building the dependencies and dependencies-of-dependencies of the project you actually want to contribute to.

The approach we will present here is to use a tool that will manage building all the dependencies for you.

First, we recommend you read about how to access the KDE source code. The tool we will use to build the software will fetch the source code that it needs itself, so reading this is not strictly necessary, but it will give you an overview that will help you understand what the tool is doing, as well as potentially being useful later.

After that, you are ready to build and install KDE Software.

Testing

TODO: Running unit tests, running the software.

Making A Patch

TODO: how to find a task (junior jobs), the edit-compile-fix cycle?

Relevant: Development Tools useful in developing KDE Software.

Submitting Your Change

TODO: Reviewboard/Phabricator

Relevant: Send Patches

Maybe link to:

Next Steps

TODO: keep submitting patches, get invited to get a contributor account?