humingcheng / study_notes

The only significance of notes is to reduce the cost of acquiring knowledge.
0 stars 0 forks source link

开源问题 #20

Open humingcheng opened 6 years ago

humingcheng commented 6 years ago

开源无法解决“赢别人”的问题。因为开源的内容为大家共有。

既然开源无法赢别人,那我们为何要耗费大量人力,去发布开源软件,营造开源社区?

想了半天,我觉得可能原因是:做大市场(创造市场)。

赢别人的前提是,要有赛场。维护开源的战略之一是,创造或做大市场,扩大市场的总收入,自己的收入当然也会更多。即不仅要分蛋糕,更要做大蛋糕。

但是,这仍然解答不了我的疑问:为什么要推出新的开源微服务开发框架?微服务这个市场,已经被云计算、微服务的先行者创造并拓展了,我们是为何要做一个新的?

赢别人,办不到,创造并做大市场,别人已经做到了。我们到底要干啥呢?

sdk还有一个问题,留不住客户。因为阻止不了别人将我们的sdk用于其他平台。

那么我的建议是什么呢?

暂停gosdk商业版本更新,全部在开源维护。

humingcheng commented 6 years ago

开源软件与商业软件的关系?这个问题困扰了我很久,总感觉怪怪的,又说不出怪在哪里。后来我发现了,这个问题的角度,其实是开源和商业的“机制”,不是具体的软件产品。这就尴尬了,你搞开源软件,我搞商业软件,俺们不争具体的产品,而是争开源与商业的“机制”,是不是没事干啊?万一你搞的是数据库,我搞的是操作系统呢。就好比一个股份制的玩具公司,一个有限责任制的化肥公司,这俩公司不好好生产产品,却去辩论股份制和有限责任那个更优秀。作为软件从业者,不应该关注开源与商业的关系,而应该关注具体的软件产品。

我维护的开源软件与我的关系?我发现这个问题又是在误导人,这让我们只注意“关系”,而忽略了利益。就好比有套房子,房产证写你的名字,但你不能住,不能租,不能卖,继承权是隔壁老王的。然后房价暴涨,所有的恭喜你,你很高兴,我的房子升值了。so what?你实际得到的只是名分而已,没有任何意义。我们应该关注的是,开源软件能否提升我的名誉,为某个软件产品创造利润,而不是“这个开源软件是我的”的名分。

humingcheng commented 6 years ago

gosdk/mesher为什么要对接istio呢? 我的理解是,为了降低用户切换至cse的成本。切换框架需要巨大成本,这是抢用户的最大阻力,所以我们最好能保持新框架对旧框架的兼容,降低用户切换框架的成本。 如果对于根本原因理解错了,那么我下面的整个分析都是错的,所以如果你发现根因错了,请帮我指出来哈。 javasdk对接spring,大概是这个原因,让用户既能享受cse的性能、治理、稳定性优势,又不付出切换成本。 但是gosdk/mesher是不是也这样? mesher对接istio。本就没有成本,去降低什么?service mesh是零侵入的,使用mesh本就没有成本,不管是用istio还是使用cse,成本已经降无可降了,还兼容干啥? gosdk对接istio。框架相比于service mesh是增加成本的。gosdk对用户的意义在于性能:对于istio的用户来说,gosdk的性能要远胜于mesh,能够抵消成本的上升,才会用gosdk。但要注意的是,gosdk和cse-mesher相比性能也要大幅占优,否则用户直接用cse-mesher,那就回到了上一条,如果用户要用cse-mesher,我们根本不需要做兼容。

java兼容spring,是为了让spring的用户低成本切换到java。 go对接istio,是为了让go的用户低成本切换到istio。我这么理解对么。这个不对,真正目的在于流量。 找流量的方式不一样。java兼容spring,是在一条河旁边挖条沟,把流量引流过来。go/mesher对接istio,是直接跳到河里,就在这条河里使用它的流量。两种策略有什么区别,使用场景是什么?当力量远小于对手时,加入对手,利用他的资源,否则有被消灭的危险。力量接近或超越对手时,挖对手资源,消灭对手。

humingcheng commented 6 years ago

mesher对接istio的思考: mesher对接istio的最终目的是什么?不仅是mesher对接istio,servicecomb的最终目的是什么? 是cse实例(用户)。 mesher对接istio并不能达到这个效果。 因为我想不通用mesher有什么方法实现这个目的。 用过用户想从istio切到cse,mesher起不到作用。 怎样让用户切到cse,1,找到用户。2,让用户上来。 具体点就是,1,找到istio的用户。2,让istio的用户上cse。 “mesher对接istio”可以做到第一点,因为“mesher对接istio”后,cse获得了一部分流量。 但是“mesher对接istio”无法做到第二点,因为用户想要上cse,不需要“mesher对接istio”。用户直接就上来呀,用户在istio和cse都是用mesh,mesh的最大特点就是成本低,用户从istio切换到cse的成本极低,不需要“mesher对接istio”来推动。 我们做了“javasdk对接spring”,是因为从spring切换到javasdk有不小的成本,我们通过“javasdk对接spring”来降低这个成本,成本从100降低到10。而用户从istio-mesh切到cse-mesh,本来就几乎没成本,“mesher对接istio”的作用仅仅为,成本从1降低到0.5?“mesher对接istio”这件事,有意义么?

不论用户在istio下用了go-chassis还是sidecar,用户从istio切到cse的阻力都非常小。所以“对接istio“的作用仅仅为获取用户流量。

因为,mesher要想从istio抢用户过来,mesher在istio中的表现要和envoy及其他sidecar差不多,以占据占据istio下sidecar的份额,然后期望这部分份额的用户切换到cse。然后,cse相比于istio也要差不多,用户才愿意切到cse。

java抢spring用户: 1,寻找spring用户:推广(成本100) 2,让用户低成本切到cse:java对接spring(成本100)

go抢istio用户: 1,寻找istio用户:推广(成本100) 2,让用户低成本切到cse:go对接istio(成本500)

mesher抢istio用户: 1,寻找istio用户:推广(成本100) 2,让用户低成本切到cse:什么也不做(成本0)

成本对比:200:600:100

go/mesher对接istio和java对接spring本质一样,即方便用户切到cse:用了spring可以低成本切到cse,在istio下用了go可以成本且到cse,在istio下用了mesher也可以低成本切到mesh。

humingcheng commented 6 years ago

mesher对接istio平台,我想找个相似的例子。 其特点为:

运营商-sim卡

我觉得这一对关系符合要求。 mesher对接istio平台,就像是联通把自己的sim卡对接移动平台。mesher与sim卡一样,对接他人平台,就是抛弃了自己的平台,为他人平台做嫁衣。

humingcheng commented 6 years ago

开源有一个优势,即有很多人处于技术本身的热爱,或者锻炼,进行贡献。 这是错的。 处于技术的热爱,来参与开源,这不是开源成功的原因,而是结果。你热爱技术,想参与代码开发,但是你并非只能参与开源,你可以自己搞一个helloworld嘛,你可以跟同学捣鼓一个软件么,再不济也可以为腾讯免费工作呀,这些都可以释放你热爱技术的热情,谁说你只能参与开源了?甚至,你参与开源,你可以专门选一些很挫的项目呀,帮助它变得优秀,为什么你最终选择去贡献一个优秀的开源软件?

因为一个开源软件优秀,你才把你对技术的热爱奉献给它的。而不是反过来,因为你热爱一个开源软件,所以它变得优秀。出于热爱而向开源进行贡献,是结果,不是原因。

humingcheng commented 6 years ago

开源的本质是什么,我们可以在mit的license中看到如下声明: including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software

即允许:使用,复制,修改,合并,出版,分发,再许可,销售

为什么开源的专家强调开源软件最重要的特点是自由,而非免费? 开源是一种协作方式,与其他协作方式类似,它也有自己的规则。只要是游戏规则,自然就是成体系的,有出就有入,有攻就有守,如果不成体系,只出不入,就玩不下去。 开源软件首先对使用者很便利,比如免费,开放源代码。免费当然能吸引使用者,开放源代码相当于信息公开,可以让使用者更放心。但光使用是不够的,还得有贡献。谁来贡献?当然是使用者来贡献,所以开源软件允许你修改,软件都会有bug,都要加入新特性,使用者发现bug或者需要新特性时,有其自身的动力来修改代码,而为了能最大程度保持与社区同步,分享其他开发者修复的bug和加入的特性,这些修改常常被贡献到社区,使得软件不断完善,吸引更多使用者,形成良性循环。

humingcheng commented 6 years ago

开源的受益者有哪些? 开源抢了哪些人的利益 有一个悖论,软件的使用人多,市场大,但是反而开源容易占据优势,挣不着钱。 如果某个领域使用人少,商业软件就有优势,但是市场又小。 软件还能不能卖钱,哪些能卖,哪些不能卖?

humingcheng commented 6 years ago

开源和学术研究很像,全球科学家一起贡献一个学科。问题是同样的,收益是什么?理论研究的收益是什么?可能是学校的职称,科研经费。那高校为什么要支持这些研究,毕竟研究出来的东西,也奉献给别人了。 学术期刊的作用是什么?是能力评定。 科研院所并没有鼓励公开科研成果,他们只是想要找更优秀的人。是能力评定的机制决定了,科研人员要公开科研成果。 比如有个学者,它不参与别人的学术会议,也不发表论文,不公开成果,也就是只索取别人的成果,但是不贡献,实际上他的能力并不差,因为别人知道的他都知道,他知道的别人不知道。但是能力强,是要有人肯定的,谁能证明你能力强?还有,别人如果搞出来跟你相同的成果,但是发表了,那你不是哑巴吃黄连?只有同行才能证明你能力强,也就是你必须要得到同行的肯定,如何获得肯定,当然是发表论文了。

humingcheng commented 6 years ago

既然开源这么牛逼,为什么会有软件专利这种东西?