Skip to content

Repository Organization

Andrew Lee edited this page Apr 6, 2022 · 4 revisions

Historically, IDAES has seen a large number of contributions of code developed by internal users for application specific purposes which lacks the necessary level of documentation and testing to be considered fully maintainable by the core IDAES Developer team. Thus, it has become necessary to enforce a repository structure that clearly separates the core IDAES code which is maintained by the core developer team from that which is contributed and maintained by users (either internal or external to the IDAES project). To achieve this, the IDAES repository is organized with a limited number of top-level folders which separate the code based on usage and level of support from the core developer team.

Top Level Folders

Maintained by Core Developer team

  1. core - this folder contains the core code of the IDAES-IP toolset.
  2. models - this folder contains all standard model libraries.
  3. commands - this folder contains any code related to the IDAES CLI. This is separate for idaes.core to reduce import times.
  4. tests - this folder contains any top-level tests required by the IDAES CI suite.

Maintained by users

  1. apps - this folder contains any tools contributed by users which are not ready for inclusion in idaes.core
  2. models_extra - this folder contains any models contributed by users that are not ready for inclusion in idaes.models.

Deciding where a New Contribution Belongs

Generally, a new contribution by a user will be placed in either apps (if it is a tool) or models_extra (if it is a model) unless it clearly demonstrates the following:

  • Code must be generally applicable (i.e. if cannot contain anything case specific) and meet all core IDAES standards
  • Extensive testing to ensure functionality is maintained
  • Full documentation of the code and how to use it
  • Sufficient in-line documentation to allow IDAES Core developer team to take over maintenance of code
  • Of sufficient general interest to warrant effort from core developer team to maintain (as much as we would like to support everything, we only have so much time and cannot support everything ourselves).

Code from apps and models_extra can be promoted at any time if it is improved to meet the above standards.

Maintenance of Code

All code in core and models is guaranteed to be fully maintained by the core developer team - i.e. if something breaks it is the core developer teams responsibility to fix it. Thus, in order to be included in these folders, the code must be of sufficient quality for the core developer team to be able to maintain without consulting the original developer, and of sufficient general interest that the core developer team is willing to guarantee that it will be maintained (we ae a small team and can't maintain everything by ourselves).

The responsibility for maintaining code in the apps and models_extra folders falls primarily upon the users of that code (either the original contributor or later users of the code). Each piece of code should have one or more assigned "code owners" who take responsibility for maintaining the code and who will be called upon to address any issues which arise. The core developer team will take responsibility for notifying the code owners of any issues that are identified (either through failing tests or posted issues) and may assist with fixing any issues, but primary responsibility will fall upon the code owners. If you are using code found in either apps or models_extra, you are strongly encouraged to volunteer to be a code owner in order to ensure that the code you use is fully maintained.

Clone this wiki locally