A transition occurs when changes in a package require alterations to several other packages which depend on it. To do this, many packages using the package are updated, either being recompiled or updated to a new version; packages blocking a transition might be removed from testing so it can complete. Transitions can become very large and complex, involving tens or even hundreds of packages.