Contribute: Difference between revisions

    From KDE TechBase
    No edit summary
    (removed repetition with community wiki)
    (35 intermediate revisions by 14 users not shown)
    Line 1: Line 1:
    {{Template:I18n/Language Navigation Bar|Contribute}}
    <languages />
    This page intends to give an overview of the different aspects of KDE development in particular for programming related issues. '''The KDE project welcomes anyone willing to help'''.
    <translate>
    <!--T:1-->
    This page is an overview of how to participate in KDE project by programming. For info about how to participate in other ways see KDE community wiki for [http://kde.org/community/getinvolved/ how to get involved].  


    {{note|There are a lot of ways to get involved in KDE development, which can be summed up in several categories:
    == News and Mail Sources == <!--T:3-->
    :''Documentation, Translation, Development, Usability, Accessibility, Artwork, Promotion
    '''Not a coder? See KDE's pages on [http://kde.org/getinvolved/ how to get involved] to see other ways you can help. Also see: [[Contribute/Bugsquad|Bugsquad]]!'''
    }}


    == News and Mail Sources ==
    <!--T:4-->
    The general direction of the KDE project is determined by those who do the work - there is no single high level plan for what KDE will look like in the future.
    The general direction of the KDE project is determined by those who do the work - there is no single high level plan for what KDE will look like in the future.


    <!--T:5-->
    If you want to find out what is currently happening, then there are a number of sources you might like to consider:
    If you want to find out what is currently happening, then there are a number of sources you might like to consider:
    ; [http://www.kde.org/mailinglists/ Mailing Lists]
    ; [http://www.kde.org/mailinglists/ Mailing Lists]
    : Probably the best way to find out what's going on in KDE development. Archives are available [http://lists.kde.org here]
    : Probably the best way to find out what's going on in KDE development. A full list of KDE mailing lists is available  [http://mail.kde.org/mailman/listinfo here] and archives are available [http://lists.kde.org here]


    <!--T:6-->
    ; [http://commitfilter.kde.org/ CommitFilter]
    ; [http://commitfilter.kde.org/ CommitFilter]
    : Receive notification of [http://en.wikipedia.org/wiki/Subversion SVN] commits in areas that interest you.
    : Receive notification of commits to the KDE source code repositories in areas that interest you.


    <!--T:7-->
    ; [http://commit-digest.org/ KDE Commit-Digest]
    ; [http://commit-digest.org/ KDE Commit-Digest]
    : Weekly summary of SVN commits.
    : Weekly summary of commits to projects in the KDE source code repositories.


    <!--T:8-->
    ; [http://dot.kde.org/ The Dot]
    ; [http://dot.kde.org/ The Dot]
    : The KDE news site.
    : The KDE news site.


    == Getting Started with Coding ==
    == Reporting Bugs == <!--T:9-->
    Getting started at coding for KDE is a matter of finding something to fix, and fixing it. You may want to consult the module overview to help find what you are looking for; once you have fixed something, you will want to send in a patch. If you do that a few times, you may want to apply for an SVN account so you can fix things directly.
     
    <!--T:10-->
    The easiest way to contribute to KDE is to [http://userbase.kde.org/Asking_Questions#Reporting_KDE_Bugs report any bugs] you find in KDE using the [https://bugs.kde.org/ KDE Bug Tracking System] (also known as '''Bugzilla''').
     
    <!--T:11-->
    If the application you are using crashes then the '''Dr Konqi''' utility will appear and guide you through the process of reporting the crash.  Learn more by reading  [[Development/Tutorials/Debugging/How_to_create_useful_crash_reports|how to create useful crash reports]].
     
    == Getting Started with Coding == <!--T:12-->
     
    <!--T:13-->
    Getting started at coding for KDE is a matter of finding something to fix, and fixing it. You may want to consult the module overview to help find what you are looking for; once you have fixed something, you will want to send in a patch. If you do that a few times, you may want to apply for a KDE Contributor account so you can improve things directly.
     
    <!--T:14-->
    * [[Contribute/List of KDE Modules|Module overview]]
    * [[Contribute/List of KDE Modules|Module overview]]
    * [[Contribute/Send Patches|Sending patches]]
    * [[Contribute/Send Patches|Sending patches]]
    * [[Contribute/Get a SVN Account|Applying for a KDE SVN Account]]
    * [[Contribute/Get a Contributor Account|Applying for a KDE Contributor Account]]
    * [[Contribute/First Steps with your KDE SVN Account|First steps with your new SVN account]]
    * [[Contribute/First Steps with your KDE SVN Account|First steps with your new Contributor  account]]


    At the moment, there are two choices for development within KDE - you can work on KDE3, or KDE4. KDE3 is a good choice for bug fixing, however the main development work effort (and all new features) is on KDE4. This document mainly focuses on work in support of KDE4.
    === C++ === <!--T:15-->


    === C++ ===
    <!--T:16-->
    KDE is mostly written in C++. If you are not familiar with C++, you should do at least some work on it. There are a number of good books on C++ - an excellent source is [http://mindview.net/Books/TICPP/ThinkingInCPP2e.html Bruce Eckel's "Thinking in C++"], which is available both as a free download and as a printed document. It isn't essential to understand everything before you start in KDE, but you do need to understand basic syntax and operations.
    KDE is mostly written in C++. If you are not familiar with C++, you should do at least some work on it. There are a number of good books on C++ - an excellent source is [http://mindview.net/Books/TICPP/ThinkingInCPP2e.html Bruce Eckel's "Thinking in C++"], which is available both as a free download and as a printed document. It isn't essential to understand everything before you start in KDE, but you do need to understand basic syntax and operations.


    === Qt ===
    === Qt === <!--T:17-->
    To become proficient with KDE coding, you should understand the Qt toolkit. If you are not familiar with Qt, you should work through the tutorials included with Qt ([http://doc.trolltech.com/latest/examples.html Qt4 version], [http://doc.trolltech.com/3.3/tutorial.html Qt3 version]).


    If you are more into multimedia and videos for a start you might want to spend two amazing minutes on watching [http://www.trolltech.com/trolltech/products/qt/learnmore/video/demos/browser Building a Simple Help Documentation Browser with Qt4 Designer]. If that got your attention you might also want to watch the video introduction [http://www.trolltechvideo.com/video/day1/room_a/a_1_1/video.html Hello Qt] by Mark Summerfield which is part of the [http://www.trolltech.com/company/newsroom/events/allevents/devdays2006/videolinks Trolltech Developer Days 2006 presentations].
    <!--T:18-->
    To become proficient with KDE coding, you should understand the Qt toolkit. If you are not familiar with Qt, you should work through the tutorials included with [http://qt-project.org/doc/latest Qt Reference Documentation].


    If you need a gentler introduction to Qt, or would just like an alternative view, then you may wish to look at the [http://qt4.digitalfanatics.org/tiqt/ The Independent Qt Tutorial] (Currently offline due to book contract).
    <!--T:19-->
    If you need a gentler introduction to Qt, or would just like an alternative view, then you may wish to look at the [http://www.apress.com/9781590598313 Foundations of Qt Development].


    If you prefer to learn Qt by reading a traditional book, take a look at Trolltechs [http://trolltech.com/developer/documentation/books book page]. More suggestions on becoming familiar with Qt4 are [http://doc.trolltech.com/latest/how-to-learn-qt.html available here as well].  
    <!--T:20-->
    If you prefer to learn Qt by reading a traditional book, take a look at the  [http://qt-project.org/books Books about Qt page]. More suggestions on becoming familiar with Qt4 are available [http://qt-project.org/doc/qt-4.8/how-to-learn-qt.html How to Learn Qt page].


    === KDE ===
    === KDE === <!--T:21-->
     
    <!--T:22-->
    A range of information on KDE techniques is available in the [[Development/Tutorials|tutorial section]]. Note that some of these tutorials still target KDE3, though they should be at least partly applicable.
    A range of information on KDE techniques is available in the [[Development/Tutorials|tutorial section]]. Note that some of these tutorials still target KDE3, though they should be at least partly applicable.


    <!--T:23-->
    You will also find useful information on KDE coding in the [[Development/FAQs|FAQs]] section. This information may also be somewhat dated for KDE4, however much of it is broadly applicable, even outside KDE.
    You will also find useful information on KDE coding in the [[Development/FAQs|FAQs]] section. This information may also be somewhat dated for KDE4, however much of it is broadly applicable, even outside KDE.


    <!--T:24-->
    You can also read [[Development/Further Information#Books|KDE coding books]].
    You can also read [[Development/Further Information#Books|KDE coding books]].


    <!--T:25-->
    Last, but by no means least, KDE comes with extensive class (Application Programmer Interface) documentation. This is available in the
    Last, but by no means least, KDE comes with extensive class (Application Programmer Interface) documentation. This is available in the
    [[Development/Tutorials/API Documentation|KDE API Reference Manuals]] section, which also contains a number of useful links on how to write or update the class documentation. You can also generate these on your own machine, or refer to a more up-to-date online version at [http://www.englishbreakfastnetwork.org/apidocs/apidox-kde-4.0/kdelibs-apidocs/ The English Breakfast Network].
    [[Development/Tutorials/API Documentation|KDE API Reference Manuals]] section, which also contains a number of useful links on how to write or update the class documentation. You can also generate these on your own machine, or refer to a more up-to-date online version at [http://api.kde.org/ API Reference].


    <!--T:26-->
    A more detailed description of the steps above is available in our [http://quality.kde.org/develop/howto/howtohack.php Programming Guide].
    A more detailed description of the steps above is available in our [http://quality.kde.org/develop/howto/howtohack.php Programming Guide].


    == Getting Involved in Bug Hunting and Application Quality ==
    ==== Context Help: Whatsthis ==== <!--T:37-->
     
    <!--T:38-->
    Context help is inseparable from the dialogs and widgets, as they are the target of the context help. In fact, in order to write context help, you have to touch programming or programming tools. Indeed, the context help is a property of widgets. In object oriented programming, a property can have different values, and behave differently depending on the value. In Qt/KDE programming, the name of the property is "whatsthis", and its value is the text the context help is going to display.
     
    <!--T:39-->
    Fortunately, this task is usually not very difficult, as there are good tools to deal with user interface design, and better, you will use the knowledge acquired here later when dealing with user interface in general. Using the Qt framework (Qt is the base of KDE technology), it is possible to separate code and user interface. You have two basic cases here: the user interface is written with the general code of application (usually .cpp files) or in Qt Designer files (.ui files: it is a XML document). The second case is the best to start with, as it is simpler to work with. If you don't have Qt Designer installed, you can do so by installing the devel package of Qt from your distribution or the Qt Designer package (if your distribution has more fine grained packages).


    <!--T:40-->
    Here you can find a detailed guide for writing whatsthis using Qt Designer and working directly with the source code: [http://bddf.ca/~aseigo/whatsthis_tutorial/ WhatsThis Tutorial], by Aaron J. Seigo.
    == Getting Involved in Bug Hunting and Application Quality == <!--T:27-->
    <!--T:28-->
    There is a large number of applications within KDE, and not all of them have a maintainer dedicated to managing bugs and generally helping out with all the issues associated with turning some working code into a polished application.
    There is a large number of applications within KDE, and not all of them have a maintainer dedicated to managing bugs and generally helping out with all the issues associated with turning some working code into a polished application.


    If you are interested in helping out with KDE, but don't know where to start, visit [http://www.kde.org/getinvolved/ Contribute Website] for more information. Note that you do not need any programming skills to become involved. In particular develpers regurarly publish so-called [[/Junior Jobs|Junior Jobs]] to encourage new contributions.
    <!--T:29-->
    If you are interested in helping out with KDE, but don't know where to start, becoming a member of the KDE Quality Team might appeal to you - see the [http://techbase.kde.org/Contribute/Quality_Team Quality Team website] for more information. Note that you do not need any programming skills to become involved. In particular developers regularly publish so-called [http://community.kde.org/KDE/Junior_Jobs Junior Jobs] to encourage new contributions.


    <!--T:30-->
    Of course, you can become involved in bug hunting without being part of the KDE Quality Team - just create yourself an account on the KDE [http://bugs.kde.org bug tracking system], and start searching / sorting through the bugs. Again, you don't have to have programming skills - it helps the programmers enormously just to have a procedure that allows a bug to be consistently reproduced.
    Of course, you can become involved in bug hunting without being part of the KDE Quality Team - just create yourself an account on the KDE [http://bugs.kde.org bug tracking system], and start searching / sorting through the bugs. Again, you don't have to have programming skills - it helps the programmers enormously just to have a procedure that allows a bug to be consistently reproduced.


    <!--T:31-->
    The [[Contribute/Bugsquad|Bugsquad]] tries to keep track of bugs in KDE software and make sure that valid bugs are noticed by developers. You do not need any programming knowledge to be in the Bugsquad; in fact it is a great way to return something to the KDE community if you cannot program.
    The [[Contribute/Bugsquad|Bugsquad]] tries to keep track of bugs in KDE software and make sure that valid bugs are noticed by developers. You do not need any programming knowledge to be in the Bugsquad; in fact it is a great way to return something to the KDE community if you cannot program.


    == Historical Sources ==
    == User Interface == <!--T:41-->
     
    <!--T:42-->
    User interface is a very wide subject, and very subjective too, as something obvious to someone is absurd to others and vice versa. Therefore, don't assume, argue clearly, stating your logical steps. Your main tool discussing it are objective reasoning and good sense.
     
    <!--T:43-->
    It is easy to perform a quick user interface analysis, but it is hard to convince people to change the interface. A good, convincing analysis can gain much if it incorporates information from the KDE guidelines, competing program and operational system analysis, general design principles found in many books, user testing or individual (anecdotal) feedback. It is a volunteer project, and even if everybody agree with you, someone has to implement it.
     
    <!--T:44-->
    The [http://mail.kde.org/mailman/listinfo/kde-usability KDE Usability Mailing List] is very active and a good place for discussing your ideas, and their homepage is at http://techbase.kde.org/Projects/Usability. If you are already an usability expert, please check [http://www.openusability.org/ OpenUsability.org], a project that brings open source developers and usability experts together, and is collaborating closely with KDE.
     
    <!--T:45-->
    Some documents guiding documents include the [http://developer.kde.org/documentation/standards/kde/style/basics/index.html  KDE User Interface Guidelines (design standards)] and [http://developer.kde.org/documentation/design/ui/index.html KDE User Interface Guidelines (design principles)].
     
    <!--T:46-->
    Some projects for analysis of user interfaces may include: checking that shortcut keys are coherent across KDE applications, making sure that dialogs are directly relevant to the interaction that the user would expect, and finding users of KDE software to see how they perform common workflows.
     
    ==Getting Answers to Your Questions== <!--T:32-->
     
    <!--T:33-->
    If your question concerns KDE development, your options are pretty much the same general user ones, with some modifications:
    <blockquote>
    :* '''Read the Developer FAQ'''. Many common developer questions have been answered in the [[Development/FAQs|KDE Developer FAQ]]
    :* '''Search/browse KDE websites'''. A lot of questions can also be answered from the KDE websites, and the documentation included on it. You can search all the KDE websites on the homepage. In addition, you can browse the [http://techbase.kde.org KDE TechBase website]. And if possible, help edit it for clarity, and use the talk page if something is unclear.
    :* '''Search mailing lists'''. A lot of questions have already been answered on the KDE mailing lists, particular the lists kde-devel, kde2-porting, kde-core-devel, kde-games-devel, kfm-devel and koffice-devel. You can search these lists at [http://lists.kde.org/ lists.kde.org]. You should always search for your answer before asking questions on the mailing lists. When you ask a question on a mailing list you are emailing thousands of people -- please do this only if the answer is not available through a simple search.
    :* '''Search engines'''. Do not forget about your favorite search engine. One of the best search engines is Google. With Google you can also [http://groups.google.com/ search] the great bulk of Usenet news sites, which is also particularly helpful, especially for general programming and gcc-related questions.


    ; [http://www.kerneltraffic.org/kde/archives.html KDE Traffic]
    <!--T:34-->
    : Summary of the development mailing lists. KDE Traffic ran for 76 issues, from 10 March 2001 until 16 April 2004. The KDE Commit-Digest (described above) is its logical successor.
    :* '''Read the source code'''.  http://websvn.kde.org and https://projects.kde.org/ are available to help browse code. Read some commit logs and diffs for the code you might want to work with, It adds perspective.
    :* '''Ask on KDE mailing lists'''. If you still do not have an answer, try asking your question on one of the KDE mailing lists listed above.
    :* For questions relating to core development or third-party KDE development, unless you are particularly interested in [http://konqueror.kde.org/ Konqueror], [http://www.koffice.org/ KOffice], games or Java development, your main choice is [mailto:[email protected] kde-devel] [mailto:[email protected]?subject=subscribe (subscribe)].
    :* For questions relating to Konqueror development, your main choice is [mailto:[email protected] kfm-devel] [mailto:[email protected]?subject=subscribe (subscribe)]
    :* For questions relating to KOffice development, your main choice is [mailto:koffice-devel@kde.org koffice-devel] [mailto:koffice-devel-[email protected]?subject=subscribe (subscribe)]
    :* For questions relating to games development, your main choice is [mailto:kde-games-devel@kde.org kde-games-devel] [mailto:[email protected]?subject=subscribe (subscribe)]
    :* For questions relating to [http://qt.nokia.com/ Qt development], please use the fine [http://lists.trolltech.com/qt-interest/ Qt mailing list].
    </blockquote>


    ----
    <!--T:36-->
    [[Category:FAQs]]


    ----
    </translate>

    Revision as of 18:46, 25 January 2014

    This page is an overview of how to participate in KDE project by programming. For info about how to participate in other ways see KDE community wiki for how to get involved.

    News and Mail Sources

    The general direction of the KDE project is determined by those who do the work - there is no single high level plan for what KDE will look like in the future.

    If you want to find out what is currently happening, then there are a number of sources you might like to consider:

    Mailing Lists
    Probably the best way to find out what's going on in KDE development. A full list of KDE mailing lists is available here and archives are available here
    CommitFilter
    Receive notification of commits to the KDE source code repositories in areas that interest you.
    KDE Commit-Digest
    Weekly summary of commits to projects in the KDE source code repositories.
    The Dot
    The KDE news site.

    Reporting Bugs

    The easiest way to contribute to KDE is to report any bugs you find in KDE using the KDE Bug Tracking System (also known as Bugzilla).

    If the application you are using crashes then the Dr Konqi utility will appear and guide you through the process of reporting the crash. Learn more by reading how to create useful crash reports.

    Getting Started with Coding

    Getting started at coding for KDE is a matter of finding something to fix, and fixing it. You may want to consult the module overview to help find what you are looking for; once you have fixed something, you will want to send in a patch. If you do that a few times, you may want to apply for a KDE Contributor account so you can improve things directly.

    C++

    KDE is mostly written in C++. If you are not familiar with C++, you should do at least some work on it. There are a number of good books on C++ - an excellent source is Bruce Eckel's "Thinking in C++", which is available both as a free download and as a printed document. It isn't essential to understand everything before you start in KDE, but you do need to understand basic syntax and operations.

    Qt

    To become proficient with KDE coding, you should understand the Qt toolkit. If you are not familiar with Qt, you should work through the tutorials included with Qt Reference Documentation.

    If you need a gentler introduction to Qt, or would just like an alternative view, then you may wish to look at the Foundations of Qt Development.

    If you prefer to learn Qt by reading a traditional book, take a look at the Books about Qt page. More suggestions on becoming familiar with Qt4 are available How to Learn Qt page.

    KDE

    A range of information on KDE techniques is available in the tutorial section. Note that some of these tutorials still target KDE3, though they should be at least partly applicable.

    You will also find useful information on KDE coding in the FAQs section. This information may also be somewhat dated for KDE4, however much of it is broadly applicable, even outside KDE.

    You can also read KDE coding books.

    Last, but by no means least, KDE comes with extensive class (Application Programmer Interface) documentation. This is available in the KDE API Reference Manuals section, which also contains a number of useful links on how to write or update the class documentation. You can also generate these on your own machine, or refer to a more up-to-date online version at API Reference.

    A more detailed description of the steps above is available in our Programming Guide.

    Context Help: Whatsthis

    Context help is inseparable from the dialogs and widgets, as they are the target of the context help. In fact, in order to write context help, you have to touch programming or programming tools. Indeed, the context help is a property of widgets. In object oriented programming, a property can have different values, and behave differently depending on the value. In Qt/KDE programming, the name of the property is "whatsthis", and its value is the text the context help is going to display.

    Fortunately, this task is usually not very difficult, as there are good tools to deal with user interface design, and better, you will use the knowledge acquired here later when dealing with user interface in general. Using the Qt framework (Qt is the base of KDE technology), it is possible to separate code and user interface. You have two basic cases here: the user interface is written with the general code of application (usually .cpp files) or in Qt Designer files (.ui files: it is a XML document). The second case is the best to start with, as it is simpler to work with. If you don't have Qt Designer installed, you can do so by installing the devel package of Qt from your distribution or the Qt Designer package (if your distribution has more fine grained packages).

    Here you can find a detailed guide for writing whatsthis using Qt Designer and working directly with the source code: WhatsThis Tutorial, by Aaron J. Seigo.

    Getting Involved in Bug Hunting and Application Quality

    There is a large number of applications within KDE, and not all of them have a maintainer dedicated to managing bugs and generally helping out with all the issues associated with turning some working code into a polished application.

    If you are interested in helping out with KDE, but don't know where to start, becoming a member of the KDE Quality Team might appeal to you - see the Quality Team website for more information. Note that you do not need any programming skills to become involved. In particular developers regularly publish so-called Junior Jobs to encourage new contributions.

    Of course, you can become involved in bug hunting without being part of the KDE Quality Team - just create yourself an account on the KDE bug tracking system, and start searching / sorting through the bugs. Again, you don't have to have programming skills - it helps the programmers enormously just to have a procedure that allows a bug to be consistently reproduced.

    The Bugsquad tries to keep track of bugs in KDE software and make sure that valid bugs are noticed by developers. You do not need any programming knowledge to be in the Bugsquad; in fact it is a great way to return something to the KDE community if you cannot program.

    User Interface

    User interface is a very wide subject, and very subjective too, as something obvious to someone is absurd to others and vice versa. Therefore, don't assume, argue clearly, stating your logical steps. Your main tool discussing it are objective reasoning and good sense.

    It is easy to perform a quick user interface analysis, but it is hard to convince people to change the interface. A good, convincing analysis can gain much if it incorporates information from the KDE guidelines, competing program and operational system analysis, general design principles found in many books, user testing or individual (anecdotal) feedback. It is a volunteer project, and even if everybody agree with you, someone has to implement it.

    The KDE Usability Mailing List is very active and a good place for discussing your ideas, and their homepage is at http://techbase.kde.org/Projects/Usability. If you are already an usability expert, please check OpenUsability.org, a project that brings open source developers and usability experts together, and is collaborating closely with KDE.

    Some documents guiding documents include the KDE User Interface Guidelines (design standards) and KDE User Interface Guidelines (design principles).

    Some projects for analysis of user interfaces may include: checking that shortcut keys are coherent across KDE applications, making sure that dialogs are directly relevant to the interaction that the user would expect, and finding users of KDE software to see how they perform common workflows.

    Getting Answers to Your Questions

    If your question concerns KDE development, your options are pretty much the same general user ones, with some modifications:

    • Read the Developer FAQ. Many common developer questions have been answered in the KDE Developer FAQ
    • Search/browse KDE websites. A lot of questions can also be answered from the KDE websites, and the documentation included on it. You can search all the KDE websites on the homepage. In addition, you can browse the KDE TechBase website. And if possible, help edit it for clarity, and use the talk page if something is unclear.
    • Search mailing lists. A lot of questions have already been answered on the KDE mailing lists, particular the lists kde-devel, kde2-porting, kde-core-devel, kde-games-devel, kfm-devel and koffice-devel. You can search these lists at lists.kde.org. You should always search for your answer before asking questions on the mailing lists. When you ask a question on a mailing list you are emailing thousands of people -- please do this only if the answer is not available through a simple search.
    • Search engines. Do not forget about your favorite search engine. One of the best search engines is Google. With Google you can also search the great bulk of Usenet news sites, which is also particularly helpful, especially for general programming and gcc-related questions.