res is used by other packages, yet there is no clear public/private API separation #2523
Replies: 4 comments 3 replies
-
Is this stuff that will be used by any of the ert packages? I think it might be difficult to delineate between usage within |
Beta Was this translation helpful? Give feedback.
-
Another option is to move some things from |
Beta Was this translation helpful? Give feedback.
-
There is some overlap in concepts here with |
Beta Was this translation helpful? Give feedback.
-
I think this discussion is somewhat optimistic in how complex separating the public and private functions of First, one have the obvious consumption from ERT. But, at this point the fact that res and the remaining ERT implementation are in separate packages is more of a technical detail than anything else. From an ERT perspective we should feel free to move around functionality between the packages as we see fit with respect to responsibilities and structure. The second software consuming res is Everest and that consumption is very contained; but in a fashion that is not transparent by only inspecting the ERT repo. This is somewhat cumbersome, but perhaps we could start by making all functions consumed by Everest explicitly public in some fashion. Perhaps writing documentation for them? Then we have all the centrally (for various notions of centrally) managed workflows; that is Python workflows in semeio and subscript. The interesting part here is that they all get However, say hello to my little can of worms 🪱 There is nothing special about the workflows in subscript and semeio besides that they are inspectable, changeable and under control. There are also workflows managed by the various assets that utilises EnKFMain and deducing up-front which parts they are using is very difficult. Furthermore, we don't really have a good alternative for the problems they are solving and discouraging a technical solution to a valid problem without having an alternative technical solution to provide does not make much sense to me... I would suggest two epic tasks to get started on this:
The first is more of a fold up your sleeves and get started kind of epic. While the later requires some serious thinking, experimentation, user feedback, implementation and follow up. And we will probably not be able to act upon it immediately as we should most likely align the run model and the engine of ERT2 and ERT3 before this is done to not increase implementation complexity even further. The good news is that that consolidation work is already on the milestone agenda :) |
Beta Was this translation helpful? Give feedback.
-
res/
does not mark any sub-modules as private, only some class members uses the underscore prefix to indicate it being private. Still, some other packages (subscript to name one) do useres
and we would like that usage to remain. However, there is a need to consider parts of res as private in order to be able to make necessary changes.I think there are several features on the horizon, such as the optimization "mode", which would limit the need to use res as a library. However, for the time being, there should be some line delimiting what we consider public and private.
Proposed solution
move what should be considered private (likely most of
res/
) into a package clearly marked as internal, e.g._ert_internal
to discurage its usage. Likely, what should remain inres/
will be only whatever is used in the wild and we condone the usage of.Beta Was this translation helpful? Give feedback.
All reactions