Python3/SprintPycon2014

Victor Stinner organizes a sprint to Port OpenStack to Python 3 during 4 days at Montreal (Canada) during Pycon Montreal 2014: between April, 14 (Monday) and April, 17 (Thursday). See Pycon Montreal 2014 sprints.

What
The ultimate goal is to port the whole OpenStack project to Python 3. The goal of the sprint is to port OpenStack components and OpenStack dependencies to Python 3, send patches to port as much code as possible.

If you don't know OpenStack at all, please join us to port modules to Python 3: MySQL-python, boto (see boto3), etc.

Or come to help us replacing eventlet with Trollius!

Who
Anyone knowing Python and OpenStack can participate!

When
April, 14 (Monday) and April, 17 (Thursday).

The next major release of OpenStack is "Icehouse", scheduled for April, 17.

Where
Montreal, at Pycon Montreal 2014.

Requirements

 * Good knowledge of Python
 * Bring a laptop
 * Create an account on Launchpad: Launchpad: new account -- Launchpad is used as OpenID provider, it is at least needed to edit this wiki page, used for the sprint

To contribute to OpenStack:


 * Basic knowledge of OpenStack
 * Install DevStack (small setup of OpenStack written to hack OpenStack)
 * and OpenStack projects, sign the CLA (can be done during the sprint)
 * Join The OpenStack Foundation: Individual Member (Free)
 * Login on review.openstack.org and upload your SSH key

Getting started
We will focus on Oslo Incubator, so start by cloning the repository:

git clone https://github.com/openstack/oslo-incubator.git

Enter oslo-incubator directory, edit requirements.txt to comment "eventlet" line.

cd oslo-incubator vim requirements.txt # comment eventlet line, save, exit

Install tox:

pip install tox==1.6.1

Finally, run unit tests using tox (pip install tox):

tox -e py33

If you would like to run a specific unit test:

$ . .tox/py33/bin/activate $ python -m testtools.run tests.unit.test_cliutils

Or you may try:

$ . .tox/py33/bin/activate $ nosetests tests/unit/test_cliutils.py

See also http://haypo-notes.readthedocs.org/openstack.html#tests

Port OpenStack components to Python 3
First, see Python3 for the latest status.


 * oslo incubator: see https://wiki.openstack.org/wiki/Python3#Oslo_Incubator
 * oslo.messaging
 * swiftclient is almost done
 * glanceclient
 * neutronclient
 * savannaclient

Other tasks:


 * Replace nose with testr
 * Horizon: Replace oslo.sphinx with oslosphinx (drop the dot)
 * Replace eventlet with trollius! (very complex right now)

Port OpenStack dependencies to Python 3
First, see Python3 for the latest status.

* https://github.com/farcepest/MySQLdb1/pull/31 * https://github.com/farcepest/MySQLdb1/pull/48
 * boto: https://github.com/boto/boto/pull/1156 - I sent this PR a long time ago but it hasn't gotten traction. I think the boto team wants to completely rewrite boto (boto3) and do Python 3 support there. i expect that to fracture the community and double the maintenance load (much like Python 3 ;-)) but I think that was what he was leaning towards. You might consider voting for Python 3 support in plain old boto in that PR or on the mailing list...
 * jsonrpclib
 * mysql-python: 2 pending pull requests:
 * oslosphinx: https://review.openstack.org/#/c/79311/
 * pycadf
 * python-ldap
 * qpid-python
 * rtslib-fb
 * sphinxcontrib-docbookrestapi
 * sphinxcontrib-httpdomain
 * sphinxcontrib-pecanwsme
 * sqlalchemy-migrate (in progress)
 * suds
 * thrift
 * websockify

Document

 * Python 3 wiki page
 * OpenStack Style Guidelines
 * Documentation of the six module
 * Port Python 2 code to Python 3
 * Status of the OpenStack port to Python 3
 * Use the new asyncio module and Trollius in OpenStack
 * Why should OpenStack move to Python 3 right now?

IRC
The IRC channel #openstack-pycon of the IRC server Freenode will be used during the sprint.

Participants

 * Chmouel Boudjnah
 * Cyril Roelandt (remote)
 * Doug Hellman (will review patches, remote)
 * Julien Danjou (interested to review patches, remote)
 * Frederic Lepied
 * Victor Stinner (organizer)
 * Éric Araujo (Wednesday)

Synchronize work on OpenStack components
Any change in OpenStack must be carefully reviewed. Don't expect to see your changes commited immediatly, you will probably have to discuss with the "core developers" of each project to enhance your patch, to make it fit the coding style of the project.

If you want to work on a component (ex: neutron, nova, etc.), please write the component name with your name below:



If you send a patch, please add it to the list below.


 * oslo-incubator: https://review.openstack.org/#/c/87336/
 * oslo-incubator: https://review.openstack.org/#/c/87376/
 * oslo-incubator: https://review.openstack.org/#/c/87404/
 * oslo-incubator: https://review.openstack.org/#/c/87413/
 * oslo-incubator: https://review.openstack.org/#/c/88087/
 * oslo-incubator: https://review.openstack.org/#/c/87973/
 * oslo-incubator: https://review.openstack.org/#/c/88124/
 * oslo-incubator: https://review.openstack.org/#/c/74433/
 * oslo-incubator: https://review.openstack.org/#/c/74728/
 * swiftclient: https://review.openstack.org/#/c/87287/
 * swiftclient: https://review.openstack.org/#/c/84104/
 * swiftclient: https://review.openstack.org/#/c/84102/
 * swiftclient: https://review.openstack.org/#/c/87772/
 * swiftclient: https://review.openstack.org/#/c/88351/

Synchronize work on OpenStack dependencies
If you want to work on an OpenStack dependency, please modify the list below:



If you send a patch, pull request, whatever, please add it to the list below: