Skip to content

development cycle

Don edited this page Oct 15, 2021 · 1 revision

Outline of the sprint / development cycle :

Preparation

We are collating and refining feature specifications in github issues for a number of subjects which would be suitable for sprints. This refinement can and should be done in parallel with all other activities; there is no point starting the implementation until the relevant github issue is sufficiently clear about the requirements. This can hopefully include some outline of the main design changes, and data / event flow; this enables a clearer estimate of the implementation effort, and identifies show-stopper design / technology issues before the sprint.

Implementation

Aim to limit to 1-2 weeks work, preferably in recognisable stages, e.g. first week may produce a proof-of-concept or rough prototype. A significant task will be spread over a series of commits which likely will have impaired app function, and hence will be done on a feature/ branch. It is possible to have multiple feature/ branches in parallel but for our team size a single active feature branch will likely be sufficient, avoiding the effort of merging overlapping work. We have run parallel feature branches at some points; we were able to merge them at several points before they were merged to develop, because they didn't overlap significantly.

Can merge the feature branch to develop when there are still additions to be made to the new functionality, but it should not be retrograde for existing functionality. Aim to merge to develop as soon as it meets that constraint. Can identify sub-tasks which are enhancements to the new functionality, and they can be added after merging to develop.

The result of merging a sprint to develop should normally be a release candidate. It will be installed on the develop AWS instance, so that a broader set of users can evaluate it from different perspectives.
Minor fixes can be made to the release candidate, tracked by creating a release branch. After ~1week if approved the release can be merged with master, and installed on the main instance.