开源:对计算机教育有害吗?

还没有读者喜欢这个。
A key and a building

Opensource.com

Mark Guzdial,受人尊敬的教授ACM 教育委员会副主席表达了一些担忧,关于开源对计算机教育的影响。这些担忧是合理的吗?

他从一个非常戏剧性的立场开始

在我们试图扩大计算机领域的参与度之时,开源开发比商业软件开发更加封闭和更缺乏多样性。

指出开源项目的准入门槛通常比需要的要高,这当然是公平的,但称开源开发“比商业软件开发更加封闭”显然是、明显地、逻辑上、无可辩驳地错误的。

如果您想修改席德·梅尔的《文明》的源代码,您必须首先被席德·梅尔雇用。如果您想修改 Freeciv 的源代码,您只需去获取它即可。

当然,这不是 Mark 的意思。Mark 谈论的是开源开发的“文化”——获取代码是一回事,但对项目产生影响完全是另一回事。

在这方面,Mark 有道理。即使代码对任何人都是免费的,但成为开源项目的实际贡献者可能很困难且令人生畏。开源项目可以从降低这些障碍中获益匪浅,并且大多数项目在这方面还有很多工作要做。这是我每天都面临和抗争的问题。

然而,Mark 接下来提出的论点——商业开发经验为学生提供了本质上更好的入门体验——存在严重缺陷。

当学生发展成为专业专家时,他们经常参与教育工作者称之为合法外围参与 (LPP) 的过程。当您在一家公司开始捡垃圾(在外围做一些合法的事情),并在此过程中,听到正在发生的事情并弄清楚这家公司发生了什么时,这就是 LPP。学生可以通过执行与编写软件没有直接关系的任务,但与整个企业相关的任务,在公司开始软件开发。这些合法的外围任务充当进入该过程的垫脚石,例如编写文档或在可用性测试中运行受试者。

这是 Mark 论点的核心,令我着迷的是,他怎么能同时如此正确又如此错误,以及他如何误解了开源开发模型最明显的优势所在。

首先,让我们谈谈机会的广度。Mark 似乎假设每个学生开发者都有机会参与商业开发。这显然是不真实的。像佐治亚理工学院这样的精英学校可能为他们的大多数计算机专业学生提供这类机会——但其他地方呢?就此而言,对于佐治亚理工学院那些由于某种原因未能通过选拔的孩子们呢?除非你能保证地球上每个计算机专业的学生 100% 获得合作或实习机会(并且说实话,我们永远无法接近这个数字),否则总会有渴望成为学生开发者的学生根本没有机会看到商业代码库,或参与合法外围参与。

不过,他在 LPP 的重要性方面是完全正确的。

事实上:开源世界完全建立在合法外围参与之上,并且没有合法外围参与就无法存在。

让我们对 Mark 之前的声明进行快速的搜索和替换

当学生发展成为专业专家时,他们经常参与教育工作者称之为合法外围参与 (LPP) 的过程。当您在社区开始捡垃圾(在外围做一些合法的事情),并在此过程中,听到正在发生的事情并弄清楚这个社区发生了什么时,这就是 LPP。学生可以通过执行与编写软件没有直接关系的任务,但与整个项目相关的任务,在社区开始软件开发。这些合法的外围任务充当进入该过程的垫脚石,例如编写文档或在可用性测试中运行受试者或在论坛上帮助新手,或在邮件列表中提问,或提交或分类错误,或维护项目维基,或只是将软件投入使用以解决现实世界的问题。

嗯,这条信息看起来 可疑地让我感到熟悉

如果我们采用 Mark 信息的内核——LPP 对于培养专业开发者至关重要——那么很自然地,我们通过尽可能多地为每个学生提供 LPP 的机会来获益,不是吗?

所有软件都有错误。所有软件都需要更好的文档。所有软件都可以从测试中获益。所有软件都提供了大量的 LPP 机会。

但只有开源软件提供了必要的访问权限,使 LPP 对每个学生都成为可能。

这正是我们在 人道主义 FOSS 项目(实际上在几个月前在 CACM 中专题报道过)或 UCOSP 项目等项目中看到的情况。这也是塞内卡学院对每个通过他们 CDOT 计划的学生所做的事情。在这里和那里,教授们开始弄清楚这个过程。

不幸的是,到目前为止,还没有很多教授有足够的信心深入开源开发的世界——这就是 Red Hat 启动 教授开源夏季体验 的原因,以便那些想冒险的教授获得一些支持。

当然,存在挑战。让学生深入参与开源并不容易——但它远没有大多数教授认为的那么困难,而且肯定不比让学生深入参与商业软件开发更困难。

Mark,您是否希望您的学生进行真正重要的可用性研究,并且可能改善全球数百万用户的生活?尽管您 相反的断言,但现在有开源项目 恳求 需要 您的 帮助。您只需与他们联系即可。

哦,还有,关于 这条推文

开源开发需要成长并变得对教育友好。

这是双向的,Mark。让我们一起合作,而不是各说各话。如果您在 SIGCSE 不太忙,也许您可以来 HFOSS 研讨会 并与那些非常关心解决这些问题的人亲自分享您的担忧。

标签
User profile image.
Greg DeKoenigsberg 是 Ansible 的社区副总裁,他在那里领导公司与更广泛的开源社区的关系。Greg 为 Ansible 带来了十多年的开源产品和社区领导经验,其中大部分时间用于为开源领导者 Red Hat 构建和领导社区。

40 条评论

Greg,感谢您对我的博客文章做出如此周到和有趣的回应!您提出了极好的观点,特别是指出开源为学生提供了参与真实且有影响力的代码开发的机会。但我仍然坚持我的主张:“开源开发比商业软件开发更加封闭和更缺乏多样性。”您绝对正确,学生无法参与他们选择的任何商业软件项目,但他们可以选择参与任何开源项目。我声称的是,商业开发人员的实际、经验测量的统计人口结构比开源开发的经验测量的统计人口结构更加多样化。您说开源的潜力更大,这是对的。但现实是,这种情况并没有发生。

一般来说,新的计算机专业学生都能找到工作。开源解决的问题不是学生缺乏机会。今天的计算机专业学生有机会与真实用户进行软件开发。美国劳工统计局的数据表明,IT 行业从业人员比拥有 IT 学位的人多得多——职位多于受过培训的人来填补这些职位。开源确实提供了一个大型的,甚至是世界范围内的舞台,学生通常没有机会为之开发,但这并不是唯一的舞台。现有统计数据表明,少数族裔学生更容易进入商业软件开发领域(不是任何项目,而是一个项目),而不是进入开源领域。

嗨,Mark——

听起来您只关注美国的数据?在我看来,开源运动的一个明显好处是,它为那些居住在甚至没有商业软件开发的国家的人们提供了这种观看和学习的机会,这些人永远不会获得您描述的那种机会。

我没有定量数据来支持这一点,但我在 Red Hat 的经验是,我们看到了来自世界各地的人们参与(我们有时后来雇用了他们),如果不是开源,他们可能永远无法接触到商业软件项目。

很想听听您(或其他人的)观点,即开源是否为那些难以接触到商业技术公司及其提供的学习机会的人们提供了更多机会。

我相信并信任您的统计数据,即开源开发主要是白人或亚裔男性,但我很难理解您如何得出上述结论。您的意思是,我们的人口结构概况在某种程度上是偏袒最积极参与者的结果,从而为所有其他人设置了准入门槛。是什么让您认为 FOSS 中参与度不均是积极存在的,而不仅仅是自然发展?您将如何描述这个障碍?

“现有统计数据表明,少数族裔学生更容易进入商业软件开发领域(不是任何项目,而是一个项目),而不是进入开源领域。”

我每天都在使用开源。我不知道与我一起工作的 95% 的人的少数族裔身份,因为我们不在办公室露面。据我所知,我可能正在与来自火星的小绿人一起工作。

不要一开始就试图修改 Linux 内核中的内存管理器或调度器。他们告诉我滚开,我已经写了二十年代码了。

从一个小项目开始。我目前的兴趣领域是智能能源,所以我正在使用 Contiki 和 802.15.4。我们可以利用所有可以获得的帮助——包括绿色的外星人。

<cite>“我每天都在使用开源。我不知道与我一起工作的 95% 的人的少数族裔身份,因为我们不在办公室露面。据我所知,我可能正在与来自火星的小绿人一起工作。”</cite>

我很遗憾您似乎为此感到自豪——对您社区缺乏多样性视而不见,并且拒绝为思考如何实现更多多样性而付出任何努力,这在很大程度上是为什么开源社区的女性参与度低于 1% 的原因。

(话虽如此,我在这件事上站在 Greg 这边。有人可能会争辩说,人们不应该加入开源项目以抗议目前缺乏多样性,但这看起来不太像 Mark Guzdial 的论点。)

我不是这样理解 Jon 的评论的。毕竟,您无法从电子邮件地址中确定某人的种族概况,它只是另一个贡献者。我一直认为这是一件好事,即分布式全球开发本质上对个人的背景视而不见,他们完全根据其技术优点来评判。我以为这就是我们避免歧视的方式,无论是无意识的还是其他的?

Alex,是的……但有些歧视是双倍的好处。

<cite>“我一直认为这是一件好事,即分布式全球开发本质上对个人的背景视而不见,他们完全根据其技术优点来评判。我以为这就是我们避免歧视的方式,无论是无意识的还是其他的?”</cite>

不,我真的不这么认为——我认为这是平等对待与平等考虑的谬误。平等要求我们平等地考虑少数群体想要什么与我们群体想要什么,而不仅仅是我们以表面上“平等对待”的方式行事(但这很可能不是同等考虑的)。如果您忙于假装你们都在一个大的中立群体中,您就无法充分了解少数群体想要什么。

一个例子(很多例子中的一个)可能是,女性往往强烈表示不希望她们的工作互动和谈话被性化,原因有很多。一个声称对同事的偏好视而不见的人是否有可能做出这种迁就?或者,再举一个例子,有些男人喜欢在邮件列表中表现出攻击性行为,但大多数女性不喜欢。如果一个男人说他同样频繁地攻击男人和女人,他是否具有歧视性?

(我想我们在这里严重偏离主题了;对此感到抱歉。)

……我认为您正中主题的核心,因为您正中 Mark 对开源的主要担忧之一的核心:因为它不够包容,他很难理直气壮地称其为“开放”。

“平等对待与平等考虑的谬误”实际上可能是我听过的对开源文化最简洁的批评之一。

如何解决这个问题是另一个问题——但我怀疑学术界可能非常适合提供帮助。我知道 HFOSS 关心这个问题,这也是我参与其中的原因之一。

<cite>“‘平等对待与平等考虑的谬误’实际上可能是我听过的对开源文化最简洁的批评之一。”</cite>

就我而言,它与其说是简洁不如说是精辟。如何衡量“考虑”,以便可以将两种不同的“考虑”进行比较以获得平等?

当然,应该制止那些喜欢在技术讨论中使用攻击性语言或不当语言的人。无论消息接收者是否被冒犯,举止不当仍然是不当的举止。

有些项目比其他项目更好,但当然,许多发行版都制定了政策来确保讨论中的文明。我不认为这是一个可以针对整个开源生态系统的指责。当然,有些项目可以更加努力。

“如果一个男人说他同样频繁地攻击男人和女人,他是否具有歧视性?”

根据定义,不,他只是个混蛋(如果他经常攻击的话)。您的观点似乎是,统一对待是错误的,因为不同的人应该因生理或其他差异而受到不同的对待。那样会带来很多哲学上的麻烦。

<cite>“根据定义,不,他只是个混蛋(如果他经常攻击的话)。您的观点似乎是,统一对待是错误的,因为不同的人应该因生理或其他差异而受到不同的对待。那样会带来很多哲学上的麻烦。”</cite>

那么,您在哲学上反对男女厕所分开吗?如果没有它们,我们会“减少歧视”吗,那样会更好吗?

有很多广为接受的例子(例如上面的例子)表明,平等考虑是唯一符合伦理道德的行事方式;您需要找到比这更有力的论据来反对它。

<cite>“‘这座建筑没有轮椅可通行的入口,我们没有歧视,因为我们平等对待每个人,给他们相同的入口使用”</cite>

这种迁就似乎无关紧要,所以我找不到自己关心的理由。另一方面,有些人确实关心:看看关于男女通用浴室的争论,或者跨性别者可怕的困境,他们似乎在任何性别化的场所都不受欢迎。

<cite>“这座建筑没有轮椅可通行的入口,我们没有歧视,因为我们平等对待每个人,给他们相同的入口使用”</cite>

在私有财产的背景下,我对这种情况没有意见。相反——国家强制的过度迁就(违背自身利益)更令人不安。

好的;我想我们可以转到另一个例子。您对产假有什么看法?它是否具有歧视性,因此是错误的?如果雇主宣布“从今天起,男性和女性都不享有任何新生儿父母假,这项政策不具歧视性,因为它对两性都是一样的”,这是否可以辩护?

至少在我生活过的社会中,雇主的行为将被认为是歧视性的,而且是非法的,正是因为它未能平等重视女性的特殊需求。如果我们在这种情况下拒绝平等对待原则的结论,我们应该找到更好的伦理原则来取代它。

我想(希望?)这将是我对这个帖子的最后回复,总结一下:平等对待作为衡量平等的正确标准具有直观的吸引力,但在分析时,它提供的答案被广泛认为是不平等和不道德的。这对开源社区具有影响,因为使这些社区对少数群体不友好的行为通常使用平等对待的理由来辩护。

“如果雇主宣布‘从今天起,男性和女性都不享有任何新生儿父母假,这项政策不具歧视性,因为它对两性都是一样的’,这是否可以辩护?”

当然可以。但您知道,开明的(?)政府选择干预雇主/雇员的私人事务,并使这种做法相当罕见。您会意识到,这些政策源于您支持的那种“基于需求”的哲学,因此将其用于解释角色是循环论证。

<cite>“您的观点似乎是,统一对待是错误的,因为不同的人应该因生理或其他差异而受到不同的对待。那样会带来很多哲学上的麻烦。”</cite>

回到这一点,您似乎暗示平等考虑可能会导致残疾歧视或类似的负面后果——我认为这是令人困惑的,并且恰恰相反。

可以使用平等对待原则做出残疾歧视的决定(“这座建筑没有轮椅可通行的入口,我们没有歧视,因为我们平等对待每个人,给他们相同的入口使用”),但不能使用平等考虑原则。(“坐轮椅的人有兴趣进入我们的建筑,在决定建造哪种入口时,我们应该给予他们群体的偏好与我们自己的偏好相同的权重。”)

如果有人想提出残疾歧视的论点,我认为平等考虑原则将是他们最具吸引力的起点。

“<em>平等考虑少数群体想要什么</em>”的一个问题是,我们真正知道的只是少数群体<em>积极分子</em>想要什么——该群体的普通成员想要什么不一定相同。另一个问题是,我们大多数人都在与个人打交道,而不是与群体打交道。根据我的经验,大多数属于少数群体的个人<strong>确实</strong>希望在不参考其群体成员身份的情况下受到对待,而仅仅根据他们自己的优点和资格。

是否可能是因为对软件开发(开源或闭源)感兴趣的女性较少,所以参与其中的女性也较少?

少数族裔在 FOSS 等社区中代表性不足的许多其他原因与该社区设置的障碍无关,而是与社区 realmente 无法解决的更大的社会问题有关。

<cite>“是否可能是因为对软件开发(开源或闭源)感兴趣的女性较少,所以参与其中的女性也较少?”</cite>

我不这么认为,但这无关紧要。行业程序员中 20% 是女性,她们显然感兴趣,因此您的解释并没有解释从 20% 的行业到 1% 的 FLOSS 之间的巨大差距,这才是我们应该讨论的内容。一旦我们将 FLOSS 提升到接近 20% 的水平,让我们开始怀疑我们无法进一步提升的原因是否是女性对编程不感兴趣。

<cite>“对您社区缺乏多样性视而不见,并且拒绝为思考如何实现更多多样性而付出任何努力,这在很大程度上是为什么开源社区的女性参与度低于 1% 的原因”</cite>

对兴趣水平视而不见也是如此。我在大学工程系工作。大多数班级的女性构成不到 5%,而且并非所有女性都是 CS 专业,有些人只是为了在其他地方获得学分。在我个人认识的人中,对开源感兴趣的人做得很好,可以成为贡献者。但与男性一样,并非所有人都做开源。您可以使其尽可能友好,但如果没有兴趣,您将永远无法获得参与。

许多少数族裔也比多数族裔更难获得资源。这就是 Helios 项目如此重要的原因。如果您没有访问权限,无论如何您都无法参与。

除非您掌握统计数据背后的事实,否则这些统计数据毫无用处。

Mark,作为该领域的教育工作者,我认为您实际上应该为开源社区多样性中这些所谓的 (1) 缺点承担一些责任。开源开发人员和社区并非天生完美,它们由许多从佐治亚理工学院等提供的课程毕业的人组成。在毕业之前,您积极鼓励(甚至要求)多少少数族裔和女学生参与开源?您是否提供关于学习如何参与的课程,还是将其留给学生自己去弄清楚?根据我的经验,高等计算机教育提供了扎实的技术能力基础,但很少解决参与非货币激励驱动的群体所需的社交技能。

(1)- 请问您能否引用您提出此主张所依据的研究?

我在我的原始 Blog@CACM 帖子中引用了一些来源:http://cacm.acm.org/blogs/blog-cacm/72144-the-impact-of-open-source-on-computing-education/fulltext 您可以通过查看 Mike Terry 和 Jim Herbsleb 等人的论文和资源来了解更多信息。

Mark Guzdial 写道

我声称的是,商业开发人员的实际、经验测量的统计人口结构比开源开发的经验测量的统计人口结构更加多样化。

用维基百科的术语来说,我在这里看到一个大的 [需要引证]。如果它是经验测量的,那么至少您可以给我们一些研究来证明这一点。一些证据?一些数据来研究?

是的,在某些领域,自由开源软件对某些人口群体来说更难进入。女性是经典的例子——在 20% 从事计算机工作的女性中,只有 3%(根据 2006 年的一项调查)在开源领域工作。

但是,因此说整个 FOSS 过程对于学习程序员和计算机专业人员来说,比闭源软件更不开放,这是一种以偏概全的谬论。它忽略了我在闭源开发中无法阅读,更不用说贡献的大量软件。它忽略了阻止和限制有抱负的计算机专业人员使用闭源操作系统和专有程序的许可费用。开源程序员通常因其在开源代码方面所做的工作而被公司雇用;在闭源软件世界中根本没有类似的过程——每家新的专有公司都必须期望其新员工完全不熟悉其代码库。它完全否定了态度上的根本差异——闭源软件公司很少甚至从不询问社区他们想要什么功能,以及在开源世界中司空见惯的各种贡献——翻译、艺术作品、可用性测试、文档等。

这很像豪华酒店的所有者批评街角的青年旅馆没有接纳所有人

最终,这就是为什么闭源会失败而开源会成功的原因——因为开源允许比闭源软件更大范围的人群做出贡献。

玩得开心,

Paul

拜托。让我们现在就消除这种说法。闭源程序开发在种族方面更加多样化的原因是,至少在美国,有法律要求这样做。Mark 您熟悉公司的人力资源部门吗?我建议您调查一下。这是主要因素。

另一方面,FOSS 是一个由志愿者组成的松散联盟。如果你有在 ARM 处理器上进行内核开发的经验,没有人会问你的肤色。没有人力资源部门来讨论“雇佣”事宜。无需填写种族问卷。

因此,如果你比较这两个实体如何运作,差异在于它们的组织方式,而不是多样性问题。

他这是在拿苹果和橘子做比较。

实际上,你错了。

他是在比较 Apple(苹果公司)和 Orange Linux(橙色 Linux)。

http://orangelin.sourceforge.net/

:))

Greg,感谢你让 FLOSS 世界关注到这场辩论和 Mark 的立场,我发现这非常令人不安。我同意你的观点,最终我<a href="http://ebb.org/bkuhn/blog/2010/02/17/education-floss.html">自己写了一篇博文</a>,谈论了 Mark 论点中你没有提及的其他一些要点。 特别是,这个多样性问题在整个计算机科学领域都很普遍,而不仅仅是 FLOSS 特有的。

<cite>特别是,这个多样性问题在整个计算机科学领域都很普遍,而不仅仅是 FLOSS 特有的。</cite>

然而,这个问题*确实*是 FLOSS 特有的。即使在工业界和学术界女性参与度约为 20% 的例子,也比我们现在女性参与度不到 1% 的情况有了巨大的、值得庆祝的进步。

关于 Guzdial 的帖子,有很多地方可以不同意,但自由软件社区缺乏多样性的存在并不是其中之一。

我是一个连续创业者,也是一个自 20 世纪 80 年代中期(在“开源”这个词出现之前)就参与开源的人,我只想说:胡说八道。

大多数开源项目实际上是由小型创业公司运作的。 我曾经工作过的每一家小型创业公司都严重缺乏雌激素——女性倾向于选择薪酬高、工作稳定、健康福利好的大型企业,而不是福利差、薪水平庸的风险创业公司(但如果你是千分之一真正成功的创业公司之一,就有机会获得丰厚的回报)。 白人男性或亚裔男性似乎是创业公司的常见情况,这与开源项目和其他任何创业公司没有什么不同。

换句话说,将开源与我们掌握多样性信息的大型企业进行比较,就像是在拿苹果和橘子做比较。 我以前也有过女性工程师在我手下工作——事实上,我架构的最后一个项目(一个创业公司的商业项目,顺便说一句,不是开源项目)最重要的团队的负责人就是女性——但她们在创业环境中非常罕见(事实上,她是我们工程部门唯一的女性工程师),这与开源项目的人口结构几乎没有什么不同。

结论:当这项“研究”的原始作者正确地进行同类比较(即,将小型创业团队与现有的小型开源团队进行比较)时,我才会认为它有价值。 在那之前…… 我不太认同。

顺便说一句,关于“每个计算机科学专业的毕业生都能找到编写计算机软件的工作”这种说法真是荒谬。 这完全是无稽之谈。 ACM 和 IEEE 计算机协会实际上对此类事情进行了研究,发现不到 70% 的计算机科学专业毕业生实际上找到了从事任何类型的软件开发或维护的工作,五年后,只有不到 40% 的计算机科学专业毕业生实际上在从事计算机软件开发。 显然,在顶尖工程大学,100% 的毕业生很可能会在私营企业找到工作。 但顶尖工程大学并不能代表大多数计算机科学专业的毕业生,他们中的大多数人在教育期间没有实习机会,毕业后转向软件开发的机会也有限。 对于我们这些毕业于二流大学的人来说,开源实际上是职业救星。 如果没有开源,我可能在某个地方开出租车,而不是担任年薪六位数的软件架构师和开发经理。

“发现不到 70% 的计算机科学专业毕业生实际上找到了从事任何类型的软件开发或维护的工作,五年后,只有不到 40% 的计算机科学专业毕业生实际上在从事计算机软件开发。”

我对这段话的理解与你完全不同。 我认为,大多数学习计算机科学的人发现他们实际上并不想成为程序员,然后就转行了。 这需要特定类型的人,他们想要全身心投入到这些类型的问题中,达到要求的水平——我认为这是人口结构“缺陷”的关键(我在大学时,数学和物理似乎也有类似的人口结构)。 声称的人口多样性中有多少人在毕业 5 年后仍在编写代码? 毕竟,这正是为自由软件做贡献的主要内容——仅仅是编写代码。

我还认为,自由软件开发者实际上来自那些真正想成为程序员的群体,所以仍然靠编写软件获得报酬(我不明白自由软件如何能“拯救”一个找不到工作的糟糕程序员——如果你足够优秀,可以参与一个像样的自由软件项目,那么你就完全有能力通过编写软件获得报酬,反之亦然)。 而且这些人大多是出于机会和*兴趣*的白人和亚裔男性,而不是因为歧视或欺凌。

如果说有什么原因的话,教育工作者可能是没有将编程培养成更广泛人群的兴趣爱好的一部分原因(计算机科学课程中应用程序的“多样性”很大程度上是因为那里有很多工作机会,而不是因为申请者的热情)。 但计算机科学家不是来教编程的,不是吗?

我发现整个“自由软件不适合教育”的观点简直是目光短浅,几乎是故意无视事实。 还有什么比一个只对自由分享思想感兴趣的社区更适合教育的呢?

这难道不是教育的本质吗?

教育不仅仅是培训。 教育不仅仅是“提高股东价值”——而这正是大多数专有软件开发的唯一目标。

好的,你批评的那个人显然只是一个政治正确的喷子,不应该理会他。 但确实存在一些问题阻碍了人们参与开源项目。 其中最大的问题是文档。

比较一下向学生介绍各种环境的难易程度。 JAVA 或 C#/.net? 有大量的优秀书籍,多个成熟的开发环境。 Windows C/C++ 开发? 购买 MSDN,你就万事俱备,现在任何像样的大学都已经购买了 Microsoft 所有产品的站点许可证。

现在试试让某人开始使用 Linux 桌面,例如。 如果你想要控制台/curses,你有很多不错的选择,但现在没人想从那里开始了。 说出一本适合作为编写图形应用程序教材的书。 从 GNOME 开始。 亚马逊显示了一些书。 几乎所有的出版日期都是 1999 年或 2000 年,因此对于试图为 GNOME 2.x 开发的新手来说毫无用处。 一本较新的书,其中有一章专门介绍 GNOME,还有一本早已绝版的“官方指南”。

好的,现在大多数发行版的大部分工作都是用 Python + GNOME 绑定完成的,所以这一定是一个不错的起点。 有这方面的文档吗? 关于 Python 的书籍很多,有些甚至讨论了 GUI 编程……使用 Tk。 有一本关于 Python 和 GTK+ 的在线指南,但即使我也知道 GTK+ 并不是 GNOME 首字母缩写词动物园的全部,所以很接近但还不够好。

而且不仅仅是针对 GNOME,关于 Qt 的资料很多,但也没有太多资料能让新手程序员开始编写 KDE 应用程序。

如果我们希望看到学生们将自由软件作为首选平台进行开发,而不是等待他们先学习 .NET 或 Java,然后希望他们以后转过来,那么一本记录最新版本且适合作为入门教材的书籍可能是首要需求。

在我们的项目中,我们通过用 x11 编写代码解决了这个问题。 它有一些非常古老的书可以廉价获得,但这些函数仍然有效。 我们开发的是 2D MMORPG 而不是一些花哨的窗口程序,这并没有什么坏处。

QT 有优秀的参考文档,大多数成功的开源项目都有大量的在线参考文档。 但你的主要抱怨似乎是没有足够的教程文档。 但其实是有的。 它被称为源代码。 有成千上万个小型 QT 程序可以教你如何编写 QT 程序,更不用说 QT 本身附带的示例了。 或者正如开源人士喜欢说的那样,“阅读源代码,卢克”:)。

当然,这不是人们在学校学习事物的方式。 在学校里,人们被教导,你必须有一本书手把手地教你才能学到任何东西,如果你没有书,你就无助了。 但在现实中与学校不同,教程材料并不常见。 当我当时的老板让我开始编写 Java 代码时(我被聘用是因为我的 Linux/C 专业知识,但后来出现了需求),我以前从未见过 Java。 我主要通过阅读团队中经验丰富的 Java 工程师已经编写的类似模块的代码来学习 Java,并以此作为我的指导。 实际上,我开始编写我的模块时,实际上是将遵循相同设计模式的其他人的类复制到我的新名称下,然后进去掏空它,并将我的新内容放入其中,使其完成我需要做的事情。 我广泛使用了 Sun 的在线 Java 参考文档,但尽管市场上有一百万本 Java 教程文本,但我从未读完我买的那本的第三章——在商业软件环境中根本没有时间进行这种无聊的事情,你被期望现在就上手,而不是几个月后。

简而言之,再次说明,学习开源技术和学习专有技术(当时的 Java 就是专有技术)之间没有区别。 需要你描述的那种大量手把手指导才能学习新事物的人,在任何一种环境中都不会茁壮成长,甚至无法生存——但至少在开源项目中,如果你花几个月的时间阅读源代码来熟悉事情是如何完成的,你不会被解雇。 在商业环境中,你通常作为新员工处于试用期,如果你在几周内没有做出贡献,你就会被解雇——干脆利落,毫无荣耀,没有工作。 如果你带着这样的想法进入这种环境,认为你会有时间花一个月的工作日阅读教程并按照其指示学习 Java 编程,那么你对商业软件环境的本质抱有可悲的幻想,并且会通过残酷的现实受到教育——通过碰壁吃亏的方式。

……看起来像这样

http://www.flickr.com/photos/wedesoft/4369292635/

一切都与钱有关,亲爱的。

如果联邦政府启动一项资助计划,帮助补贴开源软件并为社区成员的工作付费,开源将会蓬勃发展。 实际上,人们对免费工作不感兴趣——那叫做“爱好”。 他们并没有那么无私奉献。

我想没有人想到要提及现在在手机中发现的价值数百万美元的开源产业。 随着各种应用商店的出现,所有应用都由社区开发者构建,我发现很难接受这些说法。 开源并不难入门。 你下载并编写代码。 只有当你实际编写出有用的东西时,才能获得认可。 这是商业开发和开源之间最大的区别。 商业开发者正在寻找他们能找到的最优秀的程序员(关键词)。 开源程序员的水平只取决于他们产生的工作成果(而不是他们在面试中表现得有多出色),更不用说他们必须与全世界竞争,而不仅仅是当地的计算机科学毕业生。

开源领域的人口结构并不能说明什么。 过去几十年,越来越多的女性进入计算机科学领域,但这仍然不足以抵消大量白人和亚裔男性的存在。 任何具有历史知识的人都会知道为什么这两个群体在许多领域占主导地位。

我从事软件开发已有 30 多年。 其中一部分时间我用来培训和教导程序员和软件工程师。 我同意参与所谓的“开源”社区存在许多障碍。 我不同意文章的前提,即开源是教育的障碍。 我承认,在我作为软件开发人员的 30 多年中,更多的实际项目是从一箱零件和一次握手开始的,而不是我在任何级别上看到的学生经历的任何事情。

我拥有参与任何我感兴趣的 Linux 社区项目的所有技能。 我决定提供一些技术写作方面的努力。 我不是在谈论一些超级关键的、极其复杂的应用程序或内核组件。 我明智地认为应该从边缘且远离关键路径的东西开始。 砰! 我遇到了障碍。

我下载了源代码和文档的“软件包”。 我访问了“项目站点”以查看规范和蓝图。
经过数小时的阅读和搜索,有些事情就是不明白,所以我会在相关的博客和论坛上提问。 是的,我得到了“开发者”的回答。 许多答案听起来像这样:“……我太忙于编写代码,没时间解释或写作……”

所以这里有一个完全可行的开源贡献者,他需要主题专家的详细信息,但却无法突破障碍。

~~~ 0;-Dan
奥斯汀,德克萨斯州

虽然大多数相关问题都已涵盖,并且有力地驳斥了 Guzdial 的论点,但我认为需要指出的重要一点是,FOSS 的主要动机之一是“解决痛点”。 用户或开发者需要特定的功能或一份文档。 因此,他们创建了一个项目或加入了一个现有项目。 *绝对没有*任何东西阻止高等教育机构通过创建或采纳项目并确保少数群体得到“公平”的代表来“解决不同的痛点”。 创建和维护 FOSS 项目的基础设施非常便宜(如果需要,只需时间即可完成),几所大学的组合可以管理大量包容性项目,其花费可能比他们在计算机科学系喝咖啡的费用还少。 当然,推卸责任和抱怨很容易,而真正为此做些事情却更难。 我确信有成千上万的项目非常乐意接受少数群体的贡献,如果你愿意一开始避开大型商业支持的项目,那么我也确信许多项目维护者会投入时间来使环境变得合适。
请注意,FOSS 社区已经有足够的 FUD 需要处理了——当问题有明确且简单的解决方案时,不要加剧问题!
Anton

首先,我想指出的是,在阅读了 Guzdial 先生的评论后,他利用“开放”这个词玩文字游戏。 开源仅仅是查看代码的能力——仅此而已。 开源并不意味着公平、平等或立即加入你想要的任何群体。 现在,开源项目以开发人员脾气暴躁和言语刻薄而闻名——毕竟,他们是在志愿贡献时间——所以他们不对任何人负责。 从来没有保证你可以快速渗透到这些开源项目的核心——你必须通过努力才能晋升——这被称为精英管理。

至于 Guzdial 先生关于开源项目 95% 是白人和亚裔男性的评论——我的回答是,这与商业软件公司有什么不同? 这真的是一个歧视制度,还是更像是一种社会学现象? 编写代码是一种数学抽象——你认识多少喜欢数学抽象的女性? 我不是想淡化歧视问题——但我认为 Guzdial 教授的观察实际上更多地谴责了我们培养和教育孩子看待许多硬科学的方式,而不是开源项目本身。 许多女性(我指的是在西方社会长大的女性)认为计算机科学、数学、物理学和其他“硬核”科学是冷酷而朴素的学科,而不是真正的人类事业。

幸运的是,开源——其法律定义,而不是 Guzdial 教授对这个词的文字游戏——提供了一个解决方案。 Guzdial 教授可以与志同道合的计算机科学教授合作,他们作为一个团体可以 fork 一个开源项目,这个项目在他们看来因不符合他所理解的“开放”而臭名昭著。 然后,这个项目可以招收在这些教授指导下学习的学生,这些教授可以专门为女性或其他他们认为代表性不足的群体创建名额。 从中,教授们可以看到他们能多好地吸引女性和其他群体加入他们的开源项目——了解有多少人真正愿意志愿参与,并从他们运营这个开源项目的实际经验中获得想法。 他们可以制定其他开源项目可以使用的行为准则。

这样,Guzdial 教授的断言就可以得到检验。 与此同时,那些想在编写代码方面初试身手的学生此时应该忽略 Guzdial 教授,直接加入一个项目。 如果该项目不欣赏你的努力,那就换一个项目。

我完全不同意他的说法。 我编写代码不是因为某些大学项目,也不是因为我在大学里学到的任何东西。 事实上,我可以说我编写代码恰恰是因为我在大学里的经历。 大学教给我的是,完成工作比把事情做对更重要,快速完成比使其稳固更重要,而且作为一名工程师,你不需要知道你在写什么,只需按照指示操作即可。 另一方面,我在开放世界中学到的却恰恰相反。 除此之外,我还在开放世界中学会了*如何*编程,而大学教我如何用一种语言(Java v1.3)编写代码,他们或多或少地说工程师只会编写 Java(说真的,那是 2000 年代初期,Java 很酷)。

大学里“提升”成为专业人士的项目几乎是可笑的。 我看到有人编写 Java 类,这些类几乎什么都不做。 另一方面,那些在开放领域玩耍的人发现,仅仅因为他们编写了 50 行马马虎虎的代码并不能让他们成为高手,而且他们的评价标准是参与的质量和一致性,这正是大多数代码公司所采用的(比利没有为项目做贡献? 比利的贡献低于标准? 我们为什么要付钱给他?)。 在投入真正的产品编码之前,这是一个很好的警醒!

我不是说大学不好,但它本身并不能让你为真实的工程世界做好准备……但它是一种很好的方式,可以表明你拥有编写代码所需的绝对最低技能。

简而言之:作为一名工程师,大学教你不要思考,只管去做。 开放世界教导工程师思考、行动并与他人合作。 哪个更现实?

<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/"> <img alt="Creative Commons License" src="/themes/osdc/assets/img/cc-by-sa-3.png" title="This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License."></a>本作品采用 Creative Commons Attribution-Share Alike 3.0 Unported License 许可。
© . All rights reserved.