开源明明无“利”可图,它的价值究竟在哪
我做开源项目Tiny RDM半年有余,最初的目的很纯粹,就是从没真正搞过开源,想去切身体验一番,顺便悟一悟软件产品宣传和获客之道。虽然常常在Github和Gitee等开源代码仓库上白嫖别人代码和框架,却很少真正参与其中。
说到做开源项目很多人认为那是吃饱了撑的,也有的说肯定是挣够了不差钱的人才会搞,更有人认为一个开源项目火了是必定挣钱的。但事实上大部分项目真的就只是为爱发电而已。既然它无利可图,它的价值和意义究竟在哪,我亲身参与后留下了一些思考和总结,希望可以给正在做或者打算做开源项目的开发者一些能量和动力。
获得业界名气和同行认可
一个开源项目所能为他人提供的价值,通常会体现在Star的数量上。虽然Star在某种意义上仅仅是个收藏夹,但也侧面反映了其他开发者和使用者对项目的感兴趣及认可程度。因此Star越多越能表明开发者及其项目所带来的专业性和影响力。
过往我向其他程序员自我介绍的时候,我没有什么衔头,因为我确实也没做过什么出众的事。但是现在我会自豪地说,我是Tiny RDM作者。
提升自己的技能
程序员这个职业一直都是终身学习的典范,当今各种开发语言和框架层出不穷,根本不可能学得完。也正因为有这么多的选择,你可以挑选当下热门或者你感兴趣的方向,来一次说干就干的实战。比如Tiny RDM的前端使用比较热门的VUE,而框架则选用Gopher们感兴趣却有相对偏门的Wails,也算是对基于Webview开发桌面应用的一种实战和尝试。而在这之前,我仅仅只是个有10+年经验的游戏开发程序员而已,但现在我也是一个应用软件开发者了。
为了做好这个项目,我还对Redis做了更深入的学习,它常用的几大类型,它的几种连接登录方式和部署解决方案,各种数据编码/解码格式等等等等。在这之前我做过最复杂的也只是基于Redis实现的分布式锁。
其次它也是你使用新工具链,新技术的一个契机。在日常工作中,主求稳定和快速产出,不会有公司因为这个新出的技术很酷,而特意让你用它试错新项目或者重构老项目。而自己建立一个开源项目,你就可以用上很多没机会接触的新玩意。可能很多人没想到,这是我第一次用vue3和vite。
验证项目可行性
一个没有用户的产品是没有意义的,特别初次做产品,很多人会愁于宣传推广。没有用户意味着没有反馈,你不知道你做的事情是否偏离了市场需求,是否是为目标用户所喜爱。在这个流量为王的时代,酒香也怕巷子深,籍籍无名的产品要做推广真的举步维艰,要么靠钱,要么靠人脉,而很巧的是我刚好都没有。
开源也可以成为产品的优点之一,无形中为你产品增强了吸引力和竞争力。很多自媒体不一定愿意免费给粉丝介绍付费产品,但是一般都乐意推广开源软件。试想一个开源免费的产品用户都寥寥无几,那它商业化的意义又在哪呢?
Tiny RDM从第一个版本到至今,接受了好几个比较大的改动和调整,数据分段加载、单数据库切换、组合搜索筛选等,基本都是用户诚恳的建议,再加上我自己的思考后最终做出来的效果。
养成更良好的编码习惯
与以往常闭源项目“能跑就行”的观念不同,公开的源代码,完全裸露了代码风格和实现细节,会被千万程序员所看到、所学习、所修改,你也不希望你的“屎山”代码流传于世吧。所以作者会更在意内部架构是否健壮,注释量是否合理,文档是否详尽,逻辑实现是否可以更简洁,更会常常去思考这些问题能否改进,是否是时候开始重构了。
我也在自己项目中做了好几次影响范围很广的重构,每一次大动筋骨,都让我对项目整体架构梳理得更加清晰明了。
提供持续前进的推力
当你的项目越来越多人关注之后,在一声声的“大佬”声中,你开始迷失自我,开始尝试给自己一个目标或者心理暗示:你就是“大佬”或者你是要成为“大佬”的人。经过无数次版本迭代,你遇到了各种离奇古怪的问题,你开始不断学习并反复折腾和试错,或填平或跨过了一个又一个的坑。随着每次代码的提交,每个版本的发布,你已经鬼使神差离真正的“大佬”越来越近了。
热心的用户会给你提各种issue和pull request来帮忙完善你的代码实现和功能缺陷。也会有人因为从你的作品中得到了帮助或解决问题的灵感,而发自内心感谢你,给你更多的鼓励,甚至主动“请你喝杯咖啡”。这一切都是你持续创作持续输出的推动力,让你可以走得越来越远。
打磨你的工匠精神
程序员是个很难伺候的群体,他们对软件产品的要求极为挑剔苛刻,因为他们知道大致的实现方式和原理,他们有很多灵光的想法,他们也能给你接地气的建议。如果你做得不好,他们甚至可以亲自写一个取而代之。所以你要花更多心思打磨作品,界面更漂亮、资源占用更少、数据处理效率更高、系统兼容性更好、操作更简便、功能更齐全、迭代更迅速。
如果你能因此坚持下来,久而久之你也是个具备工匠精神的开发者了,你不但代码写得好,还是个会设计、会优化、会分析、会运营的多面手。
可以实现全球接轨
国内很多程序员,其实英文并不好,甚至对英文有一定的抗拒,更别说要给应用做英文版本,编写英文的使用手册了。其实这些担心大可不必,少了商业应用的心理负担,即使语法有错误也不会有人取笑你。老外会很乐意和耐心跟你交流,这完全是量身提供一个沉浸式的外语沟通体验。更何况随着AI的崛起,翻译辅助类的应用也如雨后出笋,善加使用就能得到质量不错的内容。我一个英语四级没过的人都敢这么玩,你又何惧之有呢?
Tiny RDM的项目README和官网以英文作为主要语言,甚至注释都是蹩脚的英文,为的就是有朝一日将它推向全球,让这个世界也能用上国人开发的软件。
除了以上说的几点外,其实还有很多关于开源社区的方向可以聊,比如你可以认识到一群志同道合的小伙伴,体验到全球合作所带来的效率提升,也会有更厉害的同行加入,不过很遗憾我还没经历过这些阶段,目前依然以独立开发的身份参与自己的开源项目,所以这里就不卖弄了。
总而言之,开源并非真的无“利”可图,也不是只有物质富足的人才可以参与。开源为当今信息科技行业的蓬勃发展起到了举足轻重的作用,每一个优秀项目的背后,都有一群默默付出的开发者,他们真的在改变世界,是个很值得尊敬的群体。
所以开源属实不易,今后如果遇到你认可的开源项目,请不要吝啬点一个Star如果有机会,也邀请没有参与过开源的你们来体验一翻,我很期待你们更优秀的作品面世
我是Tiny RDM的作者Lykin,目前在摸索开源和独立开发,如果你也对这些方面感兴趣,可以关注我微信公众号“独立开发记事簿”,不定期分享感悟心得和经验。期望共同进步,一起成长。