I don’t know if you have used or know about the HTTPie project, but if you are not familiar with it, here is a brief introduction: HTTPie is an open source command-line HTTP client whose goal is to make the interaction between the CLI and Web services as humane as possible. HTTPie is designed for testing, debugging, and generally interacting with APIs and HTTP servers. The http
& https
commands allow creating and sending arbitrary HTTP requests. They use a simple and natural syntax and provide formatted and colored output.
The authors of the HTTPie project made their first commit on GitHub in 2012, and it’s been 10 years since then. Through constant iteration and improvement, HTTPie is now one of the most popular API tools on the GitHub platform, with over 54,000 Stars and over 1,000 Watches.
The project, which has such a high number of Stars, has accidentally lost all 54,000 of them. Jakub Roztocil, the project author, recently blogged about the incident in detail, which can also serve as a wake-up call for other project authors.
What happened?
Jakub started by acknowledging that the incident was caused by its own missteps.
Due to a series of unfortunate events, I accidentally made the project’s repository private, and this action caused GitHub to delete the community we had spent 10 years building.
Why make it private
Author Jakub states.
Making a repository private permanently removes all Watch and Star, which is a GitHub feature. I know this, too, so I obviously have no intention of making HTTPie private.
The most direct reason for this result is that Jakub thought he was inside a different repository (which had no content and no Star) that he created a week ago but hadn’t populated it with content before.
Jakub didn’t realize at the time that there was a naming inconsistency in the repository; the HTTPie project’s repository was httpie/httpie
and the one Jakub wanted to set up was httpie/.github
.
That’s why I set
httpie/httpie
to private instead ofhttpie/.github
when I didn’t realize my mistake.
When Jakub returned to the organization page after doing so, he realized that he could still see the empty repository, but instead the HTTPie project repository had disappeared, and he really realized what had happened. Jakub immediately went back to the settings page and tried to make HTTPie public again. But GitHub wouldn’t let him do that for the next half hour, because it was “helping” him delete the Star and Watch repositories and couldn’t stop the process.
GitHub treated it differently and refused to restore it
In order to avoid as much damage as possible, Jakub contacted GitHub in the first place, hoping that GitHub would help them recover their data. After all, the GitHub team themselves had accidentally set the GitHub Desktop app’s repository to private and restored everything for themselves in a matter of hours.
The CEO of GitHub explained the situation when it first happened.
The developers mistakenly made the GitHub Desktop repository private this morning, and reworking it back didn’t restore its Star and some other stuff, so we’re restoring it from a database backup.
Apparently GitHub has a backup of this, and was able to recover the damage caused by accidentally making the repository private. In the case of the HTTPie project, however, GitHub refused to do so, citing adverse side effects and wasted resources, and Jakub even offered GitHub financial compensation, which was also refused.
While this was a mistake on Jakub’s part, there are a few things he suggested in his blog that GitHub could improve on, and that he hopes other project authors will avoid making the same mistake again. First, he wants GitHub to inform users of the dangers of the operation in a clearer, more explicit way, rather than a “warning: this is a potentially destructive operation” that applies everywhere; and second, to improve the design of the database by using “soft delete " and delaying “hard deletion” for a certain time frame.
HTTPie is currently back public, and as of completion, the project has received a Star count of nearly 10K.