这篇文章上次修改于 265 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

近期看到了有关技术圈的几条新闻,其中一条是 WangEditor 的开源作者提到自己做开源长期没有收益,最终不得不宣布项目暂停维护。

暂停维护.jpg

刚看到这个的时候的我也不得不为此感到唏嘘,想到自己在上家的时候,还将项目里面原有的编辑器替换成了它,因为当时这个项目功能强大,社区和维护也是比较活跃的,最关键的是作者选择将这个项目完全开源不收费。

这个编辑器放在项目里面运行起来挺好的,可我作为一个平平凡凡的打工人,肯定不可能为此让老板为一个开源项目赞助吧。更何况这个项目还是一个外包项目,找客户买单更是不可能的事情。

由此可以引发一个思考,在国内做开源的确不赚钱,甚至是亏本买卖。因为你在开源项目上付出的时间和精力,往往并不能获得等额的回报。

什么是开源

或许有朋友不是很清楚开源软件是什么,此处引用一下万能的 GPT 的回答:

开源软件是指源代码可以被公开查看、使用和修改的软件。它是通过一种许可证模式进行分发,允许任何人可以自由地访问、学习、修改和共享源代码。这与闭源软件相对,闭源软件的源代码不对外公开。

开源软件的主要特点包括:

  1. 公开源代码:开源软件的源代码对任何人都是可见和可访问的。这使得开发者、用户和研究者可以查看代码,理解其工作原理,并对其进行改进、调试和定制。
  2. 自由使用权:开源软件通常以自由、开放的方式分发。用户可以自由地使用该软件的功能,无需购买许可证或支付费用。
  3. 修改和重新分发:开源软件授予用户对源代码的修改和重新分发的自由。这使得用户可以根据自己的需要进行定制和改进,也可以共享和传播软件的更改版本。
  4. 合作和共享:开源软件鼓励用户之间的合作和共享。开发者可以共同参与软件的开发和改进,为社区做出贡献,并受益于其他人的工作。

常见的开源软件项目包括 Linux 操作系统、Apache HTTP 服务器、Firefox 浏览器、MySQL 数据库等。开源软件的发展受益于全球开发者社区的合作和贡献,提供了可靠、安全且经济高效的解决方案。

开源的意义

所以作为一个普通程序员,开源自己软件的意义是什么,我认为或许对于不同人有着不同的答案。

作为一个学生,多写项目可以提高技术水平,丰富自己的编码经历。开源自己的项目代码,或许可以得到其他人的帮助,以写出质量更高的代码。这样你就有了找工作时“谈判的筹码”,相较于其他人要更加突出。而且还可以通过开源项目结识新朋友,相互学习和切磋。

作为一个职场打工人又不同了,需要考虑到生活上的问题,工作过程就已经写了不少代码了,写开源不一定能提高多少自己的技术水平,此时做开源项目的收益就不再是经验第一了,自然问题就变成了能否通过做开源项目获得收入了。

当然现实也存在着为爱发电全职写开源项目的开发者,或许对他们来说还有自己其他方面的追求吧(名气,技术等等)。

我的徒弟 @Innei,他起初是非常看好项目开源的,这点并没有错。昨天他就和我聊到这件事情,他说做开源只能吃土。他做了这么久的开源,唯一收到的赞助是 @Diygod 大佬的(我认为其实算是他帮大佬维护 XLog 的报酬吧)国内环境如此,就是很难通过做开源项目获得赞助。

技术值钱吗

@Innei:唉 怎么样才能开源挣钱啊,要可持续发展,什么业务挣钱啊,搞技术真 TM 不挣钱,全给别人打工,Antfu 这样的每个月就一万多点

他说的没错,纯粹追求技术的确是很难获得变现的。因为公司并不会因为你的技术有多好就能多赚点钱不是么,代码写好一点,Bug 产生更少,后期的迭代能更顺利一些就已经很不错了。

我认为,技术本身并不值钱,技术的诞生最终还是为业务服务的

这句话也在我的 GitHub 个人资料 上写了,也是我学习技术的精髓所在,学习到的新东西,最终都要实际落地的,除非这项技术的使用并不会对项目有任何提升,盲目追求新技术可能会产生更多难于解决的 Bug。

我和他说,我目前就通过开源获得了一部分收入,你可以学学,尽管并不是很多吧。他也想进一步了解(从批判恶龙,理解恶龙,到成为恶龙是吧)

我是如何通过开源获得收入的

我目前主要有两个开源的主题项目,SingleFantasy,它们是可以免费使用和安装的。许可证是 MIT,我拿我自己的软件二次开发并收费,也是没有任何问题的。

只是如果想获得额外的服务支持和功能,需要购买我的「赞助」版本。两款主题分别售价为 ¥11.11 和 ¥33.33,我认为这个价格并不是非常贵。我每年可以通过它获得 ¥200 左右的收入,目前也仅仅可以抵消一部分的服务器费用而已,想完全收回本还是做不到的。实际上这个收入非常的有限,无法和正式工作的薪资做对比。

其实当时主要考虑到我的主题竞争力一般,功能也没有其他人的全。就算做的全,卖太贵又很容易被衍生出破解版,这并不是我希望看到的,因此才折中选择了这个或许更容易被接受的价格。

说到这里,就不得不谈谈国人对软件的消费意愿了。

软件消费意愿

国人为软件消费的意愿依旧不太乐观,至少从我身边来看,他们还是会更偏向使用免费软件,或者是破解版而不是收费的。前段时间我一个亲戚让我给她重装系统,软件自然也要重新安装。

微软的 Office 办公软件作为一个普通白领或许必不可少的软件,实际上它是收费的(Office 365 个人和家庭版收费 498 元一年)。很显然我不可能随便装一个网上的盗版给她,这是不负责任的行为,因为很可能隐藏了不受信任的广告或病毒软件,假如玩坏了就和重装系统之前没啥区别了(一开机就出现了一刀 999 的广告)

当白嫖党占多数,并认为免费使用是一种很常见的操作之后,你就能理解为什么做开源软件没有多少收入了。

说说我个人,我其实是愿意为一部分软件付费的。只要这个软件是买断制,而且价格尚能接受。不少游戏我都在 Steam 上购买了正版,为了学习剪辑甚至也买了苹果的 Final Cut Pro 等等软件(打包买有教育优惠,貌似永久使用),在 iOS 上也购买了熊猫吃短信、小火箭等等应用。

一些建议

从个人学习的角度方面看,开源的好处还是大于坏处的,前提是你不会太在意收入上的问题。如果要考虑到商业化,还是需要谨慎些,盲目开源不一定会带来好处。

如果项目是个可商业化产品,的确不太适合在前期就做完整功能的开源,除非你已经做好了不通过这个开源项目获取流量、赚钱的打算。否则从一开始选择闭源,直到这个产品有了名气之后再开源,也会相对合理。大家都知道谁才是“正版”,即便出现了二次修改的版本,也会偏向于选择最开始的那个,当然前提是最开始的那个功能和维护始终都是最好的。

因为早早开源不一定能得到好果子,GPT 火起来之后,市面上出现了不少二次包装 GPT 的产品。如果你的品牌或公司缺乏流量和宣传,你选择把项目开源了,就很容易被人借鉴模仿出类似的产品。结果人家不参与 PR,给你提很多新需求,你的产品没有人用,别人修改的更受欢迎。自己写的代码被别人小改下拿去赚钱了,甚至你的功能更新也被别人当作卖点。这你可以接受么?

前文提到的编辑器项目,它更像是一个基础性设施,而不是某一个具体的可商业化产品。如果它是一个公司的开源项目,并能在自己的商业产品上使用,且该商业产品已经获得了成功。这种情况下,该开源项目即便没有为公司创造营收,也总会提高公司的名气等等,以不至于到随随便便就暂停维护(因为商业产品需要改进,也可以顺带把开源的也改了)。

前面我已经提到了自己如何通过开源项目获得收入的方式,这种服务+扩展功能的方式是相对可取的。我举两个例子,国外有 RedHat,国内有宝塔。虽然 CentOS 和宝塔面板都有不小的骂声,但是至少人家活下来了啊不是么。

关于我徒弟 @Innei 他现在的情况,我也和他讨论了一下。他写的开源项目叫 Mix Space,是一个用于构建个人主页的平台。他已经把现有的功能已经做的很齐全了,但仍有一些未开发的功能(例如相册、豆瓣书单什么的)。

我给的建议是,推出类似插件或定制版本的方式,给一些有需求的用户增加以上功能,并提供收费技术支持。或者是写一个新的前端模板,提供基础版本和 Pro 版本(和我现在的模式一样)。

如果不想考虑以上方式,也不指望能通过项目获得收入,真的可以完全可以按照自己的需求写程序,别人提供的意见选择性去完成就好,(警惕从天而降的产品经理)这样也能让自己平时维护起来更轻松一些。

他问我如何管理两个版本之间的问题,这也是我一直没良好解决方法的坎,目前我都是手动处理合并代码的(上游代码是开源版本,根据开源版本优化付费版本),各位有什么好的办法也欢迎留言~

以上就是我个人有关开源软件的一些想法,欢迎评论发表相关意见!