you are viewing a single comment's thread
view the rest of the comments
[–] 32 points 1 year ago* (last edited 1 year ago) (5 children)

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

  • source
  • parent
  • hideshow 5 child comments
  • [–] 3 points 1 year ago (3 children)

    This is Awesome! How did you learn to do that? I want to learn too

  • source
  • parent
  • hideshow 3 child comments
  • [–] 3 points 1 year ago* (last edited 1 year ago) (2 children)

    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!

  • source
  • parent
  • hideshow 2 child comments