Skip to content

Commit

Permalink
Draft new contribution guide
Browse files Browse the repository at this point in the history
  • Loading branch information
bari12 committed Aug 23, 2023
1 parent 58b75f7 commit a234c26
Showing 1 changed file with 26 additions and 23 deletions.
49 changes: 26 additions & 23 deletions docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,35 +10,36 @@ The following is a set of rules for contributing to **Rucio** and its
packages. Use your best judgment, and feel free to propose changes to this
document.

If you have questions, you can reach the core development team on our
[__Mattermost__](mattermost.md) channel, or send an email to our
development mailing list [__[email protected]__](mailto:[email protected]).
If you have questions, you can reach the development team on our
[__Mattermost__](mattermost.md) channel.

## What should I know before I get started

A contribution can be either be a **patch** or **feature**:
A contribution can be either be included in the **next** major release or the
ongoing **current** release line, e.g. `release-33` This becomes relevant when
naming the branches of your contributions (See section 3) so the Rucio maintainers
can understand the targeted release.

* **Patches** include bugfixes and minor changes to the code and are included in
patch releases usually made on a bi-weekly schedule.
* **Features** include major developments or potentially disruptive changes and
are included in feature releases made multiple times a year.
* Larger feature developments, backwards-compatibility breaking changes, changes
to the database schema, significant changes to the REST interface, and similar
**MUST** be targeted to the **next** release line.
* Bugfixes, smaller backwards-compatbile changes to the REST interface, smaller
feature developments, and similar **CAN** be targeted to the **current** release
line.

The [__repository__](https://github.com/rucio/rucio/) consists of different
branches:

* the **master** branch includes the development for the next major version.
* the **release-…** branches include the patch/minor development of the
releases.

Release branches only exist for the currently maintained release
versions. Hotfix branches are created on demand. Please communicate to the Rucio
maintainers, if you wish to hotfix a previous release.
* the **master** branch includes the developments for the next major release.
* the **release-…** branches include the patch/minor developments of the
releases (Such as current and LTS releases). Release branches only exist for
the currently maintained releases (See the [release policy](started/releasepolicy.md))

Generally all [__pull requests__](https://github.com/rucio/rucio/pulls) are to
be created against the Rucio **master** branch. Features will end up in the
upstream **master** only and patches are cherry-picked to the maintained
releases if applicable. Release-specific changes are excluded from that rule and
might be needed if e.g. cherry-picking to the last release was not successful.
be created against the Rucio **master** branch. Pull requests named/targeted for
the **next** major release will end up in the upstream **master** only. Pull
requests named/targeted for the **current** release will be additionally
cherry-picked to the applicable release branch.

The following figure might help you with an overview:

Expand Down Expand Up @@ -105,16 +106,18 @@ number**.
Create a local branch that corresponds to the issue. To easily
identify the purpose of branches different keywords must be used:

* Patch branches must be named **patch-[issue number]-[short description]**
* Feature branches must be named **feature-[issue number]-[short description]**
* Contributions targeted to the **current** release must be named
**current-[issue number]-[short description]**
* Contributions targeted to the **next** major release must be named
**next-[issue number]-[short description]**

If you create these branches by hand please check the spelling because otherwise
the test automation might misidentify your branch. There are utility scripts to
fetch master and create these branches for you:

```bash
./tools/create-patch-branch <unique issue number> '<short_change_message>'
./tools/create-feature-branch <unique issue number> '<short_change_message>'
./tools/create-current-branch <unique issue number> '<short_change_message>'
./tools/create-next-branch <unique issue number> '<short_change_message>'
```

### 4. Commit your changes
Expand Down

0 comments on commit a234c26

Please sign in to comment.