分类 观点 下的文章

对于自由软件来说,其最大的自由之一就是能够用一个更新或修改的版本来替换原始版本的程序。尽管如此,数千万使用那些手机里面装着所谓 Linux 的用户却很少能够在他们的手机上运行 主线内核 mainline kernel ,即使他们拥有替换内核代码的专业技能。可悲的是,我们必须承认目前仍然没有可以运行主线内核的主流手机。在由 Rob Herring 主持的2015届 内核峰会 Kernel Summit 上,与会人员共同探讨了这个问题,并进一步谈论了他们应该怎么做才能解决这个问题。

当主持人提问的时候,在座的大多数开发人员都表示他们更乐意在他们的手机上面运行主线内核,然而也有少数人持相反的看法。在 Project Ara 的支持下,Rob 在这个问题上已经研究了近一年半的时间(参见:https://lwn.net/Articles/648400/ )。但是最新的研究成果并不理想。

Rob 表示,通常手机上运行了太多的 过期 out-of-tree 代码;主线内核只是缺少能使手机正常运行所必须的驱动。每台常规的手机都在运行着100万行到300万行的 过期 out-of-tree 代码。几乎所有的这些手机的内核版本都不超过3.10,有一些甚至更加古老。造成这种情况的原因有很多,但是有一点是很清楚的,在手机的世界里,一切都变化的太快以至于无法跟上内核社区的步伐。如果真是那样,他问到,我们还担心什么呢?

Tim Bird 指出,第一台 Android 手机 Nexus 1 从来没有运行过任何一个主线内核,并且以后也不会。它打破了开源的承诺,也使得用户不可能做到将一个新的内核放到手机中。从这一点上来说,没有任何一款手机支持这种能力。Peter Zijlstra 想知道从一台手机到另一台手机到底复制了多少能够工作的过期代码;Rob 表示,迄今为止,他已经见到了三个独立开发的热插拔 Governors

Dirk Hohndel 提出了很少有人注意到的建议。他说,对于世界上的数以亿计的手机,大约只有他们27个人关心他们的手机是否运行着主线内核。剩下的用户仅仅只是想让他们的手机正常工作。或许那些关注手机是否在运行主线内核的开发者正在努力去解决这个令人不解的问题。

Chris Mason 说,那些手机厂商当前正面临着相同类型的问题,而这些问题也是那些 Linux 发行版过去所面临过的问题。他们疲于应付大量的无效且重复和能被复用的工作。一旦这些发行版决定将他们的工作配合主线内核而不是使用自己维护的内核,那么问题将会变得好解决的多。解决问题的关键就是去帮助手机制造商们认识到他们可以通过同样的方式获得便利,形成这种认识的关键并不是通过来自用户的压力。这样一来,问题就可以解决了。

Grant Likely 提出了对于安全问题的担忧,这种担忧来自于那些不能升级他们的手机系统的 android 设备。他说,我们需要的是一个真正专为手机设立的发行版。但是,只要手机厂商仍然掌控着手机中的应用软件,那么手机的同步更新将无法实现。我们接下来将面临一个很大的安全难题。Peter 补充说,随着 Stagefright 漏洞的出现,难题已经出现在我们面前了。

Ted Ts'o 说,运行主线内核并不是他的主要关注点。他很乐于见到这个假期中所售卖的手机能够运行3.18或者4.1的内核,而不是继续停留在3.10。他认为这是一个更可能被解决的问题。Steve Rostedt 认为,按照 Ted Ts'o 所说的那样去做并不能解决手机的安全问题,但是,Ted 认为使用一个更新一些的内核至少可以让漏洞修复变得更加容易。Grant 对此回应说,接下来的一年里,这一切都将再次发生;过渡到更新的内核也是一个渐进式的对系统的完善。Kees Cook 补充说,我们无法从修复旧版本的内核漏洞的过程中得到太多的益处,真正的问题是我们没有对 bug 的应对措施(他会在今天的另外一个对话中讲到这个话题)。

Rob 说,任何一种解决方案都需要得到当前市场上的手机供应商的支持。否则,由于厂商对安装到他们生产的手机上的操作系统的封锁,运行主线内核的策略将会陷入麻烦。Paolo Bonzini 提问说是否可以因为那些没有修复的安全漏洞而控告手机厂商,尤其当手机仍然处于保修期内。Grant 认为对于手机的 可更新能力 upgradeability 的保证必须来源于市场需求,否则是无法实现的。而促使它实现的原因可能会是一个严重的安全问题,然后用户开始对手机的可更新能力提出要求。同时,内核开发人员必须不断朝着这个方向努力。Rob 表示,除了到目前为止指出的所有优点之外,运行主线内核也能帮助开发者对安卓设备上的新特性进行测试和验证。

Josh Triplett 提问说,如果手机厂商提出对主线内核提供支持的想法,那么内核社区又将采取什么措施呢?那样将会针对手机各方面的特性要求对内核进行大量的测试和验证;Android 的兼容性测试套件中出现的失败将不得不被再次回归到内核。Rob 提议这个问题可以在明年讨论,即先将最基本的功能做好。但是,Josh 强调说,如果这个需求出现了,我们就应该能够给出一个好的答案。

Tim 认为,当前,我们和厂商之间存在很大的脱节。厂商根本不会主动报告或者贡献任何反馈给社区。他们之间完全脱节了,这样的话永远不会有进步。Josh 表示,当厂商们开始报告他们正在使用的旧内核的相关 bug 时,双方之间的接受度将变得更加友好。Arnd Bergmann 认为,我们需要的是得到一个大芯片厂商对使用主线内核的认可,并且将该厂商的硬件提升到能够支持主线内核的运行的这样一个水平,而这样将会在其他方面增加负担。但是,他补充说,实现这个目标要求存在一个跟随硬件一起分发的自由 GPU 驱动程序——然而这种程序当前并不存在。

Rob 给存在问题的领域列了一个清单,但是现在已经没有太多的时间去讨论其中的细节了。WiFi 驱动仍然是一个问题,尤其是当这个新特性被添加到 Android 设备上的时候。Johannes Berg 对新特性仍然存在问题表示赞同;Android 的开发人员甚至在这些新特性被应用到 Android 设备上之前都不会去谈论它们是否存在问题。然而,对这些特性中的大多数的技术支持最终都会落实在主线内核中。

随着会议逐渐接近尾声,Ben Herrenschmidt 再次重申:实现在 Android 手机上运行主线内核的关键还是在于让厂商认识到使用主线内核是它们获得最大利润的最好选择。从长远看,使用主线内核能节省大量的工作。Mark Brown 认为,以前,当搭载在 Android 设备上的内核版本以更稳定的方式向前推进的时候,上游工作的好处对运营商来说更加明显。以现在的情况来看,手机上的内核版本似乎停留在了3.10,那种压力是不一样的。

这次谈话以开发者决定进一步改善当前的状况而结束,但是却并没有对如何改善提出一个明确的计划。


via: https://lwn.net/Articles/662147/

作者:Jonathan Corbet 译者:kylepeng93 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

学术界是培养和塑造未来的开源开发者的最佳平台。研究中发现,我们偶尔会开源自己编写的软件。这样做有两个理由,一是为了推广自己编写的工具的使用,二是为了了解人们使用这些工具时会遇到哪些问题。在这样一个编写研究软件的背景下,我的任务就是为 Bradford 大学重新设计二年级的本科软件工程课程。

这是一个挑战,因为我所面对的 80 个学生是来自不同专业的,包括 IT、商务计算和软件工程,这些学生将要在一起上课。最有难度的是,需要和这些编程经验差距很大的学生一起编写代码。按照传统,该课程允许学生选择自己的小组,然后给他们布置构建一个加油站数据库系统的任务,最后提交报告作为评估的一部分。

而我决定重新设计课程,让学生了解现实中的软件团队是如何协作的过程。根据学生的专业和编程技能,我将他们分为五、六个人一组。这是为了确保每个小组的整体水平相当,避免小组之间的不等。

核心课程

课程的形式改为讲座和实践课两项结合在一起。然而实践课作为指导过程,主要是老师监督各个小组的实践进度以及他们如何处理客户和产品之间的关系。而传统的教学方式由项目管理、软件测试、工程需求分析以及类似主题的讲座组成,再辅以实践和导师会议。这些会议可以很好的考核学生的水平以及检测出他们是否可以跟得上我们在讲座部分中的软件工程方法。本年的教学主题包括以下内容:

  • 工程需求分析
  • 如何与客户及其他团队成员互动
  • 程序设计方法,如敏捷和极限编程方法
  • 如何通过学习不同的软件工程方法进行短期的水平提高
  • 小组会议及文档编写
  • 项目管理及项目进展图表(甘特图)
  • UML 图表及系统描述
  • 使用 Git 来进行代码的版本控制
  • 软件测试及 BUG 跟踪
  • 使用开源库
  • 开源代码许可及其选择
  • 软件交付

在这些讲座之后,会有一些来自世界各地的嘉宾为我们说说他们在软件交付过程中的经验。我们也设法请来大学里知识产权律师谈关于软件在英国的知识产权问题,以及如何处理软件的知识产权问题。

协作工具

为了让上述教学内容的顺利进行,我们将会引入一些工具,并训练学生在他们的项目中使用这些工具。如下:

  • Google Drive:团队与导师之间进行共享的工具,暂时存储用于描述项目的文档和图表、需求收集、会议纪要以及项目时间跟踪等信息。采取这样一个方式来监控并提供直接反馈到每个团队,是非常有效的。
  • Basecamp:同样是用于分享文档,在随后的课程中,我们可能会考虑用它取代 Google Drive。
  • BUG 报告工具,如 Mantis:只能让有限的用户免费提交 BUG。稍后我们提到的 Git 可以让小组内的所有人员用做 BUG 提交。
  • 远程视频会议工具:在人员不在校内,甚至去了其他城市的情况下使用。学生们可以定期通过 Skype 来交流并记录会议内容或则进行录音作为今后其他用处。
  • 同时,学生们的项目中还会用到大量的开源工具包。他们可以根据自己小组的项目需求来选择自己使用的工具包和编程语言。唯一的条件是,这些项目必须开源,最后成果可以安装到大学里的实验室,并且大多的研究人员都非常支持这个条件。
  • 最后,所有团队必须向客户交付他们的项目,包括完整的可以工作的软件版本、文档和他们自己选择的开放源码许可。大多数的团队选择了 GPLv3 许可证。

技巧和经验教训

在最后,这一年过的很愉快,并且所有学生的项目都做的非常棒。这里有一些我学到的经验教训,可能有助于提高明年的课程质量:

  1. 提供各种各样有趣的选择项目给学生选择。比如说,游戏开发或者移动应用开发以及完成各种目标的项目等。建立普通的数据库系统已经不能提起学生的兴趣了,而参与到有趣的项目中去,学生本身就是自学者,同时可以帮助解决小组成员和小组之间的常见问题。再通过一个消息列表,学生们发表他们在测试中遇到的任何问题,以寻求其他人的帮助建议。然而,这种方法有一个缺点。外部考官建议我们使用统一种类型的项目和统一的编程语言以帮助缩小对学生的评估标准。
  2. 定期给学生在每一个阶段的表现进行反馈。比方说,可以在和各个小组开指导会议的时候,或者每个阶段进行反馈,以帮助他们在接下来的工作中自我改进。
  3. 学生更加愿意与校外的客户一起协作。他们期待着与外部公司代表或校外人员协作,不过是为了获得新体验而已。与导师进行交流时,他们都能够表现得很专业,这样使得老师非常放心。
  4. 很多团队版将开发单元测试的部分放到项目结束之后,从极限编程方法的角度来说,这是一个严重的禁忌。也许测试应包括在不同阶段的评估中,来提醒他们需要并行开展软件开发和单元测试。
  5. 在这个班的 80 个人里边,仅有 4 个女生,每个女生都分在不同的小组里边。我观察到,男生们总是充分准备好来承担起领队角色,并将最有趣的代码部分留给他们自己来编写,女生则多大遵循安排或者是编写文档。出于某种原因,女生选择不出头,即使在女性辅导员鼓励下,她们也不愿编写代码。这仍然是一个需要解决的主要问题。
  6. 允许不同风格项目文档,比方说,UML 图表、状态图或其他形式的。让学生学习这些并与其他课程融汇贯通来提高他们的学习经验。
  7. 学生里边,有些是很好的开发人员,有些做商务计算的则没有多少编程经验。我们要鼓励团队共同努力,避免开发人员做得比那些只做会议记录或文档的其他成员更好的错误认知。我们常在辅导课程中鼓励角色转换,让每个人都有机会学习如何编程。
  8. 小组与导师每周见面沟通是非常重要的,可以有效监督各个小组进展情况,还可以了解是谁做了大部分工作。通常,没来参加会议的小组成员基本就是没有参与到他们的团队工作中去的,并且通过其他成员所提交的工作报告也可以确定哪些人不活跃。
  9. 我们鼓励学生们把许可证附加到项目中去,使用外部库以及和客户协作的时候要表明确切知识产权问题。 这样可让打破陈规,开拓思维,并了解真实的软件交付问题。
  10. 给学生们自己选择所用技术的空间。
  11. 助教是关键。同时管理 80 个学生显然很有难度,特别是需要对他们进行评估的那几周。明年我一定会找个助教来帮我一起管理各个小组。
  12. 实验室的技术支持是非常重要的。大学里的技术支持人员对于本课程是非常赞同的。他们正在考虑明年将虚拟机分配给每个团队,这样没个团队可以根据需要自行在虚拟机中安装任何软件。
  13. 团队合作,相互帮助。大多数团队自然而然的支持其他团队成员,同时指导员在中间也帮助了不少。
  14. 来自其他同事的帮助会锦上添花。作为一名新的大学导师,我需要从经验中学习,如果我想了解如何管理某些学生和团队,或者对如何让学生适应课程感到困惑时,我会通过多个方面来寻求建议。来自资深同事的支持对我来说是一种极大的鼓励。

最后,对于作为导师的我以及所有的学生来说,这都是个有趣的课程。在学习目标和传统评分方案上还有有一些问题需解决,以减少教师的工作量。明年,我计划会保留这种教学模式,并希望能够提出更好的评分方案以及引入更多的软件来帮助监督项目和控制代码版本。


via: http://opensource.com/education/15/9/teaching-open-source-development-undergraduates

作者:Mariam Kiran 译者:GHLandy 校对:Caroline

本文由 LCTT 原创编译,Linux中国 荣誉推出

图片来源: Shutterstock

我们不要让下一代 Linux 和 Unix 的管理员忘记初始化脚本和基本工具的好处

我曾经有一次在 Reddit 看到一个帖子,“请问如何操作文本文件”。这是一个很简单的需求,就像我们常用 Unix 的人每天遇到的一样。他的问题是,如何删除文件中的重复行,只保留不重复的。 这听起来似乎很简单,但是当文件足够大时,就会有些复杂。

这个问题有很多种不同的答案。你可以使用几乎任何一种语言来写这样的一个脚本,只是时间的投入和代码的复杂性不同罢了。根据你的个人水平,它大概会花费20-60分钟。但是如果你使用了 Perl、Python、Ruby 中的一种,你可能很快实现它。

或者你可以使用下面的一个方法,让你无比暖心的: 只用 awk。

这个答案是迄今为止最简明、最简单的解决问题的方法。它只要一行!

awk '!seen[$0]++' <filename>

让我们来看看发生了什么:

在这个命令中,其实隐藏了很多代码。awk 是一种文本处理语言,并且它内部有很多预设。首先,你看到的实际上是一个 for 循环的结果。awk 假定你想通过循环处理输入文件的每一行,所以你不需要明确的去指定它。awk 还假定了你需要打印输出处理后的数据,所以你也不需要去指定它。最后,awk 假定循环在最后一句指令执行完结束,这一块也不再需要你去指定它。

这个例子中的字符串 seen 是一个关联数组的名字。$0 是一个变量,表示整个当前行。所以,这个命令翻译成人类语言就是“对这个文件的每一行进行检查,如果你之前没有见过它,就打印出来。” 如果该关联数组的键名还不存在就添加到数组,并增加其取值,这样 awk 下次遇到同样的行时就会不匹配(条件判断为“假”),从而不打印出来。

据微博上 @ZorroLang 的补充:少提了一个重点,要不然只会 C 语言的人很难理解为什么 seen[$0]++ 一行代码就行了,这里隐含了 awk 对于其数组变量的处理方式。awk 的数组是关联数组,且不需要声明,而是引用即创建,注意是创建,后面都不会消失的。也就是你像 str[any] 这样随便写一个数组变量,这个数组元素就此就创建了,且初始化为0或空。

谢谢 @ZorroLang ~

一些人认为这样是优雅的,另外的人认为这可能会造成混淆。任何在日常工作上使用 awk 的都是第一类人。awk 就是设计用来做这个的。在 awk 中,你可以写多行代码。你甚至可以用 awk 写一些让人不安的复杂功能。但终究来说,awk 还是一个进行文本处理的程序,一般是通过管道。去掉(没必要的)循环定义是很常见的快捷用法,不过如果你乐意,你也可以用下面的代码做同样的事情:

awk '{ if (!seen[$0]) print $0; seen[$0]++ }’ 

这会产生相同的结果。

awk 是完成这项工作的完美工具。不过,我相信很多管理员--特别是新管理员会转而使用 Bash 或 Python 来完成这一任务,因为对 awk 的知识和对它的能力的了解看起来随着时间而慢慢被人淡忘。我认为这是标志着一个问题,由于对之前的解决方案缺乏了解,那些已经解决了几十年的问题又突然出现了。

shell、grep、sed 和 awk 是 Unix 的基础。如果你不能非常轻松的使用它们,你将会被自己束缚住,因为它们构成了通过命令行和脚本与 Unix 系统交互的基础。学习这些工具如何工作最好的方法之一就是观察真实的例子和实验,你可以在各种 Unix 衍生系统的初始化系统中找到很多,但在 Linux 发行版中它们已经被 systemd 取代了。

数以百万计的 Unix 管理员了解 Shell 脚本和 Unix 工具如何读、写、修改和用在初始化脚本上。不同系统的初始化脚本有很大不同,甚至是不同的 Linux 发行版也不同。但是它们都源自 sh,而且它们都用像 sed、awk 还有 grep 这样的核心的命令行工具。

我每天都会听到很多人抱怨初始化脚本太“古老”而且很“难”。但是实际上,初始化脚本和 Unix 管理员每天使用的工具一样,还提供了一个非常好的方式来更加熟悉和习惯这些工具。说初始化脚本难于阅读和难于使用实际上是承认你缺乏对 Unix 基础工具的熟悉。

说起在 Reddit 上看到的内容,我也碰到过这个问题,来自一个新入行的 Linux 系统管理员, “问他是否应该还要去学老式的初始化系统 sysvinit”。 这个帖子的大多数的答案都是正面的——是的,应该学习 sysvinit 和 systemd 两个。一位评论者甚至指出,初始化脚本是学习 Bash 的好方法。而另一个消息是,Fortune 50 强的公司还没有计划迁移到以 systemd 为基础的发行版上。

但是,这提醒了我这确实是一个问题。如果我们继续沿着消除脚本和脱离操作系统核心组件的方式发展下去,由于疏于接触,我们将会不经意间使新管理员难于学习基本的 Unix 工具。

我不知道为什么有些人想在一层又一层的抽象化来掩盖 Unix 内部,但是这样发展下去可能会让新一代的系统管理员们变成只会按下按钮的工人。我觉得这不是一件好事情。


via: http://www.infoworld.com/article/2985804/linux/remember-sed-awk-linux-admins-should.html

作者:Paul Venezia 译者:Bestony 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

2015年, 自由软件基金会 Free Software Foundation (FSF)度过了其三十岁生日。这三十年来,FSF 积极地站在捍卫和推进计算机用户权利的前沿,做出了不可磨灭的贡献。这三十年来,自由软件社区以及 FSF ,已经将 自由软件 free software 的理念传播到了全世界,并得到了社区以及整个网络上的普遍认知。

为了指导 FSF 接下来五年的发展方向,FSF 特地发起了一个投票(兼募捐),希望能听到社区的声音,将您的观点和建议展示给 FSF,共创更加辉煌的未来。

请移步 https://www.fsf.org/survey?pk_campaign=survey-launch&pk_kwd=survey 填写调查问卷。

同时,为了方便中国的自由软件运动关注者,我们也对该问卷的内容做了一份翻译,列于下面供参考,如有不当之处敬请指出:


FSF 愿景调查

通过这份问卷调查,您将帮助 FSF 更好的了解自由软件运动的优先事项、需求和关注点。它也许会占用您5到15分钟的时间。本问卷的最终截止时间是北京时间 2016/2/2 凌晨 1:00。

此问卷调查是匿名的(如果没有在最后填入您的邮箱地址)。不管是否匿名,我们都会重视您的意见。我们还是希望能够获得您的联系方式,以防需要跟您进行进一步的沟通。

本问卷一旦开始就不应该停止和重新开始,所有的内容都需要一次完成。所有的问题都可以跳过。您可以随时跳过那些您不关心的问题。十分感谢您的支持。

FSF 和自由软件

您认为在未来的5年,FSF 应该关注的重点是(最多选择3项):
  • ☐ 网络自由:自由的 JavaScript,网络中立,推进去中心化的网络服务和抵制“ 服务即软件替代 Service as a Software Substitute ”(SaaSS)
  • ☐ Copyleft:推广使用类似 GNU GPL 的 copyleft 许可证,而不是更宽松的自由软件许可证,并贯彻 执行 GPL
  • ☐ 监控和安全:使用自由软件以防止大范围的监控,并确保自由软件是安全的
  • ☐ DRM:终结 数字版权保护 Digital Restrictions Management (DRM),让它从网上滚蛋
  • ☐ 许可证指导:帮助开发人员了解和使用自由许可证,并告诉他们哪个许可证最适合他们
  • ☐ 软件专利:终结(而不只是改革)软件专利
  • ☐ 开发:帮助 GNU 项目和其他项目编写新的软件和改进现有软件
  • ☐ 团队建设:增加多样性,让自由软件中的少数派也能够发声
  • ☐ 硬件:帮助或提振可以 100% 运行自由软件的硬件开发,特别是在移动/嵌入式领域
  • ☐ 采用:帮助个人或团体去使用自由软件

评价以下的内容

FSF 是自由软件运动的正面典型
  • ☐ 强烈反对 ☐ 不同意 ☐ 既不同意也不反对 ☐ 同意 ☐ 强烈同意
来自 FSF 的邮件太多
  • ☐ 强烈反对 ☐ 不同意 ☐ 既不同意也不反对 ☐ 同意 ☐ 强烈同意
FSF 的在线资料缺乏吸引力且不够人性化
  • ☐ 强烈反对 ☐ 不同意 ☐ 既不同意也不反对 ☐ 同意 ☐ 强烈同意
FSF 在促进自由软件社区中的多样性和少数派方面做了不少工作
  • ☐ 强烈反对 ☐ 不同意 ☐ 既不同意也不反对 ☐ 同意 ☐ 强烈同意
FSF 偕同其他的组织在为计算机用户权益方面的广泛运动做了很好的工作
  • ☐ 强烈反对 ☐ 不同意 ☐ 既不同意也不反对 ☐ 同意 ☐ 强烈同意
FSF 需要更妥协一些
  • ☐ 强烈反对 ☐ 不同意 ☐ 既不同意也不反对 ☐ 同意 ☐ 强烈同意
FSF 有效地使用了收到的捐款
  • ☐ 强烈反对 ☐ 不同意 ☐ 既不同意也不反对 ☐ 同意 ☐ 强烈同意
FSF 整体运作良好
  • ☐ 强烈反对 ☐ 不同意 ☐ 既不同意也不反对 ☐ 同意 ☐ 强烈同意
回顾过去30年,自由软件运动已经成功的实现了目标
  • ☐ 强烈反对 ☐ 不同意 ☐ 既不同意也不反对 ☐ 同意 ☐ 强烈同意
自由软件对于新手来说太过混乱,对于自由软件的开发来说,易用性应该优先考虑
  • ☐ 强烈反对 ☐ 不同意 ☐ 既不同意也不反对 ☐ 同意 ☐ 强烈同意
假想到2020年,因为自由软件运动和 FSF 的努力,人们在使用计算机方面拥有更多的自由和权力。说说为了达成这一目标,我们应该做些什么。
假想到2020年,事实恰恰相反——我们作为计算机用户并不是那么自由。说说我们在哪些地方将会做错。
哪个社会运动或组织是您所乐见我们与之通力协作的。

关于您

过去您是否以以下一种方式参与到 FSF,请选择相应的选项
  • ☐ 志愿者,工作人员或者是董事会成员
  • ☐ 准成员
  • ☐ 非会员的捐助
  • ☐ 在网络上关注(网站,邮件,社交媒体)
  • ☐ 关注我们的消息
如果您在网络上关注我们,请选择相应的选项
  • ☐ Email(包括每月的通报: Free Software Supporter)
  • ☐ 博客文章(fsf.org/blogs)
  • ☐ 新闻稿和新闻公告(fsf.org/news)
  • ☐ RSS 源
  • ☐ 除 twitter 外的社交媒体和新闻平台(GNU/social、Pump.io、Reddit 等)
  • ☐ Twitter
如果您支持 FSF 的工作(在任何方面),请告知我们您的主要理由,选择相应的选项
  • ☐ 我想要支持自由软件的开发
  • ☐ 我想要支持自由软件理念的行动和宣讲
  • ☐ 我关注 GPL 的贯彻执行
  • ☐ 我使用 GNU 软件且想要给予回馈
如果您之前有捐赠我们或是我们的成员,但是现在却不再继续了,请告知原因
为什么自由软件对你很重要,为什么你选择使用它
如何形容您参与自由软件的主要方式(以及对 FSF 感兴趣的地方),选择相应的选项
  • ☐ 我是自由软件的开发者
  • ☐ 我在文档,设计,测试,翻译或者是其他方面为自由软件开发提供帮助
  • ☐ 我使用自由软件
  • ☐ 我是自由软件的积极分子
你为软件开发付过费没有(无论是自由软件还是其它)
  • ☐ 是 ☐ 否
详细描述你的回答,无论是正面或负面的反馈,都可以在这里填写

统计

性别
生日

联系信息

是否介意 FSF 在公开著述中匿名引用您的文字?
  • ☐ 可能介意,请先联系我(假如没有登录,需要留下您的邮箱)
  • ☐ 介意
  • ☐ 不介意
你希望加入我们的低频率邮件列表,接收我们的每月通报吗?

(如果你没有登录,需要输入你的邮件地址) ☐ 登记

(可选)邮件地址。这将让你调查结果不再匿名

注意:以上译文仅供你在提交调查问卷时参考,此处并不具备问卷提交功能,请访问 FSF 的问卷地址提交。

最后,提交完问卷之后,FSF 建议你考虑捐赠或付费注册成为会员,以支持 FSF 的工作。

最近一个新闻说,原本各大浏览器厂商推动在 HTTPS 中放弃支持 SHA-1 算法,但是由于 Facebook 等公司认为尚有少部分用户采用老式的 SHA-1 算法,而建议延长支持期。姑且不论浏览器厂商和应用厂商的做法谁更合理,那么这里提到的 SHA-1 算法是什么呢?它有什么风险么?

密码学里面有一类算法叫做 哈希 hash 算法,也称作散列算法、摘要算法,通常用于对一段信息的取样。当你给它一段 信息 message 时,可以用特定算法生成一段 信息摘要 message digest ,通常摘要的长度更短。 摘要 digest 可以表示这段信息的某种特征——就如同指纹一样,所以这个特征也叫做 指纹 fingerprint 校验和 checksum

这种算法包括我们经常听说的 MD5 、SHA-1 等算法。它通常用于加密体系的信息摘要,以建立一个可靠、安全的数据交互通道。而现在,随着对加密技术的研究和计算能力的提升,不断发现摘要算法中的缺陷和攻击方法,因此,对于涉及到数据安全的算法方面,建议每过一个阶段就更换一次摘要算法。

理想情况下,哈希算法应该有四个重要特性:

  • 不可逆:不能从摘要生成其原始信息
  • 无冲突:不同的信息具备不同的摘要
  • 易计算:对任意信息容易计算其摘要
  • 特征化:信息修改后其摘要一定变化

当然,实际上,前两个特性在应用中有一些不成立的情况。

虽然算法可以做到不可完全逆转,但是存在找到生成相同摘要的两段或更多信息的可能性。这是因为摘要信息的域值范围有限,只能表现有限种类的信息,在用来表示无限的信息时,肯定存在冲突。而在摘要算法的应用场景中,往往并不要求使用具体的原始信息,只要你能生成同样的摘要就可以了,因此,也出现了类似彩虹表这样的数据库,供根据摘要信息查询原始信息。

而且由于算法本身可能会存在的缺陷,就有可能通过算法找到两个具有相同摘要的信息。比如 2004 年,山东大学的王小云教授就率团队突破了 MD5 算法,可以找到具备相同的 MD5 摘要的两段信息,从而为 MD5 算法的死亡盖上了“核准”印章。

那么我们就来看看,包括 MD5 在内的这些哈希算法们,都活着怎么样?

valerieaurora.org 的跟踪,当前的摘要算法们的生存状况如下:

从上图可以看到,SHA-2 之前的算法,除了 RIPEMD-160 外,都已经被攻破或存在可实现的碰撞算法了,因此,再将其应用到产品中,就存在了各种风险。所以,尽快升级你的加密策略吧。

来自荷兰阿姆斯特丹的消息称,LinuxOnAnything.nl 网站的黑客们成功地在土豆上安装了 Linux!这是该操作系统第一次在 根用蔬菜 root vegetable 上安装成功(LCTT 译注:root vegetable,一语双关,root 在 Linux 是指超级用户)。

Linux Potato

“土豆没有 CPU,内存和存储器,这真的是个挑战,” Linux On Anything (LOA) 小组的 Johan Piest 说。“显然我们不能使用一个像 Fedora 或 Ubuntu 这些体量较大的发行版,所以我们用的是 Damn Small Linux(一个超小型的 Linux)。”

在尝试了几周之后,LOA 小组的同学们弄出了一个适合土豆的 Linux 内核,这玩艺儿上面可以用 vi 来编辑小的文本文件。这个 Linux 通过一个小型的 U 盘加载到土豆上,并通过一组红黑线以二进制的方式向这个土豆发送命令。

LOA 小组是一个不断壮大的黑客组织的分支,这个组织致力于将 Linux 安装到所有物体上;他们先是将 Linux 装到 Gameboy 和 iPod 等电子产品上,不过最近他们在挑战一些高难度的东西,譬如将 Linux 安装到灯泡和小狗身上!

LOA 小组在与另一个黑客小组 Stuttering Monarchs (结巴王)竞赛,看谁先拿到土豆这一分。“土豆是一种每个人都会接触到的蔬菜,它的用途就像 Linux 一样极其广泛。无论你是想煮捣烹炸还是别的都可以” ,Piest 说道,“你也许认为我们完成这个挑战是为了获得某些好处,而我们只是追求逼格而已。”

LOA 是第一个将 Linux 安装到一匹设德兰矮种马上的小组,但这五年来竞争愈演愈烈,其它黑客小组的进度已经反超了他们。

“我们本来可以成为在饼干上面安装 Linux 的第一个小组,但是那群来自挪威的混蛋把我们击败了。” Piest 说。

第一个成功安装了 Linux 的蔬菜是一头卷心菜,它是由一个土耳其的一个黑客小组完成的。

(好啦——是不是已经目瞪口呆,事实上,这是一篇好几年前的恶搞文,你看出来了吗?哈哈哈哈)


via: http://www.bbspot.com/news/2008/12/linux-on-a-potato.html

作者:Brian Briggs 译者:StdioA, hittlle 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出