标签 开源 下的文章

科技世界的探索总是让我们兴奋不已。很多科技日新月异,你探索得越深远,你看到的世界就越广阔无穷,这就像是一只驼一只的海龟一样。因此,科技世界也像宇宙一样无穷无尽。如果你也渴望加入到推动技术世界发展的社区中,你应该如何开始呢?你要做的第一步是什么?以后应该怎么做?

首先,你得明白开源指的是开放软件源代码的意思。这个很好理解,但是“开源”这个词最近一段时间经常出现在我们身边,所以估计有时候大家都忘记了开源只是用来形容一种文化现象,而不是一家世界 500 强公司的名字。跟其它公司或组织不同的是,你不用去参加面试或填个申请表、注册表的方式来成为一名开源程序员。你需要做的就是编程,然后把代码共享出来,并且完全保证在任何情况下该代码都保持开放状态。

只需要这样,你就已经成为一名开源程序员了!

现在你有了目标,那么你为之奋斗的基础能力怎么样了?

技能树

你玩过 RPG 游戏吗?在那些游戏中就有关于线性“技能树”的概念。当你玩游戏时,你掌握了基本技能后,便会“升级”,并且获得新的技能,然后你使用这些新的技能再次“升级”到一个更高的等级,你又会得到更多新的技能。通过这样不断的升级,获取新技能,以让你的游戏角色变得更强大。

成为一个程序员有点像提升你的技能树等级。你掌握了一些基础的技术,在参与开源项目开发的过程中,你不断实践,直至自己的技术等级上升到一个新的层次,之后你又懂了一些新的技术,并在项目开发过程中不断实践,不断提升技术等级,然后你再沿着这个技能树不断成长,不断进步。

你会发现自己面临的不只一棵技能树。开源软件涉及到的技术比较多,包括很多参与者自身的优势、能力及兴趣爱好等。然而,有一些非常重要的技能有助于你成为一名伟大的程序员,不断的提高这些技能是成功参与到开源项目中的重要组成部分。

脚本编程

对于像 Linux 或 BSD 系统这样的 POSIX 系统而言,最大的优势之一就是在你每次使用电脑的过程中,你都有机会练习编程。如果你不知道如何开始编程,你可以从解决工作中的一些基本问题做起。想想你日常工作中有哪些重复性的工作,你可以通过编写脚本的方式来让它们自动执行。这一步非常简单,比如说批量转换文件格式或重置图片的大小、检查邮件,甚至是通过单击运行你最常用的五个应用程序。无论是什么任务,你可以花一些时间去编写脚本以让它们自动完成。

如果有些工作需要在控制终端下操作,那么你就可以编写脚本来完成。学习 bash 或 tsch 编程,把编写系统脚本作为你写代码和理解系统的工作原理的第一步。

系统管理

从这一点来讲,你也可以转变成一个程序员,也可以整个跳到另外一个不同的技能树上:那就是系统管理工作。跟程序员比起来,这两个职业在技能上有一些相似(一个优秀的系统管理员应该有一些编程经验,并能够熟练使用 Python、Perl,或者其它类似的编程言语来解决一些独特的问题),而程序员指的是那些一直编写代码的人。

程序员

开源是学习编程技巧最好的方式:你可以查看其他人写的代码,从中借鉴他们的想法和技术,从他们的错误中学习,并跟自己写的代码进行对比以发现两者的优缺点;如果你是使用 Linux 或 BSD 操作系统,整个环境对你来说都是开放的,目之所及,随心所欲。

这就像旅游指南里所说的,随意行去。事实上你不大会去深入到一个项目的源代码中,但是如果这样的话,可以让你在某一时刻突然意识到自己会编程了。编程是一份很难的技术活,否则大家都可以从事编程工作了。

幸运的是,编程是有逻辑而结构化的,这些特性跟编程语言相关。你也许不会深入的去研究编程,但是你研究得越深,你懂的越多。

懂得如何控制以及让电脑自动执行任务是一回事,但是知道如何编写其它人想自动实现任务的代码,才能说明你已经真正进入到编程领域了。

精通多种编程语言

所有的编程语言都旨在处理相同的任务:让计算机能够完成计算工作。选择一种编程语言时你得考虑以下几个因素,学编程的目的是什么,你所做的工作最常用的编程语言是什么,你最容易理解哪一种编程语言以及你的学习方式。

随便查下相关资料,你就可以了解编程语言的复杂性了,然后再根据自己的能力水平来决定先学习哪种编程语言。

选择编程语言的另一个方式是根据你的使用目的来决定,看看你身边的同事使用哪种编程语言。如果你是为了开发桌面环境的工具,你应该学习 C 语言和 Vala 语言,或者 C++ 语言。

总之,不要在各种编程语言之间不知所措。编程语言之间都是相通的。当你学好一种编程语言并能用它来解决工作中的一些实际问题的时候,你会发现学习另外一种编程语言更容易。毕竟,编程语言只是一些语法和相关规则的集合;学会一种编程语言后,再使用同样的方法去搞懂另外一种语言完全不是个事。

主要目的还是学会一种编程语言。选择一个比较适合自己或者你感兴趣的编程语言,或者是你的朋友在用的编程语言,或者是选择文档比较丰富,并且你理解起来也容易的编程语言,但是,最好是只关注并先学会其中的一种编程语言。

这是一个开源项目吗?

无论你是编程新手还是一个老司机,在你进入到开源新世界之前,你需要搞明白做开源软件的重要一点就是“开放源代码”。

最近一些厂商惯用的市场营销策略就是宣称他们的软件是开源的。然而,有些厂商只是发布了一个公共的 API 或者表示他们愿意接受其它开源用户提交的代码而已。“开源”这个词不是一个商标,并且也没有任何组织来决定怎么使用这个词。但是, Debian Linux 创造人 Ian Murdock 联合成立的 开放源代码促进会 Open Source Initiative 对开源这个词进行了定义(授权“允许软件被用户自由地使用、随意修改及分享”),并且被正式批准和授予许可证的软件才属于真正的开源软件。

给你的软件代码应用一个开源许可证,你就成为一名开源程序员了。恭喜你!

开源社区

咨询任何开源软件爱好者,他们会告诉你开源软件最关键的是人。没有积极的开源贡献者,软件开发就会中止。计算机需要用户、提交缺陷的人、设计师及程序员。

如果你想加入全球开源社区为开源软件做贡献,你同样需要成为该社区的一个成员,即使你并不善于社交也不要紧。这通常包括订阅邮件列表、加入 IRC 频道,或者在论坛里表现活跃,从最低级别开始。任何成熟的开源社区都已经存在了足够长的时间,见惯了来来往往的人们,所以,在你真正融入这个世界、在他们接纳你之前,你需要证明出你并非流星一逝般的过客,如果你想要做成一件大事,那就得有长期投身于其中的打算。

如果你只是想给他们提供一些小的帮助,这也是可以接受的。我自己也提交一些小的补丁到一些项目中,有时候项目管理者会觉得这个更新比较好,有时候他们也会拒绝我提交的代码补丁。但是,如果这个被拒绝的补丁对我很重要,我就会为我自己和客户维护它,并一直维护下去。

这就是参与到开源项目。

但是这些社区在哪里呢?这个跟开源项目有关。有些项目有专职的社区管理员,他们会把所有的社区参与者招集到一个打大家都能访问的地方。有些项目则围绕论坛运行,他们使用邮件列表,或者使用问题追踪器与参与者联系。找到这些开源社区对你来说也不是个事儿。

还有个重要的事情就是研究他们的源代码。“开源”就是开放“源代码”,所以你可以把他们的代码拿来瞅瞅。尽管要全面了解他们的项目可能超乎你的能力,但是你可以知道这个项目是如何管理的,他们最可能需要帮助的是什么。关于代码是如何组织的?这些代码有注释吗?它们使用统一的程序风格吗?这些问题你可以查阅相关文档,尤其是 README、 LICENSE ,或者是 COPYING 这几个文件。

不要低估遵守开放源代码承诺的重要性。这是你被允许参与进来到开源项目来的原因,因此,你得深入地考虑下你能从中学习到什么,以及你将如何为该项目提供帮助。

找到最佳的开源社区更像是约妹子,尤其是更像在《偷天情缘》)里的约会。这需要时间,并且刚开始那几次有可能会失败。你参与这样的聚会越多,你就越了解这些开源项目。最后,你会更了解自己,当你找到了与其它参与者融为一体的方式时,你就已经成功了。总之,你得要有耐心,一切顺其自然。

行动比语言更重要

作为一名开源程序员最重要的是写代码(开源中的“源”),任何想法都没多少意义。关键是把你的想法变成实际的东西。你要让大家都知道你在做什么、知道你不怕苦不怕累,也愿意在开源项目上花时间,并且能够通过编程的方式来实现自己的各种想法。

为了更高效地完成那些工作,你需要对开源项目做做功课,包括项目怎么样才能听取你的建议、哪个分支是稳定的哪个是开发的等等。

从下面几点开始:

  • 熟悉一个项目及其协作开发的氛围,并且接受这种氛围。
  • 编写软件升级包、缺陷修复包,或者一些小的功能需求,并且提交它们。
  • 如果你提交的补丁被拒绝了,也不要难过。他们拒绝的不是你个人,而是开发小组在针对你提交的代码进行评估后作出的一个反馈。
  • 如果你提交的代码被改得面目全非后才被接受也不要泄气。
  • 从头再来,不断努力,再接受更大的挑战。

在开源项目中不应该开设排行榜。然而,有些开源社区却弄了个贡献排名,其实这没必要。大家只需要积极参与、奉献,贡献你的才智、提交你的代码,这样就可以了。

开发软件

编程不管在那种情况下都关乎于你自身的发展。无论你是否为了寻找解决问题的新方法,寻找优化代码的方式,学习新的编程语言,或者是学习如何更好的与其它人员合作,你都不会停止成长。你自己成长得越多,对开源项目越有帮助。

个人成长和职业技能的提升是你参与开源项目的终极目标,但是实际上这是一个贯穿整个项目的持续过程。成为一个开源程序员跟得到一份公务员工作不同;这是一个持之以恒的过程。学习、分享、再学习,或许你会去编写一个“康威生命游戏”,然后你会学到越来越多。

这就是开源的过程:自由地开发,每一行代码。因此,发现你的技能树,激发潜能,付出努力,不断提高自己的技能,并最终参与其中。

(题图素材修改自:woot.com


作者简介:

Seth Kenlon —— Seth Kenlon 是一位独立多媒体艺术家,开源文化倡导者, Unix 极客。他还是 Slackware 多媒体产品项目的维护人员之一,官网:http://slackermedia.ml


via: https://opensource.com/article/17/1/how-get-started-open-source-programmer

作者:Seth Kenlon 译者:rusking 校对:Bestony, wxy

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

就在两年前,微软做了一件令人意想不到的事情:它宣称将开源其 .Net 开发框架,这包括 .Net CoreASP.Net 等。这份公告非常令人吃惊,因为微软长久以来一直仇视开源项目,担忧开源软件破坏其软件生态。

随着微软 CEO 纳德拉宣称“微软爱 Linux”,微软在开源方面的举措频频,不仅仅在 GitHub 上其名下的几个仓库活跃非凡,而且也和各种开源厂商积极展开合作

不管微软积极拥抱开源背后的想法是什么,或许是想通过开源销售更多的软件或者云服务,也有可能是想吸引更多的开发者到微软平台上,但是目前看起来微软这步棋是下对了。从微软开源 .NetASP.Net 之后的分析看,微软的开源战略已经值回票价了。

微软现在将 .Net Core 定位为跨平台开发框架,不只是 Windows,而且也延伸到了 MacOS 和 Linux 平台之上。.Net Core RC1 是 2015 年 11 月发布到 GitHub 上的,而今年 6 月就发布了 1.0 版本。开发者们对此表示认可,微软合作伙伴总监项目经理 Scott Hunter 如是说:

“40% 的 .Net Core 客户是新进入该平台的用户,这就是我们(开源)的目的,我们希望吸引新的用户。”

由于 .Net Core 的开源,过去一年以来, .Net 的开发者增加了 61%。 Hunter 在 11 月的一次讲演中提到,GitHub 上 .Net 上的开发活跃度增长极快。
虽然 .Net Core 并没有直接给微软带来收入,但是其潜在地增加了收益。Rob Sanfilippo 说,“可以说,这项技术间接地通过 Azure 服务和微软开发者工具增加了微软的收入。”。

程序员们表现活跃

.Net 程序员和博客作者 Matt Warren 把.Net 的开源称之为“成功”。其数据明确地显示社区积极地参与了微软在 GitHub 上开源的多个仓库的活动。

“开源社区汇报了问题和建议,并通过发送拉取请求(PR)而实际贡献了代码,经过一段时间之后,这些代码就会被包括到产品里面,而社区的贡献量还在持续增长”,Warren 说,“我积极跟踪和参与了 CoreCLR.Net Core Lab 这些仓库的讨论,因此获得了社区贡献的第一手资料。”

微软的举措是否完全成功还不能完全定论,未来或许还有变数,但是这终究是从封闭走向开放的一步。他说,“我的意思是,他们并不是仅仅把源代码放在那里就行了,而是努力让社区可以参与进来。”

微软最近发布的 Visual Studio for Mac 也为 .Net Core 带来了利好

“这是 Visual Studio IDE 首次发布到非 Windows 平台上(Visual Studio Code 是不同的技术,而且它根本不算 IDE),它是基于微软收购的 Xamarin 的技术,重点关注于 .Net Core 开发”,Sanfillippo 说,“这次发布近一步带动了 .Net Core 的发展。”

微软最近也准备在 Visual Studio 2017 IDE 中增强 .Net Core 工具,包括简化 .Net Core 项目文件的格式。

微软开源 .Net 让外界对它的观感有所改变, Warren 说,“现在感觉(微软)更开放和更平易近人了。”

相对于某些公司,虽然开源社区还对微软抱有一定的疑虑,但是显然,微软已经不是开源社区最敌视的公司了。

参考:CIOMatt Warrenmicrosoft

开源的超凡和强大毋庸置疑。从服务器到个人电脑桌面、移动设备,甚至到所谓的“物联网”,开源在各个领域遍布全球。然而有一个行业,传统的专有闭源软件解决方案依然占据主导地位,并且通常特别昂贵,这就是设计产业。在这篇文章中,我们会大致描述一些自由及开源的替代软件来抛砖引玉,看是否能代替你现在所用的设计工具集。也许你是一个刚起步的设计师,需要节省开支。也许你的经验十分丰富,只是单纯的想换一个更加“开放”的工作方式。读下去,让我们看看自由及开源软件世界到底带来了什么!

绘图

在开源世界,有几个可行且十分强大的工具,代替 Adobe 支持的主流产品。

GIMP

GIMP, 或者说 GNU 图像处理程序 GNU Image Manipulation Program 是一个非常强大的免费开源软件,可替代 Adobe 公司的 PhotoShop 。它由一个相当强大的核心团队开发和维护,为设计创造提供强大的图片编辑工具,比如滤镜、笔刷、修饰。如果你想使用 UX/UI 库设计模型,GIMP 甚至可以处理 .PSD 文件。最后,GIMP 还可以用来做数字艺术、logo 等类似的东西。GIMP 可以免费下载并在 Linux、MacOS 和 Windows 上运行。

Inkscape

Inkscape 有一个宣传语,代表着它的核心价值观 —— “Draw Freely”,它是一个开源而自由的产品,可以替代 Adobe 公司的另一产品 —— 强大、专有而且昂贵的矢量程序 Illustrator 。Inkscape 提供了大量的设计和画图工具,易用的颜色拾取导航栏,滤镜和渐变工具,还有很多很多。如果设计师下决心使用开源软件解决方案,你可以在博客和论坛帖子上找到非常好的在线文档。和 GIMP 一样,Inkscape 也可以免费下载并可在 Linux、MacOS 和 Windows 上运行。

想从经验丰富的图形和网页设计师那里学习更多关于这些开源工具的使用知识?请在 YouTube 网站上找一下这些人:

  • Nick Saporito (Nick 有很好的资源,介绍 Inkscape 的基本特性,涵盖了图标、网站或者图形设计师日常会使用的基本功能)。
  • Irfan Prastinato (Irfan 的亮点是使用 Inkscape 专注于现代图标的创作)。
  • Cameron Bohnstedt (Cameron 是一个数字艺术家,由于他很专业并且有丰富的经验,开源工具(GIMP、Inkscape、Blender)的力量被真正的展示了出来。很有感染力,值得一看)。

网页设计与开发

要设计功能丰富、响应快速的网页和原型时,这里有几个工具 —— 有些是开源的 —— 供设计师选择。这些工具最近几年一直在持续发展,在我看来,这应该是反映出了设计发展的趋势是响应式网站设计要和我们生产的设备变化得一样快。

Bootstrap

在我看来,Bootstrap 促进了响应式设计,甚至是“移动为先”的设计实现了跳跃式的突破。Boostrap 最初由 Twitter 开发人员 Mark Otto 和 Jacob Thornton 开发,是一个完全开源、完全可定制的开发框架,利用它你可以制作出满足你的客户需求的网页。有了 Bootstrap 就有了坚实的基础, Bootstrap 4.0 目前正在进行内部测试,在稳定的 3.0 版本的基础上做了大量的底层优化,包括 CSS 预处理器从 Less 换成 Sass,一个增强的网格系统,JavaScript 插件的重构等等。

Gravit

另一个自由开源的矢量程序 Gravit,它受到越来越多的关注。Gravit 可以在浏览器上运行,不仅是 Adobe Illustrator 在矢量方面的一个切实可行的替代品(尽管功能不是那么丰富),也有望成为一个成熟的设计环境。不论是 logo 设计,还是移动应用、网站,任何东西你都可以拿来会进行设计。自从 Gravit 成为我在浏览器上的可选工具后,我最近一些工作就是靠它完成的,除此之外它还很强大,简洁直观。

一些免费但不开源的解决方案……

Webflow

Webflow 是一个强大的全能网页设计环境,可以在浏览器上运行。Webflow 的奇妙之处是设计网页基本不需要写代码,当你设计时,它会在后台自动生成代码。我发现 Webflow 的界面十分干净清爽,非常直观。诚然,Webflow 没有开源,但是免费版支持同时设计和开发两个网页项目。

Froont

另一个基于浏览器的网页设计程序是 Froont。和 Webflow 相似, Froont 设计非常直观简洁,而且强大。利用 Froont,在任何相关设备上,你都可以高效地设计一个全新、独一无二的响应式网站。和 Webflow 一样,Froont 还允许设计师在需要的时候导出代码。

Webflow 和 Froont 除了收费计划外均有免费版,很适于一次设计一个站点,还可以将你的工作成果发布到网上,如果你选择的话。

文本编辑器

有一些产品供想使用自由开源编辑器的设计师和开发者选择,作为自己平常编写代码工具的替代品。

Atom

Atom 号称为 面向 21 世纪的黑客级编辑器 hackable editor for the 21st Century , 它是全功能的编辑器,看起来内置了完成工作所需的所有功能 —— 比如代码自动补全、多功能视图等。它的可玩性很高,用户可以以自己喜欢的方式对 Atom 进行自定义。Atom 有自己的包管理器, 用户可以下载成千上万的软件包进一步定制 Atom,添加独一无二的功能。

结论

当今时代,设计师不要被昂贵臃肿的专有软件所束缚。使用一些自由开源的工具,具有开源意识的设计师有足够多的选择,为他们的客户创造漂亮、实用的设计作品。如果喜欢这篇文章就分享吧,也可以在下面评论你最喜欢的开源的设计工具!


via: https://freedompenguin.com/articles/opinion/open-source-design-thing/

作者:Sean LeRoy 译者:fuowang 校对:jasminepeng

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

开源操作系统闭源操作系统之间有诸多不同。这里我们仅寥书几笔。

开源是什么?自由!

这是用户需要知道的最重要的一点。无论我是否打算修改代码,其他人出于善意的修改都不应受到限制。且如果用户喜欢,他们可以分享这个软件。使用开源软件,这些都是可能的。

闭源操作系统的许可条款很是吓人。但真的所有人都会看吗?不,许多用户只是点了一下‘Accept’ 而已。

价格

几乎所有的开源操纵系统是免费的。仅有自愿性质的捐款。且只需有个一个 CD/DVD 或 USB 就能将系统安装到所有你想要安装的电脑上。

闭源操作系统相较于开源 OS 就贵了许多,如果你用它来构建 PC,每台 PC 得你花不少于 $100。

我们可以用花在闭源软件上的钱去买更好的东西。

选择

开源操作系统的发行版有很多。如果你不中意眼下的这个,你可以尝试其他的发行版,总能找到适合你的那一个。

诸如 Ubuntu studio、Bio Linux、Edubuntu、Kali Linux、Qubes、SteamOS 这些发行版,就是针对特定用户群产生的发行版。

闭源软件有“选择”这种说法吗?我觉得是没有的。

隐私

开源操作系统无需收集用户数据信息。不会根据用户的个性显示广告,也不会把你的信息卖给第三方机构。如果开发者需要资金,他们会要求捐助,或是在他们的网页上打广告。广告的内容也会与 Linux 相关,对我们有益无害。

你一定知道那个主流的闭源操作系统(名字就不写了,大家都知道的),据说因为收集用户信息这件事,导致多数用户关闭了他们的免费更新服务。多数该系统的用户为了避免升级,将更新功能关闭,他们宁可承担安全风险也不要免费更新。

安全

开源软件大多安全。究其缘由不仅有市场占有率低这个原因,其本身的构成方式就比较安全。例如, Qubes Os 是最安全的操作系统之一,它将运行的软件相互隔离。

闭源操作系统向易用性妥协,使其变得愈发脆弱。

硬件支持

我们中有大多数人,家里还放着那些不想丢的旧 PC,这时一个轻量级的发行版可能会让这些老家伙们重获新生。你可以试试在文章 5 个适合旧电脑的轻量级 Linux 中罗列的那些轻量级操作系统发行版。基于 Linux 的系统几乎包含所有设备的驱动,所以基本不需要你亲自寻找、安装驱动。

闭源操作系统时不时中止对旧硬件的支持,迫使用户去购买新的硬件。我们还不得不亲自寻找、安装驱动。

社区支持

几乎所有的开源操作系统都有用户论坛,你可以在那里提问题,并从别的用户那里得到答案。大家在那里分享技巧和窍门,互帮互助。有经验的 Linux 用户往往乐于帮助新手,为此他们常常不遗余力。

闭源操作系统社区和开源操作系统社区简直无法相提并论。提出的问题常常得不到回答。

商业化

在操作系统上挣钱是非常困难的。(开源)开发者一般通过用户的捐款和在网站上打广告来挣钱。捐款主要用于支付主机的开销和开发者的薪水。

许多闭源操作系统,不仅仅通过出售软件的使用许可这种方式来赚钱,还会推送广告大赚一票。

垃圾应用

我承认有些开源操作系统会提供一些我们可能一辈子都不会用到的应用,有些人认为他们是垃圾应用。但是也有发行版只提供最小安装,其中就不包含这些不想要的软件。所以,这不是真正的问题。

而所有的闭源操作系统中都包含厂商安装的垃圾应用,强制你安装,就像在安装一个干净系统一样。

开源软件更像是一门哲学。一种分享和学习的方式。甚至还有益于经济。

我们已经将我们知晓的罗列了出来。如果你觉得我们还漏了些什么,可以评论告诉我们。


via: http://www.linuxandubuntu.com/home/open-source-vs-closed-source

作者:Mohd Sohail 译者:martin2011qi 校对:jasminepeng

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

为什么像 GNU GPL 这样的限制性许可证越来越不受青睐。

“如果你用了任何开源软件, 那么你软件的其他部分也必须开源。” 这是微软前 CEO 巴尔默 2001 年说的, 尽管他说的不对, 还是引发了人们对自由软件的 FUD ( 恐惧, 不确定和怀疑 fear, uncertainty and doubt )。 大概这才是他的意图。

对开源软件的这些 FUD 主要与开源许可有关。 现在有许多不同的许可证, 当中有些限制比其他的更严格(也有人称“更具保护性”)。 诸如 GNU 通用公共许可证 (GPL) 这样的限制性许可证使用了 copyleft 的概念。 copyleft 赋予人们自由发布软件副本和修改版的权力, 只要衍生工作保留同样的权力。 bash 和 GIMP 等开源项目就是使用了 GPL(v3)。 还有一个 AGPL( Affero GPL) 许可证, 它为网络上的软件(如 web service)提供了 copyleft 许可。

这意味着, 如果你使用了这种许可的代码, 然后加入了你自己的专有代码, 那么在一些情况下, 整个代码, 包括你的代码也就遵从这种限制性开源许可证。 Ballmer 说的大概就是这类的许可证。

但宽松许可证不同。 比如, 只要保留版权声明和许可声明且不要求开发者承担责任, MIT 许可证允许任何人任意使用开源代码, 包括修改和出售。 另一个比较流行的宽松开源许可证是 Apache 许可证 2.0,它还包含了贡献者向用户提供专利授权相关的条款。 使用 MIT 许可证的有 JQuery、.NET Core 和 Rails , 使用 Apache 许可证 2.0 的软件包括安卓, Apache 和 Swift。

两种许可证类型最终都是为了让软件更有用。 限制性许可证促进了参与和分享的开源理念, 使每一个人都能从软件中得到最大化的利益。 而宽松许可证通过允许人们任意使用软件来确保人们能从软件中得到最多的利益, 即使这意味着他们可以使用代码, 修改它, 据为己有,甚至以专有软件出售,而不做任何回报。

开源许可证管理公司黑鸭子软件的数据显示, 去年使用最多的开源许可证是限制性许可证 GPL 2.0,份额大约 25%。 宽松许可证 MIT 和 Apache 2.0 次之, 份额分别为 18% 和 16%, 再后面是 GPL 3.0, 份额大约 10%。 这样来看, 限制性许可证占 35%, 宽松许可证占 34%, 几乎是平手。

但这份当下的数据没有揭示发展趋势。黑鸭子软件的数据显示, 从 2009 年到 2015 年的六年间, MIT 许可证的份额上升了 15.7%, Apache 的份额上升了 12.4%。 在这段时期, GPL v2 和 v3 的份额惊人地下降了 21.4%。 换言之, 在这段时期里, 大量软件从限制性许可证转到宽松许可证。

这个趋势还在继续。 黑鸭子软件的最新数据显示, MIT 现在的份额为 26%, GPL v2 为 21%, Apache 2 为 16%, GPL v3 为 9%。 即 30% 的限制性许可证和 42% 的宽松许可证--与前一年的 35% 的限制许可证和 34% 的宽松许可证相比, 发生了重大的转变。 对 GitHub 上使用许可证的调查研究证实了这种转变。 它显示 MIT 以压倒性的 45% 占有率成为最流行的许可证, 与之相比, GPL v2 只有 13%, Apache 11%。

引领趋势

从限制性许可证到宽松许可证,这么大的转变背后是什么呢? 是公司害怕如果使用了限制性许可证的软件,他们就会像巴尔默说的那样,失去自己私有软件的控制权了吗? 事实上, 可能就是如此。 比如, Google 就禁用了 Affero GPL 软件

Instructional Media + Magic 的主席 Jim Farmer, 是一个教育开源技术的开发者。 他认为很多公司为避免法律问题而不使用限制性许可证。 “问题就在于复杂性。 许可证的复杂性越高, 被他人因为某行为而告上法庭的可能性越高。 高复杂性更可能带来诉讼”, 他说。

他补充说, 这种对限制性许可证的恐惧正被律师们驱动着, 许多律师建议自己的客户使用 MIT 或 Apache 2.0 许可证的软件, 并明确反对使用 Affero 许可证的软件。

他说, 这会对软件开发者产生影响, 因为如果公司都避开限制性许可证软件的使用,开发者想要自己的软件被使用, 就更会把新的软件使用宽松许可证。

但 SalesAgility(开源 SuiteCRM 背后的公司)的 CEO Greg Soper 认为这种到宽松许可证的转变也是由一些开发者驱动的。 “看看像 Rocket.Chat 这样的应用。 开发者本可以选择 GPL 2.0 或 Affero 许可证, 但他们选择了宽松许可证,” 他说。 “这样可以给这个应用最大的机会, 因为专有软件厂商可以使用它, 不会伤害到他们的产品, 且不需要把他们的产品也使用开源许可证。 这样如果开发者想要让第三方应用使用他的应用的话, 他有理由选择宽松许可证。”

Soper 指出, 限制性许可证致力于帮助开源项目获得成功,方式是阻止开发者拿了别人的代码、做了修改,但不把结果回报给社区。 “Affero 许可证对我们的产品健康发展很重要, 因为如果有人利用了我们的代码开发,做得比我们好, 却又不把代码回报回来, 就会扼杀掉我们的产品,” 他说。 “ 对 Rocket.Chat 则不同, 因为如果它使用 Affero, 那么它会污染公司的知识产权, 所以公司不会使用它。 不同的许可证有不同的使用案例。”

曾在 Gnome、OpenOffice 工作过,现在是 LibreOffice 的开源开发者的 Michael Meeks 同意 Jim Farmer 的观点,认为许多公司确实出于对法律的担心,而选择使用宽松许可证的软件。 “copyleft 许可证有风险, 但同样也有巨大的益处。 遗憾的是人们都听从律师的, 而律师只是讲风险, 却从不告诉你有些事是安全的。”

巴尔默发表他的错误言论已经过去 15 年了, 但它产生的 FUD 还是有影响--即使从限制性许可证到宽松许可证的转变并不是他的目的。


via: http://www.cio.com/article/3120235/open-source-tools/what-the-rise-of-permissive-open-source-licenses-means.html

作者:Paul Rubens 译者:willcoderwang 校对:jasminepeng

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

在我的第一篇关于 开源项目部门 program office 的系列文章中,我深入剖析了什么是开源项目部门,为什么你的公司需要一个开源项目部门。接着我又说到了谷歌是如何创建一种新的开源项目部门的。而这篇文章,我将阐述拥有一个开源项目部门的好处。

乍一看,非软件开发公司会更加热情的去拥抱开源项目部门的一个重要原因是他们并没有什么损失。毕竟,他们并不需要依靠这些软件产品来获得收益。比如,Facebook 可以很轻易的释放出一个 “分布式键值数据存储” 作为开源项目,是因为他们并没有售卖一个叫做 “企业级键值数据存储” 的产品。这回答了关于风险的问题,但是并没有回答他们如何通过向开源生态共献代码而获益的问题。让我们逐个来推测和探讨其中可能的原因。你会发现开源项目供应商的许多动机都是相同的,但是也有些许不同。

招聘

招聘可能是一个将开源项目部门推销给上层管理部门的最容易方法。向他们展示与招聘相关的成本,以及投资回报率,然后解释如何与天才工程师发展关系,从而与那些对这些项目感兴趣并且十分乐意在其中工作的天才开发者们建立联系。不需要我多说了,你懂的!

技术影响

曾几何时,那些没有专门从事软件销售的公司是难以直接对他们软件供应商的开发周期施加影响力的,尤其当他们并不是一个大客户时。开源完全改变了这一点,它将用户与供应商放在了一个更公平的竞争环境中。随着开源开发的兴起,任何人,假如他们愿意投入时间和资源的话,都可以将技术推向一个选定的方向。但是这些公司发现,虽然将投资用于开发上会带来丰硕的成果,但是总体战略的努力却更加有效——对比一下 bug 的修复和软件的构建——大多数公司都将 bug 的修复推给上游的开源项目,但是一些公司开始认识到通过更深层次的回报承诺和更快的功能开发来协调持久的工作,将会更有利于业务。通过开源项目部门模式,公司的职员能够从开源社区中准确嗅出战略重心,然后投入开发资源。

对于快速增长的公司,如 Google 和 Facebook,其对现有的开源项目提供的领导力仍然不足以满足业务的膨胀。面对激烈的增长和建立超大规模系统所带来的挑战,许多大型企业开始构建仅供内部使用的高度定制的软件栈。除非他们能说服别人在一些基础设施项目上达成合作。因此,虽然他们保持在诸如 Linux 内核,Apache 和其他现有项目领域的投资,他们也开始推出自己的大型项目。Facebook 发布了 Cassandra,Twitter 创造了 Mesos,并且甚至谷歌也创建了 Kubernetes 项目。这些项目已成为行业创新的主要平台,证实了该举措是相关公司引人注目的成功。(请注意,Facebook 在它需要创造一个新软件项目来解决更大规模的问题之后,已经在内部停止使用 Cassandra 了,但是,这时 Cassandra 已经变得流行,而 DataStax 公司接过了开发任务)。所有这些项目已经促使了开发商、相关的项目、以及最终用户构成的整个生态加速增长和发展。

没有与公司战略举措取得一致的开源项目部门不可能成功的。不这样做的话,这些公司依然会试图单独地解决这些问题,而且更慢。不仅拥有这些项目可以帮助内部解决业务问题,它们也帮助这些公司逐渐成为行业巨头。当然,谷歌成为行业巨头好多年了,但是 Kubernetes 的发展确保了软件的质量,并且在容器技术未来的发展方向上有着直接的话语权,并且远超之前就有的话语权。这些公司目前还是闻名于他们超大规模的基础设施和硅谷的中坚份子。鲜为人知,但是更为重要的是它们与技术生产人员的亲密度。开源项目部门凭借技术建议和与有影响力的开发者的关系,再加上在社区治理和人员管理方面深厚的专业知识来引领这些工作,并最大限度地发挥其影响力,

市场营销能力

与技术的影响齐头并进的是每个公司谈论他们在开源方面的努力。通过传播这些与项目和社区有关的消息,一个开源项目部门能够通过有针对性的营销活动来提供最大的影响。营销在开放源码领域一直是一个肮脏的词汇,因为每个人都有一个由企业营销造成的糟糕的经历。在开源社区中,营销呈现出一种与传统方法截然不同的形式,它会更注重于我们的社区已经在战略方向上做了什么。因此,一个开源项目部门不可能去宣传一些根本还没有发布任何代码的项目,但是他们会讨论他们创造什么软件和参与了其他什么举措。基本上,不会有“雾件(vaporware)”。

想想谷歌的开源项目部门作出的第一份工作。他们不只是简单的贡献代码给 Linux 内核或其他项目,他们更多的是谈论它,并经常在开源会议主题演讲。他们不仅仅是把钱给写开源代码的代码的学生,他们还创建了一个全球计划——“Google Summer of Code”,现在已经成为一种开源发展的文化试金石。这些市场营销的作用在 Kubernetes 开发完成之前就奠定了谷歌在开源世界巨头的地位。最终使得,谷歌在创建 GPLv3 授权协议期间拥有重要影响力,并且在科技活动中公司的发言人和开源项目部门的代表人成为了主要人物。开源项目部门是协调这些工作的最好的实体,并可以为母公司提供真正的价值。

改善内部流程

改善内部流程听起来不像一个大好处,但克服混乱的内部流程对于每一个开源项目部门都是一个挑战,不论是对软件供应商还是公司内的部门。而软件供应商必须确保他们的流程不与他们发布的产品重叠(例如,不小心开源了他们的商业售卖软件),用户更关心的是侵犯了知识产权(IP)法:专利、版权和商标。没有人想只是因为释放软件而被起诉。没有一个活跃的开源项目部门去管理和协调这些许可和其他法律问题的话,大公司在开源流程和管理上会面临着巨大的困难。为什么这个很重要呢?如果不同的团队释放的软件是在不兼容的许可证下,那么这不仅是一个坑爹的尴尬,它还将对实现最基本的目标改良协作产生巨大的障碍。

考虑到还有许多这样的公司仍在飞快的增长,如果无法建立基本流程规则的话,将可以预见到它们将会遇到阻力。我见过一个罗列着批准、未经批准的许可证的巨大的电子表格,以及指导如何(或如何不)创建开源社区而遵守法律限制。关键是当开发者需要做出决定时要有一个可以依据的东西,并且每次当开发人员想要为一个开源社区贡献代码时,可以不产生大量的法律开销,和效率低下的知识产权检查。

有一个活跃的开放源码项目部门,负责维护许可规则和源的贡献,以及建立培训项目工程师,有助于避免潜在的法律缺陷和昂贵的诉讼。毕竟,良好的开源项目合作可以减少由于某人没有看许可证而导致公司赔钱这样的事件。好消息是,公司已经可以较少的担心关于专有的知识产权与软件供应商冲突的事。坏消息是,它们的法律问题不够复杂,尤其是当他们需要直接面对软件供应商的阻力时。

你的组织是如何受益于拥有一个开源项目部门的?可以在评论中与我们分享。

本文作者 John Mark Walker 是 Dell EMC 的产品管理总监,负责管理 ViPR 控制器产品及 CoprHD 开源社区。他领导过包括 ManageIQ 在内的许多开源社区。


via: https://opensource.com/business/16/9/4-big-ways-companies-benefit-having-open-source-program-offices

作者:John Mark Walker 译者:chao-zhi 校对:wxy

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