最近遇到一个很典型的情况。
有人买了我的插件,一开始希望我补排行榜功能,我说目前底层库不支持,后续有空会研究,但现在没时间。
后来又希望我提供未加密源码,理由是「买了就是为了学习和二次开发」。
我想借这个机会说一下我的观点:
我拒绝「既要又要」。
既希望买的是商业成品,又希望作者提供完整源码方便学习;
既接受商业软件的定价,又希望享受开源项目的透明度;
既希望作者长期维护、持续更新,又希望把核心实现全部开放。
这些需求单独拿出来都很合理,但放在一起,就不是一件事情了。
我做的是 商业插件 ,不是开源项目。
如果我的目标是开源,那我会直接放 GitHub,而不是花时间做文档、维护版本、上架商店。
我没有承诺源码开放,所以选择加密部分实现,这是产品设计的一部分,也是商业选择的一部分。
当然,我也知道有人需要二次开发,所以我专门预留了扩展接口,让大部分定制需求都可以完成,而不是完全封死。
如果你的需求是:
- 必须阅读全部源码;
- 必须修改所有内部实现;
- 必须以源码作为学习资料;
那么我的产品可能就不适合你。
这没有谁对谁错,只是需求和产品定位不匹配。
最后,我也觉得这件事提醒了我自己。
以后会把「核心代码加密、非开源,仅提供扩展接口」写得更明显一点,让大家购买前就能判断是否符合自己的需求。
商业软件可以不开源,开源软件也可以收费。
但不要要求一个商业产品,同时满足「闭源商业」和「完全开源」两套逻辑。
总有人会喜欢,也总有人不会喜欢。
边界说清楚,比什么都重要。
