βŒ› Manage EoLs like a boss with endoflife.date πŸ›‘

adriens - Dec 14 '22 - - Dev Community

❔ About

Product lifecycle, EoL (End of Life) and more generally obsolescence is a very hot topic for both :

  • πŸ›‘οΈ Security
  • πŸ€— Customer & Developer Experience
  • βŒ› Durable time to market performances

Still,... managing these can be a tedious activity... and it's not always as easy to at least manage that, have metrics.

πŸ‘‰ What you'll learn

This post will introduce you a very concrete API driven approach that makes these data interoperable (through APIs) so you can build effective dashboard with pretty very few efforts.

❔ endoflife.date

Why endoflife.date exists :

🍿 Demos

Below are some integrations we cloud do thanks to endoflife.date's API

Image description

😎 Get EOL from your terminal with eol

πŸ“Š EoL in Neo4J dashboards

After API-driven integrations We could start to implement these kind of dashboards (Neodash)

Image description

... or visualizations (Bloom):

Image description

πŸ•ΉοΈ "Playing" with dependencies and EoLs

Below, a demo on neo4J Neodash:

♨️ Interact Java EoLs roadmap

Once imported into Neo4J, you can run cypher queries:

MATCH (m:JavaEOL)
WITH m,
     CASE 
     WHEN date(m.support)> date() THEN 'True'
     ELSE 'False'
     END AS supported 
RETURN supported, 
       count(supported) as total,
       m.cycle as version
ORDER BY supported 
Enter fullscreen mode Exit fullscreen mode

Image description

πŸ•ΈοΈ Report apps that rely on deprecated Java

MATCH
  (a:Application)-[ra:HAS_GITLAB_REPOSITORY]->(g:GitlabRepository)-[rg:HAS_JAVA_VERSION]->(j:JavaEOL)
WITH a,g,j,

CASE
   WHEN date(j.support) > date()
   THEN 'True'
   ELSE 'False'
END as supported
RETURN supported,
       count(supported) as total,
       a.name as name
ORDER BY supported
Enter fullscreen mode Exit fullscreen mode

Image description

πŸ§‘β€πŸ€β€πŸ§‘ Our contributions (so far)

I have started to contributed to get the best coverage as possible for our current stack so anyone can take benit of it (including ourselves πŸ˜…) :

🧰 cli Tooling

eol CLI to show end-of-life dates for a number of products. :

You can export EoLs in very various ways (csv, tsv, markdown,...) :

πŸ™ Feature Request > Please add csv to your output options πŸ“Š #110

❔ Context

Currently,

❯ eol --version
eol 0.9.0 (Python 3.10.6)

The available output options are

-f {html,json,markdown,rst,tsv}, --format {html,json,markdown,rst,tsv}

But most ETL (and other tools) support csv as input format... and often make the load of csv the default mode.

πŸ™ Feature request

Please add csv output option, respecting rfc4180

For example, the following command :

norwegianblue spring-framework -f csv

Would return :

"cycle","release","latest","latest release","support","eol"
"5.3","2020-10-27","5.3.23","2022-09-15","True","False"
"5.2","2019-09-30","5.2.22","2022-05-11","True","2021-12-31"
"5.1","2018-09-21","5.1.20","2020-12-09","False","2020-12-09"
"5.0","2017-09-28","5.0.20","2020-12-09","False","2020-12-09"
"4.3","2016-06-10","4.3.30","2020-12-09","False","2020-12-31"
"3.2","2012-12-13","3.2.18","2016-12-21","False","2016-12-31"

Thank you in advance and thanks a lot for your tool πŸ‘

Image description

πŸ“‘ Related tools

  • endoflife.date : Informative site with EoL dates of everything
  • cicada : Long Term Support Analyzer
  • norwegianblue : CLI to show end-of-life dates for a number of products.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .