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.

Clone this wiki locally