Chi-Tech
devman_A1_develcycle.h
Go to the documentation of this file.
1/**\page DevManDevCycle Development Cycle
2 *
3\section devman_sec0 Development Cycle
4
5The development process of ChiTech is taylored for a small team of developers
6and we will strive to keep to this philosophy as far as possible.
7 We aim to provide stable and reliable releases to users whilst simultaneously
8 keeping the development process fluent.
9
10\subsection devman_sec0_1 Package update cycle - Primary: August
11ChiTech releases comprise a packaged archive that represents a reviewed
12snapshot of the code as determined by the principle developers. Update cycles
13coincide approximately with U.S. University semesters:\n
14 - No later than end of August and no earlier than end of July.
15 - No later than end of February and no earlier than beginning of January.
16
17\subsection devman_sec0_2 Development update cycle - Every 2 weeks
18We as a team are commiting to reviewing Pull Requests (PRs) at a 2 week
19interval. This means that a collaborator should not have to wait more than
20two weeks for their pull request to be reviewed. This does not apply to
21changes requested on previous pull requests which themselves will be
22considered to be a new 2 week process.
23\n
24The basic development process is shown below:
25
26\image html DevelopmentCycle.png " " width=600px
27
28The development master branch will only be merged from the master branch of
29 contributor forks. We will not merge PRs from feature branches. Contributors
30 should merge feature branches to their respective master branches before
31 issueing pull requests.
32\n\n
33
34<B>Example Pull-Request:</B>\n
35Monday January 9 a contributor makes a complex PR. The last dedicated PR-review
36 committee sitting was Wednesday January 4. The next dedicated sitting is then
37 Wednesday January 18 (2 weeks later) and therefore if the committee does not
38 find time before that date then the contributor will at maximum have to wait
39 till January 18. If the review fails or requests additional changes then the
40 timer is reset and the maximum wait time is again two weeks.
41
42<B>Most likely course of action:</B>
43Most likely the review committee members will start to individually respond
44 to the PR before the big review sitting. The contributor will see GitHub code
45 conversations for committee members which can be resolved on the go as
46 shown below.
47
48\image html ReviewConversation.png " " width=600px
49
50
51\subsection devman_sec0_4 Regression tests
52Before any contributer makes a pull request an <B>\f$\alpha\f$-regression</B>
53 test-suite must be run. This is a regression test suite that can be run on a
54 number of local machine processes (typically on the contributor's personal
55 machine). On a weekly basis we will execute a high performance
56 <B>\f$\beta\f$-regression</B> test-suite. This test-suite comprises high
57 process-count tests necessary to ensure that the scalability of core features
58 remain unaffected. If the \f$\beta\f$-regression fails, all pull requests that
59 were merged after the last successful \f$\beta\f$-regression will be reverted and
60 the contributors notified.
61
62\subsection devman_sec0_5 Code review criterion
63
64 -# Changes have a clear purpose and are useful.
65 -# The code passes the \f$\alpha\f$-regression tests.
66 -# If appropriate, test cases are added to regression or unit test suites.
67 We will not force unit tests without good cause.
68 -# No memory leaks (checked with valgrind).
69 -# Conforms to the ChiTech style guide.
70 -# No degradation of performance or greatly increased memory usage. This is
71 not a hard rule – in certain circumstances, a performance loss might be
72 acceptable if there are compelling reasons.
73 -# New features/input are documented. <B>Complex mathematical procedures
74 must be accompanied by a whitepaper</B>.
75 -# No unnecessary external software dependencies are introduced. An extensive
76 justification needs to be provided for more dependencies.
77
78
79\section devman_sec0_6 Documentation quality
80Our policy on documentation is split into two parts: Code annotation and
81 Technical documentation. It is our mission to create a sustainable modern
82 code for which good quality documentation is essential.
83
84\subsection devman_sec0_7 Code annotation
85Code contributions need to be annotated appropriately. There is a strong
86 connection to code-styling but over-all contributors must ensure their code
87 is comprehensible to the principal developers and future contributors. We are
88 not going to enforce specific annotation styles but we do enforce that the
89 <B>annotation must be consistent within large portions of code</B>.
90\n
91\n
92Function/methods need to have `doxygen` documentation at the place of
93 definition. This policy will be <B>strongly</B> enforced for input
94 language (i.e. lua function calls) as this goes into the input reference
95 manual directly.
96
97\subsection devman_sec0_8 Technical documentation
98The fundamental mission on technical documentation is to have contributors
99 provide whitepapers. These are latex-documents that fully explain
100 mathematical derivations and implementations and may include pseudo-code
101 that can be reference to by code.
102 *
103 *
104 *
105 *
106 */