WSMEStackForgeTransition

Importing WSME to StackForge
OpenStack is using WSME (Web Services Made Easy) as part of the new generation of API services. The code is currently hosted on bitbucket using hg, which is introducing some friction into the release process. This page is a collection of notes for what we would need to do to migrate the project to stackforge.

Based on http://ci.openstack.org/stackforge.html

Preparing the Repository
The existing DVCS repository is a Mercurial repo at https://bitbucket.org/cdevienne/wsme/


 * 1) Convert to git with hg-git plugin (http://arr.gr/blog/2011/10/bitbucket-converting-hg-repositories-to-git/)
 * 2) Add .gitreview file in anticipation of adding the repo to the openstack gerrit server
 * 3) Add a CONTRIBUTING file to the repository to match the other StackForge projects
 * 4) Push the resulting git repository somewhere so we can use it as a source for importing

Gerrit ACLs
Reviewers and contributors need LaunchPad IDs.

It is not necessary to sign the OpenStack CLA for this project.

Core Group Membership

 * 1) A new wsme-core group will be created to have review permissions.
 * 2) A new wsme-release group will be created to have release permissions.

Both groups will start with Christophe de Vienne, Doug Hellmann, and anyone else Christophe designates as members. The memberships can be changed over time as needed.

Jenkins Jobs
WSME uses Shining Panda right now: https://jenkins.shiningpanda.com/wsme/

The capabilities of StackForge and Shining Panda don't line up 100%.


 * 1) SF has no Python 2.5 or 3.2 test servers
 * 2) SF has no PyPy test servers
 * 3) There are 67 different tox environments defined in the WSME tox.ini. We don't want to consume that many servers for every patch to WSME, so we will need to figure out how to batch them up.
 * The run-tox.sh script used by infra assumes that the argument is the Python version. We should change that to be the tox env name, so we could have the WSME builders defined to run several sets of tests in a row.
 * We possibly could just move the code hosting and review, and let Shining Panda handle the tests.
 * After discussing the number of jobs with jeblair in #openstack-infra, we decided not to worry about slave contention for the time being and just keep an eye on whether or not it starts to cause issues.

Launchpad
WSME Project: https://launchpad.net/wsme

WSME Maintainers group: https://launchpad.net/~wsme-maintainers

WSME Drivers group: https://launchpad.net/~wsme-drivers

Other things to Decide

 * 1) Review the list of requirements for WSME and make sure they are in the mirror (including the various test scenarios, that may not be covered by our runtime configuration).
 * 2) We need to do something to clearly mark the old bitbucket repo as deprecated.
 * 3) Bug tracker: The code will be mirrored to github under the stackforge project name, but the bug tracker will be turned off. Use Launchpad?
 * 4) Doc publishing: What is the best way to publish the docs, and what permissions need to be granted where to make it work?

Steps

 * 1) Resolve bug tracker question. - launchpad
 * 2) Set up launchpad (dhellmann) done
 * 3) Create group to own the project with 4 members (cdevienne, doug-hellmann, ryan-petrello, jdanjou) done
 * 4) Manually import existing bug reports done
 * 5) Set up git repo for import (rpetrello) done
 * 6) Stackforge project definition with gating on py27 (rpetrello) done
 * 7) New core team members in gerrit (rpetrello & infra) - done
 * 8) doug-hellmann, cdevienne, ryan-petrello, jdanjou
 * 9) New release team members in gerrit (rpetrello & infra) done
 * 10) cdevienne, doug-hellmann, ryan-petrello
 * 11) Add `stackforgeci` as a maintainer in PyPI so StackForge can publish releases based on tags (optional, but a good idea, cdevienne)
 * 12) Update readthedocs.org configuration to point to the new github repository (cdevienne)
 * 13) After import, update shining panda to work from the new repository (cdevienne, possibly infra)
 * 14) Update/create run_tox.sh script for infra to run tests in tox environments other than pyXY and without assuming that we are using testr (dhellmann/rpetrello)
 * 15) Expand gate test coverage to include other tox environments (dhellmann/rpetrello)
 * 16) pecan
 * 17) sphinxext
 * 18) flask
 * 19) cornice
 * 20) py27-nolxml
 * 21) documentation (can we use the existing job definition, or do we need a new one?)
 * 22) Mark the old bitbucket repo as deprecated. (cdevienne)
 * 23) Delete it and set it to redirect to the launchpad page or github repository
 * 24) Update links in the setup.py for the project
 * 25) Figure out how to publish docs to pythonhosted.org in addition to rtd.org (dhellmann)
 * 26) Announce the move to StackForge to the OpenStack community.