Blame view

DEVELOPMENT.md 6.03 KB
2ee317d9   Antonio Terceiro   Noosfero developm...
1
2
3
4
# Noosfero Development Policy

## Developer Roles

2bdb49ac   Antonio Terceiro   DEVELOPMENT.md: a...
5
* *Developers* are everyone that is contributing code to Noosfero.
2ee317d9   Antonio Terceiro   Noosfero developm...
6
7
8
9
10
11
12
13
* *Committers* are the people with direct commit access to the Noosfero source
  code. They are responsible for reviewing contributions from other developers
  and integrating them in the Noosfero code base. They are the members of the
  [Noosfero group on Gitlab](https://gitlab.com/groups/noosfero/members).
* *Release managers* are the people that are managing the release of a new
  Noosfero version and/or the maintainance work of an existing Noosfero stable
  branch. See MAINTAINANCE.md for details on the maintaince policy.

eb106f08   Rodrigo Souto   development: add ...
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
## Current Commiters

* Antonio Terceiro (@terceiro)
* Bráulio Bhavamitra (@brauliobo)
* Daniela Feitosa (@danielafeitosa)
* Joenio Costa (@joenio)
* Larissa Reis (@larissa)
* Leandro Nunes (@leandronunes)
* Marcos Ronaldo (@marcosronaldo)
* Rodrigo Souto (@diguliu)
* Victor Costa (@vfcosta)

## Current Release Manager

* Rodrigo Souto (@diguliu)

2ee317d9   Antonio Terceiro   Noosfero developm...
30
31
32
33
34
35
36
37
## Development process

* Every new feature or non-trivial bugfix should be reviewed by at least one
  committer. This must be the case even if the original author is a committer.

  * In the case the original author is a committer, he/she should feel free to
    commit directly if after 1 week nobody has provided any kind of feedback.

b5ecb6a4   Antonio Terceiro   DEVELOPMENT.md: d...
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  * Developers who are not committers should feel free to ping committers if
    they do not get feedback on their contributions after 1 week.

    * On GitLab, one can just add a comment to the merge request; one can also
      @-mention specific committers or other developers who have expertise on
      the area of the contribution.

  * Committers should follow the activity of the project, and try to help
    reviewing contributions from others as much as possible.

    * On GitLab one can get emails for all activity on a project by setting the
      [notification settings](https://gitlab.com/profile/notifications) to
      "watch".

  * Anyone can help by reviewing contributions. Committers are the only ones
    who can give the final approval to a contribution, but everyone is welcome
    to help with code review, testing, etc.

    * See note above about setting up notification on GitLab.

2ee317d9   Antonio Terceiro   Noosfero developm...
58
59
60
61
* Committers should feel free to push trivial (or urgent) changes directly.
  There are no strict rule on what makes a change trivial or urgent; committers
  are expected to exercise good judgement on a case by case basis.

2bdb49ac   Antonio Terceiro   DEVELOPMENT.md: a...
62
63
  * Usually changes to the database are not trivial.

2ee317d9   Antonio Terceiro   Noosfero developm...
64
65
66
67
68
69
70
71
72
73
74
75
* In the case of unsolvable conflict between commiters regarding any change to
  the code, the current release manager(s) will have the final say in the
  matter.

* Release managers are responsible for stablishing a release schedule, and
  about deciding when and what to release.

  * Release managers should announce release schedules to the project mailing
    lists in advance.

  * The release schedule may include a period of feature freeze, during which
    no new features or any other changes that are not pre-approved by the
2bdb49ac   Antonio Terceiro   DEVELOPMENT.md: a...
76
77
78
    release manager must be committed to the repository.

  * Committers must respect the release schedule and feature freezes.
2ee317d9   Antonio Terceiro   Noosfero developm...
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

## Maintainance process

### Not all feature releases will be maintained as a stable release

We will be choosing specific release series to be maintained as stable
releases.

This means that a given release is not guaranteed to be maintained as a stable
release, but does *not* mean it won't be. Any committer (or anyone, really) can
decide to maintain a given release as stable and seek help from others to do
so.

### No merges from stable branches to master

*All* changes must be submitted against the master branch first, and when
applicable, backported to the desired stable releases. Exceptions to this rules
are bug fixes that only apply to a given stable branch and not to master.

In the past we had non-trivial changes accepted into stable releases while
master was way ahead (e.g. during the rails3 migration period), that made the
merge back into master very painful.  By eliminating the need to do these
merges, we save time for the people responsible for the release, and eliminate
the possibility of human errors or oversights causing changes to be accepted
into stable that will be a problem to merge back into master.

By getting all fixes in master first, we improve the chances that  a future
release will not present regressions against bugs that should already be fixed,
but the fixes got lost in a big, complicated merge (and those won't exist
anymore, at least not from stable branches to master).

After a fix gets into master, backporting changes into a stable release branch
is the responsibility of whoever is maintaing that branch, and those interested
in it. The stable branch release manager(s) are entitled the final say on any
matters related to that branch.

## Apendix A: how to become a committer

Every developer that wants to be a committer should create [an issue on
Gitlab](https://gitlab.com/noosfero/noosfero/issues) requesting to be added as
2bdb49ac   Antonio Terceiro   DEVELOPMENT.md: a...
119
120
a committer. This request must include information about the requestor's
previous contributions to the project.
2ee317d9   Antonio Terceiro   Noosfero developm...
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137

If 2 or more commiters consider second the request, the requestor is accepted
as new commiter and added to the Noosfero group.

The existing committers are free to choose whatever criteria they want to
second the request, but they must be sure that the new committer is a
responsible developer and knows what she/he is doing. They must be aware that
seconding these requests means seconding the actions of the new committer: if
the new committer screw up, her/his seconds screwed up.

## Apendix B: how to become a release manager

A new release manager for the development version of Noosfero (i.e. the one
that includes new features, a.k.a. the master branch) is apointed by the
current release manager, and must be a committer first.

Release managers for stable branches are self-appointed, i.e. whoever takes the
2bdb49ac   Antonio Terceiro   DEVELOPMENT.md: a...
138
work takes the role. In case of a conflict (e.g. 2+ different people want to do
2ee317d9   Antonio Terceiro   Noosfero developm...
139
140
the work but can't agree on working together), the development release manager
decides.