关于ZLM Pro闭源收费的一些解释 - xia-chu/zlmediakit-pro GitHub Wiki

事件的起因

大概在一个多月前,由于一些主动和被动的原因我离开了之前工作的公司,目前处于待业状态。在这一个多月的时间内,我整理了下之前积攒下来的研发成果,把我自己认为有价值的代码糅合整理成一个所谓的ZLMediakit Pro闭源版本,同时我在做好了licence激活鉴权模块、后台管理系统之后;我认为时机成熟,可以推广了,于是连发了两篇宣传文章在本公众号(大家感兴趣的可以回看本文前两篇文章)。这两篇文章收到了很多朋友和用户的鼓励和祝福,同时也收到一些不解或异议,诸如此类:

几点解释

首先,ZLMediaKit Pro收费有没有侵害其他开源贡献者的权利?我认为是不存在的,ZLMediaKit开源版本本来就是MIT协议,在声明使用ZLMediaKit时任何公司和个人都可以自由分叉、修改、传播、售卖基于ZLMediaKit的衍生品,甚至我认为,在您不修改ZLMediaKit任何一句代码的情况下,也能把源码或者二进制卖出去,那也是您的本事,如果您能回馈社区,当然我们感激涕零,如果不愿意,那也无可非议;因为选择MIT开源协议时,我们已经预料到这种结局,也没有过多的期许。

其次,作为ZLMediaKit项目的发起人,主要贡献者,我本人有没有售卖ZLMediaKit分叉版本的权利呢?我认为显而易见,我是有的;原因上面已经说明过了,不再赘述;那我再售卖ZLMediaKit Pro时有没有侵害其他贡献者的权利呢?我认为并没有,因为在提交PR给ZLMediaKit时,贡献者就必须先签署CLA协议(贡献者许可协议),CLA协议的签署并合并PR后,该修改部分代码就成为ZLMediaKit的一部分,它和其他已有代码的适用同一法律地位,都是MIT授权协议,任何人和任何公司都有权利修改再发行且无需开源。

有人可能会有疑惑,ZLM Pro的商业行为,这部分收益应该怎么分配?毕竟ZLM Pro是基于开源版本,有没有义务和其他主要贡献者分配利益?首先我要声明的是,目前ZLM Pro的卖点全是非开源部分功能,ZLM Pro在未付费激活的情况下,所有开源内容都是可以不受限制使用的,ZLM Pro将退化成开源版本,也就是开源代码本来就是不收费的(也收不上费,毕竟开源版就提供二进制发行包);ZLM Pro的功能卖点代码版权是清晰明确的,都是我一人开发的成果,无其他贡献者的提交;在这种情况下我不会受任何诸如上图有些网友幼稚的道德绑架后怀揣某种所谓的分配义务;当然我可以在内部几位主要贡献者需要经济帮助的情况下自愿的给予某些经济上的接济,或者邀请他们一起共建ZLM Pro然后分润,但是现在还为时尚早,因为现在ZLM Pro才开始推广,起步阶段,还有很多事情要做,在经济上远远还达不到达则兼济天下的地步,目前我只感奢望能济己,然后才能济人。

有人会问,ZLM Pro挂在开源主页宣传是不是吃相太难看,违背了开源的初心和理想?怎么说呢,这个事情我其实也很纠结的,我觉得任何一个从个人开源项目发展壮大起来的项目,其项目发起人都是有理想有浪漫主义色彩的,甚至对商业开源也嗤之以鼻;否则也不可能由小变大由弱变强,汇聚一群志同道合者勠力同心共同壮大开源社区甚至生态,所以我们比绝大部分网友以及所谓的白嫖党、伸手党对这事更有发言权,因为我们才是开源的贡献主体,一个都没贡献过PR的用户如果评论"这个开源项目有商业版卖钱真无耻",我想想都觉得可笑,他都没贡献过代码,哪来这么多主人翁精神呢?如果他没贡献,以卫道士、君子处士的姿态站在道德制高点批判,绑架他人道德无暇,那么这种人大概是伪君子。我承认,在开源上推广闭源商业版的商业行为是有瑕疵的,我也不愿意这么做,但是不宣传就没有流量(这年头流量很贵),项目主页和公众号是最好的流量来源,没有流量大家都不知道ZLM Pro的存在,自然就没销量和收入,所谓天下熙熙皆为利来,天下攘攘,皆为利往,经济是社会运行的基础,没有收入也没工作,那生存都是一个问题,那还谈什么开源发展?而且开源经常要分走很多时间和精力,这往往会影响对工作和家人陪伴的投入,如果做开源投入很大但是不能有经济上的收益,就很难得到持续和专注的维护,项目只要灵魂人物出走(或者挂了),很快就会一盘散沙!所以很多开发者面临同一个问题,就是谁该为开源买单?靠道德吗?靠贡献者的无私奉献吗?我看过很多贡献者来了又走了,后面就像两条射线一样一去不返不再相交,当然也有孜孜不倦一起陪伴过来的朋友,对此,我非常感激有你们的陪伴!

开源的收入

我认为,目前开源项目收益来源可能有以下几种渠道:

  • 1、来自开发者用户的打赏和捐赠: 目前github对开源项目的捐赠有一定的支持,用户和项目都可以开通Sponsor支持,入口类似如下:

Sponsor支持开通的地区有限,其实并不包括中国大陆地区,但是我们也可以通过挂载PayPal、opencollective等链接接受用户的捐赠,但是我查了下,大部分项目这方面的收入其实非常微薄,以SRS为例,2024年收到5000美元不到(这还是作者在经常维护海外开源社区的情况下,经常帮用户解决问题,类似付费的知识星球):

一年5000美元的收入,其实远远不够支付一个工程师一年(甚至一个月)的工资;国内的gitee可能由于税务和实名问题,在大概2024年底就关闭了捐赠入口;其次我们也可以在项目主页挂微信或支付宝收款码,但是之前我测试过,这部分收入可以忽略不计,而且开源收入进我个人口袋也不太好看,所以为了吃相好看点,后面就移除了,毕竟也没什么收入。

  • 2、来自知识星球的收入: 知识星球类似付费买服务,目前基本是我一人在维护,买单者一般为开发者个人;我们都知道,开发者要养家,都是打工人,也就是其实大家也没什么钱,作为开源作者,我也是开发者,都能体会大家的难处,所以这个门槛并没多高,之前设置为199一年,最近星球收入除去平台抽成的20%,还要在纳入个税累进,所以提高到了299一年。目前一个月大概平均有两千左右的收入,目前这个收入不高,但是我还将继续维护下去,不是因为收入,而是我想服务真正需要的开发者,而不是像之前QQ群一样一点门槛都没有,沦为伸手党的人肉字典(或者人肉wiki复读机)。

  • 3、来自卖课的收入: 这部分收入我目前是0,一是我不想做这种事情,卖课多多少少有割韭菜的嫌疑,动辄几百上千的课,我觉得真的不太值当,二是我也知道开发者很穷,我真的不忍心去赚这个钱。

  • 4、来自企业赞助: 一般来说,企业不会随便为开源项目赞助,如果他们愿意赞助,一般都是需要开源项目为他们实现某个特性;如果他们是有研发实力的企业(特别是互联网企业),他们更不可能赞助,就算他们自己实现了某个有价值的特性,他们大概率也不会给项目提交PR,所以更别说赞助了,所以这个收入可以简单归纳为0.

  • 5、企业技术支持收费: 这块的收入不能说没有,但是我觉得这个钱大部分钱情况下赚的也不轻松,你可以认为这相当于出卖劳动力的收入报酬,而且大部分情况下像ZLMediaKit这种开源项目很难收到技术支持的费用,因为首先ZLMediaKit的文档,issue都比较健全,可以找到解决方案;其次用户可以提issue,星球或者微信群提问,基本没什么问题需要公司层面出面花钱找支持;而且公司请开发者上班,开发者解决不了要请外援,老板觉得请你们是吃白饭的吗?所以非常难申请。另外,ZLMediaKit本身功能、性能、稳定性都非常优秀,基本没啥问题;所以这方面的收入也非常少,就算有也是非常棘手的问题等着你解决否则也不会请你。

  • 6、商业版: 通过上述几个收入渠道,我们发现,要收费非常困难和微薄,最终就不得不面临一个问题:既然开源收不到费用,那商业版是不是可以呢?所以我们发现,很多开源项目最后不得不做商业版收费,国内的项目包括jessibuca、wvp-pro、h265web.js等,国外的livekit、minio、redis、nginx等都有商业版;有些开源项目社区非常活跃,比如ffmpeg、linux等项目,他们太过庞大,有非常多的个人和公司贡献,代码贡献不是某公司或个人主导,而且是GPL/LGPL协议,搞商业版不具可操作性;另外有些开源项目被竞争对手收编,比如centos由于一直白嫖redhat的生态,现在被IBM收编了,由于影响商业利益,现在也没有了(现在竟然找不到像样的替代品了)。所以,一个开源项目如果不是GPL/LGPL等强传染性的协议,也没有非常庞大的社区和无可替代的地位,大概率最终就不得不最后走向商业版。

开源应该谁买单?

是开发者个人吗?我觉得显然不是,首先开发者个人作为开源项目的使用者,他只是工作需要,他也是出卖劳动力,总没有付费打工的吧?这对开发者不公平,而且公司靠开源赚钱了,开发者也很难分润,开发者另外也收入微薄,更不应该向他们收费。

那应该是企业为开源买单吗?我认为是的!没有开源项目,很多业务无法展开,样样都要自研,那企业将寸步难行,正是由于开源生态的繁荣,才促进了互联网行业、信息时代的大爆发!企业靠开源赚取了,它是最终受益者,理应为此买单,我们推出商业版,针对企业(特别是大型企业)收费是于情于理都说的通的。所谓权利和义务是对等的,既然企业靠开源赚到钱了,那么再付费购买商业版回馈社区也是责任担当的一种体现。当然,企业免费用开源版不做回馈我们也无可厚非,但是我们推出收费的商业版,那么也不应该受人指摘,特别是作为普通开发者用户,更没理由为此义愤,因为开发者也不是我们的售卖对象,也不会为此付费,我们也没伤害开发者群体的利益,相反,如果把商业版都开源出去了,那可能挤压他们的工作空间,导致他们无事可干。

什么功能适合放在商业版?

目前ZLM Pro商业版的主要功能点有:JT1078协议、IPTV相关协议和增强、音视频转码、S3云存储、WebRTC集群、AI推理。首先,JT1078和IPTV相关行业虽然也是流媒体相关的,但是和ZLM主要的安防行业开发者群体并不重叠,目前选择不开源,我认为和ZLM的定位冲突不大;当然,我希望ZLM能吸纳更多行业的开发者群体,但是在恰饭和理想的左右权衡下,我目前选择了恰饭,后面不排除可能开源的可能性。 其次,S3云存储、WebRTC集群这两个功能点,我认为更不应该开源,为什么这么说呢?因为这个真的是针对大型企业级应用的功能点,小企业用不上,大企业不收费,那真的是脑子what了?我认为越是大企业需要的功能,那么越需要收费!最后,AI推理和音视频转码,我觉得这不属于流媒体的核心功能和竞争力,没必要放在流媒体开源项目内,目前也是最复杂和花费精力最多的模块,所以这个也不会开源。

商业版与开源版的关系

我认为在推广商业版本的情况下不应该损害开源版用户的利益以及破坏开源生态,比如开源版和商业版底层代码和架构、可靠性、性能差异上不一致;或者故意往开源版里面参沙子引入bug破坏稳定性或者降低性能;这种行为无疑是非常短视和自戕的,也是不道德的。开源生态是闭源商业版的源泉,如果没有来自开源版的美誉和用户肯定,那么商业版就会失去根基,很难获得用户的肯定和信赖;所以我在发展商业版的同时,将做出以下承诺:

  • 1、商业版和开源版共享底层框架,代码的性能、稳定性完全一致,开源和商业版不会是两套完全不一样的代码。
  • 2、商业版比开源版只有功能差异,商业版的卖点只有功能点,企业只用为商业版功能点买单。
  • 3、永远不会为了推广商业版故意阻碍开源版本的发展,包括故意引入BUG,或者阻碍和商业版已有功能冲突PR的合并。
  • 4、商业版某些基础更新,包括稳定性、性能更新都会同步到开源版,一些基础功能改进和新增也会同步回馈开源版。
  • 5、只要商业版一天在维护,那么开源版就会有一天在维护。

最后

希望大家不要以道德完人的要求去要求他人,为了生活恰饭赚点企业的钱,普通的开发者不应该视作对开源和用户的背叛;你出卖劳动力赚企业的工资,我出卖劳动力赚企业的授权费,同为打工人,我们应该是同一阵线的。如果能赚企业的钱,那总比卖课割韭菜赚开发者的钱要好得多?希望大家多多理解和支持...