| 1 | = Software development methodologies for BOINC (my opinions) = |
| 2 | |
| 3 | David Anderson, 5 Aug 17 |
| 4 | |
| 5 | There are various approaches to structuring the software development process. |
| 6 | Two popular and constrasting approaches are: |
| 7 | |
| 8 | The "agile" model |
| 9 | https://en.wikipedia.org/wiki/Agile_software_development |
| 10 | |
| 11 | and the "waterfall" model: |
| 12 | https://en.wikipedia.org/wiki/Waterfall_model |
| 13 | |
| 14 | I encourage reading these pages. |
| 15 | Not all aspects of the models apply to BOINC: |
| 16 | you can't have "scrums" if developers are distributed, or there is only one of them. |
| 17 | But the basic ideas apply: |
| 18 | |
| 19 | * The agile model involves rapid prototyping, committing pieces early, |
| 20 | and allowing requirements and implementation to evolve in parallel. |
| 21 | * The waterfall model involves developing features in a sequential way |
| 22 | (requirements, design, implementation, testing) |
| 23 | and committing them at the end of this process. |
| 24 | |
| 25 | Once we let go of the idea that master should be stable |
| 26 | (which is [SoftwareTesting impossible for reasons given here], |
| 27 | there is no reason to require that developers use any particular methodology. |
| 28 | |
| 29 | I greatly prefer the agile model for my own work, |
| 30 | and I think it has major advantages in the context of BOINC. |
| 31 | And, for what it's worth, the world of commercial software development |
| 32 | has mostly moved to the agile model |
| 33 | (if you doubt this, interview at Google). |
| 34 | The agile model is the most "modern", if you care about being modern. |
| 35 | |
| 36 | However, other people might prefer to use the waterfall or other models for their work, |
| 37 | and I have no problem with this. |
| 38 | At the level of code, what matters is that: |
| 39 | |
| 40 | * Developers do a reasonable amount of testing before committing to master. |
| 41 | * Developers take responsibility for fixing bugs in their code ASAP |
| 42 | as these bugs are found in master or in release branches. |
| 43 | * Code quality is high (simple, well-commented, etc.) |
| 44 | |
| 45 | Note: the use of branches is orthogonal. |
| 46 | You can practice either model with or without creating development branches. |
| 47 | It's up to the developer. |