Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Generate Visual Timeline #285

Open
wants to merge 21 commits into
base: master
Choose a base branch
from
Open

[Feature] Generate Visual Timeline #285

wants to merge 21 commits into from

Conversation

captn3m0
Copy link
Member

@captn3m0 captn3m0 commented Jul 5, 2021

Initial work to solve for #166.

The code is based on https://github.com/nodejs/lts-schedule with some changes:

  • Focus on just 2 sections per release (active/security support)
  • Addition of a "today" line (idea comes from PHP)
  • Bring year-lines to front (same as PHP)
  • Changed colors (using https://flatuicolors.com/palette/defo)
  • Reduced margins, height, and width to better fit
  • Added titles for accessibility improvements (can be improved)

TODO:

  • Pick start and end dates automatically
  • Work even if releases don't have a start date
  • Fix text labels
  • Add an image title at top so this can be embedded elsewhere
  • Add a label for the "Today" line (have a hover thing on SVG already)
  • Style releaseCycle depending on current status
  • Sort releases using the sortReleasesBy configuration as per convention

Previews are functional: https://deploy-preview-285--endoflife-date.netlify.app/centos, though I've enabled it only if we didn't already have an image configured.

@captn3m0 captn3m0 added the enhancement New feature or request label Jul 5, 2021
@captn3m0 captn3m0 self-assigned this Jul 5, 2021
@captn3m0 captn3m0 force-pushed the visual-timeline branch 4 times, most recently from 9403711 to 6f9f706 Compare July 5, 2021 12:47
@captn3m0 captn3m0 mentioned this pull request Jul 5, 2021
@captn3m0 captn3m0 requested a review from BiNZGi July 5, 2021 12:56
@captn3m0
Copy link
Member Author

captn3m0 commented Jul 5, 2021

Need opinion on how to handle differing color meanings:

We currently use Green/Red/Orange to denote any dates (in the table) as being "Safe/Danger/Warning". So if an EoL date is within a few months, it changes color to Orange.

image

However, now we have 2 bars for "active/security" support of every release cycle. Currently, I'm using green/orange, but it needs to be shown better. Perhaps different shades of green?

This is current:

image

Something like this perhaps?

image

Tried to keep the shades far apart for accessibility, and it seems to work? (Tested here)

@remram44
Copy link

remram44 commented Jul 5, 2021

You should probably match the colors with what's in the table. This is difficult right now because the "security-only" etc are not color coded (apparently it's colored by how far away it is?) but having two separate views on the same info with different coloring is awkward I must say.

@captn3m0
Copy link
Member Author

captn3m0 commented Jul 5, 2021

Matching is difficult, but you're right - it is awkward if they do not match. I do have some ideas:

  • splitting the green in table to match the dual green above for one). So the 2 shades of green mean exactly the same thing
  • Similarly using 2 shades of red for Active/Security support in the table and above. This might make reading the chart harder though?

The yellow we use is difficult since it only shows up around the today line. Maybe we could do this on hover (green changes to yelow if date is approaching soon)?

Will post some options here.

@hugovk
Copy link
Member

hugovk commented Jul 5, 2021

https://www.php.net/supported-versions.php uses:

  • red: EOL
  • orange: security only
  • green: active support

image


https://nodejs.org/en/about/releases/ uses:

  • orange: unstable
  • grey: maintenance
  • blue: active
  • green: current

image


https://python-release-cycle.glitch.me/ (and its derivatives https://jefftriplett.com/django-release-cycle/ and https://hugovk.github.io/drupal-release-cycle/) is similar to PHP and uses:

  • red: dead/EOL
  • orange: security
  • green: bugfix
  • blue: prerelease

image

@hugovk
Copy link
Member

hugovk commented Jul 5, 2021

Oh and in general, the charts in this PR are looking good!

I noticed some have newer versions at the top, can they be re-ordered so newer versions are at the bottom, like the other websites tend to have?

image

image

Some do have newer versions at the bottom:

image

@captn3m0
Copy link
Member Author

captn3m0 commented Jul 6, 2021

Ordering is currently based on the sequence in the markdown file. I plan to take sortReleasesBy into account so it's consistent with the tables below.

@captn3m0
Copy link
Member Author

captn3m0 commented Jul 6, 2021

Need suggestions on how to showcase releases that are currently supported, but end dates are not currently known. I had two ideas:

For products where we know approximate release dates (such as Fedora, where releases will likely last for 13 months) - perhaps we could put a date for eol, but mark it as "approximate: true" and that gets a special shading in the timeline.

Another would be to keep it automatically extended to the next month (or 3 months) with the same shading and text stating: "EoL dates are not known in advance".

@BiNZGi
Copy link
Member

BiNZGi commented Jul 6, 2021

The first impression is really good, you are on the right direction. 👍
I'll do a full review when you have completed all points in the TODO list. Let me know...

@captn3m0 captn3m0 mentioned this pull request Jul 18, 2021
@captn3m0 captn3m0 force-pushed the visual-timeline branch 2 times, most recently from d2c9ffc to 53cae1b Compare July 28, 2021 09:04
@captn3m0 captn3m0 linked an issue Aug 5, 2021 that may be closed by this pull request
@usta
Copy link
Member

usta commented Sep 30, 2021

@captn3m0 what is the result of this PR ? is there any improvements ?
If this one not done yet , we could add this project/idea to Hacktoberfest ideas.
[ Another thing (not related to this PR : The links about ideas in Hacktoberfest part is not working in :

Click through the following issues to read more.
    Autofocus to search input
    Hide old releases by default
    Add Product Logo in the sidebar

]

@captn3m0
Copy link
Member Author

Planning to pick this (and the dependabot automation bits) for my hacktoberfest.

- Adds better start/end date calculations
- Try to guess the life of a release
- If that fails, provide overrides in front-matter
- Label any guesses specifically
@captn3m0
Copy link
Member Author

captn3m0 commented Feb 2, 2022

WIP Release Image samples

Easier to browse everything in a single place. This comment hotlinks to the deploy website, so will hopefully auto-update on future builds.

Click to Expand

WIP release image for alpinelinux
WIP release image for amazon
WIP release image for android
WIP release image for angular
WIP release image for ansible
WIP release image for apache
WIP release image for blender
WIP release image for bootstrap
WIP release image for centos
WIP release image for cfengine
WIP release image for citrix
WIP release image for coldfusion
WIP release image for consul
WIP release image for couchbase
WIP release image for debian
WIP release image for docker
WIP release image for dotnetcore
WIP release image for dotnetfx
WIP release image for dotnet
WIP release image for drupal
WIP release image for eks
WIP release image for electron
WIP release image for elixir
WIP release image for fedora
WIP release image for ffmpeg
WIP release image for filemaker
WIP release image for firefox
WIP release image for gitlab
WIP release image for godot
WIP release image for go
WIP release image for haproxy
WIP release image for iphone
WIP release image for java
WIP release image for kindle
WIP release image for kotlin
WIP release image for kubernetes
WIP release image for laravel
WIP release image for lineageos
WIP release image for linuxkernel
WIP release image for linuxmint
WIP release image for log4j
WIP release image for looker
WIP release image for macos
WIP release image for magento
WIP release image for mariadb
WIP release image for mediawiki
WIP release image for mongodb
WIP release image for moodle
WIP release image for msexchange
WIP release image for mssqlserver
WIP release image for mysql
WIP release image for nginx
WIP release image for nodejs
WIP release image for nomad
WIP release image for nvidiadriver
WIP release image for nvidiaproducts
WIP release image for office
WIP release image for opensuse
WIP release image for openzfs
WIP release image for pan
WIP release image for pan
WIP release image for pan
WIP release image for perl
WIP release image for php
WIP release image for pixel
WIP release image for postgresql
WIP release image for powershell
WIP release image for python
WIP release image for qt
WIP release image for rabbitmq
WIP release image for redhat
WIP release image for rockylinux
WIP release image for ros
WIP release image for roundcube
WIP release image for ruby
WIP release image for ruby
WIP release image for samsungmobile
WIP release image for sles
WIP release image for splunk
WIP release image for spring
WIP release image for surface
WIP release image for symfony
WIP release image for ubuntu
WIP release image for unity
WIP release image for vmware
WIP release image for vmware
WIP release image for wagtail
WIP release image for windowsEmbedded
WIP release image for windowsServer
WIP release image for windows
WIP release image for yocto

@hugovk
Copy link
Member

hugovk commented Feb 2, 2022

Great progress!

Some are a bit packed, this is the most extreme :)

WIP release image for samsungmobile

@captn3m0
Copy link
Member Author

captn3m0 commented Feb 2, 2022

Don't see a way to fix, so will probably just disable timeline for that page.

@usta
Copy link
Member

usta commented Feb 2, 2022

Some of products names are cropped :
image

@usta usta changed the title Generate Visual Timeline [Feature] Generate Visual Timeline Aug 16, 2022
@marcwrobel
Copy link
Member

Would love to see this feature on endoflife.date.

An alternative solution that may be lighter to implement would be to use https://developers.google.com/chart/interactive/docs/gallery/timeline#an-advanced-example. I think it's lighter because:

  • it does not require to generate images using a python script during the build,
  • it's just templating.

But it has one drawback : it is not allowed per the Google agreements to embed it. This mean we would have to use the version hosted on Google CDNs (=> privacy concerns).

@captn3m0
Copy link
Member Author

captn3m0 commented Mar 7, 2023

Let me rework this PR, and I can attempt a variant with Google Charts as well. I don't want to link to Google Charts if at all possible, so maybe we can do offline builds using it instead.

@hugovk
Copy link
Member

hugovk commented Mar 7, 2023

We now have one for Python at https://devguide.python.org/versions/

We started off using Mermaid.js to create one like this: python/devguide#988

At build time we generated a Mermaid .mmd file, and the site loaded the JS which then read the mmd data and rendered it as an SVG.

We've since updated it to generate the SVG directly, using templating, at build time: python/devguide#1034

This means we don't need to load a large JavaScript library, the SVG is available immediately, and the SVG is more responsive.

@marcwrobel
Copy link
Member

Let me rework this PR, and I can attempt a variant with Google Charts as well. I don't want to link to Google Charts if at all possible, so maybe we can do offline builds using it instead.

Sure, I just mentioned Google Chart to not forget about it should we need another solution.

We started off using Mermaid.js to create one like this: python/devguide#988

I also tried Mermaid with endoflife.date data but was not convinced by the result.

We've since updated it to generate the SVG directly, using templating, at build time: python/devguide#1034

It is a better alternative than Google Charts, even if it may be more difficult to implement at first, IMHO. Not sure it is that simple, but we could port the template to liquid.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Visual timeline
6 participants