180 degrees of separation #2421
lucas-wilkins
started this conversation in
General
Replies: 1 comment
-
Here's another thing, because we pull in code from bumps/sasmodels/sasdata master branches, its possible to break the main branch without going through the CI. If you push something to sasmodels that breaks sasview, this won't get caught, because the tests that should show it are triggered by actions in sasview. In other words, we don't treat them like different, separately versioned repositories anyway. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Keeping calculation tools, data reading, guis and models conceptually separate is good.
Modularity is good, and having the ability to choose different front ends for a common API is desirable.
The components should be written so that if they were split into separate packages, they would function perfectly well.
This, however, is different from keeping them in different repositories.
There is no reason why releases cannot be made of the individual components from one main repository.
Once separated by version control, the relationship between components becomes ossified - held in place by the need for changes to be made simultaneously. In software engineering terms: the contract between objects becomes fixed.
Before even thinking about splitting components into separate respositories, a certain degree of stability needs to present. You have to be able to say: "this is what our interfaces look like, and it will be fine if they stay like this for the forseeable future. In modern development, no code is ever really stable, and there is a constant battle against bit rot. Even very seasoned, low level libraries like numpy update with breaking changes, meaning that code needs to be maintained, even if it was perfect to begin with. Keeping multiple repositories hinders the agility needed to keep on top of it.
Now, to some specifics regarding the SasView codebase...
Basically, the code is not separated enough to work in different repositories efficiently, and the version control and documentation is too separate.
TL;DR: Modular programming good, modular version control less good. We should be thinking about having fewer repositories, not more
Beta Was this translation helpful? Give feedback.
All reactions