Issue Dependencies

ZenHub Dependencies help teams get better end-to-end visibility for Issues and stories when moving projects forward. This information give teams a stronger understanding about why a block is occurring and what is needed to move initiatives forward with less risk.creating a dependency

Get familiar with ZenHub Dependencies

A dependency is a project management term used when referring to a piece of software, code, or task that relies on another one before it can be considered ready to be worked on.

Here's an example: Issue X uses the framework from Issue Y.

X depends on Y. Y is a blocker for X. This creates a dependent relationship between X and Y.

Dependencies provide teams a bird's eye view of all tasks and related work that must be completed.

Why are Dependencies important to track?

Dependencies give teams a visualization of task relationships within a project. A poor decision made due to lack of full visibility into dependent work can have expensive consequences and delay releases. Tracking dependent work help teams stay ahead of compatibility problems and future Issues that end up setting deadlines back.

Use Dependencies to pro-actively manage risk and track cross-dependent tasks.

Even if your team has a process and framework for talking through Dependencies for upcoming sprints and iterations, a lot of time gets spent managing day-to-day work. Relying solely on meetings to uncover important connections between pieces of work not only takes time away from teams to get actual development done, but risks information not surfacing that is critical to pushing projects forward. Competing priorities, differing schedules, teams working autonomously on the same project, and unforeseen bugs: All examples of work that can result in delays and teams spending more time figuring out the details of a project than actually releasing software.

For example, Team X and Team Y are both working on a new infrastructure change for your product. Team X creates a dependency on Team Y, because they must finish the foundational work on the infrastructure before Team X can start polishing the code. Managing deadlines cross-teams, cross-repos, and even sprint-over-sprint can mean important information gets lost.

ZenHub Dependencies provide the ability to raise cross-team relationships using GitHub Issues and Pull Requests in a central location. This facilitates end-to-end communication and collaboration to mitigate potential risks surrounding important deadlines and objectives.

Creating and managing Dependencies

ZenHub supports two Dependencies:

  • Issues can be Blocked by other issues
  • Issues can be Blocking other issues

To add Dependencies to GitHub Issues or Pull Requests, get started by heading to a GitHub Issue. Below the initial description/comment of the Issue you will see the add dependency button.adding a dependency

To get started, search for the Issue or Pull Request that is a blocker for the Issue you are working on to indicate that is Blocked by another piece of work. If instead, the Issue is a blocker for another Issue, you can select Blocking when adding a dependency.creating a dependency

Once Dependencies are added, all Issues or Pull Requests that are blocked by other Issues or Pull Requests will have a new banner displayed at the top of the Issue indicating what the blockers are. A new badge, Blocked, will also appear at the top of the Issue next to the open/close status indicator. dependency banners

You can also collapse the Dependency list at the top of the Issue if you don't need to see the complete blocking and blockers list. The banner and Blocked badge will remain at the top of the Issue, so you will still see that the Issue is blocked despite having a compact view of the collapsed Dependency list.Collapse dependency section of a GitHub Issue

Unblocking Issues and Pull Requests

Issues and Pull Requests are no longer considered a blocker when they are closed. Once closed, the dependency list will be updated with the Issue's closed status. When an Issue has no more blockers, but is still blocking other Issues the status at the top of the dependency list will be updated to indicate that the Issue is blocking other Issues.Issues being blocked

If the Issue is no longer blocking any other work and is free from blocking any work itself, the Issue will indicate that it is ready to go!

Use Dependencies and Milestones together to stay ahead of important deadlines

Teams can better forecast deadlines and proactively tackle roadblocks by getting a top level view of key dates and events associated with projects using Milestones with Dependencies. Milestones in GitHub help teams signify a sprint and when paired with ZenHub's Dependencies, teams are able to visualize dependent risks while also knowing how they are burning down towards a deadline.

If a dependent relationship is no longer needed, you can remove the connection on either Issue using the remove option on the right-hand side of the dependency list.Removing a dependency

Tracking dependency changes in the Issue history

For all Dependencies being added or removed events will be logged in the Issue history for reference.issue change tracking for dependencies

Viewing Dependencies on the Board

When Dependencies get added to Issues, you can view that Dependency directly from the Board. Four different icons will appear across your Issues as Dependencies get added:

  • Dependencies on ZenHub BoardsThis Issue is blocked by other Issues
  • Dependencies on ZenHub BoardsThis Issue is blocking another Issue
  • Dependencies on ZenHub BoardsIssue is blocked by another Issue, as well as blocking an Issue
  • Dependencies on ZenHub BoardsWhen a question mark appears on an Issue, it indicates that a dependency exists but it is being filtered out. It should only appear when you have a multi-repo Board and are only showing a subset of those repos on the Board. To update the Issue with it’s blocking status, click the show all button on the repo filter on the top left of the Board
Dependencies on ZenHub Boards

You can filter by a dependency to show all the Issues that belong to the Dependency tree of the selected Issue.

To filter the Board, you can either:

  • Use the View Board option within the Issue, under the Dependency section
  • Dependencies on ZenHub Boards
  • Or, click the Dependency icon on the Issue’s Dependency icon from the Board, selecting Filter by this Issue’s Dependencies
  • Dependencies on ZenHub Boards

Once filtered, the Board will show you that Issue’s Dependency tree and where in your workflow each Issue is. A legend will also appear, indicating what each Dependency indicator means based on how actionable each Issue is.

  • Blocking other Issues We recommend teams to work on these Issues first, as they are not blocked, but preventing work on other Issues
  • Blocked and blocking Issues If it is possible to start working on these at the same time as the Issues that are blocking them, finishing these Issues will help clear up completely blocked Issues. As their blockers get closed, they will be unblocked and prioritized
  • Blocked These Issues should be lower priority as other Issues are blocking them so they are not immediately actionable. Best practice to get these Issues ready for development, so once unblocked, they can be actionable sooner
Dependencies on ZenHub Boards

Filtering out Dependencies on Board Issue Cards

Similar to filtering out labels, estimates, or Epics from the Issue card data, Dependencies can also be filtered off. This will remove the status indicators in the top right of blocked/blocking Issues. Filtering these off only impacts your view, it won't change the view of others in your team.Dependencies on ZenHub Boards