Content
View differences
Updated by Niels Lindenthal over 2 years ago
# Goal
OpenProject contains extensive project controlling functions (effort estimation, progress calculation, time recording and reporting). These existing functions are to be extended for use in hybrid large-scale projects in which a combination of agile and classic process models is used. In particular, it should be possible to record or calculate the following values of a work breakdown structure both top-down and bottom-up via a hierarchy.
# Context
## Relevant work package attributes
The following work package attributes are focused on
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Name 13.1</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Name 13.2</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Editable for parent work packages</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Estimated time</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Work</p></td><td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" disabled="disabled" checked="checked"><span class="todo-list__label__description"></span></label></li></ul></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Remaining hours</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Remaining work</p></td><td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" disabled="disabled" checked="checked"><span class="todo-list__label__description"></span></label></li></ul></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Progress (%)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">% Complete</p></td><td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" disabled="disabled" checked="checked"><span class="todo-list__label__description"></span></label></li></ul></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Currently values can not be edited for parent work packages</p></td></tr></tbody></table></figure>
## Displaying two values
* Some work package attributes have two values:
* One value for the the parent work package itself.
* One value aggregating the work package and its children values, regardless of the children visibility in the current view.
* Both values are displayed together for the attribute. The aggregated value is prefixed with a "Σ". For instance "7 h · Σ 23 h".
* About the sums row displayed in work package table view, it sums the filtered work packages. As such, the sum does not include the values from filtered out children. The sum from the sum row can thus be different from the sum in the parent aggregated value.
# Features breakdown
## Rename Estimated time, Remaining hours, and Progress (%) attributes
The attributes described above have been renamed in ###50953.
It has been shipped in workPackageValue:50953:version.
## Change calculation and display of Work and Remaining work attributes
* Work and Remaining work are displayed as dual value: one for self and one aggregated as described above.
* The aggregation sums the values of the work package and its descendants.
This is described in ###50953.
It has been shipped in workPackageValue:50953:version.
## Make renamed attributes searchable with old names
* Make the new attribute names more discoverable by supporting the old names in search fields (like when adding a column to a work package view).
This is described in ###52119.
It will be shipped in workPackageValue:52119:version.
## Link to aggregation details
* To help understanding how the aggregate value is computed, it link to a query view showing the work package and its children.
* The linked view shows the work and estimated work columns.
* Once % Complete displays two values, the % Complete column will be added to the query.
This is described in ###52076.
It will be shipped in workPackageValue:52076:version.
## Remove Derived remaining work from work package form configuration
* The attribute Derived remaining work is internal. It is the aggregated value displayed after the Σ sign.
* It should not be visible outside of the Remaining work field and should be removed.
This is described in ###52252.
It will be shipped in workPackageValue:52252:version.
## Remove Derived work and Derived remaining work from activity thread
* The attributes Derived work and Derived remaining work are internal. They are the aggregated value displayed after the Σ sign.
* They are values cached to avoid repetitive computations and should not be visible to the users.
* This is a proposition to remove them
This is described in ###52253.
It will be shipped in workPackageValue:52253:version.
## Change display and calculation of % Complete attribute
* Like "Work" and "Remaining work" attributes, "% Complete" attribute evolves and displays two values: one for the work package and one aggregating values from children
* The new display and the new calculation are in separate work packages, to make the features smaller and shippable independently
The new display is described in ###51188.
It will be shipped in workPackageValue:51188:version.
The new calculation is described in ###40749.
It will be shipped in workPackageValue:40749:version. (It should be 14.0 as it will be a breaking change)
## Support multiple units
* Recording and display duration in different units (hours, days, weeks, months)
This is described in ###50954.
It will be shipped in workPackageValue:50954:version.
## Exclude by status some work package from aggregation
* Work package statuses can be marked as excluded from work estimates aggregation.
* This is useful for statuses like "rejected" where the work, remaining work and % complete values should not be taken into account in the parent values
This is described in ###49409.
It will be shipped in workPackageValue:49409:version.
## Linking Deprecate and remove the config option linking % Complete to status
* As of ##40749, Work, Remaining work, and % Complete values are computed from each other and must be consistent.
* Modifying % Complete due to a status change adjusts would mean also modifying either Work or Remaining work. work to keep the values consistent with each other. This is not desirable as this would mess up the values set by the user for Work and Remaining work.
* The migration path is still being discussed
This is described in ###52130
It will be shipped in workPackageValue:52130:version. (It should be 14.0 as it will be a breaking change)
## Change display of Spent time attribute
* Like "Work" and "Remaining work" attributes, "Spent time" attribute evolves and displays two values: one for the work package and one aggregating values from children.
This is described in ###31998.
It will be shipped in workPackageValue:31998:version.
## Show Work, Remaining work and % Complete in version details page
This is described in ###52186.
It will be shipped in workPackageValue:52186:version.
## Calculate Remaining work based on Work and logged time
* This is on the wish list
* As of ##40749, Work, Remaining work, and % Complete values are computed from each other and must be consistent.
* Logging time spent means Remaining work and % Complete would be changed automatically
This is described in ###22800.
It will be shipped in workPackageValue:22800:version.
# Out of Scope
* Display of historical values using the baseline comparison feature.
* Enhancements to time recording
* Extension of the work packages filter
# Visuals
[https://www.figma.com/file/znrocQvFNLb5jXRXNo7oeD/Progress-estimation?node-id=52-9257](https://www.figma.com/file/znrocQvFNLb5jXRXNo7oeD/Progress-estimation?node-id=52-9257)
<figure class="image op-uc-figure"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/78899/content"></div><figcaption class="op-uc-figure--description">Full hierarchy</figcaption></figure>
<figure class="image op-uc-figure"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/78898/content"></div><figcaption class="op-uc-figure--description">Child work packages filtered out</figcaption></figure>
# Other
The fields need to be renamed in the code for consistency
* See ###51194
# Open
* Can a work package hierarchy span on multiple projects?
* If so, what if some modules like backlog is enabled in one project, but not in another? Would the Remaining Hours field still be displayed?
* In the UI, in form configuration, it's possible to display "Derived remaining hours", and this value is also displayed in the "Remaining hours" field. For instance, "Remaining hours" would display "5h (+6h)" while "Derived remaining hours" would display "6h". It feels redundant. For "Estimated time", there is no "Derived estimated time" field available for display.
* Proposition: remove the "Derived remaining hours" field from the form configuration.
OpenProject contains extensive project controlling functions (effort estimation, progress calculation, time recording and reporting). These existing functions are to be extended for use in hybrid large-scale projects in which a combination of agile and classic process models is used. In particular, it should be possible to record or calculate the following values of a work breakdown structure both top-down and bottom-up via a hierarchy.
# Context
## Relevant work package attributes
The following work package attributes are focused on
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Name 13.1</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Name 13.2</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Editable for parent work packages</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Estimated time</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Work</p></td><td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" disabled="disabled" checked="checked"><span class="todo-list__label__description"></span></label></li></ul></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Remaining hours</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Remaining work</p></td><td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" disabled="disabled" checked="checked"><span class="todo-list__label__description"></span></label></li></ul></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Progress (%)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">% Complete</p></td><td class="op-uc-table--cell"><ul class="todo-list op-uc-list_task-list op-uc-list"><li class="op-uc-list--item"><label class="todo-list__label"><input type="checkbox" disabled="disabled" checked="checked"><span class="todo-list__label__description"></span></label></li></ul></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Currently values can not be edited for parent work packages</p></td></tr></tbody></table></figure>
## Displaying two values
* Some work package attributes have two values:
* One value for the the parent work package itself.
* One value aggregating the work package and its children values, regardless of the children visibility in the current view.
* Both values are displayed together for the attribute. The aggregated value is prefixed with a "Σ". For instance "7 h · Σ 23 h".
* About the sums row displayed in work package table view, it sums the filtered work packages. As such, the sum does not include the values from filtered out children. The sum from the sum row can thus be different from the sum in the parent aggregated value.
# Features breakdown
## Rename Estimated time, Remaining hours, and Progress (%) attributes
The attributes described above have been renamed in ###50953.
It has been shipped in workPackageValue:50953:version.
## Change calculation and display of Work and Remaining work attributes
* Work and Remaining work are displayed as dual value: one for self and one aggregated as described above.
* The aggregation sums the values of the work package and its descendants.
This is described in ###50953.
It has been shipped in workPackageValue:50953:version.
## Make renamed attributes searchable with old names
* Make the new attribute names more discoverable by supporting the old names in search fields (like when adding a column to a work package view).
This is described in ###52119.
It will be shipped in workPackageValue:52119:version.
## Link to aggregation details
* To help understanding how the aggregate value is computed, it link to a query view showing the work package and its children.
* The linked view shows the work and estimated work columns.
* Once % Complete displays two values, the % Complete column will be added to the query.
This is described in ###52076.
It will be shipped in workPackageValue:52076:version.
## Remove Derived remaining work from work package form configuration
* The attribute Derived remaining work is internal. It is the aggregated value displayed after the Σ sign.
* It should not be visible outside of the Remaining work field and should be removed.
This is described in ###52252.
It will be shipped in workPackageValue:52252:version.
## Remove Derived work and Derived remaining work from activity thread
* The attributes Derived work and Derived remaining work are internal. They are the aggregated value displayed after the Σ sign.
* They are values cached to avoid repetitive computations and should not be visible to the users.
* This is a proposition to remove them
This is described in ###52253.
It will be shipped in workPackageValue:52253:version.
## Change display and calculation of % Complete attribute
* Like "Work" and "Remaining work" attributes, "% Complete" attribute evolves and displays two values: one for the work package and one aggregating values from children
* The new display and the new calculation are in separate work packages, to make the features smaller and shippable independently
The new display is described in ###51188.
It will be shipped in workPackageValue:51188:version.
The new calculation is described in ###40749.
It will be shipped in workPackageValue:40749:version. (It should be 14.0 as it will be a breaking change)
## Support multiple units
* Recording and display duration in different units (hours, days, weeks, months)
This is described in ###50954.
It will be shipped in workPackageValue:50954:version.
## Exclude by status some work package from aggregation
* Work package statuses can be marked as excluded from work estimates aggregation.
* This is useful for statuses like "rejected" where the work, remaining work and % complete values should not be taken into account in the parent values
This is described in ###49409.
It will be shipped in workPackageValue:49409:version.
## Linking
* As of ##40749, Work, Remaining work, and % Complete values are computed from each other and must be consistent.
* Modifying % Complete due to a status change adjusts
* The migration path is still being discussed
This is described in ###52130
It will be shipped in workPackageValue:52130:version.
## Change display of Spent time attribute
* Like "Work" and "Remaining work" attributes, "Spent time" attribute evolves and displays two values: one for the work package and one aggregating values from children.
This is described in ###31998.
It will be shipped in workPackageValue:31998:version.
## Show Work, Remaining work and % Complete in version details page
This is described in ###52186.
It will be shipped in workPackageValue:52186:version.
## Calculate Remaining work based on Work and logged time
* This is on the wish list
* As of ##40749, Work, Remaining work, and % Complete values are computed from each other and must be consistent.
* Logging time spent means Remaining work and % Complete would be changed automatically
This is described in ###22800.
It will be shipped in workPackageValue:22800:version.
# Out of Scope
* Display of historical values using the baseline comparison feature.
* Enhancements to time recording
* Extension of the work packages filter
# Visuals
[https://www.figma.com/file/znrocQvFNLb5jXRXNo7oeD/Progress-estimation?node-id=52-9257](https://www.figma.com/file/znrocQvFNLb5jXRXNo7oeD/Progress-estimation?node-id=52-9257)
<figure class="image op-uc-figure"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/78899/content"></div><figcaption class="op-uc-figure--description">Full hierarchy</figcaption></figure>
<figure class="image op-uc-figure"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/78898/content"></div><figcaption class="op-uc-figure--description">Child work packages filtered out</figcaption></figure>
# Other
The fields need to be renamed in the code for consistency
* See ###51194
# Open
* Can a work package hierarchy span on multiple projects?
* If so, what if some modules like backlog is enabled in one project, but not in another? Would the Remaining Hours field still be displayed?
* In the UI, in form configuration, it's possible to display "Derived remaining hours", and this value is also displayed in the "Remaining hours" field. For instance, "Remaining hours" would display "5h (+6h)" while "Derived remaining hours" would display "6h". It feels redundant. For "Estimated time", there is no "Derived estimated time" field available for display.
* Proposition: remove the "Derived remaining hours" field from the form configuration.