On 2014-11-19 07:27, Alf Birger Rustad wrote:
Hello everybody,

 I am guilty of creating yet another repository in opm. Please provide
feed-back if you like it or not. We can rename it or even delete it.
It is called opm-utilities and currently hosts the python script
summaryplot. Right now it is afaik the only tool we have to plot
results from summary files. The author, Håvard Berland, is happy
about contributing it.

 The thought is that we have this repo for such handy utilities that
does not belong in any other repo. Thoughts are welcome.

 Cheers,
 Alf

Honestly, I don't think it's that good an idea to have separate repositories at all, and especially not to this extent. Let me explain:

1. Some changes actually goes across multiple repositories because of inter-module dependencies. This mandates book-keeping and patch-references between completely independent units and generates more work, more points of failure and generally makes our lives harder.

2. It makes "just building the project" harder, because of implicit dependencies and builder order and other shenanigans. Ideally we should be able to git checkout; mkdir build; cmake; make; in order to get a working binary.

3. Increased maintenance cost of the build system, cmake modules especially. A relevant example: in order to test petsc as a backend solver for the upscale-benchmark I had to:
#1: implement the FindPetsc.cmake in opm-core
#2: copy this FindPetsc.cmake (and other modifications) to opm-porsol (IncompFlowSolverHybrid)
#3: copy this FindPetsc.cmake and other changes to opm-benchmark
#4: compile & pray I didn't miss anything.

This shouldn't be necessary and is a recipe for "lagging updates" in various repositories.

This is what I propose instead:

Remove the repositories all-together and replace with a single opm repo. We maintain the same structure, but with branches instead. The nature of git makes this basically indistinguishable from separate repos. We then implement a master "next-release" branch that we merge all the other branches into, and a series of other "module branches", e.g. opm-core, opm-upscaler, opm-porsol etc. This is much easier to deal with and, in my opinion, a superiour model. It gives the same module distinction as earlier, but it actually manages dependencies in a reasonable manner and makes inter-module changes easier. We already have previous release tags and branches, and this isn't unreasonable to have in the future, but now it will possibly even be simpler because "releases" will now be across all modules.

I cannot think of any downsides to doing it this way, but I'd appreciate some discussion on this.

For reference, the linux kernel, which is a much larger project than opm, only use one repo.

- Jørgen

_______________________________________________
Opm mailing list
[email protected]
http://www.opm-project.org/mailman/listinfo/opm

Reply via email to