{
  "generated": "2026-10-03",
  "about": "Legacy technology radar by CodeFirst Limited: platforms, frameworks and products placed by vendor support dates. Free to quote with a link.",
  "page": "https://www.codefirst.co.uk/tools/legacy-tech-radar/",
  "rings": {
    "supported": "In vendor support with a future: fine to build on, keep current.",
    "hold": "Still supported, but going nowhere: no new work on it, and a plan for what replaces it when the application next needs major change.",
    "plan": "Security fixes stop within a year. Decide the route now, before it is forced.",
    "retire": "Out of vendor support: no security fixes. Move off it, or isolate it and accept the risk knowingly."
  },
  "items": [
    {
      "number": 1,
      "name": "Windows Server 2019",
      "quadrant": "Platforms",
      "ring": "supported",
      "because": "Supported until 9 January 2029.",
      "stance": "Fine for now; plan to skip to 2025 when it is next rebuilt.",
      "lifecycle": "ws-2019",
      "page": "https://www.codefirst.co.uk/end-of-life/windows-server/#ws-2019"
    },
    {
      "number": 2,
      "name": "Windows Server 2022",
      "quadrant": "Platforms",
      "ring": "supported",
      "because": "Supported until 14 October 2031.",
      "stance": "The sensible target for a server being rebuilt today, with 2025 close behind.",
      "lifecycle": "ws-2022",
      "page": "https://www.codefirst.co.uk/end-of-life/windows-server/#ws-2022"
    },
    {
      "number": 3,
      "name": "SQL Server 2017",
      "quadrant": "Platforms",
      "ring": "supported",
      "because": "Supported until 12 October 2027.",
      "stance": "A year of security fixes left. Move with the server, not separately.",
      "lifecycle": "sql-2017",
      "page": "https://www.codefirst.co.uk/end-of-life/sql-server/#sql-2017"
    },
    {
      "number": 4,
      "name": "SQL Server 2019",
      "quadrant": "Platforms",
      "ring": "supported",
      "because": "Supported until 8 January 2030.",
      "stance": "Supported to 2030; a reasonable place to be, but a new install should go to 2022.",
      "lifecycle": "sql-2019",
      "page": "https://www.codefirst.co.uk/end-of-life/sql-server/#sql-2019"
    },
    {
      "number": 5,
      "name": "SQL Server 2022",
      "quadrant": "Platforms",
      "ring": "supported",
      "because": "Supported until 11 January 2033.",
      "stance": "The version to install today.",
      "lifecycle": "sql-2022",
      "page": "https://www.codefirst.co.uk/end-of-life/sql-server/#sql-2022"
    },
    {
      "number": 6,
      "name": ".NET 10",
      "quadrant": "Platforms",
      "ring": "supported",
      "because": "Supported until 14 November 2028.",
      "stance": "The current long-term support release and the target for new work and migrations.",
      "lifecycle": "net-10",
      "page": "https://www.codefirst.co.uk/end-of-life/dotnet/#net-10"
    },
    {
      "number": 7,
      "name": "PHP 8.4",
      "quadrant": "Platforms",
      "ring": "supported",
      "because": "Supported until 31 December 2028.",
      "stance": "Supported to the end of 2028.",
      "lifecycle": "php-84",
      "page": "https://www.codefirst.co.uk/end-of-life/php/#php-84"
    },
    {
      "number": 8,
      "name": ".NET Framework 4.8",
      "quadrant": "Platforms",
      "ring": "hold",
      "because": "Supported for as long as the Windows version it is installed on. No new features.",
      "stance": "Supported for as long as Windows is, but frozen: no new features and a growing list of packages that no longer ship for it. Nothing new should start here.",
      "lifecycle": "netfx-48",
      "page": "https://www.codefirst.co.uk/end-of-life/dotnet/#netfx-48"
    },
    {
      "number": 9,
      "name": "Windows Server 2016",
      "quadrant": "Platforms",
      "ring": "plan",
      "because": "Security fixes end 12 January 2027.",
      "stance": "Security fixes end in January 2027. Anything still on it needs a dated move to 2022 or 2025.",
      "lifecycle": "ws-2016",
      "page": "https://www.codefirst.co.uk/end-of-life/windows-server/#ws-2016"
    },
    {
      "number": 10,
      "name": ".NET Framework 4.6.2",
      "quadrant": "Platforms",
      "ring": "plan",
      "because": "Security fixes end 12 January 2027.",
      "stance": "Fixes end in January 2027; 4.8 is a small step and buys years.",
      "lifecycle": "netfx-462",
      "page": "https://www.codefirst.co.uk/end-of-life/dotnet/#netfx-462"
    },
    {
      "number": 11,
      "name": ".NET 8",
      "quadrant": "Platforms",
      "ring": "plan",
      "because": "Security fixes end 10 November 2026.",
      "stance": "Long-term support until November 2026, when 10 takes over. Plan the step to 10 within the year.",
      "lifecycle": "net-8",
      "page": "https://www.codefirst.co.uk/end-of-life/dotnet/#net-8"
    },
    {
      "number": 12,
      "name": "PHP 8.2",
      "quadrant": "Platforms",
      "ring": "plan",
      "because": "Security fixes end 31 December 2026.",
      "stance": "Security fixes end December 2026; 8.4 is the target.",
      "lifecycle": "php-82",
      "page": "https://www.codefirst.co.uk/end-of-life/php/#php-82"
    },
    {
      "number": 13,
      "name": "Windows Server 2012 R2",
      "quadrant": "Platforms",
      "ring": "retire",
      "because": "Security fixes ended 10 October 2023.",
      "stance": "Paid extended updates end in October 2026; after that it is an unpatched server on the network. Replace the box, not just the OS.",
      "lifecycle": "ws-2012",
      "page": "https://www.codefirst.co.uk/end-of-life/windows-server/#ws-2012"
    },
    {
      "number": 14,
      "name": "SQL Server 2014",
      "quadrant": "Platforms",
      "ring": "retire",
      "because": "Security fixes ended 9 July 2024.",
      "stance": "Out of support; the paid extension runs to 2027. Upgrade in place to 2019 or 2022 is well trodden.",
      "lifecycle": "sql-2014",
      "page": "https://www.codefirst.co.uk/end-of-life/sql-server/#sql-2014"
    },
    {
      "number": 15,
      "name": "SQL Server 2016",
      "quadrant": "Platforms",
      "ring": "retire",
      "because": "Security fixes ended 14 July 2026.",
      "stance": "Security fixes ended in July 2026. Every instance, including the Express ones other products installed, needs a plan.",
      "lifecycle": "sql-2016",
      "page": "https://www.codefirst.co.uk/end-of-life/sql-server/#sql-2016"
    },
    {
      "number": 16,
      "name": ".NET Framework 4.6.1 and earlier",
      "quadrant": "Platforms",
      "ring": "retire",
      "because": "Security fixes ended 26 April 2022.",
      "stance": "Out of support since 2022. Moving to 4.8 is usually a recompile; do it before anything else.",
      "lifecycle": "netfx-461",
      "page": "https://www.codefirst.co.uk/end-of-life/dotnet/#netfx-461"
    },
    {
      "number": 17,
      "name": ".NET 6",
      "quadrant": "Platforms",
      "ring": "retire",
      "because": "Security fixes ended 12 November 2024.",
      "stance": "Out of support since November 2024. The move to 8 is small; do it.",
      "lifecycle": "net-6",
      "page": "https://www.codefirst.co.uk/end-of-life/dotnet/#net-6"
    },
    {
      "number": 18,
      "name": "PHP 7.4",
      "quadrant": "Platforms",
      "ring": "retire",
      "because": "Security fixes ended 28 November 2022.",
      "stance": "Out of support since 2022 and the version most legacy PHP sites still run. The jump to 8 needs testing, not rewriting.",
      "lifecycle": "php-74",
      "page": "https://www.codefirst.co.uk/end-of-life/php/#php-74"
    },
    {
      "number": 19,
      "name": "ASP.NET Web Forms",
      "quadrant": "Web frameworks",
      "ring": "hold",
      "because": "Supported as part of .NET Framework 4.8, but not available on modern .NET.",
      "stance": "Lives as long as .NET Framework 4.8 and has no path to modern .NET. Keep it patched; plan a replacement of the application, not a port.",
      "lifecycle": "webforms",
      "page": "https://www.codefirst.co.uk/technologies/asp-net-web-forms/"
    },
    {
      "number": 20,
      "name": "ASP.NET MVC 5 and Web API 2",
      "quadrant": "Web frameworks",
      "ring": "hold",
      "because": "Supported, with no path forward.",
      "stance": "Supported with .NET Framework 4.8, not available on modern .NET. The controllers and views port to ASP.NET Core with effort that is mostly mechanical; the plumbing (OWIN, membership, bundling) does not.",
      "lifecycle": null,
      "page": "https://www.codefirst.co.uk/technologies/dotnet-framework/"
    },
    {
      "number": 21,
      "name": "Classic ASP",
      "quadrant": "Web frameworks",
      "ring": "hold",
      "because": "Still runs on IIS as an optional Windows component. No development since 2000.",
      "stance": "Still an optional IIS component, with no development since 2000. Treat it as retired code that happens to run: plan the replacement.",
      "lifecycle": "classic-asp",
      "page": "https://www.codefirst.co.uk/technologies/classic-asp/"
    },
    {
      "number": 22,
      "name": "Knockout.js",
      "quadrant": "Web frameworks",
      "ring": "hold",
      "because": "Supported, with no path forward.",
      "stance": "Maintained but minimal, with no end date announced. Fine to keep in an application that works; not where a new front end should start.",
      "lifecycle": null,
      "page": "https://www.codefirst.co.uk/technologies/knockout-jquery/"
    },
    {
      "number": 23,
      "name": "AngularJS 1.x",
      "quadrant": "Web frameworks",
      "ring": "retire",
      "because": "Security fixes ended 31 December 2021.",
      "stance": "Out of support since the end of 2021. Front ends on it accumulate unpatched dependencies; rebuild the front end when the application is next touched.",
      "lifecycle": "angularjs",
      "page": "https://www.codefirst.co.uk/technologies/angularjs/"
    },
    {
      "number": 24,
      "name": "jQuery 1.x and 2.x",
      "quadrant": "Web frameworks",
      "ring": "retire",
      "because": "No longer supported by its maintainers.",
      "stance": "No longer supported by the jQuery project. Moving to 3.x is usually a small job with a migration plug-in to flag the breaks.",
      "lifecycle": null,
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/"
    },
    {
      "number": 25,
      "name": "Bootstrap 3",
      "quadrant": "Web frameworks",
      "ring": "retire",
      "because": "Security fixes ended 24 July 2019.",
      "stance": "Out of support since 2019. Harmless on its own, but a Bootstrap 3 layout cannot be upgraded piecemeal; it goes with the next redesign.",
      "lifecycle": "bootstrap-3",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#bootstrap-3"
    },
    {
      "number": 26,
      "name": "Bootstrap 4",
      "quadrant": "Web frameworks",
      "ring": "retire",
      "because": "Security fixes ended 1 January 2023.",
      "stance": "Out of support since the start of 2023. Same advice as 3: replace with the next front-end rework.",
      "lifecycle": "bootstrap-4",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#bootstrap-4"
    },
    {
      "number": 27,
      "name": "Vue 2",
      "quadrant": "Web frameworks",
      "ring": "retire",
      "because": "Security fixes ended 31 December 2023.",
      "stance": "Out of support since the end of 2023. Vue 3 is close enough that most applications move with a migration build.",
      "lifecycle": "vue-2",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#vue-2"
    },
    {
      "number": 28,
      "name": "Silverlight",
      "quadrant": "Web frameworks",
      "ring": "retire",
      "because": "Security fixes ended 12 October 2021.",
      "stance": "Out of support since 2021 and will not run in any current browser. Any Silverlight application still in use is already on borrowed hardware.",
      "lifecycle": "silverlight",
      "page": "https://www.codefirst.co.uk/end-of-life/legacy-web-and-desktop/#silverlight"
    },
    {
      "number": 29,
      "name": "Internet Explorer 11",
      "quadrant": "Web frameworks",
      "ring": "retire",
      "because": "Security fixes ended 15 June 2022.",
      "stance": "Retired in 2022. Applications that need IE mode in Edge should lose that need before Edge loses the mode.",
      "lifecycle": "ie-11",
      "page": "https://www.codefirst.co.uk/end-of-life/legacy-web-and-desktop/#ie-11"
    },
    {
      "number": 30,
      "name": "Excel VBA as a system",
      "quadrant": "Desktop, data and integration",
      "ring": "hold",
      "because": "Supported, with no path forward.",
      "stance": "Supported as long as Excel is, which is indefinitely. The risk is not the vendor but the single workbook the business depends on.",
      "lifecycle": null,
      "page": "https://www.codefirst.co.uk/technologies/excel-vba/"
    },
    {
      "number": 31,
      "name": "Entity Framework 6",
      "quadrant": "Desktop, data and integration",
      "ring": "hold",
      "because": "Supported, with no path forward.",
      "stance": "Runs on modern .NET (6.4 and later) and gets fixes, not features. Moving a working EF6 model to EF Core is a separate project; do it when the model changes, not for its own sake.",
      "lifecycle": null,
      "page": null
    },
    {
      "number": 32,
      "name": "WCF",
      "quadrant": "Desktop, data and integration",
      "ring": "hold",
      "because": "Supported, with no path forward.",
      "stance": "Not hosted on modern .NET; CoreWCF keeps existing contracts alive and clients work through the System.ServiceModel packages. New integration goes to Web API or gRPC.",
      "lifecycle": null,
      "page": null
    },
    {
      "number": 33,
      "name": "Microsoft Access 2021",
      "quadrant": "Desktop, data and integration",
      "ring": "plan",
      "because": "Security fixes end 13 October 2026.",
      "stance": "Security fixes end October 2026 for the bought-once version; Microsoft 365 Access rolls on.",
      "lifecycle": "access-2021",
      "page": "https://www.codefirst.co.uk/end-of-life/microsoft-access/#access-2021"
    },
    {
      "number": 34,
      "name": "Visual Basic 6",
      "quadrant": "Desktop, data and integration",
      "ring": "retire",
      "because": "Security fixes ended 8 April 2008.",
      "stance": "The runtime ships with Windows; the tools have had no fixes since 2008 and the pool of people who can change the code shrinks every year.",
      "lifecycle": "vb6",
      "page": "https://www.codefirst.co.uk/technologies/vb6/"
    },
    {
      "number": 35,
      "name": "Visual FoxPro",
      "quadrant": "Desktop, data and integration",
      "ring": "retire",
      "because": "Security fixes ended 13 January 2015.",
      "stance": "Out of support since 2015. Data and screens migrate; the language does not.",
      "lifecycle": "vfp-9",
      "page": "https://www.codefirst.co.uk/end-of-life/legacy-web-and-desktop/#vfp-9"
    },
    {
      "number": 36,
      "name": "Microsoft Access 2016 and 2019",
      "quadrant": "Desktop, data and integration",
      "ring": "retire",
      "because": "Security fixes ended 14 October 2025.",
      "stance": "Out of support since October 2025. An Access front end can stay on a current Office; an Access database shared by several people is the thing to replace.",
      "lifecycle": "access-2019",
      "page": "https://www.codefirst.co.uk/technologies/microsoft-access/"
    },
    {
      "number": 37,
      "name": "Xamarin",
      "quadrant": "Desktop, data and integration",
      "ring": "retire",
      "because": "Security fixes ended 1 May 2024.",
      "stance": "Out of support since May 2024; .NET MAUI is the successor and the migration is mostly project-file surgery for simple apps and a rework for complex ones.",
      "lifecycle": "xamarin",
      "page": "https://www.codefirst.co.uk/end-of-life/legacy-web-and-desktop/#xamarin"
    },
    {
      "number": 38,
      "name": "Python 2.7",
      "quadrant": "Desktop, data and integration",
      "ring": "retire",
      "because": "Security fixes ended 1 January 2020.",
      "stance": "Out of support since 2020. Scripts move to 3 with automated help; a system built on 2 is a rewrite of its dependencies.",
      "lifecycle": "python-27",
      "page": "https://www.codefirst.co.uk/end-of-life/legacy-web-and-desktop/#python-27"
    },
    {
      "number": 39,
      "name": "Drupal 10 and 11",
      "quadrant": "CMS and front-end libraries",
      "ring": "supported",
      "because": "Supported as long as the site keeps to a current minor release; each minor is supported for about a year.",
      "stance": "Supported while the site keeps to a current minor release.",
      "lifecycle": "drupal-10",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#drupal-10"
    },
    {
      "number": 40,
      "name": "Joomla 5",
      "quadrant": "CMS and front-end libraries",
      "ring": "supported",
      "because": "Supported until 12 October 2027.",
      "stance": "Supported to October 2027.",
      "lifecycle": "joomla-5",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#joomla-5"
    },
    {
      "number": 41,
      "name": "WordPress",
      "quadrant": "CMS and front-end libraries",
      "ring": "supported",
      "because": "In support.",
      "stance": "Only the current release is officially supported; the risk sits in the plug-ins. Keep it updating itself and audit the plug-in list yearly.",
      "lifecycle": null,
      "page": null
    },
    {
      "number": 42,
      "name": "Drupal 7",
      "quadrant": "CMS and front-end libraries",
      "ring": "retire",
      "because": "Security fixes ended 5 January 2025.",
      "stance": "Out of support since January 2025 and widely used in the public sector. There is no in-place upgrade: content migrates into a new Drupal 10 or 11 site.",
      "lifecycle": "drupal-7",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#drupal-7"
    },
    {
      "number": 43,
      "name": "Drupal 9",
      "quadrant": "CMS and front-end libraries",
      "ring": "retire",
      "because": "Security fixes ended 1 November 2023.",
      "stance": "Out of support since November 2023; the move to 10 is an upgrade, not a rebuild.",
      "lifecycle": "drupal-9",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#drupal-9"
    },
    {
      "number": 44,
      "name": "Joomla 3",
      "quadrant": "CMS and front-end libraries",
      "ring": "retire",
      "because": "Security fixes ended 17 August 2023.",
      "stance": "Out of support since 2023. Extensions decide whether the upgrade to 5 is a day or a rebuild.",
      "lifecycle": "joomla-3",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#joomla-3"
    },
    {
      "number": 45,
      "name": "Joomla 4",
      "quadrant": "CMS and front-end libraries",
      "ring": "retire",
      "because": "Security fixes ended 14 October 2025.",
      "stance": "Ended October 2025; the step to 5 is small.",
      "lifecycle": "joomla-4",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#joomla-4"
    },
    {
      "number": 46,
      "name": "Umbraco 7 and 8",
      "quadrant": "CMS and front-end libraries",
      "ring": "retire",
      "because": "Security fixes ended 24 February 2025.",
      "stance": "Both out of support. Umbraco 8 to a current LTS is an upgrade path; 7 is a content migration.",
      "lifecycle": "umbraco-8",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#umbraco-8"
    },
    {
      "number": 47,
      "name": "Apache HTTP Server 2.2",
      "quadrant": "CMS and front-end libraries",
      "ring": "retire",
      "because": "Security fixes ended 11 July 2017.",
      "stance": "Out of support since 2017. It usually goes with the operating system it was installed on.",
      "lifecycle": "apache-22",
      "page": "https://www.codefirst.co.uk/end-of-life/web-platforms/#apache-22"
    }
  ]
}