Content
View differences
Updated by Niels Lindenthal about 4 years ago
The new date picker for 12.2 (<mention class="mention" data-id="42047" data-type="work_package" data-text="#42047">#42047</mention>) brings seemingly visually minor but important structural changes in anticipation of upcoming features, including _duration_ and _non-working days._ With the introduction of the notion of "constraint types" in the near future (necessarily for the _backwards planning_ feature), the current concept of "manual scheduling" needs updating.
This work package explores the potential challenges with the current approach and seeks to come up with logical and sensible semantics for scheduling.
### The Context
Currently, there are three states involving scheduling:
* **default (no scheduling)**
* the user can _choose_ "**manual scheduling**" today for work packages by enabling a check-box
* a work can _be_ **automatically scheduled** (without input from the user)
In 12.2, **by default** (no scheduling), users can pick start/end dates freely, but the range might sometimes be limited by relations. For example, a work package with a preceeding relationship or a following relationship:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32100/content"></div></figure>
In 12.2, **a manually scheduled** work package simply means that all relations (follows/preceeds, children/parent) are ignored. The user can select any start and finish dates; other work packages will not affect this one:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32102/content"></div></figure>
In 12.2, an **automatically scheduled** work packages are simply work packages whose start and end dates are derived (mostly from children). The user cannot select any dates manually without enabling manual scheduling:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32101/content"></div></figure>
Semantically, "automatically scheduled" (zero user agency over dates) and "manually scheduled" (full user agency over dates) are diamentrically opposed. The default scheduling mode, which is not named, sits in between (some user agency over dates).
Even with duration and non working days, this system can continue to function; the date picker will simply look a bit different:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32201/content"></div></figure>
### The Challenge
However, in even later versions when we introduce constraint types, the current approach reaches its limit. For backwards planning, we need to be able to schedule based on constrains:
* As soon as possible
* As late as possible
This should be possible in something similar to the automatic mode, where the user can't directly chose dates but has the possibility to chose constrain types so the dates that are derived respect these constraints. constraints.
One way to organise it would be like this:
* **default (no scheduling)**
* **manual scheduling**
* **automatically scheduled** scheduled**
* **by constraint type**
However, for this to work, the user has to _enable_ automatic scheduling by choosing a constraint type, but today, automatic scheduling is not a mode the user can manually select.
### Open Questions to Discuss
1. Is a work package scheduled based on constraints automatically or manually scheduled? Is it in between?
2.
What does "manual scheduling" mean in this sense? Unlike Unlke previously, when it simply meant "ignore relations", this now also means "ignore relations and ignore constraint constrait types".
3.
Should the default state be named, and if so, can it be opposed to automatic scheduling? If so, how do we deal with the "default" mode?
4.
And if "automatic" is opposed to "manual", how can we make it possible to _not_ have to select a constraint type? How does one select the default mode that is neither automatic, nor manual?
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32202/content"></div></figure>
Or do we need three scheduling modes, and the constraint types are only offered when "Automatic" is selected? selected?
As an example, **default scheduling does not show constraint types** and behaves like it does today (except now it is named):
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32203/content"></div></figure>
But **automatic scheduling shows constraint types**, with "as early as possible" selected by default:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32204/content"></div></figure>
Is this a sensible solution?
This work package explores the potential challenges with the current approach and seeks to come up with logical and sensible semantics for scheduling.
### The Context
Currently, there are three states involving scheduling:
* **default (no scheduling)**
* the user can _choose_ "**manual scheduling**" today for work packages by enabling a check-box
* a work can _be_ **automatically scheduled** (without input from the user)
In 12.2, **by default** (no scheduling), users can pick start/end dates freely, but the range might sometimes be limited by relations. For example, a work package with a preceeding relationship or a following relationship:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32100/content"></div></figure>
In 12.2, **a manually scheduled** work package simply means that all relations (follows/preceeds, children/parent) are ignored. The user can select any start and finish dates; other work packages will not affect this one:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32102/content"></div></figure>
In 12.2, an **automatically scheduled** work packages are simply work packages whose start and end dates are derived (mostly from children). The user cannot select any dates manually without enabling manual scheduling:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32101/content"></div></figure>
Semantically, "automatically scheduled" (zero user agency over dates) and "manually scheduled" (full user agency over dates) are diamentrically opposed. The default scheduling mode, which is not named, sits in between (some user agency over dates).
Even with duration and non working days, this system can continue to function; the date picker will simply look a bit different:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32201/content"></div></figure>
### The Challenge
However, in even later versions when we introduce constraint types, the current approach reaches its limit. For backwards planning, we need to be able to schedule based on constrains:
* As soon as possible
* As late as possible
This should be possible in something similar to the automatic mode, where the user can't directly chose dates but has the possibility to chose constrain types so the dates that are derived respect these constraints.
One way to organise it would be like this:
* **default (no scheduling)**
* **manual scheduling**
* **automatically scheduled**
* **by constraint type**
However, for this to work, the user has to _enable_ automatic scheduling by choosing a constraint type, but today, automatic scheduling is not a mode the user can manually select.
### Open Questions to Discuss
1. Is a work package scheduled based on constraints automatically or manually scheduled? Is it in between?
2.
3.
4.
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32202/content"></div></figure>
Or do we need three scheduling modes, and the constraint types are only offered when "Automatic" is selected?
As an example, **default scheduling does not show constraint types** and behaves like it does today (except now it is named):
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32203/content"></div></figure>
But **automatic scheduling shows constraint types**, with "as early as possible" selected by default:
<figure class="image op-uc-figure" style="width:75%;"><div class="op-uc-figure--content"><img class="op-uc-image" src="/api/v3/attachments/32204/content"></div></figure>
Is this a sensible solution?