标签 开源软件 下的文章

作为软件开发人员,我认为我们可以认同开源代码 注1 已经改变了世界。它的公共性质去除了壁垒,可以让软件可以变的最好。但问题是,太多有价值的项目由于领导者的精力耗尽而停滞不前:

“我没有时间和精力去投入开源了。我在开源上没有得到任何收入,所以我在那上面花的时间,我可以用在‘生活上的事’,或者写作上……正因为如此,我决定现在结束我所有的开源工作。”

—— Ryan Bigg,几个 Ruby 和 Elixir 项目的前任维护者

“这也是一个巨大的机会成本,由于我无法同时学习或者完成很多事情,FubuMVC 占用了我很多的时间,这是它现在必须停下来的主要原因。”

—— 前 FubuMVC 项目负责人 Jeremy Miller

“当我们决定要孩子的时候,我可能会放弃开源,我预计最终解决我问题的方案将是:核武器。”

—— Nolan Lawson,PouchDB 的维护者之一

我们需要的是一种新的行业规范,即项目领导者将总是能获得(其付出的)时间上的补偿。我们还需要抛弃的想法是, 任何提交问题或合并请求的开发人员都自动会得到维护者的注意。

我们先来回顾一下开源代码在市场上的作用。它是一个积木。它是实用软件,是企业为了在别处获利而必须承担的成本。如果用户能够理解该代码的用途并且发现它比替代方案(闭源专用、定制的内部解决方案等)更有价值,那么围绕该软件的社区就会不断增长。它可以更好,更便宜,或两者兼而有之。

如果一个组织需要改进该代码,他们可以自由地聘请任何他们想要的开发人员。通常情况下为了他们的利益会将改进贡献给社区,因为由于代码合并的复杂性,这是他们能够轻松地从其他用户获得未来改进的唯一方式。这种“引力”倾向于把社区聚集在一起。

但是它也会加重项目维护者的负担,因为他们必须对这些改进做出反应。他们得到了什么回报?最好的情况是,这些社区贡献可能是他们将来可以使用的东西,但现在不是。最坏的情况下,这只不过是一个带着利他主义面具的自私请求罢了。

有一类开源项目避免了这个陷阱。Linux、MySQL、Android、Chromium 和 .NET Core 除了有名,有什么共同点么?他们都对一个或多个大型企业具有战略性重要意义,因为它们满足了这些利益。聪明的公司商品化他们的商品,没有什么比开源软件便宜的商品了。红帽需要那些使用 Linux 的公司来销售企业级 Linux,Oracle 使用 MySQL 作为销售 MySQL Enterprise 的引子,谷歌希望世界上每个人都拥有电话和浏览器,而微软则试图将开发者锁定在平台上然后将它们拉入 Azure 云。这些项目全部由各自公司直接资助。

但是那些其他的项目呢,那些不是大玩家核心战略的项目呢?

如果你是其中一个项目的负责人,请向社区成员收取年费。开放的源码,封闭的社区。给用户的信息应该是“尽你所愿地使用代码,但如果你想影响项目的未来,请为我们的时间支付。”将非付费用户锁定在论坛和问题跟踪之外,并忽略他们的电子邮件。不支付的人应该觉得他们错过了派对。

还要向贡献者收取合并非普通的合并请求的时间花费。如果一个特定的提交不会立即给你带来好处,请为你的时间收取全价。要有原则并记住 YAGNI

这会导致一个极小的社区和更多的分支么?绝对。但是,如果你坚持不懈地构建自己的愿景,并为其他人创造价值,他们会尽快为要做的贡献而支付。合并贡献的意愿是稀缺资源。如果没有它,用户必须反复地将它们的变化与你发布的每个新版本进行协调。

如果你想在代码库中保持高水平的概念完整性,那么限制社区是特别重要的。有自由贡献政策的无领导者项目没有必要收费。

为了实现更大的愿景,而不是单独为自己的业务支付成本,而是可能使其他人受益,去众筹吧。有许多成功的故事:

众筹有局限性。它不适合大型项目。但是,开源代码也是实用软件,它不需要雄心勃勃、冒险的破局者。它已经一点点地渗透到每个行业

这些观点代表着一条可持续发展的道路,也可以解决开源的多样性问题,这可能源于其历史上无偿的性质。但最重要的是,我们要记住,我们一生中只留下那么多的按键次数,而且我们总有一天会后悔那些我们浪费的东西。

  • 注 1 :当我说“开源”时,我的意思是代码许可以某种方式来构建专有的东西。这通常意味着一个宽松许可证(MIT 或 Apache 或 BSD),但并非总是如此。Linux 是当今科技行业的核心,但是是以 GPL 授权的。

感谢 Jason Haley、Don McNamara、Bryan Hogan 和 Nadia Eghbal 阅读了这篇文章的草稿。


via: http://wgross.net/essays/give-away-your-code-but-never-your-time

作者:William Gross 译者:geekpi 校对:wxy

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

随着开源代码在商业和家用应用上越来越流行,基于它的漏洞的攻击也日益增多,据黑鸭子软件对收集的开源项目的数据统计,其预计今年的攻击增长 20% 。

黑鸭子软件安全战略部的副总经理 Mike Pittenger 介绍说,包含了 50% 以上的自由、开放源软件的商业软件项目占比从 2011 年的 3% 上升到今天的 33%。

他说,平均每个商业应用使用超过 100 个开源组件,而三分之二的商业应用代码带有已知漏洞。

更糟糕的是,软件的买家常常无法知道他们购买的软件中有哪些开源组件。

相关阅读: 浪漫开发:如何避免使用开源时易受攻击感

“一般来说,公司并不乐于提供这些”,他说到。他们为客户提供的组件列表常常是不完整的。“如果你未经他们同意就扫描二进制码,你很可能违反了他们的许可协议,给自己带来很多麻烦”。

一些大公司买家可能有权要求他们完整披露,并由第三方比如黑鸭子软件进行扫描验证。

完全避免开源软件并不是一个好的选择。很多开源库是事实上的工业标准,而且从头开始写同样的代码太耗费时间,延误了投放市场的时间,损害了公司的竞争力。因此,商业软件商使用开源代码的越来越多,这个趋势在加速,Pittenger 说到。

同样的逻辑适用于企业自建软件, ISACA 思维领导与研究部门总监 Ed Moyle 说。ISACA 是 IT 和 网络安全专业人员的一个全球化组织。

“也有很多社区支持活跃的项目,带来可靠的安全和功能更新”,他补充说。“在特定情况下,如果能够审计代码会带来安全的好处,当然也带来了高度定制软件的能力。按照以往经验,如果一个商业工具能够做什么事,很可能就会有开源工具提供同样的功能。”但是,“多个眼睛”来检查开源代码漏洞的方式并不总能有好的效果。

“任何人都可以审计代码,但也可能每个人都认为有人来审计,结果最终谁都没有做此事。” 来自 AlienVault 的安全顾问 Javvad Malik 说。“这是一个问题。”

结果,管理开源组件越来越棘手,而那些坏家伙们也意识到这一点。

开源代码到处都是,所以攻击者可以使用同样的利用方式寻找一大批目标。由于跟踪开源代码的困难,使用者常常不打补丁和更新,这样,黑客可以利用已知漏洞和已公布的缺陷利用例子。

物联网的兴起去年也成为了一个主要的安全问题,今年将继续是一个主要问题,专家们预测。

“智能设备和物联网中使用了许多开源软件,这正是 Mirai 僵尸网络病毒利用的漏洞,”Malik 说。(LCTT 译注:自 2016 年 9 月黑客操控感染了恶意软件 Mirai 的物联网设备发起了 DDoS 攻击,影响波及很多著名网站,并导致服务中断,影响颇深颇广。)

同时,开发者常常不检查开源代码漏洞,或者怀疑有问题但由于最后期限的压力,而直接使用了。所以,不只是未打补丁的漏洞存在着,还有新写的代码会集成进去旧的、已知的漏洞,黑鸭子软件的 Pittenger 说到。

商业软件项目中的漏洞平均存活时间为 5 年,他说到。

心血漏洞这个漏洞早在 2014 年初就在 OpenSSL 库中发现,并被广泛宣传。但去年,在测试的应用中仍有 10% 存在此漏洞。

此外,每年有 2000 到 4000 个新漏洞被发现,Pittenger 补充说。

要解决这个问题,需要软件商和顾客的切实行动,以及企业级软件开发者的安全意识——不过目前看在最终改善前,形势很可能还要恶化。

欢迎对此提出您的评论。

我们使用 Linux 是因为它比其他操作系统更实用,还是其他更高级的理由呢?

运行 Linux 的最吸引人的事情之一就是它所提供的自由。 Linux 社区之间的分野在于我们如何看待这种自由。

对一些人来说,使用 Linux 可以享受到不受供应商限制或避免高昂的软件成本的自由。大多数人会称这个是一个实用性的考虑。而其它用户会告诉你,他们享受的是自由软件的自由。那就意味着拥护支持 自由软件运动 Free Software Movement 的 Linux 发行版,完全避免专有软件和所有相关的东西。

在这篇文章中,我将带你比较这两种自由的区别,以及它们如何影响 Linux 的使用。

专有的问题

大多数 Linux 用户有一个共同点,就是他们尽量避免使用专有软件。对像我这样的实用主义的爱好者来说,这意味着我能够控制我的软件支出,以及避免过度依赖特定供应商。当然,我不是一个程序员……所以我对安装软件的调整是十分微小的。但也有一些个别情况,对应用程序的小调整就意味着它要么能工作,要么不能。

还有一些 Linux 爱好者,倾向于避开专有软件,因为他们觉得使用它们是不道德的。通常这里主要的问题是使用专有软件会剥夺或者干脆阻碍你的个人自由。像这些用户更喜欢使用 Linux 发行版和软件来支持 自由软件理念 。虽然它与开源的概念相似并经常直接与之混淆,但它们之间还是有些差异的

因此,问题就在这里:像我这样的用户往往将便利性置于纯粹的软件自由的理念之上。不要误会我的意思,像我这样的人喜欢使用符合自由软件理念的软件,但我们也更有可能做出让步(使用专有软件),以完成特定的任务。

这两种类型的 Linux 爱好者都喜欢使用非专有软件的解决方案。但是,自由软件倡导者根本不会去使用专有软件,而实用主义用户会选择具有最佳性能的工具。这意味着,在有些情况下,这些用户会在他们的非专有操作系统上运行专有应用或代码。

最终,这两种类型的用户都喜欢使用 Linux 所提供的非专有解决方案。但是,我们这样做的原因往往会有所不同。有人认为那些不支持自由软件的人是无知的。我不同意这种看法,我认为它是实用方便性的问题。那些喜欢实用方便性的用户根本不关心他们软件的政治问题。

实用方便性

当你问起绝大多数的人为什么使用他们现在的操作系统,回答通常都集中于实用方便性。方便性可能体现在“它是我一直使用的系统”,乃至于“它运行了我需要的软件”。 其他人可能进一步解释说,软件对他们使用操作系统的偏好影响不大,而是对操作系统的熟悉程度的问题,最后,还有一些特殊的“商业考虑”或硬件兼容性等问题也导致我们使用这个操作系统而不是另一个。

这可能会让你们中许多人很惊讶,不过如今我运行桌面 Linux 最大的一个原因是由于我熟悉它。即使我能为别人提供 Windows 和 OS X 的支持,实际上我使用这些操作系统时感觉相当沮丧,因为它们根本就不是我习惯的用法。也因此我对那些 Linux 新手表示同情,因为我太懂得踏入陌生的领域是怎样的让人恼火了。我的观点是这样的 —— 熟悉具有价值,而且熟悉加强了实用方便性。

现在,如果我们把它和一个自由软件倡导者的需求来比较,你会发现这种人都愿意学习新的甚至更具挑战性的东西,以避免使用非自由软件。对这种用户,我最赞赏的地方,就是他们坚定的采取少数人选择的道路来坚持他们的原则,在我看来,这是十分值得赞赏的。

自由的价值

我不羡慕那些自由软件倡导者的一个地方,就是根据 自由软件基金会 Free Software Foundation 规定的标准,为实现其自由,他们要始终使用 Linux 发行版和硬件而付出的额外工作。这意味着 Linux 内核需要摆脱专有的驱动支持,而且硬件不需要任何专有代码。当然不是不可能的,但确实很难。

一个自由软件倡导者可以达到的最好的情况是硬件是“自由兼容”的。有些供应商,可以满足这一需求,但大多提供的硬件依赖于 Linux 兼容的专有固件。实用主义用户对自由软件倡导者来说是个搅局者。

那么这一切意味着的是,倡导者必须比实用主义的 Linux 爱好者,更加警惕。这本身并不一定是坏事,但如果是打算跳入自由软件的阵营那就要考虑下了。比较而言,实用主义的用户可以不假思索地使用与 Linux 兼容的任何软件或硬件。我不知道你是怎么想的,但在我眼中这样更轻松一点。

定义自由软件

这一部分可能会让一部分人不高兴,因为我不相信自由软件只有一种。从我的立场,我认为真正的自由是能够在一个特定情况下在所有可用的数据里,用最适合这个人生活方式的方法来解决。

对我来说,我更喜欢使用能满足我所有需求的 Linux 桌面,这包括使用非专有软件和专有软件。尽管有人认为专有软件限制了我的个人自由,但我必须反驳这一点,因为我有优先使用它的自由,即选择的自由。

或许,这也就是为什么我更认同 开源软件 Open Source Software 的理想,而不是坚持 自由软件运动 Free Software movement 的理念。我更愿意和这样的人群在一起,他们不会花时间告诉我,我使用对我最适合的方式却是错误的。根据我的经验,这些开源的人群仅仅是感兴趣去分享自由软件的优点,不带有自由软件的理想主义的激情。

我觉得自由软件的概念很棒。而且对那些需要活跃在软件政治,并向大众指出使用专有软件的缺陷的人来说,我认为 Linux ( GNU/Linux ) 行动是一个不错的选择。而像我这样的实用主义用户可能从自由软件的支持者转向,如本文中所说。

当我介绍 Linux 的桌面时,我富有激情地分享它的实际优点。如果我成功地让他们享受这一经历,我鼓励用户自己去发现自由软件的观点。但我发现大多数人使用 Linux 并不是因为他们想拥抱自由软件,而仅仅是他们想要最好的用户体验。也许只有我是这样的观点,很难说。

你怎么认为呢?你是一个自由软件倡导者吗?也许你倾向于在桌面 Linux 发行版中使用专有软件/代码?那么评论和分享您的 Linux 桌面体验吧!


via: http://www.datamation.com/open-source/linux-practicality-vs-activism.html

作者:Matt Hartley 译者:joVoV 校对:jasminepeng

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

india-open-source-software-foss

印度政府做了一项重大政策改变,它宣布其政府的所有软件服务和应用都将强制采用开源软件。印度政府说,这是他们的数字印度计划的一部分,所有的电子政务项目都将采用自由和开源软件(FOSS)。

据一份来自印度电子和信息技术部(DeitY)的申明说:“印度政府应当努力在各个政府部门所实施的电子政务系统中采用自由和开源软件,(对开源软件的采用)要优先于闭源软件。”

印度政府说,这一举措将确保透明度、可靠性和效率。而在去年11月,印度电子和信息技术部部长说,“只要有可能”就优先采用开源软件,仅在开源软件不能满足功能需求时才选择闭源软件。

该申明补充道:

“政府部门应确保遵循这一要求,并通过在软件能力、战略控制、可伸缩性、软件生命周期成本和支持需求等方面对开源软件和闭源软件做比较而决定。”

美国、几个欧洲国家和英国等一些国家都把开源软件作为优先选择。此外, 印度的喀拉拉邦政府据闻已经使用开源软件很长一段时间了。已经上线的印度政府总门户网站 MyGov.in 完全是通过开源软件所开发的。

这件事被认为是开源运动的一大胜利,其根本原因在于开源技术能够极大地降低成本。印度是世界上增长最快的国家之一,其在信息时代前沿的发展上具有巨大潜力。随着这个政策的改变,开源软件可能成为印度技术革命的驱动力。

在拥抱开源的道路上,意大利似乎走在了最前面。我们已经知道,很多意大利的城市如乌迪内都灵Todi和都灵过去已经选择了开源办公套件以取代微软的Office。现在,位于意大利北部的艾米利亚-罗马涅大区(位于意大利北部,是意大利20个大区之一)也将在下个月完成向Apache OpenOffice的过渡。

切换到 OpenOffice

这次向OpenOffice的迁移将会在下个月完成,而且将会覆盖4200个计算机工作站,涉及到10个部门和5个代理机构。 而且,开源文档格式(ODF)也将成为默认的文档格式。向OpenOffice的过渡最初在2013年底被提出来,原本打算在2014年底完成。这次从商业办公产品改用OpenOffice,从授权费用来说,据信会节约大概2 000 000欧元

为了使这次顺利搬家和方便内部操作,负责这次搬家的团队正在开发许多定制工具和插件。

本次项目的负责人,Giovanni Grazia对本次“搬家”充满激情,但同时他也做好了应对批评的准备:

“改用新的办公套件并不是一件容易完成的工作,我们借这次机会来拥护免费和开源的软件。一些地区的公务员表示高度支持,而另一些则感到厌烦,因为他们已经使用商业产品二十年了。为了处理任何在迁移中发生的问题,一个有着三个IT专家的五人支持团队正在一个部门接一个部门,逐渐地完成这次迁移。”

祝愿

我希望其他的国家也能使用OpenOffice套件,祝愿所有迁移到开源软件的人或国家都顺利完成。


via: http://itsfoss.com/emiliaromagna-completes-switch-openoffice/

作者:Abhishek 译者:wi-cuckoo 校对:wxy

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

越来越多的公司意识到,要想比对手率先开发出高质量具有创造性的软件,关键在于积极使用开源项目。软件版本更迭要求市场推广速度足够快,成本足够低,而仅仅使用商业源代码已经无法满足这些需求了。如果不能选择最合适的开源软件集成到自己的项目里,一些令人称道的点子怕是永无出头之日了。

然而,使用开源软件也要面对新的挑战。一方面,你的团队从开源软件中汲取力量变得更快更灵活,另一方面,开源代码在传播过程中是否经历了不可控修改、安全性该如何保障的问题也日益凸显了出来。

OpenSSL Heartbleed 漏洞已经证实。如果你不了解你的应用程序或者已发布的产品中到底运行着什么代码,那你就可能面临需要大量时间才能解决的潜在安全威胁。相反,如果对项目里什么地方使用了什么版本的开源组件都了如指掌,一旦遇到漏洞,响应速度和解决速度都会是千金不换的。

安全性藏在代码内部

Heartbleed bug 让开发人员和企业知道了软件安全性有多重要。专利软件和开源软件哪个更安全?这场广泛受到关注的讨论并没有一个简单的结论。现实情况是,不论是专利软件还是开源软件,它们绝大部分都有缺陷,其中一些缺陷还威胁到软件的安全性。

如果开源软件被内部代码、专利代码引用了,那开发人员将不得不面对更复杂的安全性挑战。要是管理授权许可的手段再不恰当,那想追溯一段代码的来源和引用就得把相关人员全都牵连进来,难度必然急剧增加。

要想切实了解你软件的潜在漏洞,首先你得理解以下三件事儿:

  1. 你的产品和应用程序里现在跑着什么代码?
  2. 那些开发前期使用的代码,开发人员是从哪儿弄来的?
  3. 开发后期使用了哪些组件,这些组件有哪些地方要在部署之前充分测试?

现状怎么样

所有企业都应该对比常见漏洞数据库——比如美国国家标准与技术学会的国家漏洞数据库(NVD)——来检查他们的代码。NVD 等组织追踪并收集了各种安全漏洞的信息以及排名,这些数据可以协助企业确保代码及时更新,规避安全风险。

如果你从没对照漏洞数据库检查过你的代码,那你可有的忙了。好在我们有个可以利用这些数据库定期自动识别开源安全漏洞的工具,这个工具还可以警示和追踪项目中使用的受影响的开源组件并提供必要的解决方案。

持续监控你的代码库能保证及时发现未知代码、了解代码来源、授权信息不会过时、安全漏洞一旦出现就能第一时间掌握并寻求解决方案。如果你的公司有详细的代码清单,你就能轻而易举地找到漏洞所在并及时修复,确保你的业务和客户不会面临危险。

预防未来的问题

相当多开发人员青睐开源软件是因为开源软件易于获得且免费,他们不用为此再走采购流程。目前来看,尽管很多开源组织都有自己的使用策略或使用指引,他们却并没有强制使用者遵守,也没有追查使用者是否遵守。知道你的组织将会使用哪些开源代码、这些代码是否有授权、你的组织中什么地方引用了它们是非常重要的。

你知道你用了什么代码之后,就该好好整理它们了。你可以实现一个贯穿整个开发流程的管理框架,这样你可以掌握每段代码的详细信息,不用再在诸如代码更新了没有、什么时候更新的以及在哪儿更新的这类问题上浪费时间。手工管理这些信息不大可能,所以一流公司都使用自动化代码管理和审查工具。

虽然每个公司、每个开发团队都面临各不相同的问题,但实践证明下面几条安全管理经验对使用开源软件的任何规模的组织都有意义:

  • 自动批准和分类 - 捕捉并追踪开源组件的相关属性,评估许可证合规性,通过自动化扫描、批准和使用过程来审查可能出现的安全漏洞。
  • 维护最新代码的版本 - 评估代码质量,确保你的产品使用的是最新版本的代码。
  • 评估代码 - 评估所有在使用的开源代码;审查代码安全性、授权许可、列出风险并予以解决。
  • 确保代码合法 - 创建并实现开源政策,建立自动化合规检查流程确保开源政策、法规、法律责任等符合开源组织的要求。

关键是,要让管理流程运作起来

随着软件飞速渗入各行各业,开放源代码将在创新发展的道路上扮演越来越重要的角色。为了规避安全问题给日益复杂的环境带来的风险,企业必须运行起一套管理其组织中开源代码使用情况的流程,构筑一个定期对照漏洞数据库检查代码并快速消除风险的流程。

作者 Bill Ledingham 是 Black Duck Software 公司的首席技术官(CTO)兼工程执行副总裁

*作者 Bill Ledingham 是 Black Duck Software 公司的首席技术官(CTO)兼工程执行副总裁。在这之前,Bill 是 Verdasys 的首席技术官,领导信息和网络安全团队为全球顶尖的 2000 家公司和政府机构提供敏感信息的安全保障。 Bill 曾经与人合伙创办过四家公司,现在活跃于波士顿创业社区,作为 CommonAngels 的合作伙伴和投资人迄今已有 6 年历史。


via: http://www.linux.com/news/software/applications/782953-how-to-achieve-better-security-by-proper-management-of-open-source

作者:Bill Ledingham 译者:sailing 校对:wxy

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