
GitHub removes 5 years of One Hour One Life designer's work - sharjeelsayed
https://twitter.com/jasonrohrer/status/1136092621149880320
======
abetusk
Jason Rohrer [1] is the author of Passage [2].

His latest game, "One Hour One Life" [3], is a massively multiplayer online
game where your character has only one hour of life. You start off as a baby
and are dependent on others for shelter and heat before you're able to be
autonomous. Eventually you die of old age but your impact on the world/server
persists.

I recommend anyone interested to purchase the game [4] or at least look at
video stream of gameplay [5].

When I purchased the game, the source code came with it and as far as I could
tell was dedicated to the public domain. This was client code so I'm not sure
if the server code is released anywhere (maybe this was what was taken down at
GitHub).

[1]
[https://en.wikipedia.org/wiki/Jason_Rohrer](https://en.wikipedia.org/wiki/Jason_Rohrer)

[2]
[https://en.wikipedia.org/wiki/Passage_(video_game)](https://en.wikipedia.org/wiki/Passage_\(video_game\))

[3]
[https://en.wikipedia.org/wiki/One_Hour_One_Life](https://en.wikipedia.org/wiki/One_Hour_One_Life)

[4] [http://onehouronelife.com/](http://onehouronelife.com/)

[5]
[https://www.youtube.com/watch?v=Hu7kXKuShks&list=PLcA1QDRup-...](https://www.youtube.com/watch?v=Hu7kXKuShks&list=PLcA1QDRup-
hZXT8_lcVXaXcRyR-nJgfih)

~~~
aasasd
He's also idiosyncratic in the approach to the rest of his life. When he
practiced ‘simple living,’ in his front yard he had (or still has?) a small
wild garden with uncut grass, where he of course walked barefoot and his
children played naked (iirc). He was taken to the court by neighbors on the
issue of grass, and appeared there with a tome of paper citing local laws and
research that says cut grass exudes harmful substances. Whereupon he was left
to do as he pleases.

The article on Rohrer, which included this anecdote, theorized that his court
appearance proved his gardening choices to be a matter of principle and not
just negligence, thus changing the perception of him by the neighbors.

Meanwhile, his ‘Passage’ is in MOMA's initial videogame collection, and he's
had a solo exhibition at The Davis Museum.

~~~
enriquto
It would seem that he has some idiosyncratic neighbors, then. But they are not
alone, a certain amount of people are strangely obsessed by the grass of their
neighbors. My kids loved the dandelions of my grass and I let them grow, but
then I received regular bullying by the old lady next to our place, who had a
"perfect" french style garden, and looked at us as if we were some kind of
savages. I actually found this bevavior rather funny.

~~~
animal531
Dandelions used to be both cultivated and consumed, it is only in modern times
that we've decided it's a weed.

~~~
JacobDotVI
I have often purchased dandelion greens at my local farmer’s market - they are
great sautéed!

~~~
ncmncm
Be sure to harvest when they're new. They turn tough and bitter with age.

Like us.

~~~
sitkack
Or worse, bitter and weak.

------
denkmoon
<Big corporation> removes <large body of work> without notice or consultation.

How often do we have these articles? Averaging once a month? Maybe more?

How often does it need to happen before people realise that your $10/mo means
jack shit to a multi-million dollar company, and "accidents" like this are
just a cost of business to them. Solving the problem properly would cost a lot
more than just letting people fall through the cracks of automation.

~~~
SteveSmith16384
So what should we do? What price do we need to pay to exceed the "jack shit"
threshold? Specific recommendations please.

~~~
dooglius
Do your own backups on physical drives you own of anything truly irreplaceable

~~~
arkades
Or host your backups on DigitalOcean.

~~~
yeldarb
Maybe not the best choice in light of them deleting this guy’s entire app, db,
and backups the other day:
[https://twitter.com/w3Nicolas/status/1134529316904153089](https://twitter.com/w3Nicolas/status/1134529316904153089)

~~~
glenneroo
I'm guessing GP was making a joke, considering the recent DO "scandal".

BTW as was made clear by multiple HN commenters in other discussions about
this incident, nothing was actually deleted, the customer's account was
suspended for 30+ hours.

------
millisecond
The frustrating thing to me is that this guy will get this solved and we’ll
all move on. He’s reasonably well known and had enough Twitter juice to get
attention. All the small people who end up in this situation, whatever it
truly is, without those resources will remain screwed.

~~~
uponcoffee
I get what you're saying, and agree to a degree.

On the other hand this is like not backing up your hard drive. Having a single
point of failure and expecting anything less is...

Like you said, he's big enough to shout into the abyss and get a response,
while others have to accept that a single point of failure is exactly that.

If we changed the headline to hacker deletes '5 years worth of work', the
response would be different; two-factor should have been enabled, should have
used a strong password, one password per account, yubi-key, etc. The onus
would have been on the developer.

There are plenty of free hosting services for repos, so there's no reason IMO
to not maintain a mirror.

------
narrowtux
According to an earlier tweet [1], the reports are from users who are mad they
were banned from his discord server.

> Actually, it seems like this "report" to discord came on the heels of us
> banning a member for posting offensive content. That member then, to seek
> revenge, reported the entire server to Discord, and told us about it. Nice.

I've experienced similar immature behaviour in the Minecraft community back
when it was at its popularity peak.

[1]
[https://twitter.com/jasonrohrer/status/1119751548542652416](https://twitter.com/jasonrohrer/status/1119751548542652416)

~~~
AgentME
I've helped run a forum in the past, and holy shit is it scarily easy to make
stupidly-determined enemies. Even people who joined just to spam offensive
content would act like they were the one victimized when banned and would do
all sorts of things to "even the score". I think these people would
emotionally forget that they joined looking for a fight and earned their ban
in the first place, and would then ride the high of righteous indignation.

~~~
whatever_dude
Online forums for random topics used to be the last refuge of the mentally
unstable. I've moderated several forums and saw this behavior first hand; a
banned user would spend so much time and effort trying to stir the pot and get
back at the forum's owners for their Injustice. I often wondered why would
they choose to waste so much time in a niche forum rather than go do something
productive.

Naturally, nowadays they have online forums that _cater_ to this kinds of
individual (4chan, some subreddits, etc). Nature, um.. finds a way.

------
FullyFunctional
That is terrible and a good reminder that using the "cloud" means that you
don't really control your destiny. A quick googling around reveal a couple of
options for backing up everything from github (but I'm not sure what you'd do
with a backup if you got kicked out like the OP).

~~~
jarfil
It's also a good reminder of why data portability is important. For the git
part, you can just git push to another service, even a selfhosted one, and be
up and running in no time, and GitHub does keep pages and wikis in git... but
all the tickets, that's a problem, and why I don't trust GitHub to be a
canonical source for development.

~~~
est31
Gitlab has a feature to copy an entire Github repo including issues and issue
threads, etc.

You can also enable options for it to act as a mirror or to make GitHub act as
the mirror for Gitlab. I'm not sure whether there is a mode to keep the issue
threads synced as well without manual intervention. That'd be full data
portability.

------
rurban
Must have been a mistake. It's there again:
[https://github.com/jasonrohrer/OneLife](https://github.com/jasonrohrer/OneLife)

I also found this comment on his site:

Tarr (1,819.0 hours on record) Posted 42 hours ago

"Can't recommend the game to anyone who either doesn't have 15+ years of game
development or doesn't know Jason personally. Game dynamics are too rich for a
filthy casual like myself. If you want to make a suggestion please learn to
read spaghetti code and hope the copypasta is as delicious as it is hard to
untangle."

Which is interesting, because Jason's C++ code is one of the very best I've
ever read. I normally hate C++, but his code is beautiful and very readable.
Like out of a book or tutorial. E.g.
[https://github.com/jasonrohrer/OneLife/blob/master/gameSourc...](https://github.com/jasonrohrer/OneLife/blob/master/gameSource/AutoUpdatePage.cpp)

Also his dischord game support channel is filled with hate about him. Not only
by this guy, but by many seemingly childish individuals. Looks like another
gamer gate to me.

~~~
V-2
I'm admittedly not proficient in C++, but I can't see what's beatiful about
the code. Looking at the specific example you linked to... inconsistent
formatting and "magic values" aside, what's the point of, say:

    
    
            if( !relaunched ) {
                printf( "Relaunch failed\n" );
                setSignal( "relaunchFailed" );
                }
            else {
                printf( "Relaunched... but did not exit?\n" );
                setSignal( "relaunchFailed" );
                }
    

Instead of simply:

    
    
            if( !relaunched ) {
                printf( "Relaunch failed\n" );
                }
            else {
                printf( "Relaunched... but did not exit?\n" );
                }
            setSignal( "relaunchFailed" );
    

?

Such copy-pasta style redundancy does count as somewhat sloppy in my book.

And do C++ books or tutorials recommend cramming over 20 KLOC in a single
file?
[https://github.com/jasonrohrer/OneLife/blob/master/gameSourc...](https://github.com/jasonrohrer/OneLife/blob/master/gameSource/LivingLifePage.cpp)

I don't have any bone to pick with the guy, whom I don't know and who I'm sure
may be very talented.

I only fail to see why code quality, beauty even, would be considered a forte
of this particular project.

~~~
kabwj
It’s probably a mistake done after refactoring. The guy is only human you
know.

~~~
V-2
Magic strings and numbers all over the place are less likely to be refactoring
artifacts.

Of course he's only human, but it wasn't me who picked this little (80 LOC)
file, of all the codebase, as an example of code being like "out of a book or
tutorial" :)

And what about stuff such as 20 KLOC in a single file? This _is_ spaghetti, no
matter how you spin it. I wouldn't want to work with such codebase.

~~~
s_m_t
It isn't really clear that splitting up your code into a bunch of files is
always a good thing. Sometimes it becomes harder to search, for some people
switching files incurs a sort of mental cost (like walking through a doorway),
it can make compilation slower, and depending on your editor you might have to
do some extra configuration to work well with your directory structure.

------
k_
Nat Friedman just replied to this tweet:

> Sincere apologies Jason. We will investigate what happened here and learn
> from it.

[https://twitter.com/natfriedman/status/1136216389054881792](https://twitter.com/natfriedman/status/1136216389054881792)

------
brendyn
[https://www.softwareheritage.org/](https://www.softwareheritage.org/)

"We collect and preserve software in source code form, because software
embodies our technical and scientific knowledge and humanity cannot afford the
risk of losing it.

Software is a precious part of our cultural heritage. We curate and make
accessible all the software we collect, because only by sharing it we can
guarantee its preservation in the very long term. "

------
zimpenfish
FWIW,
[https://github.com/jasonrohrer/OneLife](https://github.com/jasonrohrer/OneLife)
appears to be there at the moment (20190605T0812+0100) (along with 22 other
repositories.)

~~~
dinglejungle
Yeah, seems to be back up. That link (along with
[https://github.com/jasonrohrer](https://github.com/jasonrohrer)) was 404ing
when this was submitted.

------
londons_explore
From being on the other side of this kind of "big company screws little guy
for no reason"...

In ~80% of cases, there is more to the story than meets the eye. For example
maybe a legal complaint came in, or someone was DoS attacking that repo and it
put the whole GitHub service at risk.

~~~
trickstra
so in 20% of the cases it really is a big company just screwing a little guy
for no reason?

~~~
buzzerbetrayed
Or there are more than 2 options I suppose

------
notaboutdave
Setting up your own git remote takes minutes. Github is just a pretty
interface with bells and whistles. I think more people should go self hosted.
It's cheaper, and none of the features are truly needed.

~~~
bovine3dom
> none of the features are truly needed

I think ease of contribution and discovery shouldn't be underestimated. I find
it hard to believe that our little project [1] would have had 90+
contributors, of whom ~8 made very substantial contributions, if we'd self-
hosted it. The project would have been far lesser without those contributions,
and I probably would have abandoned it out of lack of interest.

That said, most other projects I see around have much more uneven contribution
levels, with typically 100:1 ratios from the core developer to the second
biggest contributor. Maybe we're just weird.

[1]:
[https://github.com/tridactyl/tridactyl/graphs/contributors](https://github.com/tridactyl/tridactyl/graphs/contributors)

~~~
kkarakk
well shepherding a project is truly important if you want contributors - you
have to tag issues that are good for noobs, help people with pull requests,
not blow off issues that are requests for more documentation of how a module
works etc etc. a lot of which i can see you're doing by looking at your issues
tab.

Another sad fact of life nowadays is that github issues reduce friction but a
lot of "hardcore" developers prefer email or some other offsite system that
has lots of friction to people getting involved(i see this a lot in
gitlab/bitbucket/sourcehut hosted projects). which means an open source noob
is going to look at another project instead of getting involved with
yours(again not an issue with you). for better or worse github is king here.

most open source projects don't bother and tend to rely on interest levels to
keep them afloat. this works for the popular ones but tends to sink niche
projects

------
_bxg1
How does this keep happening, across all these different services? The very
least you could do is give the account a few days' warning via email, which is
totally automatable. There's no excuse for not doing that.

------
nbrempel
Seems it’s been a busy week for these reminders not to trust centralized
services.

I think the the “Fediverse” will become more popular over the next few years.

~~~
rambojazz
There are in fact people who are already trying to "federate" code
collaboration [https://nth.io/notice/7652](https://nth.io/notice/7652)

~~~
0815test
That's interesting. IIRC Linus Torvalds even came up with a tool to make
"distributed/federated" code collaboration quite easy, avoiding any reliance
on a single centralized host. Maybe we should start making use of it.

~~~
rambojazz
Is this a sarcastic comment? Because it sounds like you're comparing two
completely different things. Federation addresses a completely different
problem than tracking file changes. It's supposed to make it simpler to
collaborate across different platforms, whether you're using the command line
or a platform the likes of github, gitolite, gitlab, or a desktop IDE.

------
Animats
Huh? It's a game. On Steam.[1] It's not a copy of anything; it's quite
original. Has good reviews.

[1]
[https://store.steampowered.com/app/595690/One_Hour_One_Life/](https://store.steampowered.com/app/595690/One_Hour_One_Life/)

------
billpg
I feel like I need more information.

~~~
cdubzzz
Twitter in a nutshell.

------
Tetris1
We need to hear 2 sides of a story. Github does not just 'delete' files.
Author should contact them first and resolve any issues there is. And if
github refuse that, than you can cry a river.

~~~
benj111
Is it not incumbent upon Github to contact the author before deleting his
account?

~~~
glenneroo
Maybe they did but it ended up in his spam filter or he unintentionally
ignored it? As GP said, we need 2 sides to the story to make any judgements.

------
mitchtbaum
I just backed up ~100 repos & ~500 issues, totaling ~100 MB of json and git
tracked code.

Everything's right there waiting for you.

[https://github.com/josegonzalez/python-github-
backup](https://github.com/josegonzalez/python-github-backup)

------
magashna
5 years of work

doesn't have a backup

can't be that important

------
JustSomeNobody
I'm sure he'll get it resolved.

But come on people, "in the cloud" doesn't mean it is safe. If you care at all
about what you're storing in the cloud, make copies to store locally and
offsite.

------
rusk
well the beauty of git is that the entire repository is more than likely
cloned in a few different places and is easily reproduced. Also makes it nice
and easy to move elsewhere.

------
dlahoda
there is fork
[https://gitlab.com/_zed_/OneLife](https://gitlab.com/_zed_/OneLife) (with
keyboard as it says)

------
srndh
What solution exist for me to keep a complete copy of my github account
offline or keep an uptodate backup? Mainly all the repos, I started and just
forked.

------
JohnFen
Surely they weren't keeping everything only on GitHub, and had locally stored
copies, right? Right?

------
RickJWagner
I suppose it's good to review all your big assumptions once in a while.

OP assumed GitHub would hold his code (and make it available) forever,
seemingly a good assumption. Now he's massively inconvenienced.

Time for me to look around, consider all my big assumptions....

------
emilfihlman
What's the reason? What the heck is Github doing.

------
diminoten
I don't understand, doesn't he have the repo locally?

~~~
Rebelgecko
Might be annoying if he uses Github wikis, pull requests, issues, etc

------
gridlockd
The only lesson to be learned here, one that needs to be repeated time and
time again:

Don't put all your eggs into one basket.

~~~
unixhero
Don't put all your projects in one cloud

And... Use Gitlab

~~~
majkinetor
Gitlab too had incidents, remember db backup fiasco ? I know few devs that
lost issues and wikis that day.

Just backup your repos once a year, lets not be paranoid.

~~~
antisemiotic
In case of GitLab, the incident was caused by a human error, and they worked
hard to fix it afterwards. GitHub and DigitalOcean (to name the ones recently
mentioned on HN) have delibrately set up automated kill switches with no
possibility of appeal, sans crying on Twitter. Sure, when data is lost then it
may not matter in the end, but I'm still more sympathetic to the former.

~~~
majkinetor
Indeed, how GitLab handled the incident was exemplary. That is entirely
different topic.

~~~
dsumenkovic
Here's the blog post about it [https://about.gitlab.com/2017/02/01/gitlab-dot-
com-database-...](https://about.gitlab.com/2017/02/01/gitlab-dot-com-database-
incident/)

------
iaeqi
Saying "they removed my life's work" when you has a local copy of it is, at
best, intellectually dishonest.

~~~
parksy
Not really, that's what physically happened.

Local copy may have been deleted. Developer may have just got a new laptop and
traded the old one. Argue at length over having multiple redundant backups
perhaps, but the simple truth is his work was deleted, and it's only by luck
(or foresight) he has a local copy.

That it even happened is a huge problem, whataboutism aside. My trust in the
longevity and stability of the service offered by GitHub is significantly
eroded by this news.

