Anonymous user
Contributing to Python: Difference between revisions
m
Protected "Contributing to Python" ([edit=sysop] (indefinite) [move=sysop] (indefinite))
imported>Jesstess No edit summary |
imported>Jesstess m (Protected "Contributing to Python" ([edit=sysop] (indefinite) [move=sysop] (indefinite))) |
||
(34 intermediate revisions by the same user not shown) | |||
Line 1:
Welcome! This page contains instructions for
These instructions were written for prospective [http://wiki.python.org/moin/OPW/2014 GNOME Outreach Program for Women] and [http://wiki.python.org/moin/SummerOfCode/2014 Google Summer of Code] interns, but are relevant for anyone interested in contributing to CPython and the standard library.
[[File:Python_logo.png|200px]] [[File:Opw.png|200px]] [[File:Pyladies_logo.png|200px]]
= Part 1: environment setup =
== Goal #1: install an IRC client ==
[[File:Chat.png|100px]]
IRC is a real-time chat protocol that open source projects often use to talk about the project and as a medium for users and developers to help each other.
Line 12 ⟶ 18:
* [[Contributing_to_Python/OSX IRC|OS X]]
* [[Contributing_to_Python/Linux IRC|Linux]]
== Goal #2: practice navigating from the command line ==
[[File:Utilities-terminal.png|100px]]
Many of the tools of open source development are primarily used via the command line. Let's get some practice with navigating the computer from the command line.
Line 20 ⟶ 29:
* [[Contributing_to_Python/OSX command line|OS X]]
* [[Contributing_to_Python/Linux command line|Linux]]
== Goal #3: Get familiar with the Python bug tracker ==
[[File:Bug.png|100px]]
Next,
# What is the oldest open Python ticket?
# How many open issues need a patch?
# How many "critical"-level open issues are there?
== Goal #4: practice using version control ==
[[File:History.png|100px]]
Mercurial is the distributed version control system Python uses to manages changes to its code.
Please [http://mercurial.selenic.com/downloads/ download and install Mercurial now].
If you have not used Mercurial before, please go through this tutorial: http://hginit.com/▼
▲If you have not used Mercurial before, please go through
== Goal #5: practice creating patches ==
[[File:Patch.png|100px]]
Code changes are represented in a concise and standard format called a "diff". <tt>patch</tt> is a utility which applies a "diff" to someone else's copy of the code.
Line 46 ⟶ 64:
http://openhatch.org/missions/diffpatch
= Part II: contributing to Python =
Line 51 ⟶ 70:
== Goal #1: join the mailing list ==
[[File:Email.png|100px]]
Join the Python core-mentorship mailing list and introduce yourself: https://mail.python.org/mailman/listinfo/core-mentorship.▼
The Python community has a lot of mailing lists. The 2 big ones for new contributors are:
# [http://mail.python.org/mailman/listinfo/core-mentorship core-mentorship]: This is a great place to ask questions about contributing, ask for reviews, and get suggestions for bugs to work on.
# [http://mail.python.org/mailman/listinfo/python-dev python-dev]: The main mailing list for developing and releasing Python. Please do not ask general Python questions on this list.
▲
== Goal #2: read the developer guide ==
[[File:Safari.png|100px]]
Read the Python developer guide: http://docs.python.org/devguide/▼
Python has excellent documentation for getting started with contribution in its developer guide: http://docs.python.org/devguide/
Please read through the following sections of the developer guide:
# [http://docs.python.org/devguide/#quick-start Quick start]
# [http://docs.python.org/devguide/setup.html Setup]
# [http://docs.python.org/devguide/help.html Where to get help]
# [http://docs.python.org/devguide/patch.html The lifecycle of a patch]
# [http://docs.python.org/devguide/runtests.html Writing and running tests]
# [http://docs.python.org/devguide/tracker.html#tracker Using the issue tracker]
# [http://docs.python.org/devguide/devcycle.html The CPython development cycle]
By the end, you'll:
* Have downloaded the Python source code
* Built Python
* Run the test suite
* Have an overview of the development cycle.
Don't worry if this doesn't feel fully digested yet! The process will become clearer with practice.
== Goal #3: pick a bug to work on ==
[[File:Debugging.png|100px]]
It's time to pick a Python bug to work on! Visit http://bugs.python.org/ and browse for one that looks good.
It's a bit of an art to determine if a bug is good for a new contributor, so here are some suggestions:
First, the developer guide suggests 2 good areas for first-time contributors:
# [http://docs.python.org/devguide/docquality.html Documentation]
# [http://docs.python.org/devguide/coverage.html Test coverage]
If those sound interesting to you, look for issues in those areas.
Next, for the office hours on Sunday, March 9th, we'll have a list of beginner-friendly bugs. Check back here on Sunday to review that list.
Finally, you can always ask for help or suggestions on the core-mentorship mailing list or in the <tt>#pyladies</tt> IRC channel.
[[File:Patch.png|100px]]
▲
Make sure to run the test suite first and that the tests all still pass!
== Goal #
[[File:Opw.png|100px]]
▲Submit a patch for a Python bug.
Let the core mentorship mailing list know that you've submitted your patch and are ready to
|