laitimes

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

Reports from the Heart of the Machine

Edit: mayoy, canoe

We turned to the CEO of GitHub for help, but it was too late.

On February 15, 2022, GitHub broadcast a message via Twitter: "Our friend HTTPie recently accidentally set himself private and lost all his Stars. If you still love it, give it a Star as a Valentine's Day gift."

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

10 years of savings suddenly zero? What's going on?

Yesterday, project author Jakub Rozto il officially responded to the incident in a blog post.

Ten years of open source projects with 5.4W Star

The HTTPie project was first submitted a decade ago.

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

Some people may not be familiar with this project, which is an open source CLI HTTP client. The team built it from scratch to make the terminal's API interaction as user-friendly as possible.

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

HTTPie (pronounced aitch-tee-tee-pie) can be used for testing, debugging, and often interacting with APIs and HTTP servers. The http&https command allows you to create and send arbitrary HTTP requests. They use a simple and natural syntax and provide formatted and colored output.

Since its first public commit in Copenhagen on February 25, 2012, project author Jakub Rozto il has hosted the project on the GitHub platform. He is also a big fan of the GitHub platform.

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

Over the years, HTTPie has grown to become the most popular API tool on the platform, garnering 5.4W Star and 1k attention.

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

The HTTPie project benefits from GitHub's "social coding" feature, as does GitHub's popular project hosted on its platform. Over the past decade, perhaps millions of developers have visited the HTTPie project's GitHub page.

But a few weeks ago, the 5.4W Star accumulated by the HTTPie project cleared overnight.

In this blog post, project author Jakub Rozto il details what happened:

What happened?

I accidentally made the project's repo private, and GitHub Cascade deleted the community we spent 10 years building.

What does this mean?

If you're a downstream maintainer, or have previously followed HTTPie for notifications, you might want to revisit repo.

The same goes for Star, if you've added Star to the project over the past decade, HTTPie should no longer be on your Star project list by now.

Why make repo private?

Making repo private permanently deletes all followers and Star, a feature of GitHub. I know this, and I obviously don't mean httpie/httpie to hide.

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

The most immediate reason is that I think I'm in another repo — a project with no content and 0 Star. What I really intend to do is hide the HTTPie organization's profile README, which I created a week ago but didn't have a chance to populate.

What got me on the wrong path was a completely unrelated operation: I just did the same thing on my profile (i.e. hid an empty README) and made it jakubroztocil/jakubroztocil private.

In terms of profiles and repositories, GitHub's conceptual model treats users and organizations as very similar entities. In this case, since I just wanted to repeat the same thing on our organization's profile, my brain switched to "autopilot" mode.

At the moment I am unaware of the inconsistencies in the naming of this special repo containing the configuration file README, and that it differs for users and organizations: name/name vs. name/.github.

That's why I hid httpie/httpie instead of httpie/.github in the first place and didn't realize my mistake.

But is there a confirmation process?

There is indeed a confirmation box designed to discourage users in situations like mine from doing something stupid. It will tell you "you will lose all the stars and followers of this repository forever".

The problem is that for a repo that doesn't commit and doesn't have any Star, its prompt box is exactly the same as a 10-year-old and 55k Star with a follower's repo. It says, "Warning: This is a potentially destructive action."

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

To paraphrase: a box tells you, "You're going to tear down the house!" If there's anybody inside, they're all going to die." But if you confuse the address and think you're preparing to demolish an empty house, the consequences will be unimaginable.

In fact, the conversation here should be more contextual and explain the situation again, such as "You're about to kill 55,000 people." That would definitely make me stop.

After some manipulation

When I return to the organization page, you can imagine my confusion, not only can I still see the empty README, but also our most popular repo can't be found. After a moment, I realized what had happened. So I went back to the settings of repo to flip the switch. But GitHub wouldn't allow me to do that — a full half hour.

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

Why did it take so long? Because that's the time it took GitHub to cascade delete our 10 years of stars and followers. And there's no way I can stop the process. All I can do is start messaging GitHub for support, refresh the page and wait for the number of Stars to reach zero before I can make it public again.

Why doesn't GitHub give us a restore?

GitHub obviously has backups and a way to restore repo. The GitHub team once accidentally made the GitHub desktop application repo private, and they restored everything within a few hours, as explained by the former GitHub CEO:

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

In our case, however, they refused to do so on the grounds that the operation had an undesirable effect and would consume resource costs. We even offered to provide financial compensation for any resources needed, but unfortunately they refused. They have other priorities than resuming one of the most popular community projects on GitHub.

Therefore, GitHub restores repositories on the premise of their own projects, not community projects.

Lessons learned

We have learned a lot from this crisis, and here are 3 main points:

Lesson 1: UI/UX design

The dialog box that pops up should be clear and clear, reducing abstract text descriptions. Design the confirmation dialog in a way that doesn't require the user to think. When a user wants to delete or corrupt certain files, do not describe it in abstract language, so as not to make it difficult for the user to understand what is about to happen, especially the behavior of cascading deletion. For example, here's how we handle it in HTTPie for Desktop:

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

The dialog box needs to reflect the severity of the action's impact. When there is absolutely no additional impact at all, the dialog box should be as simple as possible, otherwise it will waste the user's limited attention and thus reduce the user's sensitivity:

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

Lesson 2: Database design

Use soft-delete. to err is human. People can make mistakes in deletion operations, so soft deletes should be used whenever possible, delaying hard-delete operations.

Ten years of accumulation, 54,000 GitHub Stars were cleared: the biggest unexpected loss in the history of open source

Lesson 3: Relationship with GitHub

This is our human error, and GitHub makes it clear that they have no legal obligation to help us. Our decade-long, mutually beneficial relationship is determined by GitHub's Terms of Service and nothing else.

After all, GitHub has had controversial behaviors that go against the spirit of the open source community. Microsoft (which has acquired GitHub), despite having a certain open source spirit, has not always had a good reputation.

We hope that GitHub/Microsoft will one day be able to change their attitudes and restore our project community, who have all the data and methods to achieve this. We also want them to improve the UI and database design to prevent this from happening to other teams in the future.

Finally, despite our GitHub star quantification as nothingness, HTTPie is now growing really well, from being a side project to now becoming a company, and our team is evolving HTTPie into an API development platform. The private beta of HTTPie for web and desktop has received great feedback, and we can't wait to release it publicly in the coming weeks.

Reference Links:

https://httpie.io/blog/stardust

IJCAI 2022 - Neural MMO Massive AI Team Survival Challenge

On April 14th, the "IJCAI 2022-Neural MMO Massive AI Team Survival Challenge" was officially launched, initiated by Hyperparameter Technology, co-sponsored by MIT, Tsinghua University Shenzhen International Graduate School and AIcrowd, a well-known data science challenge platform.

Themed "Finding the Strongest AI Team in the Future Open World", the tournament achieved higher achievements than other contestants by exploring, searching and fighting in Neural MMO's massive multi-agent environment. The game also sets new rules, evaluates the strategic robustness of agents against new maps and different opponents, and introduces cooperation and role division in AI teams, enriching the content of the game and enhancing the fun.

Read on