如何同步上下游开源的维护和协作方式
导读 | 安德森在《创客》一书中曾说过: “开源创新是互联网胜利的秘密所在,我认为它也会是下一次工业革命的引擎。中国主导了20世纪的制造工业,开源创新将是中国在21世界继续主导制造业的必经之路。” |
什么是开源?
Open-source software (OSS) is computer software with its source code made available with a license in which the copyright holder provides the rights to study, change, and distribute the software to anyone and for any purpose. ---- FromWikipedia
开源就是拥有源代码版权的人,允许其他人在一定许可证所述范围内,访问源代码,用户可以自行进行修改和和学习。---- FromWikipedia
为什么要开源?使用开源本身带来的技术交流和站在巨人肩膀上协作,这些都是老生常谈了。网络时代最重要的改变就是开源创新。
JITStack认为:开源,即是分享对于时代创新与进步的重要意义,其具有浓厚的创客色彩。其中每一个进行或参与代码创造的人都可以被称作“创客”。
开源像在已经有火星的状态下,添加大量的燃气,必然有巨大的帮助。开源和分享的思维,可以利用自己新的创新来继续保持优势,并促进整个行业的上升。
先以免费策略来扩张圈地,等拥有了一定的用户之后再精耕细作、推出收费服务,也是当下许多互联网公司的生存发展之道。
在IT和互联网界不乏开源的成功例子:
把 Solaris 转向在GPL下开源,是Sun公司负责软件战略的高级执行副总裁Rich Green的主意。他表示,Sun选择在GPL下开源Java,无疑可以使Java技术的生命力更强,使得Java可以走得更远,既然如此,为什么不把Sun现存的一些技术也放到GPL下开源呢?也正是开放产品专利,帮助企业走出了倒闭危机的困境。
80年代,IBM采取了开放相应的技术标准的策略,使得大量的PC兼容机厂商蓬勃兴起,这些PC兼容机厂商事实上也就成为了IBM松散而又有力的联盟,围绕IBM PC和IBM PC兼容机的应用软件相继被开发出来,而它的竞争对手王安电脑公司却由于不与IBM标准兼容而被淘汰;
Linux操作系统的作者林纳斯·托瓦兹(Linus Torvalds)把这款操作系统免费提供给了任何人,连微软首席执行官史蒂夫·鲍尔默(Steve Ballmer)也承认,Windows在网络服务器市场上败给了Linux;而后,谷歌以Linux为内核开发出Android操作系统,又把Android免费提供给所有的硬件制造厂商,使得Android成为全球最流行的移动操作系统。
对于企业来说,拥抱开源可以带来哪些优势:1、群众的力量
中小型公司自研的代码基本是比不过开源的,很多时候都是写的是比较简陋的版本,或者仅仅是为了某些很没有意义的提升点去做,对自己的成长不见得比用开源软件更好,容易局限在自己写的代码中,和真正优秀的框架脱节。开源后用户会不断提建议为什么没有哪个黑科技,然后你的技术越来越前沿,开源库也会越来越先进。
2、透明性
靠谱的开源软件是非常值得使用的,特别是一些比如特别通用的,比如存储,网络框架等,基本没必要自己再造轮子,类似tidb这么强的团队也没有自己造轮子去写存储,而是基于rocksdb。开源后会有很多高手不断吐槽你,然后你的代码越来越接近行业标准,开源库也会越来越规范。
3、可靠性
自研的成本有时候也很高,一旦核心离职,会有毁灭性打击,不像好的开源软件,基本上都有很大优秀的工程师可以招聘,并且快速接替。同时用户会帮你踩坑,然后坑越来越少,这样开源库也会越来越稳定。
很多人觉得代码是一个软件公司最宝贵的资产,把这些最宝贵的资产让别人免费获取,没有任何获益点。对一个技术型公司来说,最宝贵的资产其实是人,对一个开源项目来说,最核心的资产是一个活跃的开源社区以及他人对这个项目的认可。开源技术和开源思想对开发者和非开发者都是有益的。当下互联网商业模式正所向披靡。
- 如何才能学到Qt的精髓——信号槽之间的无关性,提供了绝佳的对象间通讯方式,QT的GUI全是自己的一套,并且完全开源,提供了一个绝好机会窥视gui具体实现
- 如何复位———异步复位,同步释放的方式,而且复位信号低电平有效(转)
- 如何将安卓系统的手机屏幕实时同步显示在电脑上(包括无线与USB有线方式含DLNA)
- xml文件的概述与应用场景 xml文件的组成部分&如何编写xml xml的两种解析方式的原理 Dom4J开源工具的使用
- 在日常维护中,如何实现Microsoft Lync Server 2010自动启用和同步Active Directory 域服务中所有用户帐户的信息?
- Pull Request的正确打开方式(如何在GitHub上贡献开源项目)
- 如何用同步的方式读取 WCF RIA Servies 中List
- 如何在GitHub上协作开发开源项目?
- 如何发布自己的开源库到JCenter实现AS中可以以依赖的方式引入
- 如何正确地给 github 的开源项目提交 pull request具体一些,比如 fork 之后创建几个分支,修改后如何和原项目同步
- Github使用之Pull Request的正确打开方式(如何在GitHub上贡献开源项目)
- 如何把应用程序的快捷方式(shortcuts)添加到桌面——(开源项目apps-for-android中的AnyCut项目详解)
- 关于WCF中间层服务器端DTO属性更新如何同步回仓储实体的处理方式
- Pull Request的正确打开方式(如何在GitHub上贡献开源项目)
- 如何在silverlight中以同步方式 获取sharepoint2013站点的当前登录账号
- github fork开源项目后如何与源项目保持同步
- 3分钟教会你如何在线创建表格,共享给别人一起协作,数据同步!
- Github网站加载不完全,响应超时,如何解决 Github是一个代码托管平台和开发者社区,开发者可以在Github上创建自己的开源项目并与其他开发者协作编码。毫不夸张地说,高效利用Github是一
- 列出线程的实现方式?如何实现同步?
- 如何在GitHub上协作开发开源项目?