深入开源社区:学生须知

尚无读者喜欢此内容。
teaching the open source way open book

Opensource.com

POSSCON 教育主题的演讲中,John "maddog" Hall 发表了题为“FOSS 教你两到三遍”的演讲。作为一名拥有 42 年计算机行业从业经验的资深人士,maddog 见证了这一切。此后,他将注意力转向教育领域,致力于培养一批具有思考能力和自主学习能力的终身学习者。

我将直接跳到我最喜欢的部分:如果我们希望学生能够学习“开源之道”并参与 FOSS 社区,我们需要教给他们哪些技能?以下是 maddog 列出的他们需要掌握的技能:

  • 进行分布式开发
  • 许可软件
  • 制定正式标准
  • 按照标准编写代码
  • 激励软件开发者
  • 定位并吸引用户和开发者社区
  • 随时随地创新
  • 评估和衡量客户需求
  • 比较多个执行相同功能的程序
  • 分享

好的。让我们稍微倒带一下。这个列表从何而来?

这一切始于多年前,当时 maddog 自己还是个大学生。所有软件都是我们今天所说的“开源”——代码在开发者之间友好地传递,鼓励修补和修改。与 maddog 共事的许多开发者都是业余爱好者——他们并非以编写软件为生,或者至少一开始不是。而且他们可以做到,因为分享的文化意味着业余爱好者可以获得与专业人士相同的资源,因此业余爱好者可以轻松地在学习和技能方面赶上甚至超越专业人士。

这与当今软件开发专业的学生所面临的世界形成鲜明对比。他们的大部分信息都被锁定在专有的教科书中。他们接受培训以使用专有软件,这需要大量资金、与行业有联系的教授或访问地下学生盗版网络。(这并不新鲜;1976 年,当 AT&T 阻止新南威尔士大学的一位名叫 John Lions 的教授出版他对 UNIX 源代码的注释时,业余爱好者自己做了这件事,将盗版书的复印件的复印件的复印件从一只手传递到另一只手。)他们被要求从头开始为许多个人作业创建程序,但在您自己的情况下很难创建有趣的软件。如今,大多数软件项目都是复杂的生物,由大型团队在很长一段时间内引导其发展。这就是学生毕业后将要进入的世界——但在经历了四年的“抛弃型”项目后,他们并没有为此做好准备。

公司知道这一点,聪明的公司会找到除简历和成绩以外的其他方法来筛选新员工。Maddog 讲述了 Mark Shuttleworth 首轮 Canonical 招聘的故事。Shuttleworth 没有筛选简历,而是坐下来分析 Debian 邮件列表存档,以确定他想聘请哪些开发者。Shuttleworth 最终聘请了来自世界各地的开发者。这是有道理的;为什么优秀的软件开发应该成为少数国家的专属领域?世界各地的学生不应该利用他们的聪明才智和才能来盗版美国软件,而是应该创建自己的程序来解决当地的需求吗?

这就是列表的由来。显然,学习特定的算法、语言和工具是不够的;学生需要的不仅仅是接受技术人员的培训,而是作为服务提供商接受教育,他们通过从事鲜活的项目来解决社区的问题,就像外科医生学习如何在活体上进行治愈艺术一样。

一旦学生掌握了这些基本技能,他们就可以利用大量的鲜活例子来学习他们在课堂上遇到的任何主题。内核和操作系统、多线程、并发或编程语言?对于这些中的每一个,都有多个在生产中使用的蓬勃发展的开源项目。在学习电话通信方面的专题课程?看看 VoIP、AsteriskAndroid。学习电气工程?有 SPICEArduino 以及大量的电路模拟器和电路板布局工具。法律、英语、哲学?看看 Creative CommonsProject Gutenberg。

当然,这并没有告诉我们如何教授这些技能,或者如何开发程序来始终如一地教授和评估这些技能——但这将是另一篇文章的主题。

User profile image.
Mel Chua 是一位极具感染力的黑客、作家和教育家,拥有十多年的教学和课程开发经验,并在 Red Hat、One Laptop Per Child、Sugar Labs、Fedora 和其他自由、开源和自由软件 (FLOSS) 社区担任领导职务方面有着可靠的业绩记录。

9 条评论

很高兴在 POSSCON 见到你,Mel。

文章很有趣,我现在真希望我能参加那次演讲。Maddog 的演讲总是很有趣。

Flat World Knowledge 是一个值得关注的好项目,它在教育中略有不同的应用了开源。FOSS 方法论的教学理念与知识共享教科书非常吻合。学生可以作为一个协作小组项目,编写对其教科书的改进。

“他们被要求从头开始为许多个人作业创建程序,但在您自己的情况下很难创建有趣的软件。如今,大多数软件项目都是复杂的生物,由大型团队在很长一段时间内引导其发展。这就是学生毕业后将要进入的世界——但在经历了四年的“抛弃型”项目后,他们并没有为此做好准备。”

我认为这是教育系统的问题,而不是完全归咎于行业。我这样说的原因是,在工程领域也存在同样的问题。

我也有过关于这个主题的类似谈话,有趣的是,您指出的某些事情我也在我的谈话中提到过。然而,经常讨论的是如何改变教师的思维方式以采用这种新范式。
我的解决方案是反叛并在课堂外和俱乐部中做到这一点。并在互联网上寻求帮助。

文章很有趣,但我建议稍后再完全投入开源。原因是首先要让孩子们思考。我们最不需要的就是一群只会从那里的开源代码中剪切和粘贴的毕业生。基本上是在不了解它们的工作原理或方式的情况下窃取他人的想法。
这只是我的 2 分钱。

@James 这不是偷窃,这是最大的区别。另一个区别是,您需要思考多少汽车的内部工作原理才能购买或驾驶汽车。

另一方面,我认为 FLOSS 是关于回馈的,而真正的挑战是如何进一步提高已经作为开源提供的知识水平。这样你就不仅仅是索取,而是分享

我想知道您现在对高中微积分课程的微积分导数有多了解。或者您在 100 米赛跑中与邻居学校的孩子相比表现如何。

这与您可以复制粘贴多少开源代码无关,而是您可以生成多少新代码行

我不太担心偷窃,只是担心不思考的部分。没错,我年纪大了,但我已经在这个圈子里混迹了一段时间,知道每一个坎坷和绊脚石。
我完全赞成分享;然而,大多数学生主要对其他事情感兴趣,并且不关心同样的事情。大多数人对分享的想法是我可以从你那里得到什么
但是,了解汽车工作原理的人比只想开车而不了解汽车的人更擅长编写驱动汽车的程序。

好的,我理解学生的心态,这就是为什么开源可以帮助改变这一点。在非开源世界中。每个人都有我可以从你那里得到什么的想法,而不仅仅是学生。

但这正是为什么开源在教育中更重要的原因。因为我们需要教育分享和贡献的价值。至少教育学生比教育律师更容易。

是的,但是用复杂的项目让他们不知所措可能会吓跑很多人。分享教育是好的,但是必须意识到有些人不贡献,但似乎总是索取。我们需要将这些人从框架中剔除,因为他们不属于这里。
然后还有一些人不理解,坚持认为一切都需要按照他们的方式来做。...好吧,我不是那种人……事实上,我坚信做一件事的方法不止一种,而且它们可能都是正确的。这里不是说简单的数学。
简单的“Hello World!”示例在我看来已经被用烂了;然而,它可以向某人展示它确实有效并且可以很简单,并且展示了编程的真正力量。从那里开始,想象力就是极限。实际上,对于计算机编程而言,没有什么您做不到的。但是,您必须了解硬件以及软件为您所做的事情,无论您是否编写了程序。
程序员不是“一文不值”或“简单的可替代商品”。开源是一件很棒的事情,我们需要教更多的分享与合作;但是,我们也需要创新思想家,而不是“奉承者”。

这里有两件事,一个项目不需要复杂或庞大才能成为开源项目。也就是说,大型开源项目实际上更容易贡献。因为已经有一个标准化的贡献流程,文档齐全,并且事物归位。

另一件事是团队协作的动态,有时只是没有强制执行。许多学校只是将学生聚集在一起,说……做一个项目/论文。但是,他们很少被教导如何真正进行团队合作。

而且,仅仅通过索取,您也可以创新。如果这是文学,您将需要“索取”很多,才能产出。这意味着您需要阅读大量不同作家的书籍才能提出自己的作品。当然,复制和阅读之间存在差异。但是,除非一切都是完美的,否则一旦您开始调试您的软件,您将被迫阅读您刚刚粘贴的内容。

知识共享许可协议本作品采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议进行许可。
© . All rights reserved.