Repository navigation
04 Dependencies and Scheduling
| Type | Meaning |
|---|---|
| FS (finish → start) | The successor can start only after the predecessor finishes. Most common, the default |
| SS (start → start) | Both start at the same time |
| FF (finish → finish) | Both finish at the same time |
| SF (start → finish) | The successor can finish only once the predecessor starts. Rarely used |
How to create one: move your mouse to the edge of a task bar in the Gantt chart; a round link handle appears (left edge = start end, right edge = finish end). Drag from it onto the target bar. The ghost line while dragging shows which end you're connecting, which also determines the dependency type.
Cycles are rejected on the spot—the check happens at creation time, not when the solver later finds it can't be scheduled.
Lag is extra time on a dependency; it can be negative (a lead time, i.e. overlap):
| Unit | Meaning |
|---|---|
| Workdays | Follows the project calendar, skipping weekends and holidays |
| Calendar days | Calendar days, counted normally even across non-working days |
| Percent | A percentage of the predecessor task's duration |
The three units can be mixed within the same plan.
| Mode | Behavior |
|---|---|
| Automatic | The engine solves dates from dependencies and constraints. This is the default |
| Manual | The interval is pinned down; dependencies, constraints, and resource leveling can't move it |
How to enter manual: dragging task bars in the Gantt chart (panning, pulling the left handle to change the start, pulling the right handle to change the duration) makes manual mode the result—"what you see is what you get". Editing the start/finish dates in the outline has the same effect.
Conflicts are reported honestly: when a dependency runs into a manual task, Planit doesn't secretly move it—it reports it in the status bar / conflict list.
An automatically scheduled task can carry a pair of constraints: one on the start side + one on the finish side, set in the inspector under "Scheduling":
- Start no earlier than / Start no later than
- Finish no earlier than / Finish no later than
Constraints are only meaningful in automatic mode. A manual task expresses its intent through the pinned-down interval.
- Project direction: Forward (computed forward from the project start) or Backward (computed backward from the finish date; if the project has no finish date set, it falls back to the forward result).
- Task order: each task can choose ASAP (as soon as possible) or ALAP (as late as possible) within its own feasible window.
The engine solves with the Critical Path Method: a forward pass computes earliest start/finish, a backward pass computes latest start/finish, and the difference between them is the slack.
- Total slack: how long this task can be delayed without delaying the project finish
- Free slack: how long it can be delayed without delaying any successor task
- Critical path = the chain with zero slack. Highlighted in the Gantt chart
A plan that can't be scheduled is reported honestly (negative slack, how many workdays short), rather than pretended to succeed.
Change any one of a task's duration, dependencies, constraints, calendar, or resource assignments, and the whole plan is recomputed immediately—critical path, slack, cost, and earned value all update along with it.
Solving runs on a Web Worker: for a project with ten thousand tasks, the interface stays at 60fps while solving, and the status bar waits 300ms before showing "Computing schedule…" (to avoid flicker).
Next: Calendars.