Category Archives: OpenSource

开从首位 00 后 CEO 被指抄袭,聊聊开源协议

近日,一位自称『中国首位 00 后 CEO』的 17 岁少年,李昕泽因为一段专访短视频,一下在 IT 界火了。

而在昨日,李昕泽 所在的 崇才网络科技 发布的一款产品:猫桌面(智能电视桌面),被 CSDN 博客专家、Android 开发者『墨镜猫』所指抄袭。

原文地址在这里,大家有兴趣可以看看:http://blog.csdn.net/rain_butterfly/article/details/77847643

事情简单来说,崇才网络科技 发布的 TV端 App 产品 猫桌面,和『墨镜猫』之前在 Github 上开源的一款 AndroidTVLauncher (名称也叫 猫桌面),从UI到实现,都是一模一样的,才引发了现在的抄袭问题。

而在这件事情发生的当晚,我去看了下『墨镜猫』开源的 AndroidTVLauncher ,它在昨天已经将开源协议从 Apache License 2.0 修改成了 GNU GPL v3,并且在 commit 里表达了作者的愤怒。

从 commit 的记录来看,作者依然是在努力维护这个库的,最近才增加了对 kotlin 的支持。

而对于抄袭的事情,大多数同学都是声援的态度,但是在看了作者的开源协议之后,我有点犯难了。

从开源协议来看,这里涉及到两个协议:

  • Apache License 2.0
  • GNU GPL v3

下图是从 @GcsSloop 的博客中 Copy 出来的,可以清晰的说明这两个协议的特点。

Apache License 2.0 本身是一个比较宽泛的协议,使用者可以在需要的时候修改代码并且将它封装成产品发布/销售,而这只需要增加一个开源说明即可。

而 GNU GPL v3 就相对严格一些,它要求使用它的程序,也遵照 GNU GPL v3 协议。

说说我的看法

首先,代码最初使用的是 Apache License 2.0 协议,本身就可以让使用者修改并且商用,前提是在代码中附带一份原协议。

使用者不能打着作者的名号做商业宣传,并且原作者在不承担代码使用后的风险的同时,也放弃了这段代码被商用后的收益。也就是说,别人在原本代码的基础上,修改的好或者推广的好,那是别人能力的表现,这部分收益是可以不和原作者相关的(不排除使用者获益之后馈赠原作者的)。

到现在来看,撇来需要附带一份原协议这一点来看,使用者完全是遵循的 Apache License 2.0 的协议。(唯一可能有问题的是应该改改名称和图片资源,再上 PPT)

而原作者的代码,也并非 100% 原创的,它是一款基于 android.support.v17.leanback 的库来做的二次开发,而 Leanback 是 Google 为 Android TV 做的一款支持库,本身也是基于 Apache License 2.0 开源协议的。

Leanback 我自己也用过,并且用它开发过商业产品,现在已经上线盈利。AndroidTVLauncher 中的很多效果和实现,都是 Leanback 原生 Api 支持的,并没有做太多大的改动。所以这里对 AndroidTVLauncher 在原有库的基础上,改动的价值,就不太好做评判(毕竟我没有看过 AndroidTVLauncher 的代码)。

再来说说,作者昨天紧急修改了一波协议,这其实并没有什么实质的作用。因为本身 GPL 只是要求使用者也需要开源并且保持 GPL 协议,我想对于 崇才网络科技 的人来说,开源就开源呗。而且他们也是可以在之前代码的基础上进行修改,之前的代码依然保持 Apache License 2.0 的协议,这是一旦授予,无法撤销的。

做开源,先摆好心态

很多人将自己的代码放在 Github 上开源,本身就是为了推广自己,对于一些小而美的开源代码(例如:控件、动画等),其实心态还算平和,用就用了呗,而且应该是越多商业应用在用,作者就越高兴,觉得是一种认可。

可对于一些完整的 App 的开源。当发现别人使用自己的代码进行商用,并且推广的还不错,就心里有点不平衡了。

但是实际上,当你把代码放到 Github 上,等待被人 start 、fork 的时候,就应该做好开源的心态。而如果不想被商用,开源的那一刻就应该想清楚应该采用的协议,否者事后跳出来说使用者抄袭,这就有点不太厚道了。

正确的理解开源协议

最后还是在做开源之前,理解一下开源协议,选择一个适合自己的。

下图是 @阮一峰 博客里绘制的一个开源协议的中文分析图,供大家参考。

并且还有一个网站也非常的好,可以帮助开发者了解应该使用何种协议,推荐给大家。

http://choosealicense.online/

最后,还是说一句,做开源,心态一定要摆正。俗话说的好:孩大不由娘。你发布出去的开源代码,最终衍生发展成什么,真的不是你能控制的了的。

from:http://zhuanlan.51cto.com/art/201709/550631.htm

Java Spring open source project

1、spring-projects
https://github.com/spring-projects

2、PetClinic
https://github.com/spring-projects/spring-petclinic
http://docs.spring.io/docs/petclinic.html

3、spring mvc示例代码
https://github.com/spring-projects/spring-mvc-showcase

4、Spring Security Reference
http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/

5、JeeSite

https://github.com/thinkgem/jeesite

JeeSite 是一个企业信息化开发基础平台,Java企业应用开源框架,Java EE(J2EE)快速开发框架,使用经典技术组合(Spring、Spring MVC、Apache Shiro、MyBatis、Bootstrap UI),包括核心模块如:组织机构、角色用户、权限授权、数据权限、内容管理、工作流等。 http://jeesite.com

技术栈:

1、后端

  • 核心框架:Spring Framework 4.0
  • 安全框架:Apache Shiro 1.2
  • 视图框架:Spring MVC 4.0
  • 服务端验证:Hibernate Validator 5.1
  • 布局框架:SiteMesh 2.4
  • 工作流引擎:Activiti 5.15、FoxBPM 6
  • 任务调度:Spring Task 4.0
  • 持久层框架:MyBatis 3.2
  • 数据库连接池:Alibaba Druid 1.0
  • 缓存框架:Ehcache 2.6、Redis
  • 日志管理:SLF4J 1.7、Log4j
  • 工具类:Apache Commons、Jackson 2.2、Xstream 1.4、Dozer 5.3、POI 3.9

2、前端

  • JS框架:jQuery 1.9。
  • CSS框架:Twitter Bootstrap 2.3.1。
  • 客户端验证:JQuery Validation Plugin 1.11。
  • 富文本:CKEcitor
  • 文件管理:CKFinder
  • 动态页签:Jerichotab
  • 手机端框架:Jingle
  • 数据表格:jqGrid
  • 对话框:jQuery jBox
  • 下拉选择框:jQuery Select2
  • 树结构控件:jQuery zTree
  • 日期控件: My97DatePicker

4、平台

  • 服务器中间件:在Java EE 5规范(Servlet 2.5、JSP 2.1)下开发,支持应用服务器中间件 有Tomcat 6、Jboss 7、WebLogic 10、WebSphere 8。
  • 数据库支持:目前仅提供MySql和Oracle数据库的支持,但不限于数据库,平台留有其它数据库支持接口, 可方便更改为其它数据库,如:SqlServer 2008、MySql 5.5、H2等
  • 开发环境:Java EE、Eclipse、Maven、Git

6、SpringBlog
https://github.com/Raysmond/SpringBlog
•Spring Boot and many of Spring familiy (e.g. Spring MVC, Spring JPA, Spring Secruity and etc)
•Hibernate + MySQL
•HikariCP – A solid high-performance JDBC connection pool
•Bootstrap – A very popular and responsive front-end framework
•Pegdown – A pure-java markdown processor
•ACE Editor – A high performance code editor which I use to write posts and code.
•Pygments – A python library for highlighting code syntax
•Jade4j – Jade is an elegant template language.
•Webjars – A client-side web libraries packaged into JAR files. A easy way to manage JavaScript and CSS vendors in Gradle.
•Redis – A very powerful in-memory data cache server.

7、expper
https://github.com/Raysmond/expper
•Java 8+
•Spring Boot 1.3.0.RELEASE
•PostgreSQL 9.4+
•Jhipster 2.24.0
•Redis 3.0+
•RabbitMQ 3.5.6+
•ElasticSearch
•Node.js

 

 

Refer:http://stackoverflow.com/questions/2604655/any-open-source-spring-sample-project-thats-bigger-than-petclinic

http://www.programcreek.com/2012/08/open-source-projects-that-use-spring-framework/