Jump to content

GoogleCodeIn: Difference between revisions

From KDE Community Wiki
No edit summary
No edit summary
 
(10 intermediate revisions by 4 users not shown)
Line 3: Line 3:
The KDE Community participates in the [https://developers.google.com/open-source/gci/ Google Code-In] program for 13-17 year old students.
The KDE Community participates in the [https://developers.google.com/open-source/gci/ Google Code-In] program for 13-17 year old students.


For students unfamiliar with Google Code-in but are interested in participating and working with KDE, please visit the link below to get a clearer idea of what Google Code-in is all about.
If you have not participated in Google Code-in before, but want to participate in future Google Code-in and working with KDE, please visit the link below.


* [[GoogleCodeIn/LandingPageforKDE| Google Code-in Landing Page for KDE]]
= The KDE Community =


Find below the links to the previous years' participation:
The KDE® Community is a free software community dedicated to creating an open and user-friendly computing experience, offering an advanced graphical desktop, a wide variety of applications for communication, work, education and entertainment and a platform to easily build new applications upon. We have a strong focus on finding innovative solutions to old and new problems, creating a vibrant atmosphere open for experimentation.
 
= Communication =
 
To communicate with a mentor connect to the IRC channel or in the mailing list in which they are frequently available and write them a message.
 
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 # 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>.
 
For any questions on GCi feel free to ask on the Freenode IRC channel #kde-soc
 
Some helpful tips:
* Google is your friend! Before asking a question, do some basic research yourself on the task and on the related issues you are facing.
* Look at the code, try to understand what the code is supposed to do, and try to find the probable place(s) where you need to make changes in order to fix the task.
* Frame the questions better. For example, What do I have to do to work on this? is not a good question to start with. The more specific your questions are, the more likely somebody can answer them quickly.
* Be patient when asking for input and comments. Your mentor will not always be around or awake. Please just ask. Other people might also be able to help.
* Don't just rely on a single person alone. Try to speak through the public forum, like the IRC channel or the mailing list so that other people around could chip in as well.
* Avoid private emails and private messages in IRC.
* To get faster help from other members of our community, introduce yourself as a Google Code-in student in our communication channels.
* Remember that you are not allowed to copy anyone else's work and pretend it is your own.
 
==== 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 [https://identity.kde.org/index.php?r=registration 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.
* [http://bugs.kde.org/ Bugs.kde.org aka bko]
 
=== Source Code ===
All source code for KDE applications can be found at:
* [http://cgit.kde.org/ cgit.kde.org]
 
== 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.
 
=== 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:
# 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.
 
=== 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.
* [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.
 
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.
* [https://wiki.kde.org/ Main page for KDE wikis]
* [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]
 
== API Documentation ==
* [http://api.kde.org KDE API Documentation]
* [http://doc.qt.io/ Qt API Documentation]
 
= Google Code-in useful links =
* [https://developers.google.com/open-source/gci/ About Google Code-in]
* [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://codein.withgoogle.com/ Google Code-in 2016 Homepage]
 
 
= Previous GCi Ideas list =


* [[GoogleCodeIn/2010/Ideas|2010 Ideas]]
* [[GoogleCodeIn/2010/Ideas|2010 Ideas]]
* [[GoogleCodeIn/2011/Ideas|2011 Ideas]]
* [[GoogleCodeIn/2011/Ideas|2011 Ideas]]
* [[GoogleCodeIn/2012/Ideas|2012 Ideas]]
* [[GoogleCodeIn/2012/Ideas|2012 Ideas]]
* [[GoogleCodeIn/2016/Ideas|2016 Ideas]]
* [[GoogleCodeIn/2017/Ideas|2017 Ideas]]

Latest revision as of 04:12, 17 September 2018


The KDE Community participates in the Google Code-In program for 13-17 year old students.

If you have not participated in Google Code-in before, but want to participate in future Google Code-in and working with KDE, please visit the link below.

The KDE Community

The KDE® Community is a free software community dedicated to creating an open and user-friendly computing experience, offering an advanced graphical desktop, a wide variety of applications for communication, work, education and entertainment and a platform to easily build new applications upon. We have a strong focus on finding innovative solutions to old and new problems, creating a vibrant atmosphere open for experimentation.

Communication

To communicate with a mentor connect to the IRC channel or in the mailing list in which they are frequently available and write them a message.

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

For any questions on GCi feel free to ask on the Freenode IRC channel #kde-soc

Some helpful tips:

  • Google is your friend! Before asking a question, do some basic research yourself on the task and on the related issues you are facing.
  • Look at the code, try to understand what the code is supposed to do, and try to find the probable place(s) where you need to make changes in order to fix the task.
  • Frame the questions better. For example, What do I have to do to work on this? is not a good question to start with. The more specific your questions are, the more likely somebody can answer them quickly.
  • Be patient when asking for input and comments. Your mentor will not always be around or awake. Please just ask. Other people might also be able to help.
  • Don't just rely on a single person alone. Try to speak through the public forum, like the IRC channel or the mailing list so that other people around could chip in as well.
  • Avoid private emails and private messages in IRC.
  • To get faster help from other members of our community, introduce yourself as a Google Code-in student in our communication channels.
  • Remember that you are not allowed to copy anyone else's work and pretend it is your own.

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.

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


Previous GCi Ideas list