科技公司总是避免谈论政治,但是科技永远无法回避政治。开源生态中的标杆 GitHub,却在最近一年多次封禁与伊朗、克里米亚等国家开发者有关的项目,被指沦为美国强权打压的工具。GitHub 委屈解释说,“任何一家公司只要在美国境内开展任何服务,不管总部是否设在美国,都必须遵守美国的制裁规定,甚至包括与美国银行基础设施的互动。美国方面已书面规定不允许我们为被制裁国家提供商业服务或可能被用于商业目的的服务。”这看起来大锅确实应该由美国政府来背,但或许受规模、背靠微软等因素,Github 身在其中亦应有所指摘,而这件事对于中国开发者来说有什么启示?GitHub 封禁历史四天前,GitHub 封了微软自家开源项目 JavaScript 框架 Aurelia 组织账号,这个项目开源已经 5 年有余,逼得其创建者、现微软首席 UX 工程师 Rob Eisenberg 发推特问原因。后来 Rob 也找到原因,原来是有两名来自伊朗的外部贡献者(非 GH 组织成员), GitHub 自动标记并封禁了账号。新闻登上 HackerNews 头版,GitHub CEO Nat Friedman 也亲自致歉,“我们正在调查具体过程,并更改规则以确保此类问题不会再次发生。”他还挺高兴地提到,Aurelia 组申诉不到一个小时,就恢复了访问,但这建立在 Aurelia 和 Rob Eisenberg 的名声上。在这件事发生的十天前,还有一个年轻的俄罗斯 Web 开发者 Nikolay 因无故被封登上了 HackerNews 头版。他是非常活跃的GitHub用户, 过去一年有 3236 个 contributions。3 月 9 日,GitHub 在没有通知的情况下突然就封了他的账号,而且其他人对库中issue的评论也没了。Nikolay申诉了一周,一直没见回复。直到这件事发布到HN不久后,GitHub才回复道,是因为Nikolay戏称一个家伙为 prick,对方受辱而申诉。而在官方答复前,许多开发者评论说,有可能是谈论到伊朗、朝鲜、克里米亚等国家触发了GitHub的自动封禁机制。大家不约而同联想到政策原因的起源,就是去年7月的一波封禁。2019 年 7 月,伊朗开发者 Hamed Saeedi 发表博文称,GitHub 屏蔽了他的账号,明面说法是因为其在利用免费的私有库开发核武器,而真实原因是伊朗受到了美国制裁。另一名居住在克里米亚的俄罗斯开发人员 Anatoliy Kashkin 也遭遇了同样的麻烦。两件事为导火索,一举揭开了GitHub 屏蔽了所有伊朗、克里米亚、古巴、朝鲜和叙利亚账号部分功能的事实。经过网友总结,当时的限制主要有三方面:一、托管在GitHub Pages上面的个人网站404了。二、禁用私有repo,也无法新建私有repo。三、可以创建公开repo,但是不能删除。值得一提的是,2019年1月,GitHub免费开放私有库功能,一大批开发者很高兴地开始搬家,Hamed Saeedi之所以那么难以接受,也是因为他在此后将代码完全托管到了GitHub。当时账号限制基于两种方式展开,一是识别用户 IP。去年一系列事情曝光后,GitHub曾表示,到前述国家地区去旅行,也会影响账号的状态,不过出地域后,权限会恢复正常。中国开发者的悲惨遭遇雷锋网AI源创评论也注意到,有一位中国开发者之前在社区发帖称,因为挂VPN连了个伊朗的中继节点, 无意间刷新了下 GitHub,5秒后邮箱就收到账号被限制了的邮件。他上传了身份证申诉,过了一周多才解除限制。farzad yz第二种方式是识别国籍。去年 7 月,一位伊朗籍的芬兰开发者farzad yz在推特发帖提到他被限制了。事情发生后,Hamed Saeedi 在 GitHub 上发起了一个项目:GitHub-do-not-ban-us,点进去各国开发者都在声援,满屏飘荡伊朗国旗。去除国籍识别,这也是伊朗开发者的诉求之一,他们认为这一步让人无法接受,其他美国公司也只是根据 IP 地址进行了限制。关于这点,GitHub后来回应说,这种情况可以申诉解禁。雷锋网AI源创评论注意到,farzad yz前几天还转发了一条代码托管在GitHub的推特,如此后来应该已经恢复正常。科技断供,制裁新手段此事发生后,外网许多声音指责:软件应该像言论一样自由,GitHub违背了开源精神,“疯狂地掠夺开发者的权利,盲目地执行如ITAR等政策,是典型的微软作风。”GitHub大概感觉自己很无奈,CEO回复说,”像所有在美国开展业务的国家一样,GitHub 也会受到美国贸易法的约束。”在最新的致歉中,他又表示,GitHub是唯一一家为伊朗、叙利亚和古巴等受到美国制裁国家提供公开库访问服务的软件服务商。“我希望我们也能提供私有repo服务,但是仍然遵守政府的要求。我们将继续加强更多开发者和政府机构的沟通。”据雷锋网AI源创评论了解,其实去年11月,在开源欧洲峰会上,GitHub COO Erica Brescia 就曾表示,GitHub本身也不想封禁,他们正与决策者沟通取消访问限制。但到现在一直没解封,看来是没什么功效了。另外,这里有一个有意思的事情是,GitHub口中常提及的美国制裁似乎包含许多不同的政策。一是经济制裁,根据不同国家不同情况实施不同程度的经济、贸易制裁,主管单位是美国财政部海外资产控制办公室(OFAC)。其中对于朝鲜的制裁尤为严厉,有据称,基本上如果有人与朝鲜或其他一些有标记的实体有业务往来,可能就会被追究刑事责任,或者更经常地被处以巨额罚款。二是美国出口管理条例(EAR)。2019 年 5 月,有网友发现,GitHub 的用户协议上有这么一条:GitHub.com、GitHub Enterprise Server和您上传的任何一个产品上的信息都可能受美国出口管制法律的约束,包括EAR。值得注意的是,协议中的企业服务版块(GitHub Enterprise Server)标注,不得出售、出口或再出口到清单中的国家已经包含古巴、伊朗、朝鲜、苏丹与叙利亚,并且随时可能发生变化。三是ITAR国际武器贸易条例International Traffic in Arms Regulations,伊朗用户最初就是因为涉及核武器开发被封禁。GitHub表示,他们提供的云托管服务产品并非设计用于托管受ITAR约束的数据,目前不提供按国家/地区限制存储库访问的功能。如果用户希望在ITAR或其他出口方面进行协作,自己掌握数据,建议考虑 GitHub 企业服务器,GitHub的内部部署产品。事实上,GitHub并不是唯一一个采取地理屏蔽的科技公司,而且也不是唯一一个过度监管的公司。2018年12月,团队协作工具slack也是在没有任何通知的情况下,一刀切地关了许多可能去过伊朗旅行的用户账户,波及芬兰、加拿大、美国等地的用户。slack两天内出具一份致歉,表示是因为更新了应用位置信息的系统,以遵守美国的贸易禁运和经济制裁法规,并将尽快恢复被误伤的用户使用。据外媒报道,研究伊朗通讯的牛津研究员 Mahsa Alimardani 称,Slack 此举有点过线,根据美国的规定,虽然大多数技术出口伊朗都属非法,特别是涉及金融交易时,但自 2014 年以来,“通过互联网进行个人通信交换的收费服务”并不在严格的制裁范围内,涵盖即时通讯、聊天和电子邮件、社交网络、共享照片和电影、网页以及博客等。有开发者提到,他的朋友在一家美国银行工作,这家银行有一个客户是生产窗帘的波兰工厂,每次这家工厂做任何账户操作,都会被叫停并扔到漫长的人工处理流程中。只因为这家工厂名称取自波兰语,波兰语中的窗帘是“firana”,“包含了‘iran’这个可拍的单词。”另外,还有一个开发者对雷锋网表示,他在一家北美电商工作,交易走PayPal,而为了避免PayPal暂停他们的帐户,他们不得不从电商Saas Shopify(类似于微店)删除包含所有与古巴和埃及有关的产品。例如,一种名为“Cubano Style”的复合食品,和一种名为“The Great Pyramids”烟油的品牌(虚构的产品名称,但有真实类似的产品存在)。而实际上,所有的产品都是在美国用当地原料生产的。在此之前,他们通过PayPal的交易失败过好几次,但是PayPal并没有告诉他们到底是什么触发了限制机制,他们只能通过寻找失败交易之间的共同点来推断。而且,“即使我们发现了问题,PayPal除了重新启用我们的帐户之外,也拒绝了任何确认。”GitHub断供事件三月后,adobe 也宣布受美国政府颁布的13884号行政命令影响,禁止委内瑞拉国内账号使用公司的一切服务,而且起初说是不退款,在引起网络大片抗议后,决定退款。这件事的结果是,委内瑞拉国家大规模使用盗版软件。社交网站GitHub难以替代技术和政治不应该是对立的,但公司存于世,总是受制于当地政府法规政策的束缚,这不是一家或者几家公司所能抗衡的。所以封禁根本上不是 GitHub 的错误,大部分开发者也理解,比如前述伊朗开发者的倡议是温和的:不要过度审查,不打招呼直接封禁等,提出希望允许公开私有库,也可以访问受限制账户的GitHub Pages诉求。但GitHub做得并没有那么好。首先,多次封禁事件似乎展示了GitHub 申诉流程的滞后、缓慢,等待周期至少一周,舆论起来后,才会速速“几小时内恢复”。伊朗事情发酵后,GitHub也确实满足了大部分诉求。一直到今天,如果开发者的地理位置是伊朗、克里米亚、古巴、朝鲜和叙利亚等国,那么只能访问免费的GitHub 公共存储库服务,且仅用于个人用户。再者,在被微软收购后,据开发者反映,在社区氛围和使用体验方面可能无特别差别,但是GitHub在自我审查方面确实是加剧了。至少Adobe、GitLab等公司有提前通知,GitHub 曾经给出的说法是,”根据我们对美国法律的理解是,我们无权提前通知用户限制。”还有一位外国开发者现身说法。他某一天突然被GitHub随机永久禁止了,因为一个黑客用了被黑过的账户star了一些他的公有库(只有6星左右),虽然他并没有参与任何行动,但GitHub还是自动封了他。“我想这可能是黑客企图淡化他们真正想star的项目,后来我花了大约2周的时间上诉,他们仍然指责我的黑客行为,尽管我和这些账号的IP是不同的。”禁令最终还是解除了,但自此他对GitHub的识别系统留下了一个大大的问号。有人总结,此类科技制裁给广大开发者带来几点启示。一说是有条件,资源都放在本地,不要放在其他平台或者云上;二是找寻同类产品,比如GitLab、Google Code 、SourceForge等。但事实上,竞品不仅用户、库数量少,且同样限制很多。2019 年 11 月,GitLab 宣布将启用一份职位国家封锁令,停止招聘居住在中国和俄罗斯的人担任网络可靠性工程师及支持职位,并禁止担任这两个职位的员工移居中国或俄罗斯。当时有网友评论称:如果按照这种标准,那么80% 的人都会被 GitLab 拒之门外。此类政治和自我审查的不确定性,让中国开发者感到唇亡齿寒。目前中国是GitHub上最活跃的国家之一,据 GitHub 发布的 2019 年度报告,中国开发者无论从数量还是开源项目的贡献上都是第二。GitHub 目前在全球已有超过 4000 万开发者用户,其中 80% 来自美国之外的地区;在美国之外,中国是开源使用最多的国家。所以在去年底,GitHub 也宣布计划在中国开设子公司,据外媒报道,背景有关部门对此也“非常欢迎”。GitHub 准备分阶段进入中国,设立一家外商独资子公司,招聘员工,之后,GitHub可能会探索合资企业以及在中国托管内容的可能性。此外,一些中国开发者认为应该大力发展本国代码托管平台。一位京东图像算法工程师告诉AI源创评论,他使用过coding.net、码云,服务器在国内,所以速度快,体验还可以,但是库比较少;再加上GitHub公有库、私有库完全免费,且不限容量大小,而国内托管平台都有一定免费的容量限制。coding.net俗称扣腚, 成立于 2014 年,同样一个账号最多可以创建1000个项目,2019年3月获得腾讯一亿B+轮融资时,用户量80万;码云由开源中国出品,在2013年上线,号称拥有350 万用户和200 万的公开仓库。GitHub的搭建不是难题。GitLab上有开源框架,只要你想,可以在自己服务器上搭建一个类似的代码托管平台,涵盖issue,PR,code review这些功能,企业可以用这套代码创建自己的私有库。但GitHub之所以能持续吸引大神小神前来,是因为它的社交性,也就是生态和良好的社区氛围。就像前述工程师所说,他关注GitHub主要是有一些热门库分享,也可以很方便找bug,“这类事情确实有影响我对GitHub的信任,但是目前也没有更好的替代的平台”。而另一位CV研究生表示他主要用GitHub来关注好友的动态和最新项目。当然关于国产自有代码托管平台,肯定会是趋势,就像中国要打造自己的系统、芯片等一样,除了民间力量,官方也要参与。鹏城实验室主任高文院士在去年曾为实验室自研的AI开源代码托管平台汇智站台,据介绍,在当年7月上线,放在公有云上,已托管300多个项目。高文院士介绍汇智但非常显然的是,未来很长一段时间内,在GitHub的光辉下,这些平台都是暗淡星光。参考:https://news.ycombinator.com/item?id=22593595https://www.v2ex.com/t/618123