说说开源那些事儿

阅读本文大概需要 9 分钟。

前段时间我们遇到了一个情况,课程推送发出来之后有位同学在群里提到,机构提供的项目就是他同学导师的开源项目。

之后这位导师在文章评论里联系了我,表示该机构课程涉嫌开源侵权他的 GitHub 开源项目。

我们后台私信加上了微信,转接了他与机构方,在这个过程中我说了大概有十句抱歉。

或许法律责任上这件事情我是没有责任的,但我仍然抱歉,我为所有开源工作者遇到的不公平的待遇感到抱歉。

你们明明是世界的 Contributor。

开源,到底有版权吗?

开源这件事,你其实想一下,他有浓烈的马哲思想——生产工具公有。这是一件很乌托邦的事情,你做了一个东西,在这个领域还没有人做出来,又或者这就是很棒很有吸引力的东西,你可以付费卖,你可以付费提问,但你做出的选择是——公开他。

这很棒,这真的很棒。这一点上我觉得所有的程序员都是 amazing 的

而开源软件,当然是有版权的。

开源软件的版权,我们可以从著作权和开源协议这两方面来讨论

首先是著作权,著作权是你创作之后就自然拥有的,也就是说即使不申请也自然拥有著作权。在你发布的那个时间节点,能够被公众网络查到的时间,就奠定了你的著作权

而申请著作权这件事情,则会让你的维权之路变得更简单。

这有点像你是个男人,你生来就是男人,但你要跟别人解释你是男人的话,你可以从生理特征上解释——这稍微有点费劲,你也可以直接拍出身份证。

关于著作权的申请,我今早打电话咨询的时候,得到的报价是“申请著作权需要 1100 元,耗费 30 工作日,加急费用额外算”。

显然,1100 元不符合开源的初衷。Share free,不但是分享免费的东西,还是免费分享,我不能做免费玩意还得次次交钱啊(骂骂咧咧)。

当然,如果你是大型项目的创始人或维护者,那么,为你的项目申请著作权和专利就非常的有必要了。

首个国人主导 Apache 顶级开源项目 Apache Kylin 在项目开源之前就申请了专利,其创始人韩卿曾在采访中表示:“开源项目和专利并不冲突。于开源项目而言,专利不是一个攻击武器而是一个防御武器,如果有人开发了一个同类型的项目且申请了专利,并以此来攻击你,那么你的项目、业务等都会被带入到不应该产生的麻烦中。所以,无论是对个人、公司还是项目,申请专利都会是一个很好的保护措施。”

我们接下来聊 License。

事实上,License 权限是比著作权本身更普程序员化的东西。

目前,主流的开源软件授权许可方式有:GPL、BSD、MIT、Mozilla、Apache 等方式,这些许可方式因经常被使用或引用,也被标准化的称为“开源许可证”。

在 License 的选择中有一个非常经典的图可以用来参考。

这个图信息量有点少,咱们展开讲讲(要不然这一篇推文字数就太少了)

首先,我们讲开源项目授权使用者闭源的,即使用者可以使用你的开源软件,并且自己不开源的情况。这共有三种

1、BSD

BSD 是基本上许可使用方对自己源代码 do anything,不受任何限制,唯一要求就是必须属上原作者的名字,而且每次更改都要属,并不得以作者的名义进行市场行为。

2、MIT

MIT 许可证与 BSD 一样,都需要属上原作者的名字。但在商业使用中没有限制。

3、Apache

Apache 许可证需要保留作者署名,另外如果被授权者修改了授权代码,那么被授权者应当在代码中做出说明。

另外,开源协议中有一部分的协议要求采用者的内容必须也开源,这些我们称为“传染性”的开源项目。星星之火可以燎原,这些开源项目成为了推动开源社区发展的主流

4、GPL

我们很熟悉的 Linux 就是采用了 GPL,该授权许可允许软件源程序公开并免费使用(复制、改编),但是如果使用(复制、改编)了该许可证下的源程序代码而创作的新的计算机程序,其必须也采用 GPL 的方式公开。另外,修改项目代码的用户再次分发源码或二进制代码时,必须公布他的相关修改。

5、MPL

MPL 与 LGPL 的项目开源方式不强制要求采用同样的开源License。其特点在于要求所开放的源代码非专利代码,并且相比于Apache许可证,要求被授权者对所修改的代码内容做出一些更严格的说明,对修改的时间和修改的方式都应进行描述。

6、LGPL

 LGPL,它不同于 GPL 许可证,在执行 LGPL 许可证时,允许库函数可以自由地联接到私有软件。

另外,Github 考虑到某些程序员的选择恐惧症,也推出了一个网站帮助进行选择:https://choosealicense.com/

基于代码开源时候所选择的 Licenses 协议,就可以对相关的违规行为进行申诉。

目前,关于国外的开源纠纷中

2006年,Jacobsen 起诉 Katzer,声称后者的软件没有遵守开源协议,标明源代码的出处和作者,要求法院认定这是侵犯著作权行为。但旧金山联邦地区法院驳回了这个请求,认为这只是"违反使用权转让协定",而非"侵犯著作权"。Jacobsen 不服判决,继而上诉,美国联邦上诉法院最终在日前的判决中为他讨回了应得的权利。
FSF SOFTWARE 控告 Cisco侵犯了其拥有版权的许多程序的许可,包括 GCC、binutils 和 GNU C 库。最终两方达成和解。

而在国内,17 年有轰动一时的,中兴集团将开源软件“XXL-JOB“冒名申请专利的新闻。

很可惜,这之后,我没有搜到案件内容更新。

开源的盈利方式是什么样的

开源项目的真正意义,不是免费,而是开放。这就涉及到了开源项目目前的盈利方式。目前开源项目的盈利方式主要有三种。

1.软件完全免费,后续服务收费。2.软件免费,出售售后服务收费。3.提供应用服务

但从以上的字面中,我们能看到,这几种盈利方式几乎也是专属于大型企业。在 GitHub 上能搜到的那一个个精巧的令人拍手称快的项目,大部分都是好以无偿分享的形式发出的。他们有的会寻求 contributor 和 donate,但说到底,都是诚恳的 share free。那么,

我们能为开源做些什么?

在我搜索关于开源版权的问题的时候,搜索到了一个游戏争议。一款名为“荒野之王”的游戏,被质疑抄袭 Mindustry。原作者出来回应,“这是一款基于 GPL3.0 开源协议发布的正版软件,不是盗版软件。源代码同步更新在 Github 上。是基于开源软件 Mindustry 开发的“

虽然这个基础是大家并不那么了解开源协议,但这是件令人欣喜的事情,因为你发现在中国,有这么多人开始注重版权了。

那说回,我们能做什么。

有一个理论叫做破窗理论,他讲如果是一个干净的房子,那么所有人都会选择维护他,不舍得做破坏;而如果这个房子的窗户被第一次打碎,那么大家就回觉得破坏它不是一件有心理负担的事情了。

而如果窗子全碎了,那就是所有创新枯萎的时候。

因此,尊重版权,支持版权,在遇到盗版的时候向原作者反馈和举报。都是让这个世界变得更好的路。

“你花的每一分钱,都是在给喜欢的世界投票“

谈到个人,我感激每一位为知识付费的人,也不排斥因为经济问题暂时做不到的人。

有一位考研辅导老师张宇老师在他的微博上说过

“一,我衷心希望各位支持正版;二,如果你用了盗版,那么你欠我的正版,你要还,不用还给我,不用现在还,长大成人后,去帮助需要帮助的人,回报社会,答应我。”

因为我们的初衷都是一样,都是 Make the World Better。

最后,这次我们获利的所有费用,加上我们自己的心意,全部捐到了边远山区公益午餐项目,希望能为他们创造更好的世界。

参考

1.CDSN https://blog.csdn.net/renajia/article/details/79568488

2.FSF 与 Cisco 的版权争议问题 https://www.fsf.org/news/2009-05-cisco-settlement.html

3.中兴问题 https://my.oschina.net/xuxueli/blog/918201

推荐阅读

1

Python 中更优雅的日志记录方案

2

别再造假数据了,来试试 Faker 这个库吧!

3

200 行代码实现一个滑动验证码

4‍‍

如何用一条命令将网页转成电脑 App

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下Tomcat安装和配置

1、前提(JDK环境)Tomcat的安装需要JDK环境,如何配置JDK环境见我的文章Linux下Java环境配置,所以在安装Tomcat之前需要先检测JDK环境是否配置好。 进入命令行界面,输入java -version命令来查看JDK环境是否配置成功&…

ASP.NET Core快速入门(第1章:介绍与引入)--学习笔记

点击蓝字关注我们课程链接:http://video.jessetalk.cn/course/explore良心课程,大家一起来学习哈!任务1:课程介绍1、介绍与引入2、配置管理3、依赖注入4、ASP.NET Core HTTP介绍5、认证与授权6、ASP.NET Core MVC任务2&#xff1a…

Eclipse下Tomcat服务器配置和使用

在安装完Tomcat之后,在没有进行相关配置时,我们需要到终端下面去启动Tomcat。如果我们在使用Eclipse进行Java开发时,如果能够直接启动Tomcat服务器那将是极为方便,本篇就来讲述Eclipse下Tomcat服务器如何配置以及如何使用。 1、配…

Facebook押注VS Code

Facebook 近日宣布默认采用 VS Code 作为内部开发环境。去年 Facebook 宣布停止维护其开源的 Nuclide/Atom-IDE,以及相关的一些库。Nuclide/Atom-IDE 是 Atom 编辑器的功能包,其通过语言服务器协议与自定义语言服务器交互,为 Atom 提供一系列…

Linux下软件安装和卸载

在Windows下,我们安装软件基本上是先到网上下载软件的安装包,通常是以.exe和.msi为后缀的文件,然后双击安装包,之后就可以按照软件安装向导一步步进行安装了,但在Linux下,软件的安装方式截然不同。总的来说…

为WPF, UWP 及 Xamarin实现一个简单的消息组件

友情提示:阅读本文大概需要8分钟。欢迎大家点击上方公众号链接关注我,了解新西兰码农生活本文目录:1. 介绍2. Message - 消息3. Subscription - 订阅4. MessageHub - 消息总线4.1 Subscribe - 订阅4.2 Unsubscribe - 取消订阅4.3 Publish - 发…

Mac(OS X)安装、配置并使用MySQL数据库

1、MySQL安装包下载 MySQL Community Server下载地址:http://dev.mysql.com/downloads/mysql/,下载完毕之后安装文件如下所示: 2、MySQL安装 双击安装文件进行安装,出现如下界面: 双击窗体中的“mysql-5.7.10-osx10.9-…

用ASP.NETCore构建可检测的高可用服务

一、前言2019 中国 .NET 开发者峰会(.NET Conf China 2019)于2019年11月10日完美谢幕,校宝在线作为星牌赞助给予了峰会大力支持,我和项斌等一行十位同事以讲师、志愿者的身份公司参与到峰会的支持工作中,我自己很荣幸能…

Mac(OS X)使用brew安装软件

在Linux下,常用的软件包管理工具有RedHat系的yum和Debian系的apk-get,对于Mac的OS X系统来说,同样有这样的形式的软件包管理工具,即:brew。 brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能…

SonarQube系列二、分析dotnet core/C#代码

来源:https://www.cnblogs.com/7tiny/p/11342902.html【前言】本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目。目录如下:SonarQube系列一、Linux安装与部署SonarQube系列二、分析dotnet core/C#代码SonarQube系列三、如何…

Eclipse使用Maven插件创建Web项目时出错:Could not resolve archetype org.apache.maven.archetypes

问题描述: 在Eclipse下,使用Maven插件创建Web项目时出错,错误提示如下: 错误信息: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0 from any of the configured repositories. …

ASP.NET Core快速入门(第2章:配置管理)--学习笔记

点击蓝字关注我们课程链接:http://video.jessetalk.cn/course/explore良心课程,大家一起来学习哈!任务9:配置介绍命令行配置Json文件配置从配置文件文本到c#对象实例的映射 - Options 与 Bind配置文件热更新框架设计:C…

怎么写技术简历?

作者:zollty,资深程序员和架构师,私底下是个爱折腾的技术极客,架构师社区合伙人!纯手打,个人多年经验总结。(本人的简历,历年来效果都不错,从校招到高端技术岗位、大厂技…

C# 代码中调用 Javascript 代码段以提高应用程序的配置灵活性(使用 Javascript .NET 与 Jint)...

一般来说,我们需要在开发应用软件的配置文件中,添加一些参数,用于后续用户根据实际情况,自行调整。配置参数,可以放在配置文件中、环境变量中、或数据库表中(如果使用了数据库的话)。通常,配置数据&#xf…

Code Runner for VS Code 突破 1000 万下载量!支持运行超过 40 种语言

记得三年多前,韩老师那时还在写 PHP(是的,没错!在微软写 PHP),同时需要写 Python 和 Node.js 。所以在那时,支持多种语言的 VS Code 已经是笔者的主力编辑器了。唯一不足的是,韩老师…

Firefox UI已迁移至Web Components

这不是一项一蹴而就的工程,Mozilla 开发者表示团队花费了大约两年的时间,采用“增量更新”的方式才逐渐将 Firefox UI 迁移至使用 Web Components 构建。Mozilla 开发者 Brian Grinstead 在博客宣布,经过多年的努力,他已在几个星期…

.Net线程同步技术解读

C#开发者(面试者)都会遇到lock(Monitor),Mutex,Semaphore,SemaphoreSlim这四个与锁相关的C#类型,本文期望以最简洁明了的方式阐述四种对象的区别。什么是线程安全教条式理解如果代码在多线程环境中运行的结果与单线程运行结果一样…

.NET使用VS2010开发Web Service

Web Service是一个面向服务的架构(SOA),不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。基于.NET平台,可以使用Visual Studio来开…

Java 开发Web Service的几种方式

webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录。 1.Axis2 Axis是apache下一个开源的webservice开发组件,出现的算是比较早了,也比较成熟。这里主要介绍Axiseclipse开发webservi…

动手造轮子:实现简单的 EventQueue

动手造轮子:实现简单的 EventQueueIntro最近项目里有遇到一些并发的问题,想实现一个队列来将并发的请求一个一个串行处理,可以理解为使用消息队列处理并发问题,之前实现过一个简单的 EventBus,于是想在 EventBus 的基础…