endoflife.date
endoflife.date copied to clipboard
Add Last Modified date
When checking this site for the EOL information for a given tool, it's unclear when the page was last modified and thus if the information is current or out of date which seems somewhat antithetical to the purpose of this project.
Ideally the Last Modified date would be generated programmatically, but at the very least could be hard coded on each page and made a requirement for merging any pull request that updates a tool's info.
Thanks for this. I was looking into a few jekyll last updated plugins: https://github.com/gjtorikian/jekyll-last-modified-at.
One issue with doing it programatically (from git commit date for eg) is that minor edits (such as typo fixes) will also bump the date and make the page appear fresher than it is.
The other alternative that I was considering was adding a "latestReleaseDate" column on each release cycle row. That way, it is forcefully updated alongside every version bump. This also helps a lot with setting up a calendar feed (#59). Thoughts?
@captn3m0 Why hasn't this been done yet? I am with the second option. The PR will only be merged if the date has been updated in cases where it should be.
Sir, Can I work on this issue, please assign me
@sooraj-gk Feel free to file a PR 👍🏽. I'd prefer the jekyll-last-modified-at approach, and would like to see the results before we take a call on how to best go with this.
released three years ago
The last release on RubyGems is last year (1.3.0), it's just not tagged on GitHub: https://rubygems.org/gems/jekyll-last-modified-at/versions/1.3.0
Which of this two options is the preferred way?
I wrote a long comment here for a dual-approach (use the highest latestReleaseDate
, and fallback to the last updated date for the page). But then realized that if a new release is ever made, the corresponding page is also updated automatically due to how our automation works. So we can just use the latter.
As an example, Angular released 14.2.8 on 2022-10-26
. But the corresponding angular.md
page was updated the next day (27th Oct): https://github.com/endoflife-date/endoflife.date/commit/69acc0d6d626416f87bdcd58cc42b8c008f1cdbb for this new release.
Even our sitemap uses the latter automatically: https://endoflife.date/sitemap.xml
<url>
<loc>https://endoflife.date/angular</loc>
<lastmod>2022-10-27T12:32:58+00:00</lastmod>
</url>
As a result, we can just use the last_modified_at
date, which is already set by Jekyll. You can see the sitemap as a reference.
This still has the issue that I'd mentioned above:
One issue with doing it programatically (from git commit date for eg) is that minor edits (such as typo fixes) will also bump the date and make the page appear fresher than it is.
But looking at history of popular pages, I think it's okay for us to use this data as-is, and not worry about minor bumps being annoying - the data is mostly used by search engines. Such changes are not that often made to stable pages, and many of them will actually be relevant (such as policy or changelog changes).
2 Additional Requirements:
- Last Updated should link to the corresponding history page on GitHub: https://github.com/endoflife-date/endoflife.date/commits/master/products/angular.md
- The Last Updated should also be set similarly in the page meta tags as how it is set in the sitemap.
For confirmation's sake, I checked the latestReleaseDate
for all pages (wherever available). This is the data:
Table of products with the latestReleaseDate
Newest Release was how many days ago | Page Last Modified Date | Product |
---|---|---|
4 | 3 | composer |
4 | 3 | ffmpeg |
4 | 3 | ios |
4 | 3 | ipados |
5 | 2 | linuxkernel |
5 | 3 | firefox |
5 | 3 | nomad |
5 | 4 | amazon-linux |
5 | 4 | angular |
5 | 4 | couchbase-server |
6 | 12 | kdeplasma |
6 | 5 | docker-engine |
6 | 5 | elasticsearch |
6 | 5 | laravel |
6 | 5 | nodejs |
6 | 5 | php |
7 | 6 | drush |
7 | 6 | gitlab |
7 | 6 | macos |
7 | 6 | python |
7 | 6 | watchos |
7 | 7 | apache-airflow |
8 | 7 | apache-cassandra |
11 | 10 | perl |
11 | 10 | powershell |
11 | 10 | ubuntu |
12 | 11 | electron |
12 | 11 | nginx |
12 | 11 | terraform |
12 | 5 | consul |
13 | 12 | rabbitmq |
13 | 12 | wagtail |
14 | 13 | emberjs |
14 | 13 | wordpress |
17 | 14 | vue |
18 | 12 | libreoffice |
18 | 14 | ansible |
18 | 14 | nutanix-prism |
19 | 14 | kubernetes |
19 | 14 | numpy |
19 | 14 | nutanix-aos |
19 | 14 | symfony |
20 | 13 | ansible-core |
20 | 14 | mssharepoint |
20 | 19 | typo3 |
20 | 1 | dotnet |
20 | 1 | openssl |
20 | 8 | vmware-esxi |
20 | 8 | vmware-srm |
20 | 8 | vmware-vcenter |
21 | 14 | postgresql |
21 | 1 | hashicorp-vault |
21 | 20 | elixir |
23 | 21 | postfix |
24 | 21 | api-platform |
25 | 23 | drupal |
25 | 23 | nextcloud |
26 | 15 | blender |
27 | 19 | mongodb |
27 | 23 | django |
27 | 23 | go |
28 | 19 | tomcat |
28 | 23 | bootstrap |
28 | 23 | openzfs |
28 | 5 | telegraf |
29 | 23 | redmine |
30 | 7 | cakephp |
31 | 23 | opensearch |
31 | 23 | tarantool |
32 | 23 | mediawiki |
33 | 14 | nutanix-files |
33 | 14 | twig |
33 | 23 | godot |
33 | 23 | haproxy |
33 | 23 | qt |
35 | 23 | kotlin |
40 | 12 | eks |
40 | 23 | redis |
40 | 23 | zabbix |
41 | 19 | mysql |
42 | 23 | mariadb |
46 | 21 | nix |
46 | 21 | varnish |
46 | 23 | spring-framework |
48 | 23 | log4j |
51 | 23 | debian |
51 | 6 | moodle |
52 | 14 | ruby-on-rails |
54 | 23 | splunk |
60 | 23 | pan-gp |
61 | 6 | hbase |
66 | 23 | jquery |
83 | 18 | msexchange |
83 | 23 | alpinelinux |
91 | 23 | magento |
98 | 15 | roundcube |
99 | 6 | pan-xdr |
109 | 23 | rockylinux |
117 | 23 | oraclelinux |
122 | 15 | cfengine |
136 | 23 | solr |
136 | 23 | unrealircd |
139 | 23 | eurolinux |
139 | 23 | react |
155 | 23 | zookeeper |
158 | 23 | almalinux |
167 | 21 | redhat |
174 | 14 | fedora |
202 | 23 | ruby |
246 | 21 | pan-os |
382 | 1 | devuan |
891 | 21 | ros |
This is now done with #2061