============================
So You Want to Contribute...
============================
For general information on contributing to OpenStack, please check out the
`contributor guide `_ to get started.
It covers all the basics that are common to all OpenStack projects: the
accounts you need, the basics of interacting with our Gerrit review system,
how we communicate as a community, etc.
The official Tacker source code is available in following repositories:
* **Tacker server:** https://opendev.org/openstack/tacker
* **Tacker Python client:** https://opendev.org/openstack/python-tackerclient
* **Tacker Horizon UI:** https://opendev.org/openstack/tacker-horizon
Below will cover the more project specific information you need to get started
with Tacker.
Communication
~~~~~~~~~~~~~
* IRC channel ``#tacker`` at `OFTC`_
* Mailing list (prefix subjects with ``[tacker]`` for faster responses)
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-discuss
All conversations are logged and stored for your
convenience at `eavesdrop.openstack.org`_. For more information regarding
OpenStack IRC channels please visit the `OpenStack IRC Wiki`_.
.. _`OFTC`: https://www.oftc.net/
.. _`OpenStack IRC Wiki`: https://wiki.openstack.org/wiki/IRC
.. _`eavesdrop.openstack.org`: http://eavesdrop.openstack.org/irclogs/%23tacker/
Contacting the Core Team
~~~~~~~~~~~~~~~~~~~~~~~~
Please refer to the `Tacker Core Team
`_ contacts.
New Feature Planning
~~~~~~~~~~~~~~~~~~~~
If you want to propose a new feature, Tacker features are tracked on
`Launchpad BP`_.
Enhancement to Tacker functionality can be done using one of the following
two development process options. The choice depends on the complexity of the
enhancement.
Request for Enhancement (RFE) Process
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The developer, or an operator, can write up the requested enhancement in
Tacker's `Launchpad Bugs`_.
* The requester needs to mark the bug with ``RFE`` tag.
* The bug will be in the initial "New" state.
* The requester and team will have a discussion on the enhancement in the
launchpad bug.
* Once the discussion is over a tacker-core team member will acknowledge the
validity of this feature enhancement by moving it to the "Confirmed" state.
* Developers submit patchsets to fix a bug using ``Closes-Bug`` with **bug-id**
in the commit message.
Note, if there are multiple patchsets ``Partial-Bug`` header should be used
instead of ``Closes-Bug``.
* Once all the patchsets are merged the bug will be moved to the "Completed"
state.
* Developer(s) are expected to add a devref describing the usage of the feature
and other related topics in "tacker/doc/source/contributor directory".
This process is recommended for smaller enhancements that can be described
easily and it is relatively easy to implement in a short period of time.
Blueprint and Tacker-Specs process
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The developer, or an operator, can write up the requested enhancement by
submitting a patchset to the `tacker-spec repository`_
* The patchset should follow the `spec template`_
* The requester should also create a corresponding `Launchpad BP`_
for the enhancement proposal
* The requester and the team will have a discussion on the tacker-spec
writeup using gerrit.
* The patchset will be merged into the tackers-specs repository if the
tacker-core team decides this is a valid feature enhancement. A patchset
may also be rejected with clear reasoning.
* Tacker core team will also mark the blueprint Definition field to Approved.
* Developer submits one or more patchsets to implement the enhancement. The
commit message should use "Implements: blueprint " using
the same name as the blueprint name.
* Once all the patchsets are merged the blueprint will be as "Implemented" by
the tacker core team.
* The developer is expected to add a devref describing the usage of the feature
and other related topics in "tacker/doc/source/contributor directory".
This process is recommended for medium to large enhancements that needs
significant code-changes (LOC), community discussions and debates.
.. _`Launchpad BP`: https://blueprints.launchpad.net/tacker
.. _`Launchpad Bugs`: https://bugs.launchpad.net/tacker
.. _`tacker-spec repository`: https://opendev.org/openstack/tacker-specs
.. _`spec template`: https://opendev.org/openstack/tacker-specs/src/branch/master/specs/template.rst
Task Tracking
~~~~~~~~~~~~~
We track our tasks in `Launchpad
`_.
If you're looking for some smaller, easier work item to pick up and get started
on, search for the ``low-hanging-fruit`` tag.
Reporting a Bug
~~~~~~~~~~~~~~~
You found an issue and want to make sure we are aware of it? You can do so on
`Report a bug
`_ in Launchpad.
More info about Launchpad usage can be found on `OpenStack docs page
`_.
Getting Your Patch Merged
~~~~~~~~~~~~~~~~~~~~~~~~~
All changes proposed to Tacker require two +2 votes from core reviewers
before one of the core reviewers can approve patch by giving
``Workflow +1`` vote.
PTL may require more than two +2 votes, depending on the complexity of the
proposal.
More detailed guidelines for reviewers of patches are available at
`Code Review
`_.
.. note::
Pull requests submitted through GitHub will be ignored.
Project Team Lead Duties
~~~~~~~~~~~~~~~~~~~~~~~~
All common PTL duties are enumerated in the `PTL guide
`_.