Jump to content

GoogleCodeIn/LandingPageforKDE: Difference between revisions

From KDE Community Wiki
No edit summary
Valoriez (talk | contribs)
No edit summary
 
(34 intermediate revisions by 4 users not shown)
Line 1: Line 1:
= The KDE Community =
= The KDE Community =


The KDE Community is an international team co-operating on development and distribution of Free, Open Source Software for desktop and portable computing. Our community has developed a wide variety of applications for communication, work, education and entertainment. We have a strong focus on finding innovative solutions to old and new problems, creating a vibrant, open atmosphere for experimentation. Since KDE is open-source, everyone can play a part in contributing to KDE.
The KDE Community is an international team co-operating on development and distribution of Free, Open Source Software for desktop and portable computing. Our community has developed a wide variety of applications for communication, work, education and entertainment. We have a strong focus on finding innovative solutions to old and new problems, creating a vibrant, open atmosphere for experimentation. Since our software is free and open source, everyone can play a part in contributing to KDE.


= Software produced by KDE =  
=== Software produced by KDE ===
For users on Linux and Unix, KDE offers a full suite of user applications which allow interaction with these operating systems in a modern, graphical user interface. This includes Plasma, KDE's innovative workspace. Other applications are included to aid with system configuration, running programs, or interacting with hardware devices. While the fully integrated KDE workspaces are only available on Linux and Unix, some of these features and our applications are available on other platforms.


For users on Linux and Unix, KDE offers a full suite of user workspace applications which allow interaction with these operating systems in a modern, graphical user interface. This includes Plasma Desktop, KDE's innovative desktop interface. Other workspace applications are included to aid with system configuration, running programs, or interacting with hardware devices. While the fully integrated KDE Workspaces are only available on Linux and Unix, some of these features are available on other platforms.
= Communication =
* You may get help from the community to complete your task.
* Getting to know some KDE people and learning KDE processes and requirements are part of GCi.
* Ask for help if you're stuck, but remember that you should try to solve the problem yourself before getting assistance.  
* You have taken responsibility for accomplishing your task, so it's perfectly acceptable to get it done in a collaborative fashion - that's how open source works!
* Remember that you are not allowed to copy anyone else's work and pretend it is your own.


= How to connect with mentors via IRC =
KDE uses IRC and mailing lists to communicate. While talking with your mentors, community members and other students remember:
* Be considerate and polite.
* Never put your personal information (phone  number, home address) on a mailing list or in IRC.
* During Google Code-in mentors  are sometimes busy helping students, or reviewing tasks. They may not see you join, or see what you write for several minutes. However, especially for beginner tasks, other students and mentors are usually happy to help.


Mentors are the main people you communicate with while completing a task. They are the people whom you ask when you have any questions to ask regarding the task. You can communicate with them via IRC, a chat system. You can use webchat.freenode.net in your browser for now, but you may want to consider using a desktop IRC client later on. There are plenty of IRC networks out there, but the recommended one is Freenode as most open-source projects have channels there. To chat in IRC just type and hit [enter]. Commands begin with the "/" character, such as /connect irc.freenode.net to connect to Freenode if you've not already done so.
=== How to connect with mentors using IRC ===
Mentors are the main people you communicate with while completing a task. Ask your mentor when you have any questions about your task. Along with leaving messages in the GCi webapp, you can communicate with them using '''IRC''', Internet Relay Chat. You can use [http://webchat.freenode.net webchat] in your browser to start. If you enjoy IRC, you may want to consider using a desktop IRC client. KDE uses the Freenode network along with many other open-source projects. To chat in IRC just type your message and hit <keycap>enter</keycap>. Commands begin with the <keycap>/</keycap> character, such as <code>/connect irc.freenode.net</code> to connect to Freenode.


IRC is made of channels (think, "chat rooms") which start with a pound sign, such as "#KDE". On Freenode, you can expect to find a channel for almost any FOSS project, eg, #Fedora, #Python, #Ubuntu. To join a channel, use the /join command, eg, /join #KDE
IRC is made of channels (think, "chat rooms") which start with a # sign, such as #kde. On Freenode, you can expect to find a channel for almost any FOSS project, eg, #Fedora, #Python, #kubuntu. To join a channel, use the <code>/join</code> command: <code>/join #kde</code> or <code>/join #kde-soc</code> . To search for a channel, use ''alis'', like this: <code>/msg alis list *searchterm*</code>.


= IRC Clients =  
==== IRC Clients ====
IRC clients communicate with IRC network servers to allow sending of messages from one user to another. You may have to install an IRC client if your distribution doesn't provide one by default. Some examples of IRC clients are mIRC, XChat and IRSSI for Linux or Windows, and Colloquy for Mac. KDE's IRC client is '''Konversation''' which will connect you to Freenode by default.


IRC clients communicate with IRC web servers to allow sending of messages from one user to another. Hence, you have to download an IRC client. Some examples of IRC clients are XChat and IRSSI for Linux or Windows, and Colloquy for Mac. KDE's IRC client is Konversation which gives you speedy access to Freenode network's channels, where you will find support for most distributions. Its defaults are such that it needs no configuration other than telling it the name of your distribution channel, to get started. Below is the link to KDE's IRC client:
More about [https://www.kde.org/applications/internet/konversation Konversation], and [https://userbase.kde.org/Konversation Konversation user manual].


[https://www.kde.org/applications/internet/konversation KDE's IRC client]
==== IRC channels for task categories ====
Tasks in Google Code-in are grouped into five categories. Below are the recommended channels for each category which could be helpful to you as you work on a task. '''''#kde-soc''''' is the channel for all mentors and students. Your mentor may ask you to join a project channel so that the whole team is available to you.


=IRC channel for each task category =
* Code: ''#kde-devel''
* Documentation/Training: ''#kde-docs'' and ''#kde-www''
* Outreach/Research: ''#kde'' and ''#kde-promo''
* Quality Assurance: ''#kde-bugs'' and ''#kde-quality''
* User Interface: ''#kde-usability''


Tasks in Google Code-in are grouped into five categories. Below are the recommended channels for each category so that you can find more information regarding a task.  
=== Mailing lists ===
* When responding to an existing post, please quote relevant text from the original message. It should be easy for those who did not read the original message to understand the issue.  
* Keep subject lines to the point and your message concise.
* Don’t attach files unless your mentor has specifically told you to do so.
* Plain text please, unless you are asked to include graphics, charts, or other images.


* Code (#kde-code)
= Development Infrastructure =
* Documentation/Training (#kde-documentation)
KDE maintains its own infrastructure for version control system, bug tracker, review tools, mailing lists etc. In the following we list the most important ones that you will probably encounter during the GCI contest. Note that KDE is close to the transition to a new system (called Phabricator, which is similar to popular online services like Github - yet free). Thus, some early adopter projects may ask you to use the new facilities while others are still using the classic tools.
* Outreach/Research (#kde-outreach)
* Quality Assurance (#kde-qualityassurance)
* User Interface (#kde-userinterface)


= Creating a KDE identity account =
=== Contributor Accounts (aka "KDE Identity") ===
KDE Identity is the central database for KDE infrastructure, like wikis, reviews and code commits. Using your KDE Identity credentials, you can log into all Identity-enabled KDE services. Please use your real name to [https://identity.kde.org/index.php?r=registration register for a KDE identity account].


It is highly recommended that you create a KDE account as KDE Identity is the central database for KDE websites. Using your KDE Identity credentials, you can log into all Identity enabled KDE websites. Creating an account will also facilitate communication between you and your mentors. You can visit the link below to register for a KDE account.  
=== Bug Tracking ===
KDE uses '''Bugzilla''' to deal with bugs. Create a Bugzilla account to report, test, triage, or fix bugs. For now, a bugzilla account is needed in addition to your KDE identity account.  
* [http://bugs.kde.org/ Bugs.kde.org aka bko]


[https://identity.kde.org/index.php?r=registration KDE identity account registration page]
=== Source Code ===
All source code for KDE applications can be found at:
* [http://cgit.kde.org/ cgit.kde.org]


The links below will direct you to KDE's wikis such as techbase and userbase.
== Coding Tasks ==
For coding tasks, often the hardest step is to setup your system such that you are able to build the application you want to modify. The typical problems you will be faced with is to get the source code (see above), to install all required build dependencies and finally to start the build.


* [https://wiki.kde.org/ Main page for KDE's wikis]
[https://cmake.org/ CMake] is the standard build system in KDE. It reads the configuration files in the downloaded source, looks at your system for required dependencies and setup paths to them. If any build dependency is not show, at the end of the CMake execution you get a list of missing dependencies. Instead of running the command line tool, for starters there is an easier to use GUI application, called: '''cmake-gui'''.
* [https://userbase.kde.org/Welcome_to_KDE_UserBase KDE Userbase]
* [https://techbase.kde.org/Welcome_to_KDE_TechBase KDE Techbase]
* [https://community.kde.org/Main_Page KDE Community Wiki]


= Creating a Bugzilla account =
=== Build Dependencies ===
In most cases you can use development packages by your distribution (often marked by a "-dev" or "-devel" suffix). If they are available, this is the way you want to go. You will find out which dependencies you need by downloading the source code and running CMake at it.


Many open-source organisations, including KDE have a Bugzilla account. You may want to create a Bugzilla account to facilitate communication between you and your mentors. A separate account is needed apart from your KDE identity account. Below is the link to KDE's Bugzilla account:
If your system is not recent enough to provide all required build dependencies you have essentially two options:
# compile also the dependencies (which can be a lot of work)
# use a virtual machine (e.g., Docker) based on a recent distribution like Kubuntu or even [https://community.kde.org/Kubuntu/PPAs#Kubuntu_Continuous_Integration_.28CI.29 Kubuntu CI], which provides KDE nightly builds.


[http://bugs.kde.org/ KDE's Bugzilla account]
=== Building ===
Nowadays the tool of choice for many KDE developers is to use a build-script called '''kdesrc-build'''. This script allows you, once setup, to automatically fetch sources, configure them, and build and install them.


= Etiquette during IRC chats =  
=== Code Reviews ===
Most open source organizations use IRC and/or mailing lists to communicate with one another. If you keep the following items in mind when communicating with your mentors, community members and other students this will help make a positive, professional impression with the community.
To an ensure a high code quality, most KDE source contributions are reviewed before pushed to the repositories.
* [http://reviewboard.kde.org/ Reviewboard] - the review tool for most projects
* [http://phabricator.kde.org Phabricator Differential] - the future review tool for KDE projects, first projects are already there.


* Be considerate. When you are asking for help, being rude or pushy will rarely get you an answer to your question. It  will also cause people to immediately have a negative response to you, not something you ever want.
Usually, you add your to be reviewed code there and receive feedback from other developers, which helps you to get your contribution ready for merging into the repository. This means you get a "ship-it". Since you probably do not have commit rights, please indicate that someone else has to push the code to the repository. All tools provide both a web interface and a command line tool to publish your contributions for review.
* Never put your personal information in a mailing list or on IRC - no phone numbers, or home addresses, etc...
* When responding to an existing post/email, please include relevant text from the original message. It should still be possible for somebody who did not read the original message to understand what you are talking about. .
* Keep subject lines short and to the point. Likewise, keep your message to the point, no need to write a page about your problem/question.
* Don’t attach files to your email unless your mentor has specifically told you to do so.
* Never use personal attacks or profanity, if you would not say it in a crowded room for all to hear, do not write it in a message.
* Plain text is always best, avoid including graphics, charts, and images.
* Please keep in mind that during Google Code-in mentors are often swamped with helping students and reviewing tasks or they have their own personal lives to lead. They are not likely staring at an IRC window right when you join and may not see what you write for several minutes. However, especially for beginner tasks, other Google Code-in students are usually happy to help.


= How you should do your research =  
= Documentation =
 
== KDE wikis ==
You may get help from the open-source project's community and still take credit completing a task. We want you to get to know each project's community members and to understand their processes and requirements. It's totally fine to ask for help if you're stuck, but remember that you should try to solve the problem yourself before getting assistance. To put it a different way, you've taken responsibility for accomplishing something, so it's perfectly acceptable to get it done in a collaborative fashion - that's how open source works! But remember that you are not allowed to directly copy and paste from another website!
Wikis are easy to update, so much information is stored on the KDE wikis.
 
* [https://wiki.kde.org/ Main page for KDE wikis]
= Useful links regarding Google Code-in =
* [https://userbase.kde.org/Welcome_to_KDE_UserBase KDE User information]
* [https://techbase.kde.org/Welcome_to_KDE_TechBase KDE Technical information]
* [https://community.kde.org/Main_Page KDE Community Wiki]


Here are some links regarding Google Code-in so you can have a clearer idea on what it is all about:
== API Documentation ==
* [http://api.kde.org KDE API Documentation]
* [http://doc.qt.io/ Qt API Documentation]


* [https://community.kde.org/GoogleCodeIn KDE's Google Code-in Page]
= Google Code-in useful links =
* [http://www.google-melange.com/gci/document/show/gci_program/google/gci2014/about_page About Google Code-in]
* [https://developers.google.com/open-source/gci/ About Google Code-in]
* [http://www.google-melange.com/gci/document/show/gci_program/google/gci2014/help_page#claim Frequently Asked Questions]
* [https://developers.google.com/open-source/gci/faq Frequently Asked Questions]
* [https://developers.google.com/open-source/gci/timeline Timeline]
* [https://developers.google.com/open-source/gci/ Getting started with Google Code-in]
* [https://developers.google.com/open-source/gci/ Getting started with Google Code-in]
* [http://www.google-melange.com/gci/homepage/google/gci2014 Google Code-in 2014 Homepage]
* [https://codein.withgoogle.com/ Google Code-in 2016 Homepage]

Latest revision as of 06:31, 30 November 2016

The KDE Community

The KDE Community is an international team co-operating on development and distribution of Free, Open Source Software for desktop and portable computing. Our community has developed a wide variety of applications for communication, work, education and entertainment. We have a strong focus on finding innovative solutions to old and new problems, creating a vibrant, open atmosphere for experimentation. Since our software is free and open source, everyone can play a part in contributing to KDE.

Software produced by KDE

For users on Linux and Unix, KDE offers a full suite of user applications which allow interaction with these operating systems in a modern, graphical user interface. This includes Plasma, KDE's innovative workspace. Other applications are included to aid with system configuration, running programs, or interacting with hardware devices. While the fully integrated KDE workspaces are only available on Linux and Unix, some of these features and our applications are available on other platforms.

Communication

  • You may get help from the community to complete your task.
  • Getting to know some KDE people and learning KDE processes and requirements are part of GCi.
  • Ask for help if you're stuck, but remember that you should try to solve the problem yourself before getting assistance.
  • You have taken responsibility for accomplishing your task, so it's perfectly acceptable to get it done in a collaborative fashion - that's how open source works!
  • Remember that you are not allowed to copy anyone else's work and pretend it is your own.

KDE uses IRC and mailing lists to communicate. While talking with your mentors, community members and other students remember:

  • Be considerate and polite.
  • Never put your personal information (phone number, home address) on a mailing list or in IRC.
  • During Google Code-in mentors are sometimes busy helping students, or reviewing tasks. They may not see you join, or see what you write for several minutes. However, especially for beginner tasks, other students and mentors are usually happy to help.

How to connect with mentors using IRC

Mentors are the main people you communicate with while completing a task. Ask your mentor when you have any questions about your task. Along with leaving messages in the GCi webapp, you can communicate with them using IRC, Internet Relay Chat. You can use webchat in your browser to start. If you enjoy IRC, you may want to consider using a desktop IRC client. KDE uses the Freenode network along with many other open-source projects. To chat in IRC just type your message and hit enter. Commands begin with the / character, such as /connect irc.freenode.net to connect to Freenode.

IRC is made of channels (think, "chat rooms") which start with a # sign, such as #kde. On Freenode, you can expect to find a channel for almost any FOSS project, eg, #Fedora, #Python, #kubuntu. To join a channel, use the /join command: /join #kde or /join #kde-soc . To search for a channel, use alis, like this: /msg alis list *searchterm*.

IRC Clients

IRC clients communicate with IRC network servers to allow sending of messages from one user to another. You may have to install an IRC client if your distribution doesn't provide one by default. Some examples of IRC clients are mIRC, XChat and IRSSI for Linux or Windows, and Colloquy for Mac. KDE's IRC client is Konversation which will connect you to Freenode by default.

More about Konversation, and Konversation user manual.

IRC channels for task categories

Tasks in Google Code-in are grouped into five categories. Below are the recommended channels for each category which could be helpful to you as you work on a task. #kde-soc is the channel for all mentors and students. Your mentor may ask you to join a project channel so that the whole team is available to you.

  • Code: #kde-devel
  • Documentation/Training: #kde-docs and #kde-www
  • Outreach/Research: #kde and #kde-promo
  • Quality Assurance: #kde-bugs and #kde-quality
  • User Interface: #kde-usability

Mailing lists

  • When responding to an existing post, please quote relevant text from the original message. It should be easy for those who did not read the original message to understand the issue.
  • Keep subject lines to the point and your message concise.
  • Don’t attach files unless your mentor has specifically told you to do so.
  • Plain text please, unless you are asked to include graphics, charts, or other images.

Development Infrastructure

KDE maintains its own infrastructure for version control system, bug tracker, review tools, mailing lists etc. In the following we list the most important ones that you will probably encounter during the GCI contest. Note that KDE is close to the transition to a new system (called Phabricator, which is similar to popular online services like Github - yet free). Thus, some early adopter projects may ask you to use the new facilities while others are still using the classic tools.

Contributor Accounts (aka "KDE Identity")

KDE Identity is the central database for KDE infrastructure, like wikis, reviews and code commits. Using your KDE Identity credentials, you can log into all Identity-enabled KDE services. Please use your real name to register for a KDE identity account.

Bug Tracking

KDE uses Bugzilla to deal with bugs. Create a Bugzilla account to report, test, triage, or fix bugs. For now, a bugzilla account is needed in addition to your KDE identity account.

Source Code

All source code for KDE applications can be found at:

Coding Tasks

For coding tasks, often the hardest step is to setup your system such that you are able to build the application you want to modify. The typical problems you will be faced with is to get the source code (see above), to install all required build dependencies and finally to start the build.

CMake is the standard build system in KDE. It reads the configuration files in the downloaded source, looks at your system for required dependencies and setup paths to them. If any build dependency is not show, at the end of the CMake execution you get a list of missing dependencies. Instead of running the command line tool, for starters there is an easier to use GUI application, called: cmake-gui.

Build Dependencies

In most cases you can use development packages by your distribution (often marked by a "-dev" or "-devel" suffix). If they are available, this is the way you want to go. You will find out which dependencies you need by downloading the source code and running CMake at it.

If your system is not recent enough to provide all required build dependencies you have essentially two options:

  1. compile also the dependencies (which can be a lot of work)
  2. use a virtual machine (e.g., Docker) based on a recent distribution like Kubuntu or even Kubuntu CI, which provides KDE nightly builds.

Building

Nowadays the tool of choice for many KDE developers is to use a build-script called kdesrc-build. This script allows you, once setup, to automatically fetch sources, configure them, and build and install them.

Code Reviews

To an ensure a high code quality, most KDE source contributions are reviewed before pushed to the repositories.

Usually, you add your to be reviewed code there and receive feedback from other developers, which helps you to get your contribution ready for merging into the repository. This means you get a "ship-it". Since you probably do not have commit rights, please indicate that someone else has to push the code to the repository. All tools provide both a web interface and a command line tool to publish your contributions for review.

Documentation

KDE wikis

Wikis are easy to update, so much information is stored on the KDE wikis.

API Documentation

Google Code-in useful links