Safeguard
Security Guides•

An orphaned shared library: adopt, freeze or retire it?

When a shared internal library has no owner, pick one of three paths: adopt, freeze or retire. A decision guide with criteria and time limits.

Safeguard Security Team
3 min read

An orphaned shared library should get one of three outcomes within a set time: a team adopts it, it is frozen with a published end date, or it is retired and consumers migrate. Leaving it as is means nobody patches its dependencies, and the risk grows quietly.

How to know a library is orphaned

Check four facts. The owner field points to a team that no longer exists. No commit or review in six months. No named person can publish a release. Consumers cannot say who to ask. Two of the four is enough to start the process.

The three paths

PathChoose it whenWhat it commits you to
AdoptMany services depend on it and no good alternative existsA team, a service level, a second maintainer
FreezeA few consumers, stable behaviour, a replacement is plannedSecurity fixes only, a published end date
RetireA maintained alternative exists or few consumers remainA migration plan and a removal date

Criteria to decide

  1. Consumer count. Use your dependency inventory, not memory. Count services and note which are internet facing.
  2. Sensitivity. A library that parses untrusted input or handles credentials deserves adoption or fast retirement, never a quiet freeze.
  3. Alternatives. Is there a maintained library, internal or external, that does the job? Compare on the features consumers actually use.
  4. Dependency health. Scan its own dependencies. If they carry open advisories, the library is already costing someone.
  5. Cost to adopt. Be honest about the hours. A team that adopts without time allocated is an orphan again in a year.

Time limits

Give the decision a deadline of thirty days from discovery. State it in the ticket. Without a deadline the review itself gets orphaned.

For a freeze, publish the end date to every consumer and mark the package deprecated. npm documents that its deprecate command adds a warning shown to everyone who tries to install the package, and it works on version ranges. Other registries have their own mechanisms, so check yours.

Retirement steps

  1. Announce the end date and the replacement.
  2. Open migration tickets in each consuming team's queue.
  3. Track consumers weekly until the count reaches zero.
  4. Deprecate, then archive the repository, then remove access.

Related reading: one person maintains our shared library.

Safeguard can help with the inventory side: its SBOM and dependency scanning shows which services pull in a given internal library, and you can run a free scan at gold.safeguard.sh/scan.

Quick check

Is freezing a library safe?

Only if security fixes still ship. A freeze that stops all work leaves known vulnerabilities in place, so it needs an end date and a named person who can publish a fix.

Who decides between adopt and retire?

The engineering manager or architect group that owns the platform area, with input from the largest consumers. Record the decision and the date.

Sources

  1. npm Docs: npm deprecate
  2. Backstage: Descriptor format of catalog entities

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.