Replace the library its maintainers walked away from

A package your product leans on has had no release in years, and it blocks every upgrade around it. It is replaced by a maintained one or by a small piece of your own code, and your product does what it did before.

Before: inside your product, an old package with no maintainers sits beside package A and package B, and the upgrades waiting behind it are crossed out. After: a maintained package has taken its place, and the upgrades are no longer blocked by it.
  • A package your product relies on has no maintainers, and it blocks every upgrade.
  • It is replaced by a maintained one or by a small piece of your own code.
  • Your product does what it did before, and you approve what ships.

What changes for you

The package nobody looks after any more leaves your product, and the product goes on doing what it did before.

It probably arrived years ago, when it was the obvious choice for one job: reading a file format, drawing a chart, turning dates into words your users understand. Then the releases stopped. The people who wrote it moved on to other work, the questions left for them go unanswered, and the last version came out before most of your current team joined.

On its own, an old package is not a crisis. The trouble starts when it holds everything else back. Your team wants a newer version of the language or framework the product runs on, and the old package will not work with it. Another package needs an update, and the old one stands in the way. Each upgrade your engineers plan ends at the same name, and the list of work waiting behind it keeps growing.

That package is replaced, either by one that is still looked after or by a small piece of code written for your product alone. The screens, exports and behaviour your users rely on stay as they were. What changes sits underneath: the upgrades it was blocking are no longer held up by it.

The new code arrives in your own repository, where your engineers can read every line of it, and it belongs to you.

If the problem is the framework your whole product is built on rather than one package inside it, moving off an ageing framework is the page for you.

What you decide

You decide which package this is about, and your engineers usually know it at once.

It is the name that comes up whenever an upgrade stalls. You may have more than one candidate, and choosing the one that blocks the most is a decision that belongs to you.

You decide what kind of replacement you would rather live with. A package that others still maintain is kept current by people outside your team, but it remains something you depend on. A small piece of your own code needs no outside maintainer, but your team looks after it from then on. A choice like this reaches you with the question and a link.

You decide whether the old package’s quirks stay. Users sometimes grow used to a small oddity, such as the way a date is written or the order a list appears in. Keeping it exactly as it was, or tidying it up while the package goes, is your call.

You decide what follows once the way is clear. The upgrades that were waiting are separate pieces of work, and which of them goes first is up to you.

You decide what ships. Nothing reaches your users without your approval.

What you see along the way

You see the replacement arrive in your repository as small changes your engineers can read and approve, and the abandoned package leave with them.

When the work is done, the package that held up your upgrades is no longer part of your product, and your team can see that for themselves in the code.

What it costs you in time

A first conversation about the package, what it does for your product and which upgrades it is holding back. After that, some time from an engineer who knows where the product leans on it, for the questions only someone inside your team can answer. It also helps to hear from whoever answers your customers, since they are the first to hear when a familiar screen behaves differently.

What if you want to stop

Whatever you approved before stopping remains in your repository. If you stop partway, your engineers can see which parts of the product already use the replacement and which still rely on the old package, because every change was one they read and approved. Nothing ties you to us, and the code goes wherever your product goes.

Starting small

We have not replaced an abandoned package in a customer’s product yet, and we will not suggest otherwise. A sensible first piece is the one package your team names first: the one standing in front of the upgrade you want most. Every engagement is tailored to your product and your goals. It starts with a conversation, with no obligation.

Start with one small first piece and judge the result yourself.

Questions leaders ask

Will you also check every other package our product uses?

No. This page is about one package, the one that has been abandoned, being replaced while your product keeps doing what it did before. We do not offer a review of all your packages or of their security. If others worry your team, bring them to the first conversation and we can talk about what makes sense.

Which packages can you replace?

This page names none, on purpose. What an abandoned package did for your product, and what can sensibly take its place, differs from one product to the next. Which package it is, and whether replacing it is a good first piece, is settled with you in the first conversation.

Will our users notice anything?

The aim is that they notice nothing, unless you choose to tidy up an oddity the old package had. We will not promise that nothing can ever go wrong. You approve each change before it reaches your users, so nothing goes live without your say.

Is this the same as moving off an ageing framework?

No. A framework is what the whole product is built on. This page is about one smaller package inside it, which nobody looks after any more and which stands in the way of the upgrades your team wants to make.

How long will it take?

We will not put a time on it here. It depends on how much of your product leans on the package and on what takes its place. You see the replacement arrive in your repository as it takes shape, so you can follow its progress.

Lift your eyes and let us carry the rest.

Talk to us and see what carrying your product forward looks like.

Book a conversation

Prefer to write directly? contact@zefana.com