×
嵌入式 > 技术百科 > 详情

这一年,我们再来谈谈开源?

发布时间:2020-06-10 发布时间:
|

开源项目存在的必要性

从每个人桌面上有一台电脑,到每个人手上有一台智能手机,这是信息科技的一个普及过程,这个普及过程极大地加速了我们知识的相互传递,从而促进了社会生产力的发展。而创客运动的发展过程,实质上是工业制造技术的普及过程,许多原来只能在大企业、大工厂里面才能使用的制造资源、技术资源,现在正在以不断降低成本的方式普及到大众里去。以后可能每个人的桌面不只是一台电脑,更有可能的是每人桌面有一台3D打印机,有一台激光切割机,有一个机械臂,有一套开发套件。。。

而制造技术的普及过程使群体智慧的创造力得到极大的释放,将来的创新可能发生在许多微小的团体中,他们有足够的知识,而对某一个细分的问题领域有很具体的了解,并能自行设计解决方案,从而解决了许多大规模量产所不能解决的细节问题。这一切都依赖于工具的廉价化和随手可得,以及充分的知识储备。

在有开源运动之前,人们并没有认真关注知识共享的问题。因为在以前,软件的发布没有合理的开源形式,要么是公开后被随意剽窃,要么是被关起来当是私有财产来保护,普通人无法接触得到,即使到今天仍然有各种专利保护的战争在阻碍着技术的普及(当然有部分理由是为了保护研发者的利益,但实际利益可能往往没有给到真正的研发者)。而专业人才几乎都聚集在大公司里,他们的知识和经验鲜有机会为社会上的其他人所用。直到有人提出了开源许可证这个东西以后,大家才得以保证在法律保护的情况下以开放和自由分享的方式来发布自己的项目,从此亦有了许多人用业余时间甚至全职成立社区或项目,促进了公共知识的发展和共享。如今我们在企业应用开发里面使用到非常多开源第三方库,都是得益于开源运动的发展。

在国内的创客运动发展过程中,笔者见到有许多人并不理解开源的意义,甚至对开源项目有错误的认识,认为只要是开源了的东西就可以随便拿来用,也从来不考虑为开源项目做回馈,是非常遗憾的事情。因此,本篇着重探讨创客运动与开源项目有什么必然的联系。

分析、设计和制造的能力培养

在这个有点拜金又有点消费主义的时代,无论是国内还是国外,都经常看到人们轻视了科学和专业素养的案例,这是一件很危险的事情。我们在谈创新的时候,如何避免空谈理想,或者设计不合符使用的产品,又或者是技术不过关制作出品质低劣的产品,如果不注意这些问题亦会造成巨大的资源浪费。而每个人并不是生来就有这些能力的,在我们的教育系统里,知识的教育其实是很狭窄的,当我们面对现实问题的时候,更需要的是学习知识的能力与实践经验,帮我们去分析问题、设计解决方案和动手解决问题。

而在目前的市场上,许多普遍性问题都是靠企业来解决的,人才都聚集在企业里,而企业的文化是封闭的,他们视员工的产出为企业的知识财产,并以此作为企业的竞争优势,这就导致了许多解决问题的知识和经验都是在企业里积累出来的,但是他们却不能把这些知识分享到社会上。按这种模式发展,久而久之会出现的问题是,解决问题的能力向大企业倾斜,而普通个人或者小企业没有能力解决这些问题,而大企业又由于对市场规模的追求,而不会照顾细分领域。

为什么国外的创客运动是根植于开源、分享的精神之上的?正是因为开源的知识弥补了上述的问题。看看国外的adafruit.com,instructables.com,hackaday.com,人们在上面分享着各种动手DIY的教程,有了这些完整、详细、可行的教程,许多人就可以自己跟着动手尝试,并获得同样的制作经验。试想如果这些知识都是私藏在各种企业里,普通人想学都无法通过自己学习,可能你能在淘宝上买到各种电子元件,却无法找到人告诉你怎么用它来制作电路板,而在adafruit.com上你就可以找到这样的教程。Arduino的创始人开发这个开源工具的时候,目的就是让那些没有理工科基础的艺术生能够有机会用上电子来创作,如果没有这样一个开源的工具,而是靠商业公司来推动的话,电子原型的制作就难以像如今这样大范围地推广,引爆公众领域的创造能力。

以开源项目形式完成的知识储备

在SZDIY社区里,我们一般会以开源项目的方式来一起协作做项目,由于它的开放性,它可以让其他人一起参与,只要对这个项目感兴趣的人,都可以获得一份相关的资料,保持对项目的关注以及给项目做贡献。由于它是属于开放的知识经验,我们可以很容易把它传授给其他人,而没有任何私有产权上的顾虑。

有许多人对自己的创作灵感表现得相当保守,按前人灌输的理念,有自己想法的人应该学会保护自己的创意,用它来创业,引入投资,将来把一个点子做成了一个上市公司实现人生理想云云。笔者在这两年间创业了之后才体会到,从一个想法到一个产品,有多少细节需要打磨,有多少经验需要积累,有多少学习成本需要付,有多少种危机会把项目推向崩溃,这就是为什么90%的创业公司都是注定要失败的。而且又因为企业是封闭的组织,这些问题和经验都难以向其他人分享,每个人只能在自己经历的过程中体会。

但是如果我们的创意是以开源项目的形式来做的话(注:这里要特别说明一下,并非所有创意都适合用开源的方式来做),我们可以让更多的人参与,甚至可以都是用业余时间来完成,在项目参与的过程中大家都可以获得这种新的体验和锻炼新的技能。比如以前我们的澳洲小伙伴Mitch Davis带我们一起做的酿啤酒项目,大家在邮件组里面讨论,每周花一些业余时间来把整个项目做成,最后每个人可以体会到这个过程的问题和动手解决问题的方法,而且还有自己酿的啤酒喝。大公司里面其实有许多像Mitch这样的前辈,他们有丰富的知识和经验,但是如果他们都从来不做开源项目的话,就很难把这些专业的知识和技能传授给其他人。

而对于我们社区里背景各异的人来说,通过社区项目来实现跨界的学习是非常好的机会。我们的每个人的知识是有界限的,但是我们的学习应该是无界限的。自己的专业领域里面就有很多新的技术是需要自己去尝试的,一般新技术都因为有风险而不会被采用到工作项目中,但是以业余、社区项目的形式来做,则可以自己做很多实验。而根据每个人的专业分工不同,参与到社区项目里才能够开拓自己的知识面,了解其他专业分工的思考、做事情的方式,给自己的工作融入了许多新的灵感。

以笔者做的“POLASCII字符拍立得”项目为例,它的雏形是诞生于我们自己组织的HACK42创客马拉松。最初只是我的一个灵感,然后跟社区的人讨论实现的技术,利用马拉松的两天做了一些基本的技术调研,在做的过程中不断平衡创作意图的需要以及实现技术的局限,同时亦刻意去尝试一些自己没用过的技术,花了一个多月的业余时间,也借助其他人提供的一些工具,才把作品完成出来。当项目完成的时候,笔者已经了解了整套技术方案的可行性、优点和缺点等等,这些经验都以开源的形式发布了在网上,将来其他人做类似的事情都可以到这里来参考。当我个人在做这样的事情时,实际上已经帮社区完成了这部分的技术调研和实践检验了,形成了社区的知识储备。

开源和公共知识

如今使用github和stackoverflow的人越来越多,且开源硬件也有很多资料是以GPL形式发布的,技术人员对信息共享的需求是很大的,为什么?因为当一个知道的人能告诉你的话,一个折腾你半个月的问题可能五分钟就解决了。这就是为什么social-coding和技术问答网站是程序员经常依赖的网站。在开放的代码和资料情况下,许多人在遇到问题的时候就可以靠自己的能力来解决手头的问题。而同样,一个软件/硬件存在缺陷的话,如果资料是开放的,那么其他人就可以帮忙排查问题以及提交解决方案给作者。这并不说明一定会有许多人会这么做,但是当他们这样做的时候,就可以降低其他人的试错成本和避免重复劳动。

公共知识库的价值也体现于此。有很多时候大家需要面对的问题是雷同的,如果每个人都要从零开始积累的话,就都得重新花费学习成本。开源运动提倡以开源的方式发布项目,就是为了让大家更好地站在前人的肩膀上做新的东西,因此每个为开源项目贡献的人,亦会尽自己的努力负责好自己的工作,让其他人可以把工作建立在一个坚实的基础上。

我们现在许多企业普遍遇到找技术人员困难的问题,这是因为从整个社会的知识人群架构来看,是缺乏上下层互动的。大学的毕业生,有一小部分有天赋的年轻人被大公司刮走了,而大部分更多是流向了社会上的各行各业。如今的技术资源都是向大公司倾斜的,因此社会上的大多数人,很缺乏项目训练的条件,他们比较难有机会锻炼到能进入大公司的门槛,而大公司需要吸纳人才的时候,又因为同样的原因而难以在社会上的大多数里找到人才。而通过开源项目,则可以促使上层的专业知识人群与下层的基础群众形成有效的互动,通过普及专业的技术技能,还能提高下层大多数的整体知识水平。

开源项目的有一个特点是,它不像商业项目那样有很严格的deadline,它也不会因为公司没有钱倒闭了就死掉,一旦开放了源代码,它就进入了公众的知识领域,由公众里面感兴趣的人把它继续延续下去。它可以通过碎片化的积累,慢慢完成从量变到质变。

另外,开源项目的形态也可以变化多端而衍生到各个领域,因为开源项目里有分支的概念,每当有一些对原项目不够意的人群出现,他们可以选择在原有的基础上创建自己的分支,比如像Linux操作系统,它会被分支到专门给科研实验室专用的版本,也可以分支到专门给艺术家使用的版本,也可以分支到专门给手机、平板等移动端系统比如我们每天在使用的Android。即使项目最初开发的个人或团体已经不存在或者不再更新了,但是他们之前的工作成果,他们项目的基因,都会在这些活跃分支上延续下去。

因此,在创客运动这个领域,我们更需要像开源项目这样一种东西,把高尖端的技术资源推广到普罗大众,提高社会整体的科技水平,并通过对开源项目的贡献,把碎片化的群众智慧积累起来,让创新和技术可以传播到每一个角落,造福人类社会。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
分拣机器人的工作原理是什么