软件开发者如何保护自己的知识产权?

最近一个关于开源软件的知识产权纠纷的案例,非常有代表性,

其中涉及到的平台openwrt,一口君十几年前曾玩过,

通过这个案例,我们可以学习如何在今后工作中保护自己的知识产权

以及如何合理直接或者间接利用别人的“成果”而不侵权

一口君觉得非常有必要分享出来,让大家多了解知识产权的知识。

一、关于本案

1. 案子概述

通过下面鱼骨图,简单说一下这个案子的来龙去脉:

总结起来就是:

  • 苏州公司基于openwrt开发了网关产品,但是用一种方法绕开GPLv2限制,
  • 浙江通信公司通过苏州公司离职的两个核心员工抄袭了苏州公司的代码
  • 法院二审裁定,苏州公司上层功能软件构成GPLv2协议项下“独立且分离的”,裁定浙江通信公司侵犯苏州公司软件著作权


2. 本案的核心:

本案争辩的核心主要两点:

浙江某通信科技有限公司等被诉侵权人基于GPLv2协议提出的不侵权抗辩是否成立?

软件开发者自身存在一定程度上的违反GPLv2协议,是否就一定不享有新研发软件著作权?

要想整明白这个问题,我们必须要搞懂GPL、Openwrt、软件著作权是什么。

二、什么是GPL?

关于GPL,一口君下面文章,做了详细讲述,大家可以回顾一下。
《GPL前世今生》


GPL许可协议(GNU General Public License):只要软件中包含有其他GPL协议的产品或代码,那么该软件就必须也采用GPL许可协议且开源及免费。

具有以下特点:

  • 复制自由:
    允许将软件复制到任何人的电脑中,并且不限制复制的数量。
  • 传播自由:
    允许以各种形式进行传播。
  • 收费传播:
    允许在各种媒介上出售该软件,但必需提前让买家知道这个软件是可以免费获得的,并解释收费的理由(一般来讲都是能够为用户提供某种服务,以技术服务的形式来收费)。
  • 修改自由:
    允许开发人员增加或删除软件的功能,但必须依然基于GPL许可协议授权。

总结成一句话,修改后必须以GPL授权开源发布。

只要在代码中加入这个名叫GPL的许可证,你就能保证软件的用户能够自由地运行、研究、分享和修改你的代码了。

而且,从你的软件衍生出的一切修改版本,都必须遵守这个许可协议。

一个有意思的地方是,拥有代码的人有权利用代码开发软件并盈利。

但是,在有人花钱买走软件之后,这个人可以随意把买到的软件分享给其他人,而不必担心侵权,甚至是被告上法庭——因为对于遵守开源协议的软件来说,压根不存在“盗版”的概念。

由此可见,开源协议大大地提高了软件使用者的权利。

除了GPL之外还有很多其他协议,见下图:

三、什么是openwrt?

1. openwrt基础知识

OpenWrt 是一个基于 Linux 的、针对嵌入式网络设备的开源操作系统。它主要用于替代各种家用路由器上的原始固件。

Linux我们知道,他是目前最著名的遵循GPL协议的开源软件。

所以openwrt也是开源的。

OpenWrt 具备一个好的路由器应该具备的所有有用功能:

DNS 服务器(dnsmasq),WiFi 接入点(AP)和客户端功能,用于调制解调器功能的 PPP 协议,还支持webserver

而且,与标准固件不同,这一切都是可以完全配置的。

正式因为openwrt集成了这么多和网络息息相关的功能模块,

所以基于openwrt,可以很方便的开发和迭代出新的网络产品,

我们市面见到的很多无线通信产品,比如:家用路由器、无线AP等都是基于openwrt开发的。


本案中的苏州网络公司,他们所开发的源码正是基于openwrt开发的。

官网地址:

https://openwrt.org/

2. openwrt当年被迫开源

网络产品设备商的扛把子Cisco/Linksys(思科) 在 2003 年发布了 WRT54G 这款无线路由器。

同年有人发现它的操作系统是基于Linux的,然而 Linux 是基于GPL许可证发布的,按照该许可证 Cisco 应该把 WRT54G 的源代码公开。

2003年3月,Cisco 迫于公众压力公开了 WRT54G 的源代码。

此后就有了一些基于 Cisco 源码的第三方路由器固件,OpenWrt 就是其中的一个。

那么既然openwrt是开源的,根据gpl协议规定,

苏州公司的软件产品《OfficeTen》应该也是开源的才对,

那么为什么最终法院裁定浙江通信公司侵权了呢?

我们只需要搞清楚,安卓如何绕开GPL,就明白了。

四、安卓如何规避GPL的?

Android内核也是Linux,那他是如何规避GPL的?

下图是一个完整的Android软件系统所用到的所有协议分布。

图片与Android关系最为密切的主要包括两个方面:驱动和glibc

1. glibc

glibc是linux上的主流的c运行时库,几乎每个linux程序都会简介的依赖c运行时库。

由于glibc是gpl授权的,因此如果采用glibc作为crt,按照前述问题的第二条,这些程序必须开源。

因此安卓采用bionic作为c运行时库替代glibc来规避gpl

2. 驱动

再说驱动,Android是基于Linux 内核开发的,Linux内核是GPL授权。

传统的驱动是要作为内核模块被加入到内核中的。

而内核模块属于Linux内核的衍生产品,需要遵守GPL协议开源发布。

Android是由开放手机联盟共同完成的,为了保护联盟中手机生产商的利益,驱动不能被完全开源。

因此安卓引入HAL,给linux内核开了个后门,增加了一些系统调用

HAL在内核的部分按照GPL的要求开源。

驱动开发者可以在用户态使用这些新增的系统调用完成驱动的开发。

从而在驱动方面规避了GPL。

3. 详细说明:

Android的硬件抽象层,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。

也就是说,把对硬件的支持分成了两层,一层放在用户空间(User Space),一层放在内核空间(Kernel Space), 其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间。

为什么要这样安排呢?

把硬件抽象层和内核驱动整合在一起放在内核空间不可行吗?

从技术实现的角度来看,是可以的,然而从商业的角度来看,把对硬件的支持逻辑都放在内核空间,可能会损害厂家的利益。

我们知道,Linux内核源代码版权遵循GNU License,而Android源代码版权遵循Apache License,前者在发布产品时,必须公布源代码,而后者无须发布源代码。

如果把对硬件支持的所有代码都放在Linux驱动层,那就意味着发布时要公开驱动程序的源代码,而公开源代码就意味着把硬件的相关参数和实现都公开了,在手机市场竞争激烈的今天,这对厂家来说,损害是非常大的。

因此,Android才会想到把对硬件的支持分成硬件抽象层和内核驱动层,

  • 内核驱动层只提供简单的访问硬件逻辑,
    例如读写硬件寄存器的通道
  • 硬件抽象层负责硬件对应寄存器的读写操作,这样就可以把商业秘密隐藏起来了。

也正是由于这个分层的原因,Android被踢出了Linux内核主线代码树中。

大家想想,Android放在内核空间的驱动程序对硬件的支持是不完整的,把Linux内核移植到别的机器上去时,由于缺乏硬件抽象层的支持,硬件就完全不能用了,这也是为什么说Android是开放系统而不是开源系统的原因。

4. 苏州公司如何绕开GPLv2的?

具体到本案,苏州某网络科技有限公司研发的“OfficeTen”软件是以OpenWRT系统软件(OpenWRT系统软件是开源软件,适用的许可证协议为GPLv2协议)为基础经二次开发形成的衍生软件,

具体可分为两个部分:

  • 一部分是对OpenWRT系统软件所对应源代码进行增删、修改、调整而形成的涉案软件底层系统(以下简称底层系统软件),
  • 另一部分则是与涉案软件具体功能相对应的新增源代码形成的上层功能软件(以下简称上层功能软件)。

苏州某网络科技有限公司声称其在底层系统软件与上层功能软件之间采用套接字(socket)与命令行(command line)等技术手段建立了隔离层,
且二者之间通信内容不涉及内部数据结构信息,由此使得上层功能软件构成GPLv2协议项下“独立且分离的”的程序。

最高法院知产法庭在二审判决中认定,苏州某网络科技有限公司投资研发的名称为“OfficeTen”的网关产品系统软件,投入了大量成本,
涉案软件具有独创性且可以复制,构成著作权法项下的作品,依法应当获得保护。

他人未经苏州某网络科技有限公司许可,不得擅自复制、修改、发行涉案软件,否则将构成侵害涉案软件著作权的违法行为。

合议庭依在案证据认定关联网络公司在开发被诉软件过程中复制并修改了苏州某网络科技有限公司涉案软件的源代码;认定浙江某通信科技有限公司实施了销售被诉软件的行为。

认定该复制、修改、发行行为均未经苏州某网络科技有限公司许可,侵害了其享有的涉案软件著作权

五、软件著作权

本案中,法院最终保护的是苏州公司的软件著作权,所以什么是软件著作权?

1. 什么是软件著作权?

软件著作权是指由权利人根据法律规定享有的,他人不可侵犯的民事权利。

软件著作权保护是对计算机程序文档两部分的保护。

软件著作权保护不延及开发软件所用的思想、处理过程、操作方法或者数学概念。

《计算机软件保护条例》

第二条
本条例所称计算机软件(以下简称软件),是指计算机程序及其有关文档。
第三条
本条例下列用语的含义:
(一)计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。同一计算机程序的源程序和目标程序为同一作品。
(二)文档,是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,如程序设计说明书、流程图、用户手册等。

2. 在我国软件著作权登记有什么意义?

  • 1、享受国家优惠政策:
    办理软件著作权登记的企业可享受国家各种优惠政策,包括投融资、税收、出口政策等,具体可参见国务院18号文件;

  • 2、“双软认定”的前提:
    软件著作权登记是企业办理“双软认定”(软件产品登记、软件企业认定)的必要前提。信息产业部的《软件产品登记管理办法》的第七条第四款规定,软件登记时要提交知识产权证明。此知识产权证明即指《软件著作权登记证书》;

  • 3、可作为技术出资入股:
    《关于以高新技术成果出资入股若干问题的规定》规定:“计算机软件可以作为高新技术出资入股,而且作价的比例可以突破公司法20%的限制达到35%。”甚至有的地方政府规定“可以100%的软件技术作为出资入股”,但都要求必须首先办理软件著作权登记;

  • 4、申请科技成果的依据:科学技术部关于印发《科技成果登记办法》的通知第八条规定:“办理科技成果登记应当提交《科技成果登记表》及下列材料:

()应用技术成果:相关的评价证明(鉴定证书或者鉴定报告、科技计划项目验收报告、行业准入证明、新产品证书等)和研制报告;()知识产权证明(专利证书、植物品种权证书、软件登记证书等)和用户证明”。这里的软件登记证书指的是软件著作权登记证书和软件产品登记证书。其他部委也有类似规定;
  • 5、企业破产后的有形收益:
    软件著作权作为企业的“无形资产”,不会随企业的破产而消失。企业破产后,无形资产的生命力和价值仍然存在,可以在转让和拍卖中获取有形资金;

  • 6、予以重点保护:
    计算机软件著作权登记是我国著作权法规所规定的对计算机软件著作权保护的一项行政辅助管理措施,《计算机软件著作权登记办法》第二条和国务院18号文件均有规定,国家著作权行政管理部门鼓励著作权人进行计算机软件著作权登记,并对已登记的软件给予重点保护。

六、对科技企业的警示

  1. 有知识产权保护意识

作为企业负责人或者软件开发管理者,一定要有知识产权保护意识,

开发的软件要及时申请软件著作权,

对于一些有创新的产品还要及时申请专利,

  1. license授权

软件最大的问题就是复制性,

通过license授权可以在一定程度上保护自己的软件产品。

详情大家可以参考下面文章:

《软件License授权原理》

  1. 对于技术人员的管理

技术人员的是企业的核心竞争力,

企业要想做走的更长远、提升产品竞争力,

主要依靠的就是研发,

平时要注重技术人的培训和提升,

保持研发团队人员的稳定,

尤其是核心技术人员,

核心技术人员的流失对企业会有致命的伤害,

一旦加入竞争对手的公司,

后果不堪设想。

  1. 关键岗位签署竞业协议

对于一些非常重要得岗位,

要与员工签署竞业协议,

最大程度上保护自己。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

08 - 条件判断语句

---- 整理自狄泰软件唐佐林老师课程 文章目录 1. 条件判断语句2. 语法说明3. 经验4. 代码 1. 条件判断语句 makefile 中支持条件判断语句 可以根据条件的值来决定 make 的执行可以比较两个不同变量或者变量和常量的值 注:条件判断语句只能用于控制 make 实际执行的…

zabbix监控方式(zabbix-trapper)

中文:zabbix采集器,即zabbix sender 。 Zabbix-Trapper 监控方式可以一次批量发送数据给Zabbix Server,与主动模式不同,Zabbix-Trapper 可以让用户控制数据的发送,而不用Zabbix-Agent进程控制,这意味着可以…

品深茶的抗癌功能是否涉及虚假宣传?

品深茶说到底,本质还是中国传统茶叶,茶叶本就是一种含有多种成分的饮品,包括茶多酚、生物碱、氨基酸、有机酸等。这些成分对人体有一定的益处,如抗氧化、抗炎、抗菌等作用。 一些研究表明,茶叶中的某些成分如茶多酚、…

C语言----汉诺塔问题

1.什么是汉诺塔问题 简单来说,就是有三个柱子,分别为A柱,B柱,C柱。其中A柱从上往下存放着从小到大的圆盘,我们需要借助B柱和C柱,将A柱上的所有圆盘转移到C柱上,并且一次只能移动一个圆盘&#…

用户管理中心——数据库设计用户注册逻辑设计

用户管理中心——数据库设计&用户注册逻辑设计 规整项目目录1. 数据库自动生成器的使用实现基本的数据库操作(操作user表) 2. 注册逻辑的设计(1) 写注册逻辑(2) 实现(3) 测试代码 3. 遇到的问题 规整项目目录 utils–存放工具类,比如加密…

Jsoncpp介绍

1.简介 Jsoncpp 是一个 C 库,用于解析和生成 JSON 数据。它提供了一个易于使用的 DOM(Document Object Model)风格的 API,允许开发者以树形结构的方式操作 JSON 数据。 Jsoncpp 是一个C库,允许操作JSON值,…

【软测学习笔记】Python入门Day02

🌟博主主页:我是一只海绵派大星 📚专栏分类:软件测试笔记 📚参考教程:黑马教程❤️感谢大家点赞👍收藏⭐评论✍️ python安装 1、进入Python的官方下载页面: Download Python | Py…

【论文阅读笔记】Mamba模型代码理解

0.开源代码地址 官方实现:state-spaces/mamba (github.com) 最简化实现:johnma2006/mamba-minimal: Simple, minimal implementation of the Mamba SSM in one file of PyTorch. (github.com) 直接实现:alxndrTL/mamba.py: A simple and e…

网络安全与IP地址的关联

网络安全与IP地址之间存在着密不可分的关系。IP地址作为网络通信的基础,对于网络安全的保障具有至关重要的作用。以下将详细探讨网络安全与IP地址之间的关联,以及IP地址在网络安全中的应用。 一、IP地址与网络安全的关系 IP地址是网络通信的基础&#x…

力扣437. 路径总和 III

Problem: 437. 路径总和 III 文章目录 题目描述思路复杂度Code 题目描述 思路 1.定义int类型函数rootSum(root, targetSum),用于求取每一个节点等于目标函数的路径数: 1.1.易知rootSum(root, targetSum)求出的数量等于rootSum(root.left, targetSum - va…

C语言 main( ) 函数的指针数组形参是怎么回事?

一、问题 在使⽤⼀些开发⼯具⽣成C语⾔⽂件时,主函数 mian( ) 中会有参数,这个参数到底是怎么回事⼉呢? 二、解答 mian( ) 称为主函数,是所有程序运⾏的⼊口。 mian( ) 函数是由系统调⽤的,当处于操作命令状态下&…

【C 数据结构-动态内存管理】4. 无用单元收集(垃圾回收机制)

文章目录 【 1. 问题描述与解决方法 】【 2. 中断回收机制 】 【 1. 问题描述与解决方法 】 问题描述 动态存储管理的运行机制可以概括为:当用户发出申请空间的请求后,系统向用户分配内存;用户运行结束释放存储空间后,系统回收内…

深度学习之基于Tensorflow卷积神经网络智能体操健身系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着人们健康意识的提高和数字化技术的快速发展,智能健身系统逐渐成为健身领域的新趋势。…

MT8370_联发科MTK8370(Genio 510)芯片性能规格参数

MT8370芯片是一款利用超高效的6nm制程工艺打造的边缘AI平台,具有强大的性能和功能。这款芯片集成了六核CPU(2x2.2 GHz Arm Cortex-A78 & 4x2.0 GHz Arm Cortex-A55)、Arm Mali-G57 MC2 GPU、集成的APU(AI处理器)和DSP,以及一个HEVC编码加速引擎&…

C语言 动态内存管理

目录 1. C/C程序的内存分配2. 动态内存分配的作用3. malloc - 分配内存4. free - 释放内存5. calloc - 分配并清零内存6. realloc - 调整之前分配的内存块7. 常见的动态内存的错误7.1 对空指针解引用7.2 对动态开辟空间的越界访问7.3 对非动态开辟内存使用free7.4 使用free释放…

代码随想录算法训练营第十九天:二叉树go

代码随想录算法训练营第十九天:二叉树go 226.翻转二叉树 力扣题目链接(opens new window) 翻转一棵二叉树。 ​​ 这道题目背后有一个让程序员心酸的故事,听说 Homebrew的作者Max Howell,就是因为没在白板上写出翻转二叉树,最…

jmeter分布式集群压测

目的:通过多台机器同时运行 性能压测 脚本,模拟更好的并发压力 简单点:就是一个人(控制机)做一个项目的时候,压力有点大,会导致结果不理想,这时候找几个人(执行机&#x…

Parts2Whole革新:多参照图定制人像,创新自定义肖像生成框架!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! Parts2Whole革新:多参照图定制人像,创新自定义肖像生成框架! 引言:探索多条件人像生成的新篇章 在数字内容创作…

Autosar PNC网络管理配置-UserData的使用

文章目录 前言ComComSignalComIPdu CanNmSignal Mapping总结 前言 之前配置的网络管理报文中的data都由ComM管理,后面客户新增了需求,最后两个byte需要发送Wakeup Reason,本文记录一下相关配置的修改 Com ComSignal 之前配置的PN_TX&…

应用层协议——HTTP协议

1. 认识HTTP协议 HTTP(Hyper Text Transfer Protocol)协议又叫做超文本传输协议,是一个简单的请求-响应协议,HTTP通常运行在TCP之上。 超文本的意思就是超越普通的文本,http允许传送文字,图片&#xff0c…