Andrew "bunnie" Huang 是著名硬件黑客,《Hacking the Xbox》的作者,在这本书中,他以Xbox为例,系统阐述了逆向工程的方方面面。在Aaron Swartz离世后,有着相似经历的他与No Starch出版社决定将这本书的内容公开提供下载。他也是Chumby电脑等硬件产品的设计者,2012年他获得了电子前哨基金会先锋奖。
关于开源硬件与创客运动
《程序员》:近年来,创客与开源硬件广受关注,你觉得这场运动将如何影响普通人、开发者和IT行业?
bunnie:在我看来,与其将这场运动视作影响未来的因,不如说它是受过去一系列因素影响的果。看看我们是如何一步步走到今天的吧。
1960年代,所有实践操作的目的都只针对硬件,而且是开放的。如果你买了一台晶体管收音机,经常会看到后壳上印有原理图,要是收音机坏了,就得自己去修。那时候很流行自己买一套零部件动手组装收音机。
1980–1990年,个人电脑革命开始了。计算机开始有足够的能力运行有趣的、有用的软件。
1990–2005 年,在摩尔定律的推动下,每1.5~2年,计算机的运算速度和内存容量就提高一倍。在这一时期,摩尔定律呼风唤雨。除非能花得起钱用最新的技术制造芯片,否则,硬件不值得制造,因为当你把所有元件配齐以后,新的芯片面世了,让你的设计显得跟不上潮流。软件性能也不值得优化,因为当你优化好软件后,已能买到一台更快的电脑,用新电脑运行旧软件速度甚至更快。这一时期重要的是软件的功能、便利和创造性,而“制造”变得不入流:要么发布代码,要么消亡,没有时间去制造。
2005–2010年,计算机主频并没有大幅提高,但体积变小了。智能手机面世,一切都成为App,并开始互相联接。
从2010年开始,我们发现摩尔定律开始减速,这种减速在创新链上一波一波地推进。PC更快、更好或更便宜,但这些进步不再那么意义重大。基本上,我们新买一台PC只为换掉坏了的那一台。有些话现在说也许还为时尚早,不过,手机平台的进步也开始停滞:iPhone 5和iPhone 4很相像,三星的各种改进型号也十分近似。
如何创新?如何创造多样化的市场?随着摩尔定律减速,有一种情况现在有可能发生,即硬件创新不 会因为新芯片的出现而显得赶不上潮流。现在大家有了稳定的平台(PC、智能手机和平板电脑),可以据此定位自己的硬件创意。大家不必为了抢占先机而制造芯片。我们现在正对过去的成果进行筛选,寻找细分市场,在技术迅猛发展的初期阶段,我们忽略了这件事。就算一块过时的智能手机主板,在配置到四轴飞行器、小卫星、HAVC系统、汽车、能耗监控系统和健康监控系统等之后,也会显得妙不可言。
此外,作为人类,我们对“真实”事物和“虚拟”事物的感受截然不同。尽管App很奇妙,我们仍然会在身边摆上小装饰品、朋友的照片,以及各种特别时刻相互赠送的实体礼物。我认为,我们不会发展到收到一只“虚拟”泰迪熊就像收到一只“真实”泰迪熊一样珍而重之的地步。
因此,人们总是能找到制造硬件的用武之地,以便满足这种对有形商品的需求。这样的硬件将融入更多技术,运行更多软件,最终会给“创客”和硬件初创公司留下空间,现在,随着硬件技术走向稳定,这样的空间越来越大。
《程序员》:Arduino和Raspberry Pi的出现降低了硬件设计的门槛,你觉得它们会为行业带来真正重大的革新吗?在它们之外,是否会诞生其他促进创新的平台?如果会出现,这种新平台将有什么特点?
bunnie:Arduino和Raspberry Pi服务于特定的细分市场。
Arduino的主要贡献是将计算简化为易于使用的实体形式,它的主要对象是设计师和艺术家,技术人员倒在其次。这种对技术的独特视角被证明十分强大:它证明除了程序员和专业硬件设计者外,其他人也想接触硬件技术。
人们使用Arduino做出了很多感人的、深入互动的艺术作品,硬件因此超越了琐碎的控制应用程序,成为改变人们情绪、促使人们改变生活态度的物品。我认为,Arduino只是朝着自己的目标迈出了第一步——其目标是,让技术不再是技术、让人们不再每天使用技术,而是通过技术进行创造。所以肯定还会出现别 的平台。
Raspberry Pi是一种非常便宜的嵌入式硬件参考模块。由于足够便宜,对于很多应用来说,只要买现成的Raspberry Pi就相当不错,人们不用再设计自己的硬件。我想也将会有人跟随它的脚步推出类似产品。对专业硬件人员来说,Raspberry Pi的好处在于,相对于买一个参考设计,然后不得不自己打造一套系统,你可以只买Raspberry Pi,然后把它嵌入产品中。对于那些产量相对较小的产品来说,这是有意义的。
在我看来,当前趋势是,对于产量不大的产品,“设计”正变得日益可行。像智能手机、咖啡机这类产品还是会有上百万台的产量,不过,也会出现一个产量在1000–10000左右的新市场,利润却高得多。这些小规模产品的开发、销售团队只有一两个人,而利润却可以让他们过得很滋润。这些产品针对一小群用户量身定制,帮助他们对症下药地解决问题,用户因此愿意出高价,这 就是这类产品的成功关键。
《程序员》:新概念出现时,常会引起乐观的讨论,然而大部分新技术只有在长期发展之后才会真正影响生活。当我们谈论创客或开源硬件时,是否太乐观了?
bunnie:是的,技术真正影响我们的生活需要经过很长一段时间。
我认为,创客运动与其说是为了开发产品,不如说是为了开发人。它的目的是帮助人们意识到技术无非是人造之物,因此,只要具备一定知识,每个人都有力量控制技术。技术中没有魔法,换个说法就是,只要经过一点点训练,我们每个人都能做魔术师。
开源硬件更多是一种哲学。一款产品成功还是失败与硬件是否开源关系不大。封闭硬件并不能阻止人们克隆或复制它,开源硬件也不意味着只因为开源,就连差劲的创意也会有人乐意复制。与软件不同,硬件需要有供应链、经销渠道和关系网,这样才能以低成本生产。正因为如此,开源与否只是硬件问题中的一小部分,开源的主要意义在于,你想让最终用户或第三方在多大程度上参与产品的修改,或者说在多大程度上影响你的产品。
《程序员》:说到开源硬件的未来,能用我们熟悉的开源软件作类比吗?二者有什么区别?
bunnie:我觉得不能完全用软件类比。对软件来说,复制、修改和发行的成本基本为零。我可以下载一个Linux副本,然后在自己的台式电脑上运行“make”,所得到的内核与高端服务器或超级电脑上编译得到的一样好。
对于硬件,复制需要花费真正的成本。零部件成本、用于制造硬件的工厂和技工、品质管控及制造工艺都是影响硬件最终成本、外观、感受和性能的重要因素。简单地把自己的原理图、电路图给别人并不意味着他们能精确地生产出同样的产品。即使是注塑成型也有技艺蕴含其中:把同样的CAD图纸分别给两位模具师傅,由于他们选定的浇口位置、顶针位置、模具冷却方式、周期时间和温度等都存在差别,最后得到的产品就会大不一样。
还有经销渠道、逆向物流、财务等,就算全球物流效率再高,将一台电视机买到手也决不会像下载几部电影那样轻而易举。
《程序员》:哪种商业模式适合开源硬件公司?
bunnie:关于开源硬件,我的一个主要理论是,硬件“本质上是开放的”,至少在原理图和PCB布线图层面是这样——因为只需花费少量资金,就可以通过购买服务来获取PCB设计的细节。因此,一个渐近的假设是,硬件只要面世,就能被复制。
如果你认可这个假设,那么即便不发布原理图和PCB布线图也无法阻止人们复制你的产品。所以说,无论是否与别人共享设计文件,对于复制行为都没有影响。
不过,倘若你确实分享了自己的设计文件,对于另一个重要群体,倒能带来区别——其他商家和个人创新者能够以此来设计附件、升级产品,或者开发第三方增强功能。
由此看来,在“极限情况下”,分享设计文件并不会改变遭复制的境遇,却会为你带来机遇,让你有可能建立新的业务关系。因此,实用的建议是,只共享设计文件,然后利用开源硬件许可证帮助自己保留几项基本权利,获得一些保护。
显然,还有些硬件策略与开源硬件理念不同——如果你的唯一价值是制造独立硬件的能力,而且在成本方面没什么优势,那么,你就会更倾向保守设计的秘密,并尽力拖延低成本复制者的行动。
最终我们发现,当今那些最富创新性的产品都不单纯是硬件,而会包含软件和服务。开源硬件商业模式对这类混合型产品更有效。很多时候,消费者愿意以某种形式支付年金(例如订阅、广告、向上促销、附件、特许使用权和升级)来获取多样化产品。
实际上,最赚钱的做法是只通过这些服务获利,而不要参与硬件制造——控制服务要容易得多。因此,如果你的产品是线上服务与硬件相结合的,开源就会大有意义: 只要线上服务赚钱,越多人复制、销售硬件,就会为你带来越多的线上用户。这意味着你不必承担生产硬件的风险,却能获得更高收入。
《程序员》:你经常来中国,对这个国度有许多了解。虽然中国的软件技术并不领先,但它目前被称为“世界工厂”,这样的地位有助于中国整体科技水平的提高吗?如何才能从制造中心转变为一个以设计、研发为核心的国家?
bunnie:我不敢说自己很了解中国,我只对它在硬件制造这个专业领域略知一二,可谓冰山一角。如果说我确实了解中国的一点儿事情,那就是:中国是一个非常大的国家,有各种各样的人,有漫长的历史,我才刚刚开始理解它。
不过,整个高科技发展史几乎贯穿了我的一生,因此我可以谈谈高科技与人的关系,从中可以得出一些关于中国的看法。
第一个观察结果是,今天每项技术的源动力都是从制造业起步的。美国最初只是英国的殖民地,从事采矿、猎兽皮、种植棉花、烟草。随着时间流逝,美国有了钢铁厂,有了亚麻生产。直到20世纪早期,美国才开始崛起,这时原创技术开始发展;直到20世纪中期,才真正实现腾飞。
日本也有类似的经历。他们从制造业起步,大量仿制美国制造的产品。事实上,如果你信得过历史记录的话,他们制造的第一批汽车和收音机并不太好。美国和日本都用了数十年时间,才从制造型经济走向服务型经济。
比较一下中国,可能最多20年前,中国的电子制造业才起步,而现在的中国已经改变方向,从制造型经济变为能够进行更多设计、从事软件技术的国家。我相信一系列事件将会自然而然地发生:一部分入门级工人首先成为技工,接着一部分技工成为设计师,再接着一部分设计师成为成功的企业家。
至于具体的数字,如果中国有1000万工人,也许1%的人在几年的工作中将学会足够的本领,成为技工,这样全国就有10万名技工;再做几年技术工作,也许有1%会获得足够的技术,成为原创设计师,这样就有1000名设计师。
这些经验丰富的草根设计师会成为中国企业化经济的核心,经济从他们开始转型。一千家公司中,最终将有屈指可数的几家成为世界品牌。
整个过程需要10~20年,我相信,目前我们正在见证中国走过最后的转型阶段。深圳现在有很多人拥有丰富的制造经验,也有设计才华,正开始将他们的才干用在创新和原创产品设计上。
如果中国目前的经济政策和科技发展政策基本保持不变,那么接下来的10年将是中国技术行业激动人心的10年。
这种模式主要适用于硬件产品或者以硬件为主的产品。软件产品有相似的模式,但我相信西方独特的文化特色会让它们在软件设计上更占优势。对于硬件,如果某个工艺不够高效,或者产量不高,人们就可以轻而易举地找到根本原因,并得到问题的直接物证。硬件问题本质上是不会出现争议的。
对于软件,如果代码不够高效,或者写得不好,我们很难判定导致这种问题的确切原因。我们可以找到证据说明程序崩溃或者运行缓慢,却没有办法像拿出一根断掉的电线或指出丢失了一颗螺丝钉那样,让大家看看软件为什么会坏掉。
相反,大家需要坐下来,与合作者一起审查复杂的设计,考虑各种选项,最后需要认定问题——而这个问题说到底是某个人的某个错误决策造成的,无非就是如此。所有的软件API都是各种人类选项的简单构成。
亚洲文化十分注重关系、名声、尊重长者,西方则更具叛逆、乐于奉外来者为首,对长辈的意见不那么尊重。因此,我认为在亚洲环境下讨论代码质量和架构决策在文化方面会显得困难重重。
软件领域本身只有30年历史。年长工程师的经验更为丰富,但同时,他们的方法和知识也最过时。实际上,年轻工程师往往拥有更好的创意。但如果文化特色使得年轻人难以挑战年长者的决策,那么最终得到的就是设计差强人意的代码,别指望能与别人竞争。
倒不是没希望克服这些障碍,但这需要非常强的管理理念,强行推动正确的激励和文化。工程师如果做出正确的决定,就该得到公正的奖励,不应因友谊、关系或资格而有失偏颇。
资深工程师和管理者若能做到坦诚自己的失误,而不是为了面子强迫手下按照自己高高在上的决策编写程序,也应该得到真正的财务奖励。通常,在美国环境下,这种齐心协力的结果是这样实现的:工程师分享公司股份,这样,只有抛弃自我,让整个公司生存下来,才能大有斩获。
《程序员》:在未来,创客与商业公司的关系将是怎样的?创客之间也会展开竞争,哪些因素将决定产品成败?
bunnie:作为一种趋势,产品的最小起订数量将会不断减小,创新也将在边缘展开。所以我认为,商业公司将会越来越多地感受到来自创客的压力,尤其物流业正变得像API一样,能直接接入网站。
到最后,决定成功的最重要因素仍将是消费者能从产品中感受到多少价值。一方面,这与产品本身的特性和质量有关;另一方面,也与如何向消费者展示,是否能清晰地解释产品的优点密切相关。它导致的结果是,确保产品有视觉吸引力、易于使用,以及通过营销手法清晰地展示产品优点变得很关键。
对独立创客来说,这是个挑战,因为他们的才能通常在于创造产品的技术价值,而非市场或销售价值。能同时拥有这两方面能力的创客将比那些专注于提供技术价值的创客更有优势。
《程序员》:你参与过许多硬件产品的研发,这些过程中最大的乐趣是什么?
bunnie: 我乐于制造一些东西,在某些方面改善人们的生活,让他们开心。看到有人因为我制造的东西而使生活获得小小改善,得到某种享受,这是我最大的快乐。有时你的产品可以解决别人的大问题,有时你的产品属于异想天开,因为有趣、漂亮,所以让人开心。不管怎样,都是在帮助别人。
这就是我认为重要的事。过去几年,我明白了一个道理,金钱多到一定程度就不再让我感到更加快乐。这让别人难以与我合作,因为很难做到只要给我大把钱就让我提供服务。相反,雇主需要说服我,这件工作还会同时让别人得到快乐。
我的另一个重要目标是理解世界如何生生不息。我天生好奇,想要学习、理解各种事物。宇宙有其丰富多彩的模式,有时候你会发现看似毫无关系的东西像变魔术一样结合在一起。发现这些关系,看到世界像七巧板一样组合在一起,意义深远,让人满足。
《程序员》:最近你专注于哪些项目?为什么选择它们?
bunnie:我其实没有专注的项目。最近,我故意不专注于什么。如果专注于一个想法的时间太长的话,许多好创意就会弃你而去。
作为一个企业家,或者一个创新者,最难的地方是耐下心来审查大量创意,要懂得适时对不好的创意说不,同时培养一些好创意,接下来还要接受它们给你的理念带来的诸多变化。这个过程长达数月,甚至数年。
这里可以分享一下我做的项目。
这样,我有很多项目,但没有专注的项目。也许某天我会找到一个专注的项目——有时专注也很重要,不过迄今为止,我还没有发现我所寻觅的东西。
《程序员》:失败往往让人得到更多经验,能谈谈你参与过的不太成功的项目吗?
bunnie:我的生活是失败的篇章。我反复地、可靠地做到的唯一一件事就是失败。不过,对于失败我有两条准则:1. 不放弃;2. 同样的错误不犯两次。只要遵守这些准则,在多次失败之后,你最终会看到成功。实际上我有一个采访专门谈到了最近遭遇的一个失败。
《程序员》:《Hacking the Xbox》已出版十年,对于那些想学习逆向工程,或者想成为硬件黑客的人来说,这些经验和技巧还适用吗?你还有哪些推荐的资料?
bunnie:我想这本书中提到的核心原理在今时今日仍然有用。Xbox只是一个说明如何做事的实例,而书中介绍的方法和技术适用于各种各样的问题。
对于中国读者,我发现手机维修手册是非常有意思的阅读资料。我买了很多,尽管我中文不好,还是能看出这些资料很有意思。有时它们对电路理论的描述不完全正 确,不过实事求是地说已经够好了,若想获得现学现卖的手机维修技能,算是速成教材。还有一本中文杂志《无线电》,我感觉也非常好。如果从构建这本杂志中的 项目起步,我想你会突飞猛进。
《程序员》:新一代Xbox One有更多严格的限制条件,对此你怎么看?你是否有兴趣继续探索这个黑盒子?
bunnie: 我已有一段时间不太做游戏主机方面的工作,新一代游戏机黑客正兴致勃勃地进行探索,对此我感到高兴。说到Xbox One的安全性,我确信这是已经制造成功的最安全的系统之一。Xbox 360的开发非常出色,我认识Xbox One安全性团队中的几名成员,他们对于构建安全硬件所需要懂得的原理理解得很扎实,Xbox One应该很难破解。
话虽如此,我并不想买、也不想使用它。我认为这些使用政策和限制条件很快就会让用户心灰意冷。
《程序员》:关于是否应给移动设备加锁,近来也有许多争论。在你看来,确保用户安全和让用户彻底控制自己的设备之间存在矛盾吗?
bunnie:我相信用户应该“拥有”自己的设备,“拥有”的意思是有权改造、变更等,包括root操作的权力。如果厂家担心用户不安全,可以增加“选择退出”功能,这非常容易,用户只需填写一个电子弃权表格,放弃厂家的支持和保修,就能获得访问自己机器的权力。大部分关注root操作的用户都比厂家的电话技术支持人员 更能干,所以,无论如何不会有什么问题。
然而法律已经改变,即使在自己购买的、自己拥有的硬件设备上,执行某些root操作也属于违法。我认为,这种自然所有权的萎缩是危险的,会使消费者处于不公平的境遇,还会打击消费者探索、学习更多技术——而他们已如此依赖这些技术。
《程序员》:硬件集成度不断提高,硬件Hack似乎越来越困难,你是否担心硬件黑客有一天会绝迹?
bunnie:集成度长时间以来确实在提高,从只使用晶体管的TX–0到使用TTL IC的Apple II,到使用控制器芯片组的PC,再到今天只使用一个SoC的手机。这的确使得某些部件难以Hack,但在系统集成层面总是有各种机会。换句话说,我仍然认为硬件中有门道,只是硬件黑客的工作层面一天比一天高。这是好事,因为这意味着黑客们也一天天变得更强大。
《程序员》:你将书献给了Aaron Swartz,请能谈谈为什么你觉得黑客精神在这个时代依然重要吗?
bunnie:黑客精神是人类解决问题能力的终极体现。它关注的是人类观察世界、探索世界本质的能力,而不是社会规定的构造和规范。板砖不只是能建造房屋,还能成为门挡、武器、镇纸,或者碾碎成为土壤。黑客针对眼前情况执行最实际、正确的事情,透过这个镜头质疑规范:他们通过观察了解事物本质,而不是通过事物身上的标 签来了解。有时,他们的方法并不总是那么和谐,因为黑客时常优先做正确的事,而不是优先与人为善,也不是优先遵守规则。
我发现,环境越是困难,黑客精神在普通人中越普遍、强大。我在世界各地都找到了证据。这与人类对生存和繁荣的愿望有关。我想,一个社会需要培养、容忍黑客精神,这很重要。不是每个人都有黑客精神,可是少数几个拥有黑客精神的人在困难时期会让社会更有弹性,更易生存。
《程序员》:对中国读者,你还有哪些话想对他们说?
bunnie: 最近,我在网络论坛上看到些评论,似乎很多中国人把“山寨”看作贬义词。这让我很吃惊,因为作为局外人,我感觉“山寨”做了大量非常有趣、有用的创新。我想英语中有类似的问题,“黑客”这个术语一开始在英文中是个褒义词,然而经过一段时间,变得和花样繁多的负面行为联系起来。最近人们为了区别黑客的褒义、 贬义部分,造出了“创客”这个词(我还是称自己为黑客,因为我依然坚守这个词的传统定义)。
如果中文里能出现类似的语言分化,可能更容易解释在中国出现的创新。最近,我提议过将山寨中的创新、开放的成分称为“公开”,指的是他们共享设计文件的方法。在这里值得一提的是,我觉得术语“开放” 用在“开放源代码”中并不十分合适,因为这个词指的是特定西方法律问题,它不适用于中国生态系统中的现有方法。
不过,中国找到了自己特有的共享知识产权的方法,有别于西方系统,这不是坏事。我认为,实际上这非常有意思,我好奇地想看看它如何发展。由于我在山寨使用的一些方法中看到了正面价值,我提议用更正面、普通的术语“公开”来描述中国通用的知识产权共享方式。
不过话说回来,中文不是我的母语,也许有更好的办法来应对这种情况。