科技公司总是避免谈论政治,但是科技永远无法回避政治。
 
  开源生态中的标杆 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 曾表示,到前述国家地区去旅行,也会影响账号的状态,不过出地域后,权限会恢复正常。
 
GitHub 是开源,最终也是政治,但“最大同性社交网站”难以替代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 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 拒之门外。