开源社区与开发者的故事
- 什么是开源社区
- 你参加开源社区的主要目的
- 你是否在开源社区中贡献,或者开源自己的项目?
- 你认为个人开发者是否应该从开源中获利?如果是,该如何获利?
今天要谈及的主题是开源社区,那么在进入主题之前,先了解一下什么是开源社区?
什么是开源社区
作为开发者,可能对于开源社区的定义没有准确的概念,但是肯定都是知道开源社区是干什么的。比如说:在开源社区你可以自由地分享自己的知识和经验,同时也可以从他人的分享中学习到更多的东西。
百度百科是这么阐述的:开源社区又称开放源代码社区,一般由拥有共同兴趣爱好的人所组成,根据相应的开源软件许可证协议公布软件源代码的网络平台,同时也为网络成员提供一个自由学习交流的空间。由于开放源码软件主要被散布在全世界的编程者所开发,开源社区就成了他们沟通交流的必要途径,因此开源社区在推动开源软件发展的过程中起着巨大的作用。那么你参加开源社区的主要目的是什么呢?
你参加开源社区的主要目的
乍一看,说起开发者参加开源社区的目的,作为开发者的我们可能会有点懵。脑袋飘过一串问号。。。我参加过开源社区吗?我什么时候接触过开源社区了?
其实,作为Java开发者的我来说,虽然自我意识里面没有参加过开源社区,但是日常工作中却确确实实和开源社区保持着紧密的接触。随后可见的开发中常用到的开源框架,现在细细数来都是开源的。
比如现在搭建项目采用的基于 SpringBoot、Shiro、Mybatis 权限管理系统的开源框架若依框架
以及过去用过的 SpringMVC、Hibernate、Struts 等开源框架,所以说对于我来说,其实参加开源社区的主要目的更像 get,put 的不多。
当然,开源社区除了上面说到的还有很多优秀的开源项目,比如有一次为项目组搭建部署的开源 Elasticsearch 引入 hanlp 分词插件,在开源社区找到了与 Elasticsearch 版本相匹配的开源elasticsearch-analysis-hanlp 插件
以及为了规范代码开发,提高代码质量,搭建部署开源项目 sonarqube
同时结合阿里巴巴java代码开发规范提供的开源项目 p3c ,下载开源代码进行规则自定义化后整合到 sonar 检测代码中去,从而使得项目组的开发规范尽可能的向阿里巴巴java代码开发规范靠拢
当然,还有为了实现项目中在线编辑资源静态文件,比如 html 文件的插件 CodeMirror
这么看来,在我的工作过程中,确实和开源社区项目紧密相关,并且很多优秀的插件或者说项目框架也都是来自于开源社区,开源社区对于个人在工作中的作用真的很重要,这也就是参加开源社区的主要目的了。
你是否在开源社区中贡献,或者开源自己的项目?
在开源社区中的话,作为开发者来说,曾经解答过一些开源社区中提到的问题,个人也会上传一些自己觉得有必要的小项目供自己或者他人来学习使用,比如
其中有的开源项目是基于原有开源项目进行的定制化的处理,比如 p3c-master ;还有的是基于开源社区原有开源项目的改造,比如 sa-token ,剩下的就是个人在开发过程中用的比较顺手的开源框架以及基础功能的小项目了。
你认为个人开发者是否应该从开源中获利?如果是,该如何获利?
个人不支持个人开发者从开源中获利。往大方面说的话,开源社区本身就是一个知识共享,经验共享,项目共享的社区,本质上是为了广大的开发者提供一个发挥自己热爱的平台,可以说就是为爱坚守。往小了说,如果开源需要付费才可以使用,那么不管对于个人开发者还是企业来说,可能都不愿意支付这笔费用,因为信息的不对等,使用者并不能保证支付的费用和获取到的开源内容是等价的,会使得大家对开源望而却步,从而使得开源社区失去了最初的初心。
同样的,付费还可能产生风险。比如作为个人开发者,如果说想从开源项目中获利的话,其实不太可能,毕竟一个人的力量是有限的,你并不能保证你的开源项目会没有问题。如果有一个企业使用了你发布的开源项目,你也从企业手中取得了一定的利益,这个时候因为你开源项目本身的未知bug造成企业的损失,这个该如何计算呢?如果说让个人开发者赔偿企业损失的话,对个人开发者不公平,毕竟获利不大;如果说个人开发者不赔偿企业损失的话,那企业觉得付费了没有得到高质量的产品,也会心中不忿。
因此说,个人开发者是否应该从开源中获利,个人并不支持。