06.02.21
Gemini version available ♊︎Plotting and Analysing the Letter in Support of Richard Matthew Stallman (RMS) Being Reinstated by the Free Software Foundation
Summary: “An open letter in support of Richard Matthew Stallman being reinstated by the Free Software Foundation” has been signed by 6,731 people (it may reach 7,000 later this summer) and here’s how to generate a chart based on this very latest data
IT already feels like “hot summer” over here; this past spring the founder of the Free Software Foundation came under a lousy attack by mostly misled people, commandeered by front groups of monopolies. They’ve been defaming the founder of the Free Software Foundation for a number of decades (the GNOME Foundation tried 12 years ago), but this time there seems to be some urgency in removing him. We spent many days explaining the who and the why. This isn’t the subject of this post and video.
“For those who want to reproduce the charts, detailing nearly 10,000 people who signed petitions in Microsoft’s proprietary software monopoly (GitHub), the video above explains the basic steps.”For those who want to reproduce the charts, detailing nearly 10,000 people who signed petitions in Microsoft's proprietary software monopoly (GitHub), the video above explains the basic steps. Here are the basic commands from the video above:
cd /tmp
rm -rf rms-open-letter.github.io
rm -rf rms-support-letter.github.io
or just
rm -rf rms-open-letter.github.io rms-support-letter.github.io
Get the latest data:
git clone https://github.com/rms-open-letter/rms-open-letter.github.io.git
git clone https://github.com/rms-support-letter/rms-support-letter.github.io.git
Now run python3 count.py
There may be missing python libraries (depending on the system), but they can be added/installed from repositories. They’re widely available and used.
Here’s the code from count.py
:
# author: Kezi # license: gplv3 import time import os import subprocess from threading import Thread from datetime import datetime start_time = 1616522054+60*60*4 stop_time = int(time.time()) path_open = "/tmp/rms-open-letter.github.io" # https://github.com/rms-open-letter/rms-open-letter.github.io.git path_support = "/tmp/rms-support-letter.github.io" # https://github.com/rms-support-letter/rms-support-letter.github.io.git cwd = os.getcwd() def count_open(): lol=subprocess.check_output(['sh', '-c', f"cd {path_open}; cat index.md | grep -e \"^1.\" -e \"^- \" | wc -l"]) return int(lol) def count_support(): lol=subprocess.check_output(['sh', '-c', f"cd {path_support}; ls _data/signed/ | wc -l"]) return int(lol) def checkout_open(date): try: subprocess.check_output(['sh', '-c', f"cd {path_open}; git checkout -f `git rev-list -n 1 --before=\"{date}\" main`"]) except: pass def checkout_support(date): try: subprocess.check_output(['sh', '-c', f"cd {path_support}; git checkout -f `git rev-list -n 1 --before=\"{date}\" master`"]) except: pass def time_machine(timestamp): print("time machine", datetime.fromtimestamp(timestamp), timestamp) date=datetime.utcfromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M') thread1 = Thread(target = checkout_open, args = (date, )) thread1.start() thread2 = Thread(target = checkout_support, args = (date, )) thread2.start() thread1.join() thread2.join() dates=[] points_open=[] points_support=[] for i in range(start_time, stop_time, 60*5): time_machine(i) dates.append(datetime.fromtimestamp(i)) points_open.append(count_open()) points_support.append(count_support()) import matplotlib.pyplot as plt import matplotlib.dates as md plt.subplots_adjust(bottom=0.2) plt.xticks(rotation=25) ax = plt.gca() xfmt = md.DateFormatter('%Y-%m-%d') ax.xaxis.set_major_formatter(xfmt) plt.plot(dates, points_open, label="rms hate letter") plt.subplots_adjust(bottom=0.2) plt.xticks(rotation=25) ax = plt.gca() xfmt = md.DateFormatter('%Y-%m-%d') ax.xaxis.set_major_formatter(xfmt) plt.plot(dates, points_support, label="rms support letter") plt.legend() plt.show()
The latest chart below (shown after running in the terminal, as shown in the video:
Still growing, but in relative terms not by very much. Here’s how to sign. █