Difference between revisions of "Development/Software Engineering Framework"

Jump to: navigation, search
m (Documentation)
(Move some content outside the box to allow for wider paragraphs)
Line 1: Line 1:
 
This page is intended to be a summary of the tools used by the KDE
 
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.
+
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 12:
 
| 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 1.4]
 
| 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 Muller]  
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=
 
| altTools=
 
* [http://git.or.cz/ git]  
 
* [http://git.or.cz/ git]  
 
* [http://bazaar-vcs.org/ bazaar]
 
* [http://bazaar-vcs.org/ bazaar]
 
* [http://www.selenic.com/mercurial/ mercurial]
 
* [http://www.selenic.com/mercurial/ mercurial]
 +
* [[Projects/GitoriousKDE|Gitorious]]
 
}}
 
}}
 +
 +
Subversion 1.4 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 interest in migrating to a distributed source control
 +
management tool, such as GIT. Discussion of this is taking place on the
 +
[http://mail.kde.org/pipermail/kde-scm-interest kde-scm-interest]
 +
mailing list.
  
  
Line 27: Line 39:
 
| 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 KDE4 series, and there
 +
are no plans currently to migrate away from it.
  
  
Line 36: Line 58:
 
| 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 Muller]
 +
* [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.
  
  
Line 46: Line 72:
 
| 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.
+
* [http://reviewboard.vidsolbach.de/ Review-board] used by plasma project.
* trunk/kdereview is used to review major new features and new applications prior to inclusion in KDE trunk.
+
* trunk/kdereview  
 
| people=
 
| people=
David Solbach and the kde sysadmin team maintain the Plasma review-board installation.
+
* David Solbach and the kde sysadmin team maintain the Plasma review-board installation.
| futureWork=
+
| getInvolved=
Review-board may be suitable for adoption by more of the KDE project, or by individual modules.
+
* {{KDEML|kde-core-devel}}: Discuss KDE patch review and tools
 
| altTools=
 
| altTools=
* Launchpad.net offers bug tracking via bugs.launchpad.net
+
* Launchpad.net offers merge review/approval pre-merge [https://code.launchpad.net/~thumper/pqm/test-bzr-home/+merge/296/] [http://news.launchpad.net/cool-new-stuff/review-branch-merge-proposals-in-launchpad] [http://news.launchpad.net/cool-new-stuff/email-interface-to-code-review]
 
}}
 
}}
 +
 +
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. 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. 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...
  
  
Line 60: Line 104:
 
| 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://commit-filter.org commit filter] 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.
 +
| 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 120:
 
| 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 136:
 
| name=Technical documentation
 
| name=Technical documentation
 
| currentState=
 
| currentState=
techbase.kde.org is a [http://www.mediawiki.org MediaWiki] powered web site used for collaborating on technical tasks such as tutorials, schedules, and project information.
+
* http://techbase.kde.org
 +
* http://wiki.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. wiki.kde.org is a tiki-wiki site with the same function. Both are actively used. It might make sense to merge the two sites.
  
  
Line 89: Line 152:
 
| name=API documentation
 
| name=API documentation
 
| currentState=
 
| currentState=
[http://www.stack.nl/~dimitri/doxygen/ 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 doucmentation 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.
  
  
Line 98: Line 167:
 
| name=User documentation
 
| name=User documentation
 
| currentState=
 
| currentState=
[http://i18n.kde.org/docs/doc-primer/check-docs.html meinproc] is used to generate user documentation from module doc/ folders and is hosted on http://docs.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 GUI magic word.
 +
| getInvolved=
 +
* {{KDEML|kde-doc-english}} Used to coordinate user documentation.
 +
* {{KDEML|kde-docbook}} Help update documentation after GUI changes.
 
}}
 
}}
 +
 +
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.
  
 
== Testing and Quality ==
 
== Testing and Quality ==
Line 106: Line 183:
 
| 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 2.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|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]
 
}}
 
}}
 +
 +
Bug tracking in KDE currently is managed using Bugzilla 2.0. There is work being done on a transition to Bugzilla 3.0, which provides some additional features.
 +
 +
Bugzilla can be difficult to use and daunting to newbies.
  
  
Line 119: Line 206:
 
| 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).
 
| 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 220:
 
| 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://www.cdash.org/CDash/index.php?project=kdelibs CDash build server] stores results of non-linux builds for kdelibs.
 +
| 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 kitware CDash service.
 +
* 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, SPARC) on amd64
  
  
Line 142: Line 244:
 
| 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.
+
 
}}
 
}}
 +
 +
It may be possible run run these tests automatically possibly on EBN or on Dirks dashboard.
  
  
Line 150: Line 253:
 
| 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.
  
  
Line 162: Line 268:
 
| 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 also includes some optimization checks.
| futureWork=
+
| getInvolved=
Tutorials?
+
* {{KDEML|kde-optimize}}
 
}}
 
}}
 +
 +
Tutorials may be provided in the future to help developers optimize their code.
  
  
Line 178: Line 286:
 
* [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}}
 
}}
 
}}
  
Line 185: Line 295:
 
| 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.
 
}}
 
}}
  
Line 197: Line 310:
 
* 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.
 
}}
 
}}
  
Line 203: Line 319:
 
| 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.
Line 211: Line 327:
 
* [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]
 
}}
 
}}
  
Line 219: Line 338:
 
| currentState=
 
| currentState=
 
A community management group is being worked on.
 
A community management group is being worked on.
| futureWork=
+
| getInvolved=
 +
* {{KDEML|kde-core-devel}} Discuss how KDE should approach community management.
 +
}}
 +
 
 +
As of June 2008 there is a lot of discussion around [http://www.youtube.com/watch?v=ZSFDm3UYkeE poisonous people] resulting from the KDE user base growing into more channels. Community members are consuming information from different sources (sometimes intended as developer communication), and expecting greater stability from their software (even if it is pre-release).
 +
 
 +
Future work in this area will include
 
* Moderation on some community portals.
 
* Moderation on some community portals.
 
* Mediation
 
* Mediation
 
* A code of conduct?
 
* A code of conduct?
}}
 
  
 +
 +
{{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://kde-forums.net Forums] to some extent where the developer chooses to.
 +
* [http://dot.kde.org News announcements]
 +
| people=
 +
* [http://c133.org/blog/ Chris Lee] administers planetkde.org
 +
| getInvolved=
 +
}}
  
 
== Release ==
 
== Release ==
Line 231: Line 372:
 
| 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}}
 
}}
 
}}
  
Line 240: Line 385:
 
| 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.1_Feature_Plan]]  
 +
* [[Schedules/KDE4/4.2_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.
  
  
Line 253: Line 404:
 
| 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.
 
| 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 http://kde-look.org.
 +
 +
There may be a need to create tutorials on how to create artwork for kde.
  
 
{{SEFBox
 
{{SEFBox
Line 271: Line 425:
 
| 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.
 +
| getInvolved=
 +
* {{KDEML|kde-i18n-doc}}
 
}}
 
}}

Revision as of 20:47, 2 July 2008

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.

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  


Subversion 1.4 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 interest in migrating to a distributed source control management tool, such as GIT. Discussion of this is taking place on the kde-scm-interest mailing list.


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 KDE4 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  
  • David Solbach and the kde sysadmin team maintain the Plasma review-board installation.
Get Involved   Alternative Tools  
  • Launchpad.net offers merge review/approval pre-merge [1] [2] [3]


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. 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. 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...


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 commit filter 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.

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. wiki.kde.org is a tiki-wiki site with the same function. Both are actively used. It might make sense to merge the two sites.


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 doucmentation 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.


User documentation

User documentation
Current State   People  
  • meinproc is used to generate user documentation
  • Action mail generic.svg kde-docbook Records all SVN commits with the GUI magic word.

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.

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 2.0. There is work being done on a transition to Bugzilla 3.0, which provides some additional features.

Bugzilla can be difficult to use and daunting to newbies.


Static code analysis

Static code analysis
Current State   People  

Krazy hosted at EnglishBreakfastNetwork (EBN).

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, SPARC) on 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 also includes some optimization checks.

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

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  
Get Involved   Alternative Tools  

n/a



Community management

Community management
Current State   People  

A community management group is being worked on.

Unknown

Get Involved   Alternative Tools  
  • Action mail generic.svg kde-core-devel Discuss how KDE should approach community management.

n/a


As of June 2008 there is a lot of discussion around poisonous people resulting from the KDE user base growing into more channels. Community members are consuming information from different sources (sometimes intended as developer communication), and expecting greater stability from their software (even if it is pre-release).

Future work in this area will include

  • Moderation on some community portals.
  • Mediation
  • A code of conduct?


Communication

Communication
Current State   People  

Developers communicate with each other through

Developers communicate with users though

Get Involved   Alternative Tools  

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.


Theming and Translations

Artwork

Artwork
Current State   People  

The Action mail generic.svg kde-artists team creates offical artwork for KDE.

Get Involved   Alternative Tools  

n/a


Additional contributed artwork is available on http://kde-look.org.

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

Translation

Translation
Current State   People  
  • http://i18n.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.



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