开源正在获胜,现在是时候让人们也获胜了
教孩子们关于开源的知识?别忘了也教他们道德伦理。
回想我1988年秋季刚上大学的时候,我接触到了一款名为Emacs的文本编辑器。实际上,它不仅仅叫做Emacs;它还叫做“GNU Emacs”。我很快了解到,“GNU”部分指的是一种叫做“自由软件”的东西,它远不止是免费那么简单。“GNU”的人们以极大的热情谈论软件,仿佛整个世界的命运都取决于他们的软件取代商业竞争对手的成功。
我们这些使用此类程序的人,无论是来自GNU还是其他类似自由许可的软件,都知道我们使用的是高质量的代码。但对于我们在学校和工作的同事来说,我们有点奇怪,竟然将我们的工作托付给没有大型商业公司支持的软件。(我仍然记得,作为惠普的大学实习生,我告诉小组里的其他人,我已经编译、安装并开始使用一种名为“bash”的新shell,它比我们都在使用的“k shell”要好。他们的反应介于困惑和震惊之间。)
随着时间的推移,我开始使用越来越多的符合“自由软件”定义的程序——Linux、Perl和Python是明星,但还有很多其他的程序,从Emacs(我至今仍在使用)、sendmail(当时几乎是唯一的SMTP服务器)、DNS库等等。1998年,蒂姆·奥莱利认为,尽管“自由软件”事业是好的,但它需要更好的协调和营销。因此,“开源”这个术语开始流行起来,强调实际的好处,而不是哲学和社会方面的好处。
那时我已经在做咨询工作,经常与客户——包括小型初创公司和大型跨国公司——进行艰苦的斗争,告诉他们是的,我信任那些不花钱、任何人都可以修改并且由志愿者开发的的代码。
但信不信由你,营销真的有效。“开源”这个术语在打开许多人的思想方面做得非常出色。慢慢地,事情开始发生变化:IBM宣布将向Linux和开源软件投入巨额资金。Apache最初是一个httpd服务器,后来成为一个基金会,赞助了越来越多的开源项目。网景像它崛起时一样迅速地衰落,在破产之前将其Mozilla浏览器作为开源软件(并拥有自己的基金会)发布。红帽证明,你可以拥有一家成功的开源公司,通过销售高质量的服务和支持。而这些还只是最著名的名字。
随着每一次公告,商业公司对使用开源的抵制情绪都降低了一点。当公司意识到其他公司也在依赖开源时,他们也同意使用它。
快进到今天,你很难避免使用开源软件。它无处不在,从最小的公司到最大的公司。仍然有商业版本的UNIX,但Linux实际上是每个人期望或谈论的全部。而Linux确实无处不在。我的Python和Git课程从未像现在这样受到那些希望教员工提高对这些技术熟悉程度的公司的欢迎。曾经,一个人有可能了解并知道大多数主要的开源软件,但今天这已完全不可能。
几年前,在一次飞行中,我的个人屏幕出现了一些问题。我向空乘人员寻求帮助,她告诉我,最简单的办法可能就是重启屏幕。想象一下我的惊讶,当我看到自己坐在30,000英尺的高空座位上,看着Linux的启动序列!正是在那时,我意识到开源,由于其廉价且开放供人们检查和修改的特性,确实已经到来了。
令我惊讶的是,即使是那些最反对开源软件的公司也变成了倡导者——不一定是出于热爱,而是因为市场正朝着这个方向发展。微软不仅在使用开源,还在积极参与和支持社区,鼓励使用开源,甚至做出贡献。
那么,我们成功了吗?答案当然是既是又否。毫无疑问,开源软件已经到来,它的成功超出了我最疯狂的梦想。我主要靠向世界各地的公司教授Python和Git为生,而对这些技术的需求之大,怎么夸张都不为过。公司正在尽可能快地采用开源,同时降低成本并提高灵活性。学生们正在学习使用开源技术和语言。
所以,是的,如果以市场渗透率和开源软件可以竞争的认可度来衡量,我们绝对是赢了。当然,在桌面方面还有工作要做,但迄今为止的成就确实是真实、切实和令人印象深刻的。
但是,仅仅是普及甚至占据主导地位已经不够了。正如一些有先见之明的人很久以前就预见到的那样,我们这个由互联的计算机、手机和设备组成的世界正在产生海量的数据,这些数据存储在我们无法触及的地方,由我们无法看到或检查的算法进行分析,并被用来做出可能影响职业、教育和医疗保健等方面的决策。
此外,长期以来既聪明又有利可图的商业模式,即广告,也带来了巨大的代价,即许多公司比我们自己更了解我们。令人惊讶的是,广告支持的服务通常非常好用且有用——而且是免费的——以至于我们忽略了与他们分享我们一切信息的后果。
从今天的年轻人的角度来看,互联网一直连接着我们,智能手机一直存在,我们手机和电脑上使用的应用程序一直都是免费的。如果你必须分享你的一些数据,那又怎样?人们似乎不再像以前那样关心隐私以及他们与这些公司分享了多少信息。也许那是因为人们从他们使用的服务中获得了如此明显的好处。但也可能因为人们没有意识到他们的数据 *如何* 被使用。
2019年4月刊的《Linux Journal》全部关于孩子,但它也是我们的25周年纪念版,所以现在是提出“我们应该教给孩子们关于开源软件的什么?”这个问题的合适时机。
几年前,麻省理工学院将其计算机科学入门课程从传统的(也是出色的)使用Scheme的课程改为使用Python的课程。这无疑引起了巨大反响,并影响了数百所现在也使用Python的大学。当麻省理工学院改变课程时,编写该课程的教授指出,对于今天的软件工程师来说,学习编码是不够的。你还需要学习诸如伦理学之类的主题。许多程序员会被要求做不道德的事情,因此在工作中遇到这些问题之前,思考清楚这些问题非常重要。哎,仅仅确定什么被认为是道德的本身就是一个棘手的问题——许多开发人员可能从未考虑过这个问题。
所以,是的,我们向孩子们教授关于Linux和开源软件的知识非常重要。但仅仅教他们事物的技术部分是不够的。我们还需要告知他们工作的社会部分,以及当今程序员所拥有的巨大影响力和权力。有时,当另一种选择是做不适当或非法的事情时,公司故意少赚一些钱是可以的——甚至是更可取的。
教授和讨论机器学习很重要——不仅仅是作为一套技术,还要理解模型是如何工作的,它们可能在哪里出错,以及你需要做什么才能使它们正确。讨论何时以及如何将这些算法与公众分享并提供给公众审计,这一点很重要。
而且,重要的是要解释,没有人对这些问题有完美的答案。存在分歧是可以的。但提出这些问题和难题是一项重大责任,重要的是让孩子们从小就明白,编程具有现实世界的影响——其中一些可能是坏的。我们不允许人们在至少证明他们对自己的行为如何影响他人有最基本的理解之前开车。我不是建议我们要求程序员获得执照,而是建议我们经常提出这些重要观点。
《Linux Journal》25年来一直处于开源运动的前沿,推动和鼓励我们想象一个软件质量高、人人可用、成本低廉或免费,并邀请我们进行实验和修改的世界。我很自豪能在这份刊物上撰写文章这么长时间——自1996年以来。虽然这个专栏通常会继续保持技术重点,但我很高兴《Linux Journal》作为一份出版物,正在关注我们工作的社会影响。