Upon deeper analysis, you are correct. I was a bit floored by what appeared to be a power curve near the beginning, but after actually plotting, it’s a simple linear trend:
Data
Code
curl https://www.openssh.com/releasenotes.html \
| sed -nr '/^<h3><a/s/.*OpenSSH ([0-9.]+).*\(([0-9-]+)\).*/\2\t\1/p' \
| sort \
| sed -r 's|([0-9]+)\.([0-9]+)\.([0-9]+)|\1.\2\3|' \
| column -t -N 'Date,Version' > openssh.dat
head openssh.dat
Which yields:
Date Version
2000-03-05 1.22
2000-03-24 1.23
...
2025-02-18 9.9
2025-04-09 10.0
Fit
Code
gnuplot -p -e '
set xdata time;
set timefmt "%Y-%m-%d";
set xlabel "Date"; set format x "%Y";
set ylabel "Version";
f(x) = a*x + b;
a = 1e-10; b = -100;
fit f(x) "openssh.dat" using 1:2 via a,b;
set label 1 sprintf("Fit: Version = (%.3e * Date) %.3f", a ,b) at graph 0.05,0.95 left;
plot "openssh.dat" using 1:2 with points title "Versions", f(x) with lines title "Fit"
'
Which yields:
Predict
Use Y = (mX) + C, or Version = (9.55651e-09 * Date) -6.75132
Code
Note that Date are Epoch timestamps.
export VERSION="43.2"date +%Y-%m-%d -d \
@$(
export m="9.55651e-09";
export c="-6.75132";
## Use python for better scientific number handling
python -c "print(($VERSION - $c)/$m)"
)
For OpenSSH version 43.2, the predicted date is:
2135-08-21
So, assuming a linear trend and no cataclysmic events that would pause development for a few thousand years, then it’s only 110 years into the future
Is this present, future, or past timeline?
OpenSSH version:
Extrapolating: OpenSSH 43.2 is millions of years into the future
https://www.openssh.com/releasenotes.html
That doesn’t seem right
Upon deeper analysis, you are correct. I was a bit floored by what appeared to be a power curve near the beginning, but after actually plotting, it’s a simple linear trend:
Data
Code
curl https://www.openssh.com/releasenotes.html \ | sed -nr '/^<h3><a/s/.*OpenSSH ([0-9.]+).*\(([0-9-]+)\).*/\2\t\1/p' \ | sort \ | sed -r 's|([0-9]+)\.([0-9]+)\.([0-9]+)|\1.\2\3|' \ | column -t -N 'Date,Version' > openssh.dat head openssh.dat
Which yields:
Fit
Code
gnuplot -p -e ' set xdata time; set timefmt "%Y-%m-%d"; set xlabel "Date"; set format x "%Y"; set ylabel "Version"; f(x) = a*x + b; a = 1e-10; b = -100; fit f(x) "openssh.dat" using 1:2 via a,b; set label 1 sprintf("Fit: Version = (%.3e * Date) %.3f", a ,b) at graph 0.05,0.95 left; plot "openssh.dat" using 1:2 with points title "Versions", f(x) with lines title "Fit" '
Which yields:
Predict
Use Y = (mX) + C, or
Version = (9.55651e-09 * Date) -6.75132
Code
Note that Date are Epoch timestamps.
export VERSION="43.2" date +%Y-%m-%d -d \ @$( export m="9.55651e-09"; export c="-6.75132"; ## Use python for better scientific number handling python -c "print(($VERSION - $c)/$m)" )
For OpenSSH version 43.2, the predicted date is:
2135-08-21
So, assuming a linear trend and no cataclysmic events that would pause development for a few thousand years, then it’s only 110 years into the future
This is Awesome! How did you learn to do that? I want to learn too
thanks! oh well data formatting, just 15 years of messing around with awk and sed
Data fitting, gnuplot does all the heavy lifting with the modelling, and I always have to look up the syntax because I never remember it haha
Play around and have fun with the code snippets!
I will!
And I’m going to give a look at awk and sed, I didn’t know you can do all that stuff with it.
Thanks for sharing :D
I seem to be on a gnuplot bender at the moment, but maybe you will enjoy this too!
in relation to what?
I love you