The POEM process is the official mechanism for proposing, discussing, revising, and ultimately approving or rejecting all changes to the OpenMDAO project which effect its user interaction. The process involves writing, reading, and discussing documents called POEMs (proposal for OpenMDAO enhancement).
This process governs all API changes, feature additions, and feature removals to the OpenMDAO project. It is also recursive because it governs any changes to itself.
The process serves two primary and equally important purposes:
-
Announce all changes to the user interface of OpenMDAO to users of the framework before they are added to the main repository
-
Provide a mechanism for external users to propose changes to the user interface for OpenMDAO
The rules are described in the POEM_000.md document in this repository. The OpenMDAO POEMs repository (i.e. this repo) contains a full record of all POEMs submitted, starting November 1st, 2019. Both the core development team and external users participate, and input on any POEM is welcome from any user at any time.
All POEM activity is managed within this repository, via PRs and comments to those PRs. The best way to track that activity is to star and watch this repository. That way, github's built in notification system to get emails when things are changing. Github has lots of great docs on this!
POEM ID | Title | Author | Status |
---|---|---|---|
000 | POEM Purpose and Guidelines | Justin S. Gray | integrated |
001 | Units update for better astrodynamics support | Rob Falck | integrated |
002 | New capability for user to send a termination signal to an OpenMDAO process so that SNOPT in pyoptsparse can terminate cleanly. | Ken Moore | integrated |
003 | Allowing addition of I/O during Configure | Anil Yildirim; Justin Gray; Rob Falck | integrated |
004 | Creating Interpolant Class For 1D Splines | Danny Kilkenny | integrated |
005 | An OpenMDAO Plugin System | Bret Naylor | integrated |
006 | Re-work the user experience in the N2 diagram | Herb Schilling | integrated |
007 | String Compatibility for ExternalCodeComp and ExternalCodeImplicitComp Command Options | Danny Kilkenny | integrated |
008 | Nonlinear Solver Refactor | Danny Kilkenny | integrated |
009 | setup/configure API Changes | Rob Falck | rejected |
010 | add argument recordable to options.declare |
Rob Falck | integrated |
011 | Expand problem recording options | Rob Falck; Herb Schilling | integrated |
012 | Give the user the option to select the LAPACK driver for use in the SVD used in KrigingSurrogate | Herb Schilling | integrated |
013 | Unit conversion enhancements | Rob Falck | integrated |
014 | Removal of XDSM viewer to be replaced by third-party plugin | Rob Falck | integrated |
015 | Automatic creation of IndepVarComp outputs for all unconnected inputs | Justin Gray | integrated |
016 | Linear algebra components can perform multiple calculations. | Rob Falck | integrated |
017 | User can specify units when adding design variables, constraints, and objectives. | Ken Moore | integrated |
018 | indices and src_indices can contain slices | Ken Moore | integrated |
019 | Random Vectors in Directional Derivatives | Kevin Jacobson | integrated |
020 | KSComp option to automatically add corresponding constraint | Rob Falck | integrated |
021 | _post_configure moved to public API | Rob Falck | rejected |
022 | POEM 022: Shape inputs/outputs by connection or copy from another component variable | Josh Anibal | integrated |
023 | Remove reconfigure code from the current code base | Bret Naylor | integrated |
024 | Calculating ExecComp Jacobian with symbolic derivatives | Péter Onódi | rejected |
025 | allow GA to seek pareto frontier | Ken Moore | integrated |
026 | Remove support for factorial function in ExecComp | Steve Ryan | integrated |
027 | Approximation flag and state tracking | John Jasa | integrated |
028 | check_partials input warnings | Eliot Aretskin-Hariton | rejected |
029 | Retrieval of IO Variable Metadata | Bret Naylor | integrated |
030 | User Accessible Complex Step | Justin Gray | integrated |
031 | Improved Aitken Relaxation | justinsgray | integrated |
032 | Detailed Driver Scaling Report | Justin Gray | integrated |
033 | Linear Constraints in Check Totals | justinsgray | integrated |
034 | Units library function to simplify units. | Ken Moore | rejected |
035 | More generalized behavior in promoted inputs. | Rob Falck | integrated |
036 | Serialization of Kriging training weights | dakror | integrated |
037 | Give list_problem_vars the option to output unscaled variables. | optional real name | integrated |
038 | Raise an error if a user declares a sub-jacobian to have a value of zero. | Kenneth-T-Moore | accepted |
039 | User Function Registration in ExecComp | Justin Gray | integrated |
040 | Integration with IPython notebooks | robfalck | integrated |
041 | Add expressions to ExecComp after instantiation | robfalck | integrated |
042 | DOEDriver different number of levels for different DVs. | Péter Onódi | integrated |
043 | No src_indices warning when both components are distributed |
Mark Leader | rejected |
044 | OpenMDAO-Specific Warnings | Rob Falck | integrated |
045 | Promote-as change | robfalck | rejected |
046 | Definition of serial and distributed variables | justinsgray, naylor-b, joanibal, anilyildirim, kejacobson | integrated |
047 | Component I/O independance from Problem Object | Andrew Ellis | integrated |
048 | Semistructured Training Data for MetaModel | justinsgray | integrated |
049 | Removal of matrix-matrix derivative APIs | justinsgray, naylor-b | integrated |
050 | Fix val/value inconsistency in the API | robfalck | integrated |
051 | Modifications to relative step sizing in finite difference | Ken Moore | integrated |
052 | Function based component definition for OpenMDAO | justinsgray, Ben Margolis, Kenny Lyons | rejected |
053 | Make src_indices behave in the same way as indices applied to a normal numpy array | naylor-b, swryan | integrated |
054 | Specifying source array as flat or non-flat when setting src_indices or dv or constraint indices | naylor-b | integrated |
055 | Min/Max Variable Print Option for Arrays | Andrew Ellis | integrated |
056 | Function based API usable by OpenMDAO and others | Bret Naylor | integrated |
057 | OpenMDAO function based components | Bret Naylor | integrated |
058 | Fixed grid interpolation methods | Kenneth-T-Moore | integrated |
059 | Unitless And Percentage Based Units | Andrew Ellis | integrated |
060 | Reports | robfalck | integrated |
061 | The openmdao:allow_desvar tag |
@robfalck | integrated |
062 | Stricter Option Naming | @naylor-b | integrated |
063 | Allow multiple responses on a single variable | @robfalck | integrated |
064 | Simple Caching for Matrix-Free Derivative APIs | jsgray | rejected |
065 | Add a 'proc_group' option to add_subsystem | @naylor-b | integrated |
066 | Adopt NEP29 | @robfalck | integrated |
067 | Add a method to Vector to compute a hash. | @naylor-b | integrated |
068 | Nonlinear Solver System Output Caching | Andrew Lamkin | integrated |
069 | Declare residual names for implicit components | Josh Anibal | integrated |
070 | Inputs report | @robfalck | integrated |
071 | POEM_071 - Change ExecComp to use declare_coloring |
Rob Falck | integrated |
072 | Add ability to modify bounds and scaling of implicit outputs and optimizer variables after creation. | Rob Falck | integrated |
073 | Add ability for DOEDriver to compute and record total derivatives. | Tucker Babcock | integrated |
074 | Suggest variables close in name on failed connection attempt | Josh Anibal | integrated |
075 | Convention for distributed/serial variables and when to allreduce | Kevin Jacobson | integrated |
076 | Directional total derivative checks | Kevin Jacobson | integrated |
077 | Derivative checks with multiple step sizes | Kevin Jacobson | integrated |
078 | Add ability to filter inputs to only those that are connected to IndepVarComp. | Rob Falck | integrated |
079 | Raise exception if the initial design point exceeds bounds. | Rob Falck | integrated |
080 | Add an activation function to the standard component set. | Rob Falck | rejected |
081 | Add Submodel Component to standard component set. | Nate Steffen | integrated |
082 | Add ability to easily retrieve all independent variables within a Problem. | Rob Falck | integrated |
083 | Specifying order when adding a subsystem | Rob Falck | rejected |
084 | Add a set of jax functions and documentation on using jax with OpenMDAO. | Rob Falck | integrated |
085 | Export view_connections to csv | Carl Recine | integrated |
086 | Top-level setting of system options. | Rob Falck | integrated |
087 | Expand functionality of dynamic shaping. | Bret Naylor | integrated |
088 | User-configurable load_case functionality. | Rob Falck | integrated |
089 | Optimization efficiency improvements (relevance reduction revisited). | Rob Falck | integrated |
090 | Auto ordering of Group subsystems. | Bret Naylor | integrated |
091 | Eliminate combined jacobian-based and matrix free capability in a single component. | Bret Naylor | integrated |
092 | User-defined function hook for pre-processing option set. | Ken Moore | integrated |
093 | Linear solution caching | Shugo Kaneko | integrated |
099 | InputResidsComp | Rob Falck | integrated |