Skip to main content

删库跑路大神「后悔」了?我只不过犯了大家都会犯的编程错误!

 


2022年的开源社区,全是瓜!

 

1月初,开发者Marak Squires给大伙儿表演了一个删库跑路,而且针对的还是自己的两个项目。

 

躺枪的码农们一觉醒来发现,自己程序跑出来的全都是「乱码」。

 

Image

 

虽然Marak表示自己「已经在努力修复了」,但群众的眼睛是雪亮的。

 

很快他们就发现:这根本不是什么bug,而是Marak本人在搞事情!

 

于是,作为项目的托管平台,GitHub让Marak见识到了什么是开源社区的铁拳——封号。

 

Image

 

时间过去了10天,这位始作俑者似乎有点「后悔」了:

GitHub你怎么回事?封号十天了,既不让我修复项目的bug,也不回我的邮件。每个人都会时不时地犯编程错误。没有人是完美的。

 

Image

 

嗯?「编程错误」?

 

Image

 

对于Marak的控诉以及希望能回到GitHub的想法,网友们普遍表示:「大可不必」。

 

老兄,这不是一个「编程错误」,你知道的。这是在破坏公共资源。没有人强迫你做出贡献,而现在希望你做出贡献的人更少了。

 

Image

 

你真的认为有人会让你再次为一个广泛使用的开源项目作出贡献吗?在你耍了这套把戏之后?

 

Image

 

这二位网友在封号这件事上也是针锋相对:

 

「他的代码属于他自己。他可以在代码上做任何他想做的事。」

 

「GitHub的平台也属于他们自己。他们可以在平台上做他们想做的事。」

 

Image

 

删自己的库,「断」自己的路


作为两个非常受欢迎的开源库,「colors」在npm上每周的下载量就超过2000万次,并且有将近19000个项目正在使用,「faker」在npm上每周的下载量超过280万次,有超过2500个项目使用。

 

甚至连亚马逊的云计算开发工具包(aws-cdk)也用上了。

 

Image

 

1月5日,Marak发布了「faker」的6.6.6版本。

 

Image

 

1月8日,Marak又在「colors」加入了v1.4.44-liberty-2。

 

Image

 

在新版中,Marak引入了一个无限循环的bug,会让所有使用「colors」的程序在控制台无休止地打印各种非ASCII字符序列,从而让数以千计的的项目直接崩溃。

 

Image

新美国国旗模块

 

这些信息包括文本「LIBERTY LIBERTY LIBERTY」,以及在后面跟着的一大串非ASCII字符。

 

Image

 

对于「faker」,Marak除了炸了自己程序之外,还修改了GitHub repo的README页面。

 

这次,Marak直接摊牌了:endgame。

 

Image

 

1月7日,Marak发了一段自述视频,不过现在已经看不到了。

 

同日,GitHub将他账号封禁。

 

随后的几天里,事件在不断地发酵,而他的推文也收到了1800个转发和3700个点赞。

 

Image

 

然而,当网友对这位删库跑路的「大神」越发地了解之后,支持他的人也越来越少。

 

也不知是不是想挽回点名声,Marak在1月15日的时候发文表示自己已经在3天前就修好了程序的「bug」,但因为自己被封了所以没办法上传至NPM。

 

不过,这个时候已经没有人在关心这个项目了。

 

Image

 

而对于Marak撂挑子的「Faker.js」,很快就有8位开发者接手,并且表示会把项目做得得更好。

 

Image

https://fakerjs.dev/update.html

 

话说回来,虽然都是开源项目,但是协议分了很多种,GPL、MIT、Apache等等。

 

Image

 

比如GPL就要求,但凡你的程序用到了这个协议下的项目,你就需要公开出来。

 

而MIT就相对宽松得多,你可以随便修改和使用,只需要在软件和软件的所有副本中包含著作权声明和许可声明即可。

 

而Marak采用的正是MIT协议。

 

所以,公司拿着他的项目去赚钱这个看似「白嫖」的行为,在法律上并没有什么问题。


Marak:打女友、造炸弹,但我是个写码好男孩


当然了, Marak并不这么认为。


早在2020年11月,Marak就曾表示他不会再用「免费工作」来支持大公司了,而这些企业应该考虑用每年「六位数」的工资来补偿。

 

Image

 

「恕我直言,我将不再用我的免费工作来支持财富500强(和其他较小规模的公司)。」

 

「你们可以把这当作一个机会,给我发一份六位数的年薪合同,或者把这个项目fork之后,让别人来做。」

 

张嘴就要六位数美元年薪的Marak Squires,究竟是谁?

 

Marak Squires的公众印象,集中在2010年代与2020年代的开头。

 

2010年代开头的Marak Squires,是最早一批「平台即服务」公司的联合创始人。

 

他的高中同学与他创办的Nodejitsu公司,被2011年的Business Insider杂志评为「纽约地区最值得关注的25个新星创业项目之一」,风投人还在文章中赞誉「这家公司拥有全明星阵容的软件开发团队」。

 

2013年Nojitsu成为彭博新成立的投资基金Bloomberg Beta首批投资的公司。

 

2011年,他还带Nojitsu四分之三的码农一起开发了一款多人实时用浏览器合作写歌的音乐小程序JSONloops。

 

Image

 

不过,从2010年代初的报道,就可以看得出Marak Squires虽然码力一流,但实在不适合做老板:

 

他在接受Observer采访时,非常牛逼地自夸「哎呀我的缺陷就是不善于俯就……我司招人就招最尖子的软件工程师,虽然损失了一些声望,但成效很显著哦~」。

 

而实际盈利的搞钱能力却不一定相称,在同一篇Observer采访中,Marak Squires与老同学Charlie Robbins都表示「能盈利最好,盈利不了……呃反正我们有梦想!」的态度,JSONloops除了噱头以外,就只在Kickstarter上众筹化缘了两万美元。

 

并且情商真的不在线,2010年底因为不满Hacker News对他们公司的报道,Marak Squires黑掉了Hacker News的网站,让登录者强行浏览「此站对Nodejitsu的报道不确实」的弹窗,搞得 Hacker News封禁所有关于Nodejitsu的报道,甚至带公司域名的贴就删。

 

2015年2月,Nodejitsu被GoDaddy收购,Marak Squires下一次被公众关注,得等到2020年做炸弹客未遂被捕了。

 

2020年9月15日,Marak Squires在纽约租住的公寓发生火灾。火起后Marak Squires做出了经典的跳窗跑路动作,但跳到公寓后院就躺平不跑,毫无悬念地被捕。被捕时「情绪状态不稳」且「双手有明显烧伤」。

 

Image

 

火头扑灭后,公寓房东与他的邻居在火场中发现了长导火索、「可疑粉末」、大批快递盒后,被吓到报警。执法部门之后宣布以「鲁莽危害他人安全」罪名起诉。

 

执法部门的现场采证与清查发现,盒子里装的、和公开的粉末都是猛料:导火索、硝酸钾化肥、镁粉、硫粉、铜粉、铝粉和混合杯,军用爆炸物、诡雷制作的教材,生存主义者宣传品,等等。

 

其实不消之后的执法部门联合发布会确认,光看这些材料的目录就知道,物主肯定是动了做炸弹搞个大新闻的念头了。

 

毕竟托各种文艺作品普及的福,氮钾化肥+镁粉+导火索的配料组合是要干啥简直是妇孺皆知。而「生存主义者」现在在美国的公众形象就是脑子有贵恙的怪咖:出大事要钻洞避难做野人,没有大事搞个大事也要……

 

Image

 

而且Marak Squires的当下精神状况的确堪忧:

 

2018年Marak Squires因打伤女友被捕,他在抢夺女友手机时挫伤女友手臂并留下划痕;当时他有一个5岁的女儿,但目前「他和女孩的母亲已经分居」。

 

2020年事发时,Marak Squires的邻居纷纷表示他实在孤僻,几乎没和邻里有人际交往。不过也有邻居表示宽容:「毕竟这年头我跟自家孩子都交流得少」。

 

但事发后邻居就不宽容了:「这货简直就是下一个邮包炸弹客嘛」「这货跳到后院草坪上就躺倒不动了,跟没事人一样等差佬来抓,实在神经病。」

 

Marak Squires的精神状况还在带累家人,邻居们都证实了他现在又有个小儿子,但他不准儿子出门,逼得小孩只有坐在窗边悄悄拉开窗帘往外招手。

 

Image

 

他的偶像亚伦·斯沃茨又是谁?

 

此外,在惨遭删库的项目描述里,Marak在还提到了一个人:亚伦·斯沃茨。

 

他写到:「Aaron Swartz到底发生了什么?」

 

这又是谁?

 

斯沃茨在互联网经济初起时,是常春藤名校中走出的又一个明星程序员和著名的网络活动家,本来很有钱途,不过在一场法律诉讼后「自杀」身亡。

 

亚伦·斯沃茨的人生几乎是2000年代的「码力小天才」神话模板:

  • 1999年,12岁的他搭建自己的网站;

  • 14岁时参与初代RSS的开发组;

  • 2005年入学斯坦福后,与同道闯业闯得太投入,肄业开发内容平台Infogami;

  • 憎恶「人生苦短快用Python」的风气,就自己写了与之竞争的架构;

  • 2005年他还参与了另一个后来人尽皆知的闯业项目:Reddit。虽然没有工作很久,但Reddit被收购后的补偿款,让亚伦在还不能于美国合法买啤酒的年龄,就成了百万富翁。

 

Image

亚伦·斯沃茨还长得蛮帅,真是码界万里挑一的人物

 

本来这个人生轨迹继续走下去,很容易成为另一个扎克伯格。不过亚伦·斯沃茨的理想主义与不安分性格给自己惹了麻烦。

 

为标显自己支持「知识开源」的态度,亚伦黑掉了MIT的校园内网,用JSTOR数据库的MIT权限下载了数百万篇期刊文章并公布。据称他通过反复旋转自己的IP和MAC地址来绕过JSTOR和麻省理工学院设置的技术封锁。

 

2011年1月,斯沃茨因此被起诉和逮捕,输了官司的话,得吃35年牢饭。2013年1月,官司缠身的斯沃茨在家中自缢身亡,一直有人猜测他的死因有猫腻。

 

Marak提到他,或许是以偶像自况:我,也是同样被万恶的牟利社会欺压的天才啊!资本家大公司一定也会因为我不顺它们意就迫害我!暗害我!

 

不过考虑到Marak当时的精神状况,这实在是想多了。

 

毕竟大公司搞人的首选方式是派律师军团告人告到崩溃,正如「教父」老师的金句:「我才用不着打手,我要更多律师。」「提着公文包的强盗比提着冲锋枪的强盗狠多了」

 

Image

 

虽然Marak似乎想把自己的「壮举」和亚伦·斯沃茨对开源的贡献联系起来。

 

然而网友们并不买账:「请不要把这么一个因为制作炸弹时烧伤自己以及家暴女友而被捕的人,与亚伦·斯沃茨相比。」

 

现在,项目没了,账号没了,甚至都没人想再看到Marak开发的项目。


参考资料:

https://www.reddit.com/r/programming/comments/sawkw3/marak_the_guy_behind_the_recent_breaking_of/

https://www.businessinsider.com/the-best-25-hidden-gems-of-nyc-startups-2011-5#nodejitsu-does-cloud-hosting-23

https://observer.com/2011/02/music-hack-day-hackers-ask-for-20-k-for-realtime-webbased-jamming/

https://observer.com/2011/04/nodejitsus-co-founders-on-the-power-of-node-js-and-the-beauty-of-javascript/

https://nypost.com/2020/09/16/resident-of-nyc-home-with-suspected-bomb-making-materials-charged/

https://www.nydailynews.com/new-york/nyc-crime/ny-queens-bomb-materials-man-charged-20200916-bybbhwqwijbuxg7ndsuy43w6zu-story.html

https://abc7ny.com/suspicious-package-queens-astoria-fire/6425363/

https://www.technologyreview.com/2021/12/17/1042692/log4j-internet-open-source-hacking/



Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into /opt/course/1/context_default_no_kubectl.sh , but without the use of k

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checking a shared sec