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.
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.
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.
ZenHub supports two dependencies:
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.
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.
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.
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.
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!
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.
For all dependencies being added or removed events will be logged in the Issue history for reference.