我自己做开源项目的开发和维护将近 20 年了, 下面分享一下我的开源准则和经验, 希望能够帮助更多的开源作者渡过心理关卡, 过更好的生活。
- 开源本质是热爱: 我们做开源项目, 本质是我们学到了一些知识, 并且有足够能力去实现它。 这些首先是从我们善良的内心出发, 希望源代码按照 GPL3 开源, 其中的原理能够帮助到和我们有同样需求的人们。 这一切都是基于我们内心的善良和热爱, 而不是其他
- 持续学习需要时间: 开源世界崇尚技术领导力和友善的氛围, 但是刨根问底, 一个开源项目是否能够发展壮大, 主要靠的还是内功, 而内功靠的是作者本人的知识储备, 而知识储备的来源是作者的持续学习, 所以, 如果要持续做好开源, 一定要留给自己充足的学习时间, 不能全部时间都用于取悦他人, 很多 issue 实在没时间修复就不要修复。 如果自己没有时间学习新的知识, 开源项目就很难真正的持续
- 以自我需求为导向: 开源项目的所有功能开发都要围绕着取悦自己的需求, 在开发过程中, 一直有很多用户提出很多需求, 做为作者的你, 你要想一想, 哪些是你真正喜欢的功能? 如果一个功能自己不喜欢, 自己都不用, 就不要开发。 不要为了取悦 issue 提交者而去编写甚至合并自己都不用的代码, 自己都不用的代码合并到 master 后, 就是定时炸弹和代码腐烂的开始! 当然, 如果有一些功能确实有用, 只是自己不用怎么办? 建议写好项目文档, 多多宣传, 让能力更强的开发者帮助你开发。 不管代码是自己写的, 还是核心开发者写的, 一定要保证每个功能都有人天天在用。 如果开发者自己都不用的功能, 千万不要加, 那是取悦别人砸自己的脚, 你的代码腐烂那一天, 那些当初随口提交 issue 的伸手党不会帮你说话, 只会说你的项目不好
- 识别真正的合作伙伴: 在开源项目中, 只有两类人的意见你要重视, 一是不懂技术但是付费买你产品和服务的客户, 既然别人付了钱, 就要努力工作去让客户满意。 二是那些技术很强的补丁提交者, 他们付出他们的时间去帮助你完善你的项目, 他们的时间就是金钱, 这些开发者你要珍惜, 他们不但是你第一个项目的贡献者, 很有可能是你以后所有开源项目的贡献者, 钱好赚, 但是志同道合的朋友不好交。 除开这两方面, 剩下的就是看 issue 是不是自己或核心开发者会用到的功能, 不是的话, 千万不要牺牲自己的时间去开发自己不要用的功能, 如果你这样做, 就是浪费你的生命去取悦别人, 这种自己都不用的功能去取悦别人, 不会有好的结果的, 只会让自己累死, 别人还不感激
- 对烂人说不: 大家都说开源社区伟大, 我做了这么多年开源社区的工作, 我的经验就是 “有人的地方就有江湖”。 我分享一下做为开源作者, 重点要对哪些人说‘不’: 一、 白嫖党, 白嫖党利用你的善良, 每天把他自己的工作当作 issue 发过来, 希望你能免费帮他开发功能, 不管什么行业, 这些厚颜无耻的白嫖党是最恶心的, 他们不但只考虑自己的利益, 而且还非常善于利用别人的善良, 向别人提出过分的要求, “比如你造了苹果这样好的操作系统, 你能把代码免费开放吗? 你能给我打工吗? 你能帮我组建团队来做一个和你一模一样的产品吗? ”, 我见过太多这样的人了, 我真的觉得这样的人怎么能够厚颜无耻到这种程度? 所以, 白嫖党是你首先要说 ‘不’ 的人; 二、 伸手党, 伸手党和白嫖党本质是一类人, 只是没有白嫖党那么无耻, 伸手党的主要特点是, 他们有一定的技术, 主要特点就是懒, 遇到什么问题, 不提供重现步骤, 只是简单的一句话就像让你修复他遇到的 bug, 或者他有一个特殊的环境要逼着开发者去修他环境下的 bug, 比如 “开发者主要用 Linux, issue 提交者提交了一个 bug, 说他主要用 Windows, 非要逼着开发者去修 bug”, 如果开发者拒绝, 他们就会到处宣传说开发者维护的项目不活跃或者不热情, 这时候作为开发者你千万不要因为愧疚或者觉得自己错了, 记住, 你本质是要跟付了你钱的客户或者付出自己时间的开发者服务的, 你有你自己的生活, 人生很短暂, 为什么要为这些给你 “戴帽子” 的伸手党服务呢? 你都不认识他们; 三、 喷子键盘侠, 这个社会除了白嫖党、 伸手党, 还有很多无聊的键盘侠, 他们一不付费, 二不用你的软件, 他们主要的目的就是通过和高手去争论来抬高他们自己, 比如 “你的项目为什么不开源? 你不开源你就是罪人。 你为什么不把开发文档写的像微软 MSDN 那样详尽? 你的项目就是没有国外的那个好啊。 你们天天半夜修 issue 是活该, 你们看国外的开发者写代码的同时还玩赛车和冲浪啊, 你们的创造力不行啊…”, 你知道吗, 这些喷子他们的最贵的东西就是那把键盘, 用查理芒格的话来对付他们 “不要和猪打架, 你一身泥, 而猪乐在其中”
- 承认世界是不完美的: 我们之所以会很累, 我们之所以会被恶心的人利用, 其实根源是, 我们认为世界应该完美, 我们有足够的能力或者责任去让世界完美, 或者认为自己的精力是无限的, 可以靠英雄主义去拯救世界。 所以, 除了抵御邪恶以外, 最重要的是我们要调整自己的期望值和认清现实。 这个世界本来就不是完美的, 或者说是每个人看问题的角度不同。 当我们承认这个世界不是完美的, 当我们承认自己的学习能力不等于无穷的精力时, 当我们承认当下自己的感受才是生活, 过去的悔恨和未来的期望不是生活时, 当我们知道身边的人才是这个世界你最应该重视的朋友时…我们就从内心构建了自己的开源哲学体系, 有强大的信念和平衡的生活, 我们才不会为别人而活, 才不会受到恶人的干扰。 当我们进入写代码是心流、 分享是交朋友的快乐时, 那时候创造力才真正开始…
- 离开电脑: 对于一个像我这样编码如魔的人, 说出这样的话, 简直不可思议。 但是我要说的是, 上面的很多情况的诱因是, 我们无时无刻不在电脑身边, 电脑太容易连接到网络, 太容易让恶人说话恶心到你了, 电脑也太容易让我们浪费时间去说服陌生人, 电脑太容易让我们进入二元争论的状态了。 离开电脑的目的不是不用电脑了, 而是把电脑当作表达的工具, 电脑对于开源创作者就像是作家和笔的关系, 而不是陌生人放在你身边的噪音喇叭。 创作完以后, 就离开电脑, 感受家人的关心, 感受大自然, 感受宠物的无限信任, 感受自己无聊的灵感… 这些对于健康的心理和持续做开源非常重要。 下次你上线的时候, 只和真正的客户以及协作开发朋友沟通, 遇到烂人果断拉黑, 他们一秒都不值得
“可持续开源” 是我这几年最深刻的感悟, 但是怎么系统的做到, 是今天带家人旅游时才想清楚的, 就是上面的 7 点经验, 分享给开源老炮和新的热爱者们, 多多爱自己吧, happy hacking!