Move your product to a supported version of its programming language

Your product moves, in steps while it keeps shipping, to a language version its maintainers still support.

Before: your product shows one placeholder language version line, marked support ending. After: the same line shows a placeholder newer version, marked supported by its maintainers.
  • The language version your product runs on is at or near the end of its support.
  • The product moves in steps, with its code and packages, while it keeps shipping.
  • It ends running in production on a version the maintainers still support.

What changes for you

Your product moves off a language version whose support is ending, onto one its maintainers still support, and it runs on that version in production.

The programming language your product is written in comes in versions. The people who maintain the language look after each version for a limited time. When that time is up, the version gets no more security fixes. Your product goes on running the day after, just as it ran the day before. What has changed is that a flaw found in the language from then on stays unfixed for the version you are on.

Your product may be on such a version today, or close to one. The move is made in steps, and your product keeps shipping while it happens. Your code is brought along to the new version. So are the packages it depends on, each moved to a release that works there. The move is finished when your product runs on the supported version in production, and the old one is no longer in use.

That is the whole of this page: the move, the packages brought along, and your product running on the new version. It is not a rewrite in another language, and it adds no features.

Support end dates are set by each language’s maintainers, and this page quotes none. Our framework end-of-life calendar links the dates for some widely used runtimes and frameworks to the maintainers’ own pages. For any other language, its maintainers’ support page is where the date lives.

If what has aged is the framework your product is built on, rather than the language underneath it, moving off an ageing framework is the page for you. If it is one package nobody maintains any more, see replacing an abandoned library.

What you decide

You decide three things: the version your product moves to, what may wait, and what ships.

You decide the target version. It may be the newest version the maintainers publish, or one a step behind it that they still support. Either is a version its maintainers support at the time you choose; which one suits your product is your call.

You decide what may wait. The move itself is the work on this page. Code your engineers would like to write differently on the new version, or a package they would like to take further than the move needs, can be left for later pieces of work, if you say so.

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

What you see along the way

You see the move arrive in your repository as changes your engineers can read and approve.

The work lands in your own code repository. With those changes, the version line your product names goes from the old version to the supported one, the line the drawing above shows. The packages that moved with it appear there too, each at its new release.

When the move is done, your product runs on the supported version in production, and your team can check that for themselves in the code.

What it costs you in time

A first conversation about your product: the version it runs on now, the one you would like it on, and anything you already know stands in the way. After that, some time from an engineer who knows the product well, for the questions that only someone on your team can answer.

What if you want to stop

Every change you approved before stopping stays in your repository. If you stop partway, the changes your engineers approved show how far the move had come and what is still on the old version. The code we build for you is yours. Your code and your product stay yours to take anywhere.

Starting small

We have not moved a customer’s product to a newer version of its language yet, and this page does not suggest otherwise. A sensible first piece is the product whose language version is closest to the end of its support. 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

When does support for our version end?

This page quotes no date. The people who maintain the language publish the end of support for each version on their own support page, and that is the date to go by. Our framework end-of-life calendar links some of those pages; for any other language, its maintainers' page is the source.

Which languages can you move a product on?

This page names none, on purpose. Which language your product is written in, which version it is on and which supported version suits it are settled with you in the first conversation.

Will our users notice anything?

The aim is that your product behaves as it did before, on the new version. We will not promise that nothing can go wrong along the way. You approve each change before it reaches your users, so nothing goes live without your say.

Will you rewrite the product in another language, or add features while you are at it?

No. This page is about one move, to a supported version of the language your product is already written in, with its code and packages brought along. New features, and a rewrite in a different language, are not part of it.

How long will it take?

We will not put a time on it here. It depends on the size of your product, on how far apart the two versions are and on how many of its packages have to move with it. The changes arrive in your repository as the move takes shape, so you can follow how far it has come.

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