Export translations SettingsGroupCategory:PhononContribute/List of KDE ModulesDevelopmentDevelopment/FAQs/General FAQDevelopment/FAQs/Technical FAQDevelopment/KDevelop-PG-Qt IntroductionDevelopment/ToolsDevelopment/TutorialsDevelopment/Tutorials/CommandLineArgumentsDevelopment/Tutorials/Common Programming MistakesDevelopment/Tutorials/First programDevelopment/Tutorials/First program/KDE4Development/Tutorials/First program/KF5Development/Tutorials/KDE3/Qt Designer and KDevelop 3.0 for BeginnersDevelopment/Tutorials/Metadata/Nepomuk/TipsAndTricksDevelopment/Tutorials/Physical SimulationDevelopment/Tutorials/Qt4 Ruby TutorialDevelopment/Tutorials/Qt4 Ruby Tutorial/Chapter 01Development/Tutorials/Qt4 Ruby Tutorial/Chapter 04Development/Tutorials/Qt4 Ruby Tutorial/Chapter 05Development/Tutorials/Qt4 Ruby Tutorial/Chapter 06Development/Tutorials/Qt4 Ruby Tutorial/Chapter 07Development/Tutorials/Qt4 Ruby Tutorial/Chapter 08Development/Tutorials/Qt4 Ruby Tutorial/Chapter 09Development/Tutorials/Qt4 Ruby Tutorial/Chapter 10Development/Tutorials/Qt4 Ruby Tutorial/Chapter 11Development/Tutorials/Qt4 Ruby Tutorial/Chapter 12Development/Tutorials/Qt4 Ruby Tutorial/Chapter 13Development/Tutorials/Qt4 Ruby Tutorial/Chapter 14Development/Tutorials/Qt4 Ruby Tutorial/Chapter 2Development/Tutorials/Qt4 Ruby Tutorial/Chapter 3Development/Tutorials/Saving and loadingDevelopment/Tutorials/Setting UpDevelopment/Tutorials/Using ActionsDevelopment/Tutorials/Using KXmlGuiWindowDocumentation PrimerEdit MarkupGetting StartedHelp:ContentsHelp:ContributeHow To Convert a UserBase Manual to DocbookKDE FrameworksKDE Frameworks/Getting StartedKDE Frameworks/Getting Started/Source CodeKDE TechBase:AboutKDE TechBase:ContributorsKDE TechBase:General disclaimerKDE TechBase:Privacy policyOff-line TranslationProjects/Calligra/Plugin TutorialsToolboxTranslate a PageTranslation WorkflowTypographical GuidelinesUser:NeverendingoWelcome to KDE TechBaseLanguageaa - Afarab - Abkhazianabs - Ambonese Malayace - Achineseady - Adygheady-cyrl - Adyghe (Cyrillic script)aeb - Tunisian Arabicaeb-arab - Tunisian Arabic (Arabic script)aeb-latn - Tunisian Arabic (Latin script)af - Afrikaansak - Akanaln - Gheg Albanianalt - Southern Altaiam - Amharicami - Amisan - Aragoneseang - Old Englishanp - Angikaar - Arabicarc - Aramaicarn - Mapuchearq - Algerian Arabicary - Moroccan Arabicarz - Egyptian Arabicas - Assamesease - American Sign Languageast - Asturianatj - Atikamekwav - Avaricavk - Kotavaawa - Awadhiay - Aymaraaz - Azerbaijaniazb - South Azerbaijaniba - Bashkirban - Balinesebar - Bavarianbbc - Batak Tobabbc-latn - Batak Toba (Latin script)bcc - Southern Balochibcl - Central Bikolbe - Belarusianbe-tarask - Belarusian (Taraškievica orthography)bg - Bulgarianbgn - Western Balochibh - Bhojpuribho - Bhojpuribi - Bislamabjn - Banjarbm - Bambarabn - Banglabo - Tibetanbpy - Bishnupriyabqi - Bakhtiaribr - Bretonbrh - Brahuibs - Bosnianbtm - Batak Mandailingbto - Iriga Bicolanobug - Buginesebxr - Russia Buriatca - Catalancbk-zam - Chavacanocdo - Min Dong Chinesece - Chechenceb - Cebuanoch - Chamorrocho - Choctawchr - Cherokeechy - Cheyenneckb - Central Kurdishco - Corsicancps - Capiznoncr - Creecrh - Crimean Turkishcrh-cyrl - Crimean Tatar (Cyrillic script)crh-latn - Crimean Tatar (Latin script)cs - Czechcsb - Kashubiancu - Church Slaviccv - Chuvashcy - Welshda - Danishde - Germande-at - Austrian Germande-ch - Swiss High Germande-formal - German (formal address)din - Dinkadiq - Zazakidsb - Lower Sorbiandtp - Central Dusundty - Dotelidv - Divehidz - Dzongkhaee - Eweegl - Emilianel - Greekeml - Emiliano-Romagnoloen - Englishen-ca - Canadian Englishen-gb - British Englisheo - Esperantoes - Spanishes-419 - Latin American Spanishes-formal - español (formal)et - Estonianeu - Basqueext - Extremaduranfa - Persianff - Fulahfi - Finnishfit - Tornedalen Finnishfj - Fijianfo - Faroesefr - Frenchfrc - Cajun Frenchfrp - Arpitanfrr - Northern Frisianfur - Friulianfy - Western Frisianga - Irishgag - Gagauzgan - Gan Chinesegan-hans - Gan (Simplified)gan-hant - Gan (Traditional)gcr - Guianan Creolegd - Scottish Gaelicgl - Galicianglk - Gilakign - Guaranigom - Goan Konkanigom-deva - Goan Konkani (Devanagari script)gom-latn - Goan Konkani (Latin script)gor - Gorontalogot - Gothicgrc - Ancient Greekgsw - Swiss Germangu - Gujaratigv - Manxha - Hausahak - Hakka Chinesehaw - Hawaiianhe - Hebrewhi - Hindihif - Fiji Hindihif-latn - Fiji Hindi (Latin script)hil - Hiligaynonho - Hiri Motuhr - Croatianhrx - Hunsrikhsb - Upper Sorbianht - Haitian Creolehu - Hungarianhu-formal - magyar (formal)hy - Armenianhyw - Western Armenianhz - Hereroia - Interlinguaid - Indonesianie - Interlingueig - Igboii - Sichuan Yiik - Inupiaqike-cans - Eastern Canadian (Aboriginal syllabics)ike-latn - Eastern Canadian (Latin script)ilo - Ilokoinh - Ingushio - Idois - Icelandicit - Italianiu - Inuktitutja - Japanesejam - Jamaican Creole Englishjbo - Lojbanjut - Jutishjv - Javaneseka - Georgiankaa - Kara-Kalpakkab - Kabylekbd - Kabardiankbd-cyrl - Kabardian (Cyrillic script)kbp - Kabiyekg - Kongokhw - Khowarki - Kikuyukiu - Kirmanjkikj - Kuanyamakjp - Eastern Pwokk - Kazakhkk-arab - Kazakh (Arabic script)kk-cn - Kazakh (China)kk-cyrl - Kazakh (Cyrillic script)kk-kz - Kazakh (Kazakhstan)kk-latn - Kazakh (Latin script)kk-tr - Kazakh (Turkey)kl - Kalaallisutkm - Khmerkn - Kannadako - Koreanko-kp - Korean (North Korea)koi - Komi-Permyakkr - Kanurikrc - Karachay-Balkarkri - Kriokrj - Kinaray-akrl - Karelianks - Kashmiriks-arab - Kashmiri (Arabic script)ks-deva - Kashmiri (Devanagari script)ksh - Colognianku - Kurdishku-arab - Kurdish (Arabic script)ku-latn - Kurdish (Latin script)kum - Kumykkv - Komikw - Cornishky - Kyrgyzla - Latinlad - Ladinolb - Luxembourgishlbe - Laklez - Lezghianlfn - Lingua Franca Novalg - Gandali - Limburgishlij - Ligurianliv - Livonianlki - Lakilld - Ladinlmo - Lombardln - Lingalalo - Laoloz - Lozilrc - Northern Lurilt - Lithuanianltg - Latgalianlus - Mizoluz - Southern Lurilv - Latvianlzh - Literary Chineselzz - Lazmai - Maithilimap-bms - Basa Banyumasanmdf - Mokshamg - Malagasymh - Marshallesemhr - Eastern Marimi - Maorimin - Minangkabaumk - Macedonianml - Malayalammn - Mongolianmni - Manipurimnw - Monmo - Moldovanmr - Marathimrj - Western Marims - Malaymt - Maltesemus - Muscogeemwl - Mirandesemy - Burmesemyv - Erzyamzn - Mazanderanina - Naurunah - Nāhuatlnan - Min Nan Chinesenap - Neapolitannb - Norwegian Bokmålnds - Low Germannds-nl - Low Saxonne - Nepalinew - Newaring - Ndonganiu - Niueannl - Dutchnl-informal - Nederlands (informeel)nn - Norwegian Nynorskno - Norwegiannov - Novialnqo - N’Konrm - Normannso - Northern Sothonv - Navajony - Nyanjanys - Nyungaroc - Occitanolo - Livvi-Karelianom - Oromoor - Odiaos - Osseticpa - Punjabipag - Pangasinanpam - Pampangapap - Papiamentopcd - Picardpdc - Pennsylvania Germanpdt - Plautdietschpfl - Palatine Germanpi - Palipih - Norfuk / Pitkernpl - Polishpms - Piedmontesepnb - Western Punjabipnt - Ponticprg - Prussianps - Pashtopt - Portuguesept-br - Brazilian Portuguesequ - Quechuaqug - Chimborazo Highland Quichuargn - Romagnolrif - Riffianrm - Romanshrmy - Vlax Romanirn - Rundiro - Romanianroa-tara - Tarantinoru - Russianrue - Rusynrup - Aromanianruq - Megleno-Romanianruq-cyrl - Megleno-Romanian (Cyrillic script)ruq-latn - Megleno-Romanian (Latin script)rw - Kinyarwandasa - Sanskritsah - Sakhasat - Santalisc - Sardinianscn - Siciliansco - Scotssd - Sindhisdc - Sassarese Sardiniansdh - Southern Kurdishse - Northern Samisei - Serises - Koyraboro Sennisg - Sangosgs - Samogitiansh - Serbo-Croatianshi - Tachelhitshi-latn - Tachelhit (Latin script)shi-tfng - Tachelhit (Tifinagh script)shn - Shanshy-latn - Shawiya (Latin script)si - Sinhalasimple - Simple Englishsk - Slovakskr - Saraikiskr-arab - Saraiki (Arabic script)sl - Sloveniansli - Lower Silesiansm - Samoansma - Southern Samismn - Inari Samisn - Shonaso - Somalisq - Albaniansr - Serbiansr-ec - Serbian (Cyrillic script)sr-el - Serbian (Latin script)srn - Sranan Tongoss - Swatist - Southern Sothostq - Saterland Frisiansty - себертатарsu - Sundanesesv - Swedishsw - Swahiliszl - Silesianszy - Sakizayata - Tamiltay - Tayaltcy - Tulute - Telugutet - Tetumtg - Tajiktg-cyrl - Tajik (Cyrillic script)tg-latn - Tajik (Latin script)th - Thaiti - Tigrinyatk - Turkmentl - Tagalogtly - Talyshtn - Tswanato - Tongantpi - Tok Pisintr - Turkishtru - Turoyotrv - Tarokots - Tsongatt - Tatartt-cyrl - Tatar (Cyrillic script)tt-latn - Tatar (Latin script)tum - Tumbukatw - Twity - Tahitiantyv - Tuviniantzm - Central Atlas Tamazightudm - Udmurtug - Uyghurug-arab - Uyghur (Arabic script)ug-latn - Uyghur (Latin script)uk - Ukrainianur - Urduuz - Uzbekuz-cyrl - Uzbek (Cyrillic script)uz-latn - Uzbek (Latin script)ve - Vendavec - Venetianvep - Vepsvi - Vietnamesevls - West Flemishvmf - Main-Franconianvo - Volapükvot - Voticvro - Võrowa - Walloonwar - Waraywo - Wolofwuu - Wu Chinesexal - Kalmykxh - Xhosaxmf - Mingrelianxsy - Saisiyatyi - Yiddishyo - Yorubayue - Cantoneseza - Zhuangzea - Zeelandiczgh - Standard Moroccan Tamazightzh - Chinesezh-cn - Chinese (China)zh-hans - Simplified Chinesezh-hant - Traditional Chinesezh-hk - Chinese (Hong Kong)zh-mo - Chinese (Macau)zh-my - Chinese (Malaysia)zh-sg - Chinese (Singapore)zh-tw - Chinese (Taiwan)zu - Zuluqqq - Message documentationFormatExport for off-line translationExport in native format Fetch {{Proposed_deletion|reason=this stuff has all been moved to community now (mostly to Get Involved)}} <languages /> {{Construction|This is a rewrite of the Getting Stared pages for KF5 using kdesrc-build by John Layt}} ==Introduction== 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. {{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.}} 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 [https://techbase.kde.org/Contribute/Bugsquad 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 [[Special:myLanguage/KF5/Getting_Started/Build|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 [http://userbase.kde.org/ KDE UserBase]. 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. 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]. 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). 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. 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 [[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. 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]]. 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. ==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: * [http://api.kde.org/frameworks-api/frameworks5-apidocs/ KDE Frameworks] * [https://www.kde.org/workspaces/ KDE Plasma] * [https://www.kde.org/applications/ KDE Applications] 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. 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 [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]. 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 [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. 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 [[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. After that, you are ready to [[Special:myLanguage/KF5/Getting_Started/Build|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: [[Special:myLanguage/Development/Tools|Development Tools useful in developing KDE Software]]. ==Submitting Your Change== TODO: Reviewboard/Phabricator Relevant: [[Special:myLanguage/Contribute/Send_Patches|Send Patches]] Maybe link to: * [[Special:myLanguage/Contribute|Contribute]] * [[Special:myLanguage/Contribute/Bugsquad|Bugsquad]] ==Next Steps== TODO: keep submitting patches, get invited to get a contributor account? [[Category:Build_KDE]]