Bonum Certa Men Certa

Plotting and Analysing the Letter in Support of Richard Matthew Stallman (RMS) Being Reinstated by the Free Software Foundation

Video download link



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:

RMS petitions.png



Still growing, but in relative terms not by very much. Here's how to sign.

Recent Techrights' Posts

Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Friday, July 10, 2026
IRC logs for Friday, July 10, 2026
Links 11/07/2026: Wednesday-Saturday News Catch-up
Links for the day
Prioritising High-Importance News
In order to fully catch up with news we'll not publish many new articles until next week
The Register MS: "AI" More Than 80 Times in One Article. But It's Not an Article, It's Sponsored Keyword-stuffed Page.
The Register MS is being paid to actively promoted this scheme
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Thursday, July 09, 2026
IRC logs for Thursday, July 09, 2026
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Wednesday, July 08, 2026
IRC logs for Wednesday, July 08, 2026
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Tuesday, July 07, 2026
IRC logs for Tuesday, July 07, 2026
Links 07/07/2026: Microsoft Cuts Doom "id Software" and Turkey Detains Journalists
Links for the day
Gemini Links 07/07/2026: Old Computer Challenge (OCC) and Hardware Tests
Links for the day
A Break From the Routine
What matters is what whistleblowers keep feeding information to us
SLAPP Censorship - Part 132 Out of 200: When You Cannot Pay a Million Pounds (1,335,520.00 United States Dollar) to Lawyers But Have a Strong Community
Techrights compensates for its fiscal poverty with a wealth of community spirit