美国政治传播学家拉斯韦尔提出了5W传播模式,经过后人的不断运用和发展总结,形成了一套逐渐成熟的“5W1H”体系,即:对选定的项目、工序或操作,都要从原因(何因Why)、对象(何事What)、地点(何地Where)、时间(何时When)、人员(何人Who)、方法(何法How)等六个方面提出问题进行思考。

本系列文章就以5W1H体系来讲一讲开源的那些事。

What——开源是什么?

开源即开放源代码,Open
source
code,也称为源代码公开,指的是一种软件发布模式,一种基于去中心化、自组织式的软件开发模式运作的工作方式。这个模式中,软件是开源的最基本含义是:代码是公开的,任何人都可以去查看,修改以及使用。与开源相对的是闭源代码,闭源代码就是普通的商业版权软件,代码是封闭的,只有作者才能看到,出了问题也只有自己能修改。

开源软件就是公开源代码的软件。开源软件在发行的时候会附上软件的源代码,并授权允许用户更改、传播或者二次开发。

误解:开源不是什么

下面澄清关于开源的一些常见误解:

开源不意味着免费

开源软件和免费软件是两个概念,开源软件开放源代码,允许用户更改、传播、二次开发。免费软件是免费提供给用户使用,但不一定公开源代码,也不允许随意修改、二次发布等。比如我们常用的微信、QQ及大多数软件,我们可尽情使用,但如果自己添加或删除了一些功能、甚至发布在网上供人下载使用以此牟利的话,那就是在犯法的边缘反复横跳了。

当然,大多数开源项目是免费的,但“免费”不是开源定义的一部分。有些方法可以通过双重许可或有限功能间接地为开源项目收费,同时仍然遵守开源的官方定义。

开源不抵制商业

开源软件是不抵触商业的,开源的目的是分享共享,但不是做慈善事业。开源是利他主义的,专有软件或私有软件是利己主义的,而开源的商业模式也是利己主义的。利他主义的开源与利己主义的商业模式结合在一起,才能为开源真正做贡献。具体盈利模式有技术支持、培训、高级功能、云服务等方式收费。不同的软件、不同的领域有不同的盈利模式,但所有模式的基础都是用户数。只有用户数量达到了一定的规模,才有成其商业化模式的可能。

商业开源是通过更多人的参与,减少软件的缺陷,丰富软件的功能,同时也避免了少数人在软件里留一些不正当的后门。开源软件最终还会反哺商业,让商业公司为用户提供更好的产品。相对来说,后端开源项目最容易商业化,而越接近底层设施的软件越容易商业化开源。

开源项目不代表最高的代码质量

开放式联合开发,其本质是保证其他参与者无法隐藏低质量的代码、漏洞和其他问题,所有代码将受到分析和评判。但也有一些开发者的经验不足和Code
reviewer的疏忽会导致一些不那么好的代码被提交。还有开源社区会进行低效讨论,在不同的需求情况下,有时做出最后的决策是妥协了的结果。

同理,任何人都能为开源项目提供代码,也并不意味着开源代码品质较差,因为毕竟大多数是经过了门槛和审查筛选。

所以总体来说,开源项目的代码质量虽然不是最好的,但是也是相当不错的,而且由于开源社区是由众人拾材火焰高,所以好的项目会活得更久,这样的优胜劣汰之下,能够被大多数人关注的项目的代码质量也随之水涨船高。

5W1H聊开源之What——开源是什么?的更多相关文章

  1. oschina开源硬件其它开源,开源硬件

    硬件驱动/工具 25Linux内核 101桌面环境 40开源字体 58嵌入式操作系统 33输入法 110开源硬件 57开源图书 5开源家居 17物联网 87开源货币/比特币 32NASA 开源项目 1 ...

  2. Android开发周报:Flyme OS开源、经典开源项目解析

    Android开发周报:Flyme OS开源.经典开源项目解析 新闻 <魅族Flyme OS源码上线Github> :近日魅族正式发布了MX5,并且在发布会上,魅族还宣布Flyme OS开 ...

  3. 【分享】2017 开源中国新增开源项目排行榜 TOP 100

    2017 年开源中国社区新增开源项目排行榜 TOP 100 新鲜出炉! 这份榜单根据 2017 年开源中国社区新收录的开源项目的关注度和活跃度整理而来,这份最受关注的 100 款开源项目榜单在一定程度 ...

  4. 再谈:为什么开源C/C++开源框架极昂贵?

        今天读了一篇文章:<腾讯前员工创业笔记:那些跟钱有关的事儿>(http://tech.163.com/14/0515/08/9S9975C5000915BF.html),摘录两段: ...

  5. [Android开源项目] GitHub开源项目总结 (转)

    [Android开源项目] GitHub开源项目总结 GitHub开源项目android-styled-dialogs http://neast.cn/forum.php?mod=viewthread ...

  6. 开源 ≠ 免费,开源协议License详解

    凡是做过软件开发的,都会接触到开源软件或开源组件,它们都会基于某种协议来提供源码和授权,那么这些开源协议到底有哪些约束呢? 在介绍之前,必须告诉大家,针对开源协议,必须打消“开源 = 免费”这个念头, ...

  7. [开源下载] 【开源项目】EasySL for Silverlight 4

    [开源下载] [开源项目]EasySL for Silverlight 4  [复制链接]       silverlight 452 主题 7 好友 1万 积分 管理员 贡献 879 原创 0 银元 ...

  8. 2016最受欢迎国产开源软件评选,2016 年度开源中国新增开源软件排行榜 TOP 100

    http://www.oschina.net/news/80154/2016-cn-open-source-software-top http://www.oschina.net/project/to ...

  9. OSC2019关于开源的见闻-开源让世界更美好 社会更文明

    一.开源生态报告-红薯-开源中国创始人 1.协作乏力-大厂同样 2.协议许可证使用不当 新许可证-木兰 3.开发者对法律认识完全不够 著作权意识不够 红线意识不够 相关法律法规的熟悉不够 维权及其弱势 ...

  10. 2016 年度开源中国新增开源软件排行榜 TOP 100

    2016 年度开源中国新增开源软件排行榜 TOP 100 2016 年度开源中国新增开源软件排行榜 TOP 100 新鲜出炉!本榜单根据 2016 年开源中国新收录的 3030 款软件的关注度和活跃度 ...

随机推荐

  1. win32-制作mini dump文件

    一个完整的用户模式dump是基本的用户模式转储文件. 此转储文件包括进程的整个内存空间,程序的可执行映像本身,句柄表以及其他信息,这些信息对于调试器在重建转储发生时正在使用的内存中很有用. 可以将完整 ...

  2. (微服务)服务治理:熔断器介绍以及hystrix-go的使用

    一.什么是熔断器 要理解熔断器,可以先看看电路中使用的保险丝. 保险丝(fuse)也被称为电流保险丝,IEC127 标准将它定义为"熔断体(fuse-link)".保险丝是一种保证 ...

  3. Redis服务端事件处理流程分析

    一.事件处理 1.1 什么是事件 Redis 为什么运行得比较快? 原因之一就是它的服务端处理程序用了事件驱动的处理方式. 那什么叫事件处理?就是把处理程序当成一个一个的事件处理.比如我前面文章:服务 ...

  4. leetcode 平衡二叉树

    给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 . 示例 1: 输入:root = [3,9,20,n ...

  5. Google Chrome 开启多下载下载,提高文件下载速度

    在地址栏输入: chrome://flags/#enable-parallel-downloading Parallel downloading改为Enabled后重启浏览器即可打开多线程下载 (多线 ...

  6. [C++逆向] 6 函数的工作原理

    目录 栈帧的形成和关闭 各种调用方式的考察 _stdcall _cdecl _fastcall 使用ebp或者esp寻址 某次调用函数时的栈结构 函数参数 不定长参数 函数的返回值 栈帧的形成和关闭 ...

  7. 树形dp套路

    我们知道dp也就是动态规划的思想就是先解决小问题,通过不断的解决小问题,最终解决大问题.那么能够应用树形dp套路的题目都应该符合一个条件,那就是通过解决每个子树的小问题,最终解决整棵树的大问题. 套路 ...

  8. XAF Blazor TabbedMdi

    开源项目地址:https://gitee.com/easyxaf/blazor-tabbed-mdi 前言 XAF在WinForm中采用了多文档界面(MDI),但在Blazor中却没有,在官网中也有人 ...

  9. Nginx-web系列

    nginx 系列 目录 nginx 系列 一 简述 1.1 为什么要使用? 1.2 主要用于哪里? 二. Nginx 搭建环境 2.1 版本选择 2.2 环境准备 2.2 yum 直装 2.3 ngi ...

  10. [.Net]使用Soa库+Abp搭建微服务项目框架(四):动态代理和RPC

    ​上一章我们完成了小项目的面向服务体系改造,你或许一直在思考一个问题.为什么要将业务独立成微服务? 微服务原理 以一个健康医疗系统为例, 这个系统包含了用户模块,问卷的发放与填写,图表显示,报表生成与 ...