Difference between revisions of "Development/Software Engineering Framework"

Jump to: navigation, search
(Documentation)
m (Reverted edits by Ipodsoft (talk) to last revision by AnneW)
(31 intermediate revisions by 16 users not shown)
Line 1: Line 1:
This page is intended to be a summary of the tools used by the KDE
+
 
project for Software Engineering tasks, i.e. everything around coding work. This includes bugfixing, review, testing, documentation, requirements etc.
+
 
 +
This page is intended to be a summary of the tools and processes used by the KDE
 +
project for Software Engineering tasks, i.e. everything around coding
 +
work. This includes bugfixing, review, testing, documentation,
 +
requirements etc.
  
 
The current tool used by KDE should be listed along with the extent of
 
The current tool used by KDE should be listed along with the extent of
Line 10: Line 14:
 
| name=Source Control
 
| name=Source Control
 
| currentState=
 
| currentState=
[http://websvn.kde.org/ Subversion 1.4] is used for source control management in KDE.
+
* [http://websvn.kde.org/ Subversion] (Moving to Git)
 +
* [https://projects.kde.org/ KDE Projects]: Git repository browser.
 +
* [http://quickgit.kde.org/ KDE QuickGit]: Git source code browser.  
 
| people=
 
| people=
[http://wire.dattitu.de/authors/2-Dirk Dirk Muller] and the kde sysadmin team maintain the KDE SVN servers.
+
The kde sysadmin team:
| futureWork=
+
* [http://wire.dattitu.de/authors/2-Dirk Dirk Müller]
There is interest in migrating to a distributed source control management tool, such as GIT. Discussion of this is taking place on the
+
* [http://www.kdab.net/~dfaure/ David Faure]
[http://mail.kde.org/pipermail/kde-scm-interest kde-scm-interest]
+
| getInvolved=
mailing list.
+
* {{KDEML|kde-scm-interest}}
| altTools=
+
* [http://git.or.cz/ git]
+
* [http://bazaar-vcs.org/ bazaar]
+
* [http://www.selenic.com/mercurial/ mercurial]
+
 
}}
 
}}
  
 +
Subversion is currently used for source control management in KDE on
 +
a server hosted in Frankfurt. A separate server is used for access to
 +
the read-only mirror anonsvn.kde.org.
 +
 +
There is begun migrating to Git, see [[Projects/MovetoGit|Move to Git]]. A guide to KDE Git infrastructure can be found on the [http://community.kde.org/Sysadmin/GitKdeOrgManual Git.kde.org Manual].
  
 
{{SEFBox
 
{{SEFBox
 
| name=Build System
 
| name=Build System
 
| currentState=
 
| currentState=
* [http://www.cmake.org/ CMake] is the current KDE build tool.
+
* [http://www.cmake.org/ CMake]
 +
* [http://api.kde.org/cmake/modules.html Custom CMake module documentation]
 +
| getInvolved=
 +
* {{KDEML|kde-buildsystem}}
 
| people=
 
| people=
 
* [http://www.kdedevelopers.org/blog/531 Alexander Neundorf]
 
* [http://www.kdedevelopers.org/blog/531 Alexander Neundorf]
 
}}
 
}}
  
 +
CMake is the build tool currently used by KDE. It is Free Software
 +
developed by [http://www.kitware.com/ kitware inc] and available on
 +
multiple platforms supported by KDE.
 +
 +
This tool was chosen as the buildsystem for the KDE SC 4 series, and there
 +
are no plans currently to migrate away from it.
  
 
{{SEFBox
 
{{SEFBox
 
| name=Identifier search
 
| name=Identifier search
 
| currentState=
 
| currentState=
http://lxr.kde.org is used for searching for existing use of classes in KDE.
+
http://lxr.kde.org
 
| people=
 
| people=
* sysadmin@kde.org
+
The kde sysadmin team:
 +
* [http://wire.dattitu.de/authors/2-Dirk Dirk Müller]
 +
* [http://www.kdab.net/~dfaure/ David Faure]
 
}}
 
}}
  
 +
[http://en.wikipedia.org/wiki/LXR_Cross_Referencer LXR] indexes classes and methods used in KDE. This can be useful for finding examples of how to use a class, and finding all uses of a class while refactoring or updating API.
  
 
== Review ==
 
== Review ==
Line 46: Line 65:
 
| name=Patch review (pre commit)
 
| name=Patch review (pre commit)
 
| currentState=
 
| currentState=
* [http://reviewboard.vidsolbach.de/ Review-board] used by plasma project. In KDE in general this process does not take place, except for some specific patches which may be sent to the relevant mailing list.
+
 
* trunk/kdereview is used to review major new features and new applications prior to inclusion in KDE trunk.
+
* [https://projects.kde.org/projects/kdereview KDE Review Module]
 +
* [[Development/Review_Board|KDE Review Board]]
 
| people=
 
| people=
David Solbach and the kde sysadmin team maintain the Plasma review-board installation.
+
| getInvolved=
| futureWork=
+
* {{KDEML|kde-core-devel}}: Discuss KDE patch review and tools
Review-board may be suitable for adoption by more of the KDE project, or by individual modules.
+
| altTools=
+
* Launchpad.net offers bug tracking via bugs.launchpad.net
+
 
}}
 
}}
  
 +
In general KDE does not have a formal patch review policy for individual
 +
patches. Some patches do get reviewed prior to committing to svn by the
 +
relevant mailing lists or on the Review Board. This is the case for particularly large patches or patches by new developers.
 +
 +
As an official policy kdereview is used to review new applications and
 +
new classes for kdelibs prior to inclusion in KDE trunk. See [[Policies/Application_Lifecycle#Stage_2:_Stable|Application Lifecycle]] for some more details.
 +
 +
A drawback of this system is that not all reviewers report that they have reviewed the new content. It may make sense to have a checklist for reviewers to use, eg,
 +
 +
* All new classes documented [x]
 +
* Private classes and d-pointers used where appropriate [x]
 +
* Passes all krazy checks [ ]
 +
* No obvious security concerns [ ]
 +
* Designed well/maintainable [ ]
 +
* etc...
 +
 +
This was discussed to some extent [http://thread.gmane.org/gmane.comp.kde.devel.core/54213 here], but has not yet been refined into a techbase page.
  
 
{{SEFBox
 
{{SEFBox
 
| name=Commit review (after commit)
 
| name=Commit review (after commit)
 
| currentState=
 
| currentState=
* [https://mail.kde.org/mailman/listinfo/kde-commits kde-commits] mailing list records all commits to KDE svn.
+
* {{KDEML|kde-commits}} mailing list records all commits to KDE svn.
* The [http://commit-filter.org commit filter] is used to filter relevant commits based on path of the commit. This is used by several projects to forward commits to the relevant mailing list.
+
* The [http://commitfilter.kde.org/ CommitFilter] is used to filter relevant commits based on path of the commit.
 +
* SVN <tt>CCMAIL:</tt> feature used to notify relevant mailing lists or individuals of specific commits.
 +
* SVN <tt>BUG:</tt> feature used to close bugs, and also notifies all bug subscribers of the commit.
 +
* SVN <tt>CCBUG:</tt> feature used to notify closed bugs of updates. Commonly used when porting fixes between branches. Also notifies all bug subscribers of the commit.
 +
| getInvolved=
 +
* {{KDEML|kde-commits}}
 
| altTools=
 
| altTools=
 
* Unknown
 
* Unknown
 
}}
 
}}
 +
 +
The commit filter is used by several projects to forward all commits to the relevant mailing list.
  
  
Line 70: Line 111:
 
| name=Design Review
 
| name=Design Review
 
| currentState=
 
| currentState=
Design review takes place on mailing lists/wikis and in face-to-face/BOF sessions at conferences and sprints.
+
Design review takes place on
 +
* mailing lists
 +
* project wikis
 +
* face-to-face/BOF sessions and sprints
 +
* kdereview
 +
| getInvolved=
 +
* {{KDEML|kde-core-devel}} is used to announce new additions to kdereview.
 
}}
 
}}
 +
 +
KDE does not have an offical design review process. Some design review takes place as part of the kdereview process. It may be possible to further formalise this or encourage design documentation.
  
 
== Documentation ==
 
== Documentation ==
Line 78: Line 127:
 
| name=Technical documentation
 
| name=Technical documentation
 
| currentState=
 
| currentState=
techbase.kde.org is a mediawiki powered site used for collaborating on technical tasks such as tutorials, schedules, and project information.
+
* http://techbase.kde.org
 +
* http://wiki.koffice.org
 +
| getInvolved=
 +
* {{KDEML|kde-www}}
 
| people=
 
| people=
* [[User:Danimo|Danimo]] is the mediawiki admin for techbase.kde.org.
+
* [[User:Danimo|Danimo]] is the MediaWiki admin for techbase.kde.org.
 
| futureWork=
 
| futureWork=
* More [http://daniel.molkentin.de/blog/archives/116-KDE-TechBase-in-Need-of-Admins.html sysops for techbase] perhaps?
 
 
}}
 
}}
  
 +
techbase.kde.org is a [http://www.mediawiki.org MediaWiki] powered site used for collaborating on technical tasks such as tutorials, schedules, and project information.
  
 
{{SEFBox
 
{{SEFBox
 
| name=API documentation
 
| name=API documentation
 
| currentState=
 
| currentState=
doxygen is used to generate api documentation from documentation strings in code. It is generated nightly and hosted on http://api.kde.org.
+
* [http://www.stack.nl/~dimitri/doxygen/ Doxygen] is used to generate api documentation from documentation strings in code.
 +
| getInvolved=
 +
* [[Development/Tutorials/API_Documentation|APIDOX tutorials]] Make KDE API docs better.
 
| people=
 
| people=
 
* [http://www.kdedevelopers.org/blog/1451 Allen Winter] administers api.kde.org.
 
* [http://www.kdedevelopers.org/blog/1451 Allen Winter] administers api.kde.org.
 +
| altTools=
 +
* [http://labs.trolltech.com/blogs/2008/06/20/introducing-doxygen2qthelp-create-qch-files-from-doxygen-finally/ doxygen2qthelp] used by trolltech to create qt documentation.
 
}}
 
}}
  
 +
KDE API documentation is generated nightly and hosted on http://api.kde.org. It is also possible to generate the same documentation locally for use in an IDE for example.
 +
 +
It is possible to create [http://www.kdedevelopers.org/node/3010 man pages] and [http://thread.gmane.org/gmane.comp.kde.devel.core/55578 qthelp documentation] from kde sources.
  
 
{{SEFBox
 
{{SEFBox
 
| name=User documentation
 
| name=User documentation
 
| currentState=
 
| currentState=
meinproc is used to generate user documentation from module doc/ folders and is hosted on http://docs.kde.org.
+
* http://userbase.kde.org
 +
* [http://i18n.kde.org/docs/doc-primer/check-docs.html meinproc] is used to generate user documentation.
 +
* {{KDEML|kde-docbook}} Records all SVN commits with the <tt>GUI</tt> magic word.
 +
| getInvolved=
 +
* http://userbase.kde.org Create tutorials and tips.
 +
* {{KDEML|kde-doc-english}} Used to coordinate user documentation.
 +
* {{KDEML|kde-docbook}} Help update documentation after GUI changes.
 
}}
 
}}
  
== Testing and Quality ==
+
User documentation is generated from module doc/ folders and hosted on http://docs.kde.org.
  
 +
meinproc is a KDE tool (written by Stephen Kulow which uses libxslt to transform docbook into (bzipped) html. At runtime kio_help opens that bzipped html and displays it to the user in khelpcenter.
 +
 +
http://userbase.kde.org is intended to be the primary source of user documentation on the web. Content will possibly be packaged for offline use in the future.
 +
 +
== Testing and Quality ==
 
{{SEFBox
 
{{SEFBox
 
| name=Bug tracking
 
| name=Bug tracking
 
| currentState=
 
| currentState=
Bug tracking in KDE is managed using [http://bugs.kde.org Bugzilla 2.x].
+
* [http://bugs.kde.org/ Bugzilla 3.0.x].
 +
* KBugBuster
 
| people=
 
| people=
[http://mattr.info:8080/blog/?s=bugzilla Matt Rogers] and the kde sysadmin team maintain the KDE bugzilla installation.
+
* [http://mattr.info:8080/blog/?s=bugzilla Matt Rogers] and the KDE sysadmin team maintain the KDE bugzilla installation.
| futureWork=
+
| getInvolved=
There is work being done on a transition to Bugzilla 3.0, which provides some additional features.
+
* {{KDEML|kde-core-devel}} Discuss alternative bug trackers for KDE.
 +
* {{KDEML|kde-bugs-dist}} Records all updates on bugs.kde.org.
 +
* {{KDEML|kdelibs-bugs}} Records all updates to kdelibs bugs.
 +
* {{KDEML|konq-bugs}} Records all updates to konqueror bugs.
 +
* {{KDEML|kdevelop-bugs}} Records all updates to kdevelop bugs.
 +
* {{KDEML|amarok-bugs-dist}} Records all updates to amarok bugs.
 
| altTools=
 
| altTools=
* Launchpad.net offers bug tracking via bugs.launchpad.net
+
* https://bugs.launchpad.net, [http://www.sourcecode.de/content/leonov-launchpad-desktop-client-first-coming Leonev]
 +
* [http://trac.edgewall.org/ trac]
 +
* [http://www.redmine.org/ Redmine] - kind of "Trac on Rails"
 
}}
 
}}
  
 +
Bug tracking in KDE currently is managed using Bugzilla 3.0. Work was recently merged on a transition to Bugzilla 3.0 from Bugzilla 2.16.  There is still cleanup work going on but most features of the previous Bugzilla installation already work.
 +
 +
Bugzilla can be difficult to use and daunting to newbies.
  
 
{{SEFBox
 
{{SEFBox
 
| name=Static code analysis
 
| name=Static code analysis
 
| currentState=
 
| currentState=
[http://www.englishbreakfastnetwork.org/krazy/ Krazy] hosted at EnglishBreakfastNetwork (EBN) is used for static code analysis.
+
* [http://www.englishbreakfastnetwork.org/krazy/ Krazy] hosted at EnglishBreakfastNetwork (EBN).
 +
* [http://www.coverity.com/ Coverity] is used to find possible sources of defects and suggested optimizations. Results are displayed per module as part of [http://ktown.kde.org/~dirk/dashboard/ Dirks Dashboard builds].
 
| people=
 
| people=
* [http://people.fruitsalad.org/adridg/bobulate/ Adriaan de Groot]  
+
* [http://people.fruitsalad.org/adridg/bobulate/ Adriaan de Groot]
* [http://www.kdedevelopers.org/blog/1451 Allen Winter]  
+
* [http://www.kdedevelopers.org/blog/1451 Allen Winter]
| futureWork=
+
| getInvolved=
Additional checks are always welcome for adding to Krazy. See http://websvn.kde.org/trunk/quality/.
+
*
 
}}
 
}}
  
 +
Additional checks are always welcome for adding to Krazy. See http://websvn.kde.org/trunk/quality/.
  
 
{{SEFBox
 
{{SEFBox
Line 132: Line 215:
 
| currentState=
 
| currentState=
 
* [http://developer.kde.org/~dirk/dashboard/ Continuous build server] reports broken builds on linux.
 
* [http://developer.kde.org/~dirk/dashboard/ Continuous build server] reports broken builds on linux.
* [http://www.cdash.org/CDash/index.php?project=kdelibs CDash build server] stores results of non-linux builds (Windows, MacOS, FreeBSD, etc) for kdelibs.
+
* [http://my.cdash.org/index.php?project=kdelibs CDash build server] stores results of Nightly builds for KDE modules.
 +
| getInvolved=
 +
* {{KDEML|kde-core-devel}} Find out how to submit test build results.
 
| people=
 
| people=
 
* [http://wire.dattitu.de/authors/2-Dirk Dirk Mueller] maintains the dashboard
 
* [http://wire.dattitu.de/authors/2-Dirk Dirk Mueller] maintains the dashboard
 +
* Bill Hoffman is involved with the CDash service provided by Kitware.
 +
* http://www.cdash.org/mailinglist.html
 
}}
 
}}
  
 +
There is interest in more build testing for KDE especially on non-linux platforms. Improvements include some standard ctest scripts that can be used to build and submit a dashboard result for kdelibs to CDash. This would be run on a cronjob for simplicity.
 +
 +
Builds are planned for the following platforms:
 +
 +
* Windows
 +
* MacOS
 +
* FreeBSD 6 (gcc)
 +
* FreeBSD 7 (gcc)
 +
* Solaris (S10, S11) on SPARC and amd64
  
 
{{SEFBox
 
{{SEFBox
Line 142: Line 238:
 
| currentState=
 
| currentState=
 
[[Development/Tutorials/Unittests|Unit tests]] may be written with the QTest framework. Tests can be run with the command '<tt>make test</tt>'.
 
[[Development/Tutorials/Unittests|Unit tests]] may be written with the QTest framework. Tests can be run with the command '<tt>make test</tt>'.
| futureWork=
+
| getInvolved=
Run the tests automatically. Possibly on EBN.
+
* [[Development/Tutorials/Unittests|Techbase Unit tests tutorial]]
 
}}
 
}}
  
 +
It may be possible run run these tests automatically possibly on EBN or on Dirks dashboard.
  
 
{{SEFBox
 
{{SEFBox
 
| name=Quality testing
 
| name=Quality testing
 
| currentState=
 
| currentState=
The early adopter/user community tests beta versions of KDE. Additionally some work is done by SQO-OSS on quality in KDE.
+
* The early adopter/user community
 +
* [http://www.sqo-oss.eu/news/coverage/sqo-oss-project-launched-with-kde SQO-OSS]
 
| people=
 
| people=
 
* [http://people.fruitsalad.org/adridg/bobulate/ Adriaan de Groot]
 
* [http://people.fruitsalad.org/adridg/bobulate/ Adriaan de Groot]
 
* [http://hemswell.lincoln.ac.uk/~padams/index.php Paul Adams]
 
* [http://hemswell.lincoln.ac.uk/~padams/index.php Paul Adams]
| futureWork=
+
| getInvolved=
It may be possible to obtain metrics such as bugs per kloc, defect injection rate etc.
+
 
}}
 
}}
  
 +
It may be possible to obtain metrics such as bugs per kloc, defect injection rate etc.
  
 
{{SEFBox
 
{{SEFBox
 
| name=Profiling and Optimizations
 
| name=Profiling and Optimizations
 
| currentState=
 
| currentState=
* [http://mail.kde.org/mailman/listinfo/kde-optimize kde-optimize] mailing list coordinates optimizations in KDE.
+
* {{KDEML|kde-optimize}} mailing list coordinates optimizations in KDE.
* Krazy also includes some optimization checks.
+
* Krazy and Coverity tools also include some optimization checks.
| futureWork=
+
* KDE macros for optimization of common algorithms.
Tutorials?
+
| getInvolved=
 +
* {{KDEML|kde-optimize}}
 +
* [http://ktown.kde.org/~dirk/dashboard/4.1/i386/kdelibs.html Coverity report for KDE libs].
 
}}
 
}}
  
 +
Tutorials may be provided in the future to help developers optimize their code.
  
 
{{SEFBox
 
{{SEFBox
Line 178: Line 279:
 
* [http://weblog.obso1337.org/ Celeste Lyn Paul]
 
* [http://weblog.obso1337.org/ Celeste Lyn Paul]
 
* [http://ellen.reitmayr.net/index.php/blog Ellen Reitmayr]
 
* [http://ellen.reitmayr.net/index.php/blog Ellen Reitmayr]
 +
| getInvolved=
 +
* {{KDEML|kde-usability}}
 +
* [[Projects/Usability/HIG|KDE Human interaction Guidelines]].
 
}}
 
}}
 
  
 
{{SEFBox
 
{{SEFBox
Line 185: Line 288:
 
| currentState=
 
| currentState=
 
* http://research.kde.org
 
* http://research.kde.org
 +
* [http://www.sqo-oss.eu/news/coverage/sqo-oss-project-launched-with-kde SQO-OSS]
 +
* http://nepomuk.kde.org/ Semantic desktop project funded by the EU.
 
| people=
 
| people=
 
* [http://people.fruitsalad.org/adridg/bobulate/ Adriaan de Groot]
 
* [http://people.fruitsalad.org/adridg/bobulate/ Adriaan de Groot]
 +
* [http://www.kdedevelopers.org/blog/2904 Sebastian Trueg] leads the kde-nepomuk project.
 +
| getInvolved=
 +
* [http://lists.semanticdesktop.org/mailman/listinfo/nepomuk-kde Nepomuk KDE mailing list]
 
}}
 
}}
 
  
 
== Marketing and Expectations ==
 
== Marketing and Expectations ==
 
 
{{SEFBox
 
{{SEFBox
 
| name=Requirements Gathering
 
| name=Requirements Gathering
Line 197: Line 303:
 
* Requirements come from user feedback on http://bugs.kde.org and from commercial interests.
 
* Requirements come from user feedback on http://bugs.kde.org and from commercial interests.
 
* Developers may do some research into requirements for applications based on User Research Profiles.
 
* Developers may do some research into requirements for applications based on User Research Profiles.
 +
| getInvolved=
 +
* http://bugs.kde.org Fill new wishlist items.
 +
* {{KDEML|kde-core-devel}} Discuss new ways for kde to gather requirements.
 
}}
 
}}
 
  
 
{{SEFBox
 
{{SEFBox
 
| name=Promotion
 
| name=Promotion
 
| currentState=
 
| currentState=
* The [https://mail.kde.org/mailman/listinfo/kde-promo KDE marketing team] manage marketing and promotion from official kde sources.
+
* The {{KDEML|kde-promo|KDE marketing team}} manage marketing and promotion from official kde sources.
 
* http://dot.kde.org is the community forum around promotional announcements.
 
* http://dot.kde.org is the community forum around promotional announcements.
 
* http://www.kde.org/announcements is the official source of promotional announcements regarding KDE.
 
* http://www.kde.org/announcements is the official source of promotional announcements regarding KDE.
 
* Design and maintenance of KDE websites is organised on the [https://mail.kde.org/mailman/listinfo/kde-www kde-www mailing list]
 
* Design and maintenance of KDE websites is organised on the [https://mail.kde.org/mailman/listinfo/kde-www kde-www mailing list]
 +
* The [http://ev.kde.org/workinggroups/mwg.php Marketing working group] coordinates several marketing efforts such as promoting planning and branding.
 +
* KDE e.v provides a booth box for conference booths containing posters, leaftlets and other information needed at a conference stand.
 
| people=
 
| people=
 
* [http://wadejolson.wordpress.com/ Wade Olsen]
 
* [http://wadejolson.wordpress.com/ Wade Olsen]
 
* [http://troy-at-kde.livejournal.com/ Troy Unrau]
 
* [http://troy-at-kde.livejournal.com/ Troy Unrau]
 
* [http://nowwhatthe.blogspot.com/ Jos Poortvliet]
 
* [http://nowwhatthe.blogspot.com/ Jos Poortvliet]
 +
| getInvolved=
 +
* {{KDEML|kde-promo}}
 +
* [http://dot.kde.org/addPostingForm Submit dot articles]
 
}}
 
}}
 
 
  
 
{{SEFBox
 
{{SEFBox
 
| name=Community management
 
| name=Community management
 
| currentState=
 
| currentState=
A community management group is being worked on.
+
* The Community Working Group helps with community advice when needed
| futureWork=
+
* [http://www.kde.org/code-of-conduct/ Code of Conduct] Based on the Ubuntu Code of Conduct, documents guidelines for acceptable behaviour within the community. Can be summarized as 'Be Excellent to Eachother'.
* Moderation on some community portals.
+
* http://community.kde.org. In development website.
* Mediation
+
| people=
* A code of conduct?
+
* Anne Willson
 +
* [http://jucato.org Juan Carlos Torres]
 +
* [http://lydiapintscher.de Lydia Pintscher]
 +
* Martin Fitzpatrick
 +
* [http://omat.nl Tom Albers]
 +
| getInvolved=
 +
* Send an e-mail to community-wg@kde.org
 
}}
 
}}
  
 +
{{SEFBox
 +
| name=Communication
 +
| currentState=
 +
Developers communicate with each other through
 +
* [http://lists.kde.org/ mailing lists]
 +
* [http://searchirc.com/irc-kde-1 IRC]
 +
* [http://planetkde.org Blogs]
 +
* Conferences
 +
Developers communicate with users though
 +
* [http://planetkde.org Blogs] to some extent (mainly early adopting users).
 +
* [http://forum.kde.org Forums] to some extent where the developer chooses to.
 +
* [http://dot.kde.org News announcements]
 +
Users communicate with each other and developers through
 +
* [http://forum.kde.org Forums]
 +
* {{KDEML|kde}} mailing list
 +
* #kde irc channel.
 +
| people=
 +
* [http://c133.org/blog/ Chris Lee] administers planetkde.org
 +
| getInvolved=
 +
* Add your blog to planet kde if you contribute to KDE in some way, including development, testing, advocacy, translation, documentation etc.
 +
}}
  
 
== Release ==
 
== Release ==
 
 
{{SEFBox
 
{{SEFBox
 
| name=Release Scheduling
 
| name=Release Scheduling
 
| currentState=
 
| currentState=
The [https://mail.kde.org/mailman/listinfo/kde-release-team release team mailing list] is used for release planning, and release plans maintained on techbase at [[Schedules]].
+
* Maintained at [[Schedules]].
 
| people=
 
| people=
[https://mail.kde.org/mailman/listinfo/release-team The KDE release team]
+
*
 +
* [http://cyrilleberger.blogspot.com/ Cyrill Berger] - KOffice release coordinator.
 +
* [http://www.kdedevelopers.org/blog/1451 Allen Winter] - KDEPIM release coordinator.
 +
| getInvolved=
 +
* {{KDEML|release-team}}
 
}}
 
}}
 
  
 
{{SEFBox
 
{{SEFBox
 
| name=Feature planning
 
| name=Feature planning
 
| currentState=
 
| currentState=
techbase.kde.org is currently used for feature planning, specifically [[Schedules/KDE4/4.1_Feature_Plan]] etc.
+
* [[Schedules/KDE4/4.6_Feature_Plan]]
 
| people=
 
| people=
 
[https://mail.kde.org/mailman/listinfo/release-team The KDE release team]
 
[https://mail.kde.org/mailman/listinfo/release-team The KDE release team]
 
| altTools=
 
| altTools=
 
* Launchpad.net offers a blueprints system.
 
* Launchpad.net offers a blueprints system.
 +
* [http://wiki.pentaho.com/display/OpenScrum/Home Scrum in Open Source Projects]
 +
| getInvolved=
 +
* {{KDEML|kde-core-devel}} - Discuss the KDE approach to feature planning.
 
}}
 
}}
  
 +
Currently techbase is used for feature planning but there may be better alternatives.
  
== Theming and Translations ==
+
{{SEFBox
 +
| name=Downstream packagers and contributions
 +
| currentState=
 +
* Many distributions package KDE3 & KDE4.
 +
| getInvolved=
 +
* {{KDEML|kde-packagers}} - Private mailing list for packagers. Includes information relating to security releases.
 +
}}
  
 +
== Theming and Translations ==
 
{{SEFBox
 
{{SEFBox
 
| name=Artwork
 
| name=Artwork
 
| currentState=
 
| currentState=
The [http://mail.kde.org/mailman/listinfo/kde-artists kde-artists team] creates offical artwork for KDE. Additional contributed artwork is available on http://kde-look.org.
+
* The {{KDEML|kde-artists|kde-artists team}} creates offical artwork for KDE.
 +
* [http://kde-look.org kde-look.org] for non-offical artwork.
 
| people=
 
| people=
 
* [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro]
 
* [http://pinheiro-kde.blogspot.com/ Nuno Pinheiro]
| futureWork=
+
| getInvolved=
Tutorials on how to create artwork for kde?
+
* {{KDEML|kde-artists}}
 
}}
 
}}
  
 +
Additional contributed artwork is available on kde-look.org.
 +
 +
There may be a need to create tutorials on how to create artwork for kde.
  
 
{{SEFBox
 
{{SEFBox
 
| name=Translation
 
| name=Translation
 
| currentState=
 
| currentState=
* http://i18n.kde.org/ is used for level of completion of translations in KDE.
+
* http://l10n.kde.org/ is used for level of completion of translations in KDE.
 
* GNU gettext is used for translation in KDE.
 
* GNU gettext is used for translation in KDE.
 
* <tt>.po</tt> files are edited directly in KDE svn to update translations.
 
* <tt>.po</tt> files are edited directly in KDE svn to update translations.
* A kde4 based translation client (lokalize) is being developed in kdesdk/.
+
* A kde4 based translation client ([http://userbase.kde.org/Lokalize Lokalize]) is being developed in kdesdk/.
 
* Krazy includes sanity checks/plurals checking for translation.
 
* Krazy includes sanity checks/plurals checking for translation.
 
| altTools=
 
| altTools=
launchpad.net features a web-based tool called rosetta, which allows for easier fly-by translations.
+
launchpad.net features a web-based tool called rosetta, which allows for easier fly-by translations. This is considered not to be useful as fly-by translators often do not follow guidelines or consistency rules when translating.
 +
| getInvolved=
 +
* {{KDEML|kde-i18n-doc}}
 +
}}
 +
 
 +
== Legal And Support ==
 +
{{SEFBox
 +
| name=KDE e.v. - Representative Legal Entity
 +
| currentState=
 +
* [http://ev.kde.org KDE e.v.] is a registered non-profit organization that represents the KDE Project in legal and financial matters.
 +
| getInvolved=
 +
* [http://ev.kde.org/getinvolved/ KDE e.v. membership]
 +
* [http://jointhegame.kde.org/ Join the Game]
 +
}}
 +
 
 +
{{SEFBox
 +
| name=Resolving licencing issues.
 +
| currentState=
 +
* A [http://ev.kde.org/announcements/2008-08-22-fsfe-welcomes-fla.php Fiduicary Licence Agreement] is available, which will allow KDE developers to optionally assign copyright of their contributions to KDE e.v. This would allow easier relicencing of contributors content in the event that KDE needs to move to another licence. It also allows the e.v. to more easily represent the work in the unlikely event of a court dispute involving KDE code.
 +
* [[Policies/Licensing_Policy|KDE licencing policy]] allows commercial and non-commercial development and proprietry and non-proprietry development.
 +
* [[Projects/KDE_Relicensing|Projects/KDE_Relicensing]] Effort to relicence KDE code to use version 3 of GNU GPL and LGPL. This work is unfinished but not still being performed. Many contributors are no longer contactable.
 +
}}
 +
 
 +
{{SEFBox
 +
| name=Sponsorship and Patronship
 +
| currentState=
 +
* [http://ev.kde.org/supporting-members.php Supporters of KDE] contribute sponsorship money to KDE e.v.
 +
| getInvolved=
 +
* [http://ev.kde.org/getinvolved/supporting-members.php Become a supporting member]
 
}}
 
}}

Revision as of 18:13, 4 November 2012


This page is intended to be a summary of the tools and processes used by the KDE project for Software Engineering tasks, i.e. everything around coding work. This includes bugfixing, review, testing, documentation, requirements etc.

The current tool used by KDE should be listed along with the extent of its use, known alternatives, and advantages/disadvantages.


Contents

Development Tools

Source Control

Source Control
Current State   People  

The kde sysadmin team:

Get Involved   Alternative Tools  

n/a


Subversion is currently used for source control management in KDE on a server hosted in Frankfurt. A separate server is used for access to the read-only mirror anonsvn.kde.org.

There is begun migrating to Git, see Move to Git. A guide to KDE Git infrastructure can be found on the Git.kde.org Manual.

Build System

Build System
Current State   People  
Get Involved   Alternative Tools  

n/a


CMake is the build tool currently used by KDE. It is Free Software developed by kitware inc and available on multiple platforms supported by KDE.

This tool was chosen as the buildsystem for the KDE SC 4 series, and there are no plans currently to migrate away from it.

Identifier search

Identifier search
Current State   People  

http://lxr.kde.org

The kde sysadmin team:

Get Involved   Alternative Tools  

n/a

n/a


LXR indexes classes and methods used in KDE. This can be useful for finding examples of how to use a class, and finding all uses of a class while refactoring or updating API.

Review

Patch review (pre commit)

Patch review (pre commit)
Current State   People  
Get Involved   Alternative Tools  

n/a


In general KDE does not have a formal patch review policy for individual patches. Some patches do get reviewed prior to committing to svn by the relevant mailing lists or on the Review Board. This is the case for particularly large patches or patches by new developers.

As an official policy kdereview is used to review new applications and new classes for kdelibs prior to inclusion in KDE trunk. See Application Lifecycle for some more details.

A drawback of this system is that not all reviewers report that they have reviewed the new content. It may make sense to have a checklist for reviewers to use, eg,

  • All new classes documented [x]
  • Private classes and d-pointers used where appropriate [x]
  • Passes all krazy checks [ ]
  • No obvious security concerns [ ]
  • Designed well/maintainable [ ]
  • etc...

This was discussed to some extent here, but has not yet been refined into a techbase page.

Commit review (after commit)

Commit review (after commit)
Current State   People  
  • Action mail generic.svg kde-commits mailing list records all commits to KDE svn.
  • The CommitFilter is used to filter relevant commits based on path of the commit.
  • SVN CCMAIL: feature used to notify relevant mailing lists or individuals of specific commits.
  • SVN BUG: feature used to close bugs, and also notifies all bug subscribers of the commit.
  • SVN CCBUG: feature used to notify closed bugs of updates. Commonly used when porting fixes between branches. Also notifies all bug subscribers of the commit.

Unknown

Get Involved   Alternative Tools  
  • Unknown


The commit filter is used by several projects to forward all commits to the relevant mailing list.


Design Review

Design Review
Current State   People  

Design review takes place on

  • mailing lists
  • project wikis
  • face-to-face/BOF sessions and sprints
  • kdereview

Unknown

Get Involved   Alternative Tools  

n/a


KDE does not have an offical design review process. Some design review takes place as part of the kdereview process. It may be possible to further formalise this or encourage design documentation.

Documentation

Technical documentation

Technical documentation
Current State   People  
  • Danimo is the MediaWiki admin for techbase.kde.org.
Get Involved   Alternative Tools  

n/a


techbase.kde.org is a MediaWiki powered site used for collaborating on technical tasks such as tutorials, schedules, and project information.

API documentation

API documentation
Current State   People  
  • Doxygen is used to generate api documentation from documentation strings in code.
Get Involved   Alternative Tools  


KDE API documentation is generated nightly and hosted on http://api.kde.org. It is also possible to generate the same documentation locally for use in an IDE for example.

It is possible to create man pages and qthelp documentation from kde sources.

User documentation

User documentation
Current State   People  

Unknown

Get Involved   Alternative Tools  

n/a


User documentation is generated from module doc/ folders and hosted on http://docs.kde.org.

meinproc is a KDE tool (written by Stephen Kulow which uses libxslt to transform docbook into (bzipped) html. At runtime kio_help opens that bzipped html and displays it to the user in khelpcenter.

http://userbase.kde.org is intended to be the primary source of user documentation on the web. Content will possibly be packaged for offline use in the future.

Testing and Quality

Bug tracking

Bug tracking
Current State   People  
  • Matt Rogers and the KDE sysadmin team maintain the KDE bugzilla installation.
Get Involved   Alternative Tools  


Bug tracking in KDE currently is managed using Bugzilla 3.0. Work was recently merged on a transition to Bugzilla 3.0 from Bugzilla 2.16. There is still cleanup work going on but most features of the previous Bugzilla installation already work.

Bugzilla can be difficult to use and daunting to newbies.

Static code analysis

Static code analysis
Current State   People  
  • Krazy hosted at EnglishBreakfastNetwork (EBN).
  • Coverity is used to find possible sources of defects and suggested optimizations. Results are displayed per module as part of Dirks Dashboard builds.
Get Involved   Alternative Tools  

n/a


Additional checks are always welcome for adding to Krazy. See http://websvn.kde.org/trunk/quality/.

Build testing

Build testing
Current State   People  
Get Involved   Alternative Tools  

n/a


There is interest in more build testing for KDE especially on non-linux platforms. Improvements include some standard ctest scripts that can be used to build and submit a dashboard result for kdelibs to CDash. This would be run on a cronjob for simplicity.

Builds are planned for the following platforms:

  • Windows
  • MacOS
  • FreeBSD 6 (gcc)
  • FreeBSD 7 (gcc)
  • Solaris (S10, S11) on SPARC and amd64

Unit testing

Unit testing
Current State   People  

Unit tests may be written with the QTest framework. Tests can be run with the command 'make test'.

Unknown

Get Involved   Alternative Tools  

n/a


It may be possible run run these tests automatically possibly on EBN or on Dirks dashboard.

Quality testing

Quality testing
Current State   People  
  • The early adopter/user community
  • SQO-OSS
Get Involved   Alternative Tools  

n/a


It may be possible to obtain metrics such as bugs per kloc, defect injection rate etc.

Profiling and Optimizations

Profiling and Optimizations
Current State   People  
  • Action mail generic.svg kde-optimize mailing list coordinates optimizations in KDE.
  • Krazy and Coverity tools also include some optimization checks.
  • KDE macros for optimization of common algorithms.

Unknown

Get Involved   Alternative Tools  

n/a


Tutorials may be provided in the future to help developers optimize their code.

Accessibility and Usability

Accessibility and Usability
Current State   People  
Get Involved   Alternative Tools  

n/a


Research

Research
Current State   People  
Get Involved   Alternative Tools  

n/a


Marketing and Expectations

Requirements Gathering

Requirements Gathering
Current State   People  
  • Requirements come from user feedback on http://bugs.kde.org and from commercial interests.
  • Developers may do some research into requirements for applications based on User Research Profiles.

Unknown

Get Involved   Alternative Tools  

n/a


Promotion

Promotion
Current State   People  
  • The Action mail generic.svg KDE marketing team manage marketing and promotion from official kde sources.
  • http://dot.kde.org is the community forum around promotional announcements.
  • http://www.kde.org/announcements is the official source of promotional announcements regarding KDE.
  • Design and maintenance of KDE websites is organised on the kde-www mailing list
  • The Marketing working group coordinates several marketing efforts such as promoting planning and branding.
  • KDE e.v provides a booth box for conference booths containing posters, leaftlets and other information needed at a conference stand.
Get Involved   Alternative Tools  

n/a


Community management

Community management
Current State   People  
  • The Community Working Group helps with community advice when needed
  • Code of Conduct Based on the Ubuntu Code of Conduct, documents guidelines for acceptable behaviour within the community. Can be summarized as 'Be Excellent to Eachother'.
  • http://community.kde.org. In development website.
Get Involved   Alternative Tools  
  • Send an e-mail to community-wg@kde.org

n/a


Communication

Communication
Current State   People  

Developers communicate with each other through

Developers communicate with users though

Users communicate with each other and developers through

Get Involved   Alternative Tools  
  • Add your blog to planet kde if you contribute to KDE in some way, including development, testing, advocacy, translation, documentation etc.

n/a


Release

Release Scheduling

Release Scheduling
Current State   People  
Get Involved   Alternative Tools  

n/a


Feature planning

Feature planning
Current State   People  

The KDE release team

Get Involved   Alternative Tools  


Currently techbase is used for feature planning but there may be better alternatives.

Downstream packagers and contributions

Downstream packagers and contributions
Current State   People  
  • Many distributions package KDE3 & KDE4.

Unknown

Get Involved   Alternative Tools  
  • Action mail generic.svg kde-packagers - Private mailing list for packagers. Includes information relating to security releases.

n/a


Theming and Translations

Artwork

Artwork
Current State   People  
Get Involved   Alternative Tools  

n/a


Additional contributed artwork is available on kde-look.org.

There may be a need to create tutorials on how to create artwork for kde.

Translation

Translation
Current State   People  
  • http://l10n.kde.org/ is used for level of completion of translations in KDE.
  • GNU gettext is used for translation in KDE.
  • .po files are edited directly in KDE svn to update translations.
  • A kde4 based translation client (Lokalize) is being developed in kdesdk/.
  • Krazy includes sanity checks/plurals checking for translation.

Unknown

Get Involved   Alternative Tools  

launchpad.net features a web-based tool called rosetta, which allows for easier fly-by translations. This is considered not to be useful as fly-by translators often do not follow guidelines or consistency rules when translating.


Legal And Support

KDE e.v. - Representative Legal Entity

KDE e.v. - Representative Legal Entity
Current State   People  
  • KDE e.v. is a registered non-profit organization that represents the KDE Project in legal and financial matters.

Unknown

Get Involved   Alternative Tools  

n/a


Resolving licencing issues.

Resolving licencing issues.
Current State   People  
  • A Fiduicary Licence Agreement is available, which will allow KDE developers to optionally assign copyright of their contributions to KDE e.v. This would allow easier relicencing of contributors content in the event that KDE needs to move to another licence. It also allows the e.v. to more easily represent the work in the unlikely event of a court dispute involving KDE code.
  • KDE licencing policy allows commercial and non-commercial development and proprietry and non-proprietry development.
  • Projects/KDE_Relicensing Effort to relicence KDE code to use version 3 of GNU GPL and LGPL. This work is unfinished but not still being performed. Many contributors are no longer contactable.

Unknown

Get Involved   Alternative Tools  

n/a

n/a


Sponsorship and Patronship

Sponsorship and Patronship
Current State   People  

Unknown

Get Involved   Alternative Tools  

n/a



KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal