我发现对于小公司或初创公司来说开源其实是一把双刃剑,以为把开源的东西拿过来换套皮就摇身一变成自研。这对于老板而言可以拿出去骗钱骗投资,但对开发来说不一定是好事,因为有不少潜藏的坑等着你去踩,也就是俗称的“二开”。
首先是定制化问题。拿到别人的开源项目代码总得要去熟悉,甚至还要去理清当中的依赖、调用链、逻辑等等才敢说自己可以“尝试”去改了,但凡未洞悉全貌直接就上手没改一改这,又改一改那,很快就会碰到“诶,为什么刚才明明能跑,现在又跑不了了,我明明也没改什么东西”的局面。
其次就是上游的开源项目不更新或者闭源的问题、以及频繁更新和自己需求代码冲突的问题。本身就依赖的人家的开源项目来改,那么有一天人家不更新了或者直接不开源商业版本的功能时,团队是否有能力hold住并能自己去复制并实现想要的功能?又或者上游频繁更新,Fork的部分本身就加了满足自身需要的功能代码或业务逻辑代码,此时不仅得花时间去合并,甚至与上游代码产生冲突(或者严重冲突)时该如何去解决,还是就此分道扬镳,以后只在自己Fork的部分继续前行?
还有就是领导觉得我们既然有这么多所谓的“自研”产品了,突然灵光一闪想着能不能想着把这些产品集成到一块串起来用,比如A项目的某个页面模块专门嵌个B项目,C项目和D项目页面又放到B项目页面的某个按钮上作为弹窗。本身不同的项目就自己有着自己的一套技术栈,加上其他鉴权认证逻辑那就更为复杂了,尤其是前端项目那么多的技术栈和框架甚至还得跨框架组件通信,不同页面之间的鉴权问题在没有统一的中心认证情况下就够开发喝一壶,而这就是我正在经历的,我也搞不定,只能是重定向跳转折中处理。
我发现我大部分工作时间都花在了二开项目上,反而是在新的项目上最少。因为新开的项目没有任何技术负担,不用做任何代码逻辑上的适配,只需要针对需求功能拆解、实现、然后测试提交上线就完事了,而二开项目所花的时间至少是新项目或真·自研的一倍甚至更多!