| | 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. |