Skip to content

Instantly share code, notes, and snippets.

@richardlau
Last active July 15, 2025 14:29
Show Gist options
  • Select an option

  • Save richardlau/ae3cea85bacfb3e879d97aa4f72a7662 to your computer and use it in GitHub Desktop.

Select an option

Save richardlau/ae3cea85bacfb3e879d97aa4f72a7662 to your computer and use it in GitHub Desktop.
Visualize Node.js proposed release strategy changes: https://github.com/nodejs/Release/issues/1113
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
<svg xmlns="http://www.w3.org/2000/svg" width="960" height="500"><defs><style type="text/css"><![CDATA[
.current {
fill: #5fa04e;
}
.active {
fill: #229ad6;
}
.maintenance {
fill: #b1bcc2;
}
.unstable {
fill: #e99c40;
}
.bar-join {
fill: #ffffff;
}
.bar-join.unstable, .bar-join.current {
display: none;
}
.tick text {
font: 16px sans-serif;
fill: #89a19d;
}
.axis--y .tick text {
text-anchor: end;
}
.label {
fill: #fff;
font: 20px sans-serif;
font-weight: 100;
text-anchor: start;
dominant-baseline: middle;
text-transform: uppercase;
} ]]></style></defs><g id="bar-container" transform="translate(110, 30)"><g class="axis axis--x" fill="none" font-size="10" font-family="sans-serif" text-anchor="middle"><g class="tick" opacity="1" transform="translate(100.13321492007105,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5"></line><text fill="#000" y="0" x="0.5" dy="-10">Jan 2027</text></g><g class="tick" opacity="1" transform="translate(233.03730017761987,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5" stroke-dasharray="2,2"></line><text fill="#000" y="0" x="0.5" dy="-10">Jan 2028</text></g><g class="tick" opacity="1" transform="translate(366.3055062166963,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5"></line><text fill="#000" y="0" x="0.5" dy="-10">Jan 2029</text></g><g class="tick" opacity="1" transform="translate(499.20959147424514,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5" stroke-dasharray="2,2"></line><text fill="#000" y="0" x="0.5" dy="-10">Jan 2030</text></g><g class="tick" opacity="1" transform="translate(632.1136767317939,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5"></line><text fill="#000" y="0" x="0.5" dy="-10">Jan 2031</text></g><g class="tick" opacity="1" transform="translate(765.0177619893428,0)"><line stroke="#89a19d" y2="440" x1="0.5" x2="0.5" stroke-dasharray="2,2"></line><text fill="#000" y="0" x="0.5" dy="-10">Jan 2032</text></g></g><g class="axis axis--y" fill="none" font-size="10" font-family="sans-serif" text-anchor="start"><g class="tick" opacity="1" transform="translate(0,23.25203252032522)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Main</text></g><g class="tick" opacity="1" transform="translate(0,59.02439024390246)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 20</text></g><g class="tick" opacity="1" transform="translate(0,94.79674796747969)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 22</text></g><g class="tick" opacity="1" transform="translate(0,130.56910569105693)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 24</text></g><g class="tick" opacity="1" transform="translate(0,166.34146341463418)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 25</text></g><g class="tick" opacity="1" transform="translate(0,202.11382113821142)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 26</text></g><g class="tick" opacity="1" transform="translate(0,237.88617886178864)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 27</text></g><g class="tick" opacity="1" transform="translate(0,273.6585365853658)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 28</text></g><g class="tick" opacity="1" transform="translate(0,309.4308943089431)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 29</text></g><g class="tick" opacity="1" transform="translate(0,345.2032520325203)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 30</text></g><g class="tick" opacity="1" transform="translate(0,380.9756097560976)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 31</text></g><g class="tick" opacity="1" transform="translate(0,416.7479674796748)"><line stroke="#e1e7e7" x2="820" y1="0.5" y2="0.5"></line><text fill="#000" x="0" y="0.5" dy="0.32em" dx="-10">Node.js 32</text></g><line y1="440" y2="440" x2="820" stroke="#89a19d"></line></g><g><rect class="bar unstable" x="0" y="10.731707317073187" width="820" height="25.040650406504064"></rect><rect class="bar-join unstable" x="-1" y="10.731707317073187" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="15" y="25.25203252032522" style="opacity: 1;">unstable</text></g><g><rect class="bar maintenance" x="0" y="46.504065040650424" width="10.559502664298401" height="25.040650406504064"></rect><rect class="bar-join maintenance" x="-1" y="46.504065040650424" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="15" y="61.02439024390246" style="opacity: 0;">maintenance</text></g><g><rect class="bar maintenance" x="0" y="82.27642276422766" width="143.46358792184725" height="25.040650406504064"></rect><rect class="bar-join maintenance" x="-1" y="82.27642276422766" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="15" y="96.79674796747969" style="opacity: 0;">maintenance</text></g><g><rect class="bar maintenance" x="73.55239786856127" y="118.04878048780489" width="203.1793960923623" height="25.040650406504064"></rect><rect class="bar-join maintenance" x="72.55239786856127" y="118.04878048780489" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="88.55239786856127" y="132.56910569105693" style="opacity: 1;">maintenance</text></g><g><rect class="bar active" x="0" y="118.04878048780489" width="73.55239786856127" height="25.040650406504064"></rect><rect class="bar-join active" x="-1" y="118.04878048780489" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="15" y="132.56910569105693" style="opacity: 0;">active</text></g><g><rect class="bar maintenance" x="0" y="153.82113821138213" width="22.211367673179396" height="25.040650406504064"></rect><rect class="bar-join maintenance" x="-1" y="153.82113821138213" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="15" y="168.34146341463418" style="opacity: 0;">maintenance</text></g><g><rect class="bar maintenance" x="206.45648312611013" y="189.59349593495938" width="136.90941385435167" height="25.040650406504064"></rect><rect class="bar-join maintenance" x="205.45648312611013" y="189.59349593495938" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="221.45648312611013" y="204.11382113821142" style="opacity: 0;">maintenance</text></g><g><rect class="bar active" x="76.46536412078153" y="189.59349593495938" width="129.99111900532858" height="25.040650406504064"></rect><rect class="bar-join active" x="75.46536412078153" y="189.59349593495938" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="91.46536412078153" y="204.11382113821142" style="opacity: 1;">active</text></g><g><rect class="bar current" x="7.646536412078152" y="189.59349593495938" width="68.81882770870338" height="25.040650406504064"></rect><rect class="bar-join current" x="6.646536412078152" y="189.59349593495938" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="22.646536412078152" y="204.11382113821142" style="opacity: 0;">current</text></g><g><rect class="bar maintenance" x="339.7246891651865" y="225.3658536585366" width="136.54529307282422" height="25.040650406504064"></rect><rect class="bar-join maintenance" x="338.7246891651865" y="225.3658536585366" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="354.7246891651865" y="239.88617886178864" style="opacity: 0;">maintenance</text></g><g><rect class="bar active" x="209.3694493783304" y="225.3658536585366" width="130.3552397868561" height="25.040650406504064"></rect><rect class="bar-join active" x="208.3694493783304" y="225.3658536585366" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="224.3694493783304" y="239.88617886178864" style="opacity: 1;">active</text></g><g><rect class="bar current" x="140.550621669627" y="225.3658536585366" width="68.8188277087034" height="25.040650406504064"></rect><rect class="bar-join current" x="139.550621669627" y="225.3658536585366" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="155.550621669627" y="239.88617886178864" style="opacity: 0;">current</text></g><g><rect class="bar maintenance" x="472.6287744227354" y="261.1382113821138" width="136.5452930728241" height="25.040650406504064"></rect><rect class="bar-join maintenance" x="471.6287744227354" y="261.1382113821138" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="487.6287744227354" y="275.6585365853658" style="opacity: 0;">maintenance</text></g><g><rect class="bar active" x="342.63765541740673" y="261.1382113821138" width="129.99111900532864" height="25.040650406504064"></rect><rect class="bar-join active" x="341.63765541740673" y="261.1382113821138" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="357.63765541740673" y="275.6585365853658" style="opacity: 1;">active</text></g><g><rect class="bar current" x="273.81882770870334" y="261.1382113821138" width="68.8188277087034" height="25.040650406504064"></rect><rect class="bar-join current" x="272.81882770870334" y="261.1382113821138" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="288.81882770870334" y="275.6585365853658" style="opacity: 0;">current</text></g><g><rect class="bar maintenance" x="605.5328596802842" y="296.9105691056911" width="136.54529307282417" height="25.040650406504064"></rect><rect class="bar-join maintenance" x="604.5328596802842" y="296.9105691056911" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="620.5328596802842" y="311.4308943089431" style="opacity: 0;">maintenance</text></g><g><rect class="bar active" x="475.5417406749556" y="296.9105691056911" width="129.99111900532864" height="25.040650406504064"></rect><rect class="bar-join active" x="474.5417406749556" y="296.9105691056911" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="490.5417406749556" y="311.4308943089431" style="opacity: 1;">active</text></g><g><rect class="bar current" x="406.72291296625224" y="296.9105691056911" width="68.81882770870334" height="25.040650406504064"></rect><rect class="bar-join current" x="405.72291296625224" y="296.9105691056911" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="421.72291296625224" y="311.4308943089431" style="opacity: 0;">current</text></g><g><rect class="bar maintenance" x="738.436944937833" y="332.6829268292683" width="81.563055062167" height="25.040650406504064"></rect><rect class="bar-join maintenance" x="737.436944937833" y="332.6829268292683" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="753.436944937833" y="347.2032520325203" style="opacity: 0;">maintenance</text></g><g><rect class="bar active" x="608.4458259325045" y="332.6829268292683" width="129.99111900532853" height="25.040650406504064"></rect><rect class="bar-join active" x="607.4458259325045" y="332.6829268292683" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="623.4458259325045" y="347.2032520325203" style="opacity: 1;">active</text></g><g><rect class="bar current" x="539.626998223801" y="332.6829268292683" width="68.81882770870345" height="25.040650406504064"></rect><rect class="bar-join current" x="538.626998223801" y="332.6829268292683" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="554.626998223801" y="347.2032520325203" style="opacity: 0;">current</text></g><g><rect class="bar active" x="741.3499111900533" y="368.45528455284557" width="78.65008880994674" height="25.040650406504064"></rect><rect class="bar-join active" x="740.3499111900533" y="368.45528455284557" width="2" height="25.040650406504064" style="opacity: 1;"></rect><text class="label" x="756.3499111900533" y="382.9756097560976" style="opacity: 0;">active</text></g><g><rect class="bar current" x="672.5310834813499" y="368.45528455284557" width="68.81882770870334" height="25.040650406504064"></rect><rect class="bar-join current" x="671.5310834813499" y="368.45528455284557" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="687.5310834813499" y="382.9756097560976" style="opacity: 0;">current</text></g><g><rect class="bar current" x="805.7992895204263" y="404.2276422764228" width="14.200710479573672" height="25.040650406504064"></rect><rect class="bar-join current" x="804.7992895204263" y="404.2276422764228" width="2" height="25.040650406504064" style="opacity: 0;"></rect><text class="label" x="820.7992895204263" y="418.7479674796748" style="opacity: 0;">current</text></g></g></svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment