Policies/Application Lifecycle: Difference between revisions

From KDE Community Wiki
m (Links and co)
(39 intermediate revisions by 23 users not shown)
Line 1: Line 1:
When you want to start a new application, you want to know where you should place it in the Subversion repository. This document describes where to go in which stage of your application.
KDE is a friendly community which hosts hundreds of projects. Any project which follows the [https://manifesto.kde.org/ KDE manifesto] and [https://community.kde.org/KDE/Vision KDE Vision] is welcome to join us.


In a diagram it all comes down to:
The term "application" is used here to mean any project hosted in KDE Git and includes programming libraries and development tools but not typically infrastructure tools or projects with other end product outputs.


[[File:App-lifecycle2.png|400px]]


[[Image:svnguidelines.png]]
= playground =
[https://projects.kde.org/api/v1/projects/playground playground] is a Git module for projects starting development
* You will need a Git write account which needs a referral from another KDE contributor, see [[Infrastructure/Get_a_Developer_Account|Get_a_Developer_Account]]
* You will need to to ask sysadmin to create a module
* Projects can start in scratch repos without asking for a repo, see [[Sysadmin/GitKdeOrgManual|Git KDE.org manual]]
* Projects can make alpha releases and can put them on [http://download.kde.org/unstable download.kde.org unstable]
* Projects can ask for translations for their master branch only


= Incubator =
Projects which started life outside of KDE are welcome to join us if you feel our community makes a good fit through the [https://community.kde.org/Incubator KDE Incubator]. A sponsor will guide you through the process and check your project complies with the needs of the KDE community


=== First stage: the start. ===
= kdereview =
The start of a new application can take place on a local disk, in a local repository or any other way. Another option is provided by KDE in the special /trunk/playground folder in the repository where everyone is free to commit his own application. You can request a SVN account at sysadmin and after that you can import your project in the subfolder of your choice.
Projects move into [https://projects.kde.org/api/v1/projects/kdereview kdereview] when they are ready to start making beta or stable releases. It allows for the KDE community to check over for minimum standards.
* You can move your project in [https://cgit.kde.org/sysadmin/repo-metadata.git/ repo-metadata], see [https://cgit.kde.org/sysadmin/repo-metadata.git/tree/README.md repo-metadata README] or file a [http://sysadmin.kde.org/tickets Sysadmin ticket asking for the move]
* See the [[ReleasingSoftware|Sanity Checklist]] for some of the elements people will review
* E-mail [https://mail.kde.org/mailman/listinfo/kde-core-devel kde-core-devel] and other relevant mailing lists with details of your project and what the expected destination is for the repo
* Make fixes to issues people bring up or provide explanation why they are not (yet) fixed
* Wait at least two weeks in kdereview
* After two months in kdereview the repo should be moved back to playground or moved to unmaintained


It is not meant as a backup area, so you should not develop your application somewhere else and only sync the changes now and then to KDE's repository.
* See [[KDEReview]] page for current status of projects (feel free to help maintain this page and push reviews forwards)


As soon as you start releasing your software and match the criteria for the next stage, you should consider moving your application folder to the next stage.  
= Releasing =
Your project is now active and can make beta or stable releases. Find the best home for your project based on contents and release process wanted.
* After two weeks in kdereview you can move it in [https://cgit.kde.org/sysadmin/repo-metadata.git/ repo-metadata], file a [http://sysadmin.kde.org/tickets Sysadmin ticket] if unsure.
* These projects should depend only on stable released software or software known it will get a stable release before the project does. It may use unstable or unreleased software only as an optional build dependency.
* Add your project to automated builds:
** Update [https://cgit.kde.org/kde-build-metadata.git/ kde-build-metadata] to add it to [https://kdesrc-build.kde.org/ kdesrc-build]
** Ping the KDE neon devs to help get it added to [https://build.neon.kde.org/ KDE neon builds]
** Ping the sysadmins to help get it added to [https://build.kde.org/ KDE CI]
* KDE Frameworks are programmer libraries
** They have [[/Frameworks/Policies|strict quality requirements]]
** Get released monthly
** Ask on [https://mail.kde.org/mailman/listinfo/kde-frameworks-devel kde-frameworks-devel] if you want to be considered for inclusion
** Version numbers are made by release person, there are no stable branches
* Plasma is a cross device work environment where trust is put on the users' capacity to best define her own workflow and preferences.
** It is typically released 3 times a year
** Projects released as part of Plasma must fit well together and be a useful part of the user's work experience.
** They would not be useful to users of other desktops.
** Version numbers and stable branches are made by release person
** Ask on [https://mail.kde.org/mailman/listinfo/plasma-devel plasma-devel] for consideration of inclusion
* KDE Applications
** Are released typically 3 times a year en-masse
** Includes a range of libraries, applications and developer tools
** External version numbers (projects often have their own internal version numbering scheme) and stable branches are made by release person
** Ask [https://mail.kde.org/mailman/listinfo/release-team release-team] or  [https://community.kde.org/Release_Team#Coordinator_List module coordinators] for inclusion
* Self Released - Many projects take care of their own release process
** Also called Extragear
** They can use whatever version number scheme they want and can release in their own timeframe
** Use [https://cgit.kde.org/releaseme.git/ releaseme] to make releases, see [https://community.kde.org/ReleasingSoftware Releasing Software]


Because playground is something like an 'experimental' area, there is only a small amount of applications that make it to the next stage. To keep the playground area accessible and a bit organized, we have created a /tag/unmaintained/[3|4]/ (/tags/unmaintained/3/ for KDE3 and /tags/unmaintained/4/ for KDE4 based applications). If you do not want to continue your application, move it to that place in the repository. If you do not know how, contact the current contactperson which is mentioned at the bottom of this document.
= Unmaintained =
If a project is no longer useful you can move it to [https://projects.kde.org/api/v1/projects/unmaintained unmaintained]. It can move here from any stage in the lifecycle.


Whenever an application has not received a commit for one complete year, you will be contacted via email to discuss if you want to continue the application or if it has died. In the latter case or when the email bounces, it will be moved to /tag/unmaintained/[3|4]/.
Consider suggesting to [[Gardening|KDE Gardening team]] to maintain it if there are still valid use cases.


This also applies to the currently no longer used /trunk/kdenonbeta area.
You can move your project in [https://cgit.kde.org/sysadmin/repo-metadata.git/ repo-metadata], see [https://cgit.kde.org/sysadmin/repo-metadata.git/tree/README.md repo-metadata README] or file a [http://sysadmin.kde.org/tickets Sysadmin ticket asking for the move]


=== Second stage: stable ===
Projects can move back to playground if they are picked up for maintenance again.
When you have made one of more releases and want to continue to develop it, the term 'playground' does no longer apply to you. That is the right time to move out of here. There are two options to move to: extragear and one of the KDE main modules. If you want to move to one of the KDE main modules, you will get released with KDE. That also means you have to respect that release schedule. The fact you want your program in KDE main modules is not enough and others have to agree is valuable to have it.
In extragear you are on your own. You make the releases whenever you want and you have to talk to the translators about your release schedule. In the future there might it might be possibile to be released together with the KDE main modules. But at this moment this is not possible.


Whatever you choose, there are some rules to follow before you are allowed to move to either location:
= Translations =
* there should be user documentation in the form a docbook
All projects with user-visible strings must have translations.
* there should be developers documentation in the form of apidox for librararies you can check this at [http://www.englishbreakfastnetwork.org/ ebn]
* there should be no krazy issues reported, again, you can check that at [http://www.englishbreakfastnetwork.org/ ebn]
* if possible, there should have been a basic usability review of your application. Usability people are hard to get, so this is not crucial.
* you should have checked for basic problems with a profiler. I hope we will get a tutorial on how to do this soon
* your application should be completely translatable


When you decide you want to move to this second stage, you move your application to /trunk/kdereview. Then you sent an announcement to '''kde-core-devel@kde.org''' that you have done that, address above issues and make clear where you want to move to (which kde main module or extragear).Extragear only requires general approval on kde-core-devel, while going into, for instance, kdepim requires approval from the kdepim community who manage that module.
Whenever moving projects between Git modules or when you make a new stable branch you must tell [https://mail.kde.org/mailman/listinfo/kde-i18n-doc kde-i18n-doc] mailing list to update the translation branches.


Then the two weeks review period starts. In those two weeks people can object to your proposal or request additional changes. When there are no objections after the two week period, you are allowed to move your application to the place you decided to go. If your intention is to move to a main module you must get approval from the module maintainer(s) who manages that module.
See [https://techbase.kde.org/Development/Tutorials/Localization/i18n i18n wiki pages].
 
If there are changes requested, you can make them while in kdereview. But only as long as you are working on those issues. If you decide to let it rest for a month for example, you should move it back to playground. When the requested changes are completed, announce it again to kde-core-devel and wait for one week for objections.
 
In no case kdereview can be a permanent place to develop your application.
 
=== Third stage: the end ===
Whenever you decide to stop developing the application and that leaves the application without developers, please announce that to kde-core-devel. If nobody stands up to take over maintainership within two weeks, the application has to be moved to the /trunk/unmaintained/[3|4]/ area as every application in the KDE main modules and in extragear needs to have a maintainer to stay there.
 
=== Translations ===
For each move in subversion, the translation files of each language need to move as well. Because this requires a complete checkout of the l10n folder and some knowledge about the structure, you can ask David Faure ('''faure@kde.org''') or Tom Albers ('''[email protected]''') to move them. Send a simple mail with the information required to do the move, for example: 'move /playground/somewhere/someapp to /kdereview/someapp'.
If you want to help out with these kinds of moves, please send a mail! You are welcome to help out.

Revision as of 13:33, 11 June 2019

KDE is a friendly community which hosts hundreds of projects. Any project which follows the KDE manifesto and KDE Vision is welcome to join us.

The term "application" is used here to mean any project hosted in KDE Git and includes programming libraries and development tools but not typically infrastructure tools or projects with other end product outputs.

playground

playground is a Git module for projects starting development

  • You will need a Git write account which needs a referral from another KDE contributor, see Get_a_Developer_Account
  • You will need to to ask sysadmin to create a module
  • Projects can start in scratch repos without asking for a repo, see Git KDE.org manual
  • Projects can make alpha releases and can put them on download.kde.org unstable
  • Projects can ask for translations for their master branch only

Incubator

Projects which started life outside of KDE are welcome to join us if you feel our community makes a good fit through the KDE Incubator. A sponsor will guide you through the process and check your project complies with the needs of the KDE community

kdereview

Projects move into kdereview when they are ready to start making beta or stable releases. It allows for the KDE community to check over for minimum standards.

  • You can move your project in repo-metadata, see repo-metadata README or file a Sysadmin ticket asking for the move
  • See the Sanity Checklist for some of the elements people will review
  • E-mail kde-core-devel and other relevant mailing lists with details of your project and what the expected destination is for the repo
  • Make fixes to issues people bring up or provide explanation why they are not (yet) fixed
  • Wait at least two weeks in kdereview
  • After two months in kdereview the repo should be moved back to playground or moved to unmaintained
  • See KDEReview page for current status of projects (feel free to help maintain this page and push reviews forwards)

Releasing

Your project is now active and can make beta or stable releases. Find the best home for your project based on contents and release process wanted.

  • After two weeks in kdereview you can move it in repo-metadata, file a Sysadmin ticket if unsure.
  • These projects should depend only on stable released software or software known it will get a stable release before the project does. It may use unstable or unreleased software only as an optional build dependency.
  • Add your project to automated builds:
  • KDE Frameworks are programmer libraries
  • Plasma is a cross device work environment where trust is put on the users' capacity to best define her own workflow and preferences.
    • It is typically released 3 times a year
    • Projects released as part of Plasma must fit well together and be a useful part of the user's work experience.
    • They would not be useful to users of other desktops.
    • Version numbers and stable branches are made by release person
    • Ask on plasma-devel for consideration of inclusion
  • KDE Applications
    • Are released typically 3 times a year en-masse
    • Includes a range of libraries, applications and developer tools
    • External version numbers (projects often have their own internal version numbering scheme) and stable branches are made by release person
    • Ask release-team or module coordinators for inclusion
  • Self Released - Many projects take care of their own release process
    • Also called Extragear
    • They can use whatever version number scheme they want and can release in their own timeframe
    • Use releaseme to make releases, see Releasing Software

Unmaintained

If a project is no longer useful you can move it to unmaintained. It can move here from any stage in the lifecycle.

Consider suggesting to KDE Gardening team to maintain it if there are still valid use cases.

You can move your project in repo-metadata, see repo-metadata README or file a Sysadmin ticket asking for the move

Projects can move back to playground if they are picked up for maintenance again.

Translations

All projects with user-visible strings must have translations.

Whenever moving projects between Git modules or when you make a new stable branch you must tell kde-i18n-doc mailing list to update the translation branches.

See i18n wiki pages.