Current development model is not sustainable and should be consolidated? #94
Labels
enhancement
New feature or request
future
Feature that may be implemented in the future, left as a reference.
help wanted
Extra attention is needed
question
Further information is requested
What's the question at hand
This arose in a recent discussion with @anschaible
So, I saw that there are several PRs open, oftentimes for months at a time, which are interdependent and very big (O(1000) lines of code). The long lifetime and the interdependencies between them are concerning to me, because this suggests that the branches have diverged significantly from main not just in code, but also conceptually. The whole point of PRs is that they should be short-lived, self-contained sets of changes, they are not a good model to manage divergent versions of a software or abandone them half-way and continue on another branch then.
Hence, the currently open PRs should be consolidated and merged before going on with adding new features.
Details
My fear here is that when the time comes for results to be produced, we run into big issues with merging code together again and have to rely on a version in some branch that may or may not be fully reliable. We would have to spend time with bug-fixes and code adjustment under possibly high pressure, which is not conducive to quality and reproducibility. At any rate, it is hard to keep track of where results where derived from when it comes to producing paper results that need to be reproducible if the development process stays the way it is now. Furthermore, it is not sustainable at all as soon as the software is properly released and you get external devs and users.
Therefore, the idea that came up in the last meeting with @anschaible to have a new version that integrates a list of functionality that you guys currently are working on. This we can treat as a 'pre-release' (without actually releasing anything...), i.e., an as far as possible stable system that we can rely on. Once we converged on a list of things to have here, we can set up a milestone that lists the tasks to do. In this way, the development process can be streamlined, and it will be easier to determine what the next steps are and how to work towards them. Granularity is key here.
Secondarily, perhaps it needs to be discussed if the github development model is still a good fit for this project, or if we need perhaps a development or experimental branch that can serve as test bed. The project is in principle small enough for the former to be more than appropriate, but it seems to me that people have a desire to have some kind of sandbox where they can through shovels and buckets around in without hitting their neighbor in the head.
That being said, the git flow development model is only really sensible if we have a production system that must not break (derived from the main branch) and we don´t have this atm. So it might be too early to switch model completely. Moreover, it must be assured that the experimental/dev branch and the main branch do not diverge too far, and I see a risk of this happening.
Suggestions
Sorry if this comes across as harsh. The concerns I bring up here are derived from experience with my own phd thesis (10 -15k of C++/Julia code where I was the only dev), where I made all these mistakes as well with quite deleterious effects.
@TobiBu @ufuk-cakir @anschaible
The text was updated successfully, but these errors were encountered: