成功的开源软件都有什么样的特点?修改
是什么让那些成功的开源软件从众多开源竞品中脱颖而出的?修改
举报
添加评论
分享
•
邀请回答
按票数排序
按时间排序
20 个回答
谢邀,所谓成功的开源软件嘛,就是有相应的捐赠地址,并且还真的有捐赠。
还且还会再显眼位置放置捐赠链接,比如我的项目的支付宝捐赠链接就是:13641344123。
昨天,我把打了补丁的pTeX透露给日本方面,结果当然是有相应的需求的,他们很期待。
因为我的TeX日本人几乎不用再学习新的东西就能直接使用,要知道日本的pTeX普及率是100%。
这也是成功的开源软件的一个特点,受众多,用户群比较广泛(这样才能多收捐赠啊)。
但是在我在今天凌晨的时候,解决了标点压缩的模式问题之后,发现封装部分可能有个参数错误。
但是我还没改过来。这也是成功的开源软件的一个特点,修正bug非常迅速/甚至是全天候打补丁。
还且还会再显眼位置放置捐赠链接,比如我的项目的支付宝捐赠链接就是:13641344123。
昨天,我把打了补丁的pTeX透露给日本方面,结果当然是有相应的需求的,他们很期待。
因为我的TeX日本人几乎不用再学习新的东西就能直接使用,要知道日本的pTeX普及率是100%。
这也是成功的开源软件的一个特点,受众多,用户群比较广泛(这样才能多收捐赠啊)。
但是在我在今天凌晨的时候,解决了标点压缩的模式问题之后,发现封装部分可能有个参数错误。
但是我还没改过来。这也是成功的开源软件的一个特点,修正bug非常迅速/甚至是全天候打补丁。
真正解决用户问题,持续更新,使用方便,文档齐全,有技术支持,有比较好的架构,方便二次开发,有比较好的社区机制。
其实最根上的,还是需要有资源做这些事情。现在成功的开源软件,都是背后很多资源支持起来的,资源包括很多,钱的支持,人的支持,物的支持。:)
其实最根上的,还是需要有资源做这些事情。现在成功的开源软件,都是背后很多资源支持起来的,资源包括很多,钱的支持,人的支持,物的支持。:)
天时地利人和。这里就用成功开源软件的 NO1 Linux 作为例子。
先说天时,由Richard Stallman在1983年发起的开源,发展到1990年时已经有一整套完善的编译器,编辑器,shell 以及界面,而要将这一切揉和在一起呈现给用户的最重要的部分,底层操作系统,却一直悬而未决。当时开源操作系统最佳的候选者386BSD,也就是MacOS 的爷爷,陷入了版权的法律泥潭而不能自拔。而由Linus Torvalds亲自手写的Linux,本身不存在版权的问题,其横空出世的时间,刚好又赶在了需求爆发的临界点,自然得到了全世界的追捧,这里可谓天时。也就引出了成功开源软件的第一个特点:在合适的时间出现,满足了某个领域最迫切的需求。
再说地利,Linux Torvalds在1997到2003年之间加入了Transmeta公司,整个 Linux 社区都在抱怨 Linux 的开发进度变得缓慢,而1999年 Red Hat赠予Linux Torvalds的股票期权,让 Linux Torvalds衣食无忧的同时,也促成了Linux Torvalds离开 Transmeta 以及成立Linux 基金会,从此专注的 Linux 走上了更加快速的发展道路,这里可谓地利。引出了成功开源软件的第二个特点:给企业创造了价值的开源软件,得到企业的支持和回馈,形成双赢。
最后说人和,团结在 Linux Torvalds周围的全世界最杰出的一批程序员,每天都在 Linux 的舞台上上演坚持与抉择,大到最早的微内核和宏内核之争,小到调度算法引入CFS引起的种种争议,Linux Torvalds用事实证明了他和他(她)们的一次次地选择都是正确的。连Linux Torvalds顺手为 Linux 版本管理所创造的 Git,也成为了版本管理领域当之无愧的王者,同时也催生了现在风头正劲的公司Github,这里可谓人和。由此而来成功开源软件的第三个特点:有一位杰出的创始人,团结了一批天才的程序员,并持之以恒的进行创新、维护和改进。
先说天时,由Richard Stallman在1983年发起的开源,发展到1990年时已经有一整套完善的编译器,编辑器,shell 以及界面,而要将这一切揉和在一起呈现给用户的最重要的部分,底层操作系统,却一直悬而未决。当时开源操作系统最佳的候选者386BSD,也就是MacOS 的爷爷,陷入了版权的法律泥潭而不能自拔。而由Linus Torvalds亲自手写的Linux,本身不存在版权的问题,其横空出世的时间,刚好又赶在了需求爆发的临界点,自然得到了全世界的追捧,这里可谓天时。也就引出了成功开源软件的第一个特点:在合适的时间出现,满足了某个领域最迫切的需求。
再说地利,Linux Torvalds在1997到2003年之间加入了Transmeta公司,整个 Linux 社区都在抱怨 Linux 的开发进度变得缓慢,而1999年 Red Hat赠予Linux Torvalds的股票期权,让 Linux Torvalds衣食无忧的同时,也促成了Linux Torvalds离开 Transmeta 以及成立Linux 基金会,从此专注的 Linux 走上了更加快速的发展道路,这里可谓地利。引出了成功开源软件的第二个特点:给企业创造了价值的开源软件,得到企业的支持和回馈,形成双赢。
最后说人和,团结在 Linux Torvalds周围的全世界最杰出的一批程序员,每天都在 Linux 的舞台上上演坚持与抉择,大到最早的微内核和宏内核之争,小到调度算法引入CFS引起的种种争议,Linux Torvalds用事实证明了他和他(她)们的一次次地选择都是正确的。连Linux Torvalds顺手为 Linux 版本管理所创造的 Git,也成为了版本管理领域当之无愧的王者,同时也催生了现在风头正劲的公司Github,这里可谓人和。由此而来成功开源软件的第三个特点:有一位杰出的创始人,团结了一批天才的程序员,并持之以恒的进行创新、维护和改进。
john crystal
赞同
简单回答是:有人用和架构好。这两个是核心问题。
首先要明白,开源软件是为了解决问题,不是为了情怀和理想。“原生”的开源软件是这样发展起来的:我要解决一个问题,写了一个软件,对这个软件保密对我意义不大(不靠这个赚钱),然后我就把它开源了,其他人要解决类似问题,然后他也用这个软件,就用这个软件改巴改巴,得到了他的解决方案,但他改得很少,也没有兴趣持续维护这个东西,他就把东西回传到原来的库上了,原来的库就得到增强。这种事情发生多了,就会产生一个大家都愿意回传的分支,围绕这个分支,就会形成一个圈子,这就是社区。到这个社区的改进形成正反馈后,就会有越来越多的人愿意回传代码,否则自己的维护成本太高。好比我现在立即要作一个播放器,从哪里开始,找一个合适的OS呗,可能就选了Linux,加上两个加速器,屏幕,声卡,GPIO之类的驱动,跑起来了。这东西就是给我的硬件做的,而且都是些通用的东西,保密的意义不大(虽然不是没有),但主线内核不断在修Bug,改安全漏洞,2个月一个版本,我自己改根本改不过来,就干脆回传了,Linux就是这样了解到各个用户的需求,然后慢慢就壮大了。很多人这样,其他人就不得不跟从了。那些自以为很聪明,拿着代码回家自己维护的,工作量大了几十倍不说,东西比别人还差,这些公司慢慢就会被逼死,在这个领域,开源就会成为主流。
总的来说,开源如流水,水要流到哪里,是自然而然的。但水少的时候,你可以控制它,但它变成黄河了,你就只能顺着它了。
这样,就涉及我说的第二个问题了,要架构好。不少人简单地认为,架构好就是什么分层好啦,使用什么Patten啦,文档好啦。这些是一方面,但这些不是最重要的方面,架构好是演进的时候最大限度减低使用者的开发成本。
好比你做了一个OS,我基于你的OS开发了一个应用,花了我30人月的代码,结果我本身还不要增加什么功能呢,就升级一下你的OS,我就要额外投入10个人员来做修改。那我肯定未来不想用你的这个OS了。这就是架构的好坏。你当然可以不修改,这样我就没有这个问题了,但那样我要的新功能(通常是和别人比出来而要的功能),我还是要投入人力,这我同样觉得不爽,如果是那样,我就会拉分支,到时我才是主线,你那个项目就不存在了,我才是社区。很多社区的maintainer,把自己称为“编辑”,这是个很好的比喻,编辑没有自己的生活,所以他们写不出很好的文章,但他们懂如何表达,如何把多个观点糅合,所以他们的工作是根据自己的Topic,把合适的回传代码整合到项目中,这个项目就会成为一个正能量的开源项目,无论它还有什么缺点,大家都可以接受。——说到底,这个社会是利益驱动的,虽然都戴着理想和情怀的帽子。
首先要明白,开源软件是为了解决问题,不是为了情怀和理想。“原生”的开源软件是这样发展起来的:我要解决一个问题,写了一个软件,对这个软件保密对我意义不大(不靠这个赚钱),然后我就把它开源了,其他人要解决类似问题,然后他也用这个软件,就用这个软件改巴改巴,得到了他的解决方案,但他改得很少,也没有兴趣持续维护这个东西,他就把东西回传到原来的库上了,原来的库就得到增强。这种事情发生多了,就会产生一个大家都愿意回传的分支,围绕这个分支,就会形成一个圈子,这就是社区。到这个社区的改进形成正反馈后,就会有越来越多的人愿意回传代码,否则自己的维护成本太高。好比我现在立即要作一个播放器,从哪里开始,找一个合适的OS呗,可能就选了Linux,加上两个加速器,屏幕,声卡,GPIO之类的驱动,跑起来了。这东西就是给我的硬件做的,而且都是些通用的东西,保密的意义不大(虽然不是没有),但主线内核不断在修Bug,改安全漏洞,2个月一个版本,我自己改根本改不过来,就干脆回传了,Linux就是这样了解到各个用户的需求,然后慢慢就壮大了。很多人这样,其他人就不得不跟从了。那些自以为很聪明,拿着代码回家自己维护的,工作量大了几十倍不说,东西比别人还差,这些公司慢慢就会被逼死,在这个领域,开源就会成为主流。
总的来说,开源如流水,水要流到哪里,是自然而然的。但水少的时候,你可以控制它,但它变成黄河了,你就只能顺着它了。
这样,就涉及我说的第二个问题了,要架构好。不少人简单地认为,架构好就是什么分层好啦,使用什么Patten啦,文档好啦。这些是一方面,但这些不是最重要的方面,架构好是演进的时候最大限度减低使用者的开发成本。
好比你做了一个OS,我基于你的OS开发了一个应用,花了我30人月的代码,结果我本身还不要增加什么功能呢,就升级一下你的OS,我就要额外投入10个人员来做修改。那我肯定未来不想用你的这个OS了。这就是架构的好坏。你当然可以不修改,这样我就没有这个问题了,但那样我要的新功能(通常是和别人比出来而要的功能),我还是要投入人力,这我同样觉得不爽,如果是那样,我就会拉分支,到时我才是主线,你那个项目就不存在了,我才是社区。很多社区的maintainer,把自己称为“编辑”,这是个很好的比喻,编辑没有自己的生活,所以他们写不出很好的文章,但他们懂如何表达,如何把多个观点糅合,所以他们的工作是根据自己的Topic,把合适的回传代码整合到项目中,这个项目就会成为一个正能量的开源项目,无论它还有什么缺点,大家都可以接受。——说到底,这个社会是利益驱动的,虽然都戴着理想和情怀的帽子。
我觉得好的开源项目, Linux, Apache, Eclipse.
那么它们都有什么特点,我们就可以简单的分析一下.
首先都有大量的使用者, 只要你的使用量上去了, 愿意支持与回馈的用户才会多起来.
其次, 都是有可以跟同类商业软件相媲美的质量与功能, 甚至比它们优秀.
那么它们是怎么做到的呢?
1.首先是人, 每个优秀的项目发起人都是相当优秀的人甚至大神级别的.
2.其次在发展中都有被商业公司推动的历史.
3.正好赶上时代需要这种功能的软件, 而且它正好能符合其中的要求.
谢邀,那我就来说说吧;
首先肯定是为解决问题而生的,比如现在流行的MVC 框架,早期的没有MVC 开发的时候,耦合度很大,后期维护更新成本高,难度大,这样MVC 框架就孕育而生;
其次社区要活跃,当初Struts1 就因为社区活跃,获得了一大批用户,然而比他优秀的WebWork 反而没有特别火,后来Struts + WebWork 成了现在的Struts 2;
还有持续更新,不断修改Bug,当Struts 2 发布后,Struts 1 宣布停止更新,好多开发者都相应地跳转到Struts 2;
好的资金支持,所谓开源,资金来源,捐赠,比如像Apache 这么大一个基金会,主要就是靠大公司的捐助下生存的;
和大公司合作,比如Hadoop,小的公司一般用不到,和大的公司,公司的问题解决了,开源的框架也相对应的宣传,推广,还有大公司的捐助,支持,何乐而不为呢?
首先肯定是为解决问题而生的,比如现在流行的MVC 框架,早期的没有MVC 开发的时候,耦合度很大,后期维护更新成本高,难度大,这样MVC 框架就孕育而生;
其次社区要活跃,当初Struts1 就因为社区活跃,获得了一大批用户,然而比他优秀的WebWork 反而没有特别火,后来Struts + WebWork 成了现在的Struts 2;
还有持续更新,不断修改Bug,当Struts 2 发布后,Struts 1 宣布停止更新,好多开发者都相应地跳转到Struts 2;
好的资金支持,所谓开源,资金来源,捐赠,比如像Apache 这么大一个基金会,主要就是靠大公司的捐助下生存的;
和大公司合作,比如Hadoop,小的公司一般用不到,和大的公司,公司的问题解决了,开源的框架也相对应的宣传,推广,还有大公司的捐助,支持,何乐而不为呢?
谢邀
虽然个人除了粗浅使用过 Linux,并在网上经常copy能找到的代码然后吐槽又吐槽以外,其实没什么 使用开源代码的经验
虽然自己也经常把一些自己做的小的东西扔到网上,但基本上,,还不如打狗的那肉包子......
对于这个问题,我觉得首先要定义的是 怎样算 成功的开源项目。
这个问题我个人倾向于得到的答案是
“比如.....”
而我更喜欢多插嘴,离题一个回答
那就是 开源项目怎样才会成功
我觉得最重要的就是
1.是真正的开源,比如Linux,代码100%,驱动100%——我说的是 至少 内核部分啊,因为我至今没有从代码级去琢磨过一个发行版,只是使用,所以我也不好胡说,人家ubuntu的发行版也是100%......
类似ucos那种,实在让人伤心,当然类似的还有 rtx
2.研究起来不要太痛苦。既然是开源,那就意味着代码全公开,也意味着,假如没给钱,假如不存在来自经济支援的情况下,一般不会有收费的技术支持,那就得自己来,既然是要自己来。
程序员都知道看别人代码是很痛苦的。所以,一定要尽量使用各种现代开发方法,工具,让代码看起来不要那么疼。
3.对工具,环境的依赖。
个人观察的来,程序员对这些东西是十分刁钻的,比起普通用户可以接受被软件,系统,厂商绑架而言,程序员是最最叛逆的——否则我们也不会有这么多可以省钱的东西。
热爱这些叛逆的程序员吧!
所以,如果你提到要用什么什么工具,什么什么IDE,之类的,最好只是推荐,最好只是可选,如果带有强迫性质,那么也许 程序员就一定会立马逃开。
假如是,,,only for windows
那就他妈......绝交,绝交!!
虽然个人除了粗浅使用过 Linux,并在网上经常copy能找到的代码然后吐槽又吐槽以外,其实没什么 使用开源代码的经验
虽然自己也经常把一些自己做的小的东西扔到网上,但基本上,,还不如打狗的那肉包子......
对于这个问题,我觉得首先要定义的是 怎样算 成功的开源项目。
这个问题我个人倾向于得到的答案是
“比如.....”
而我更喜欢多插嘴,离题一个回答
那就是 开源项目怎样才会成功
我觉得最重要的就是
1.是真正的开源,比如Linux,代码100%,驱动100%——我说的是 至少 内核部分啊,因为我至今没有从代码级去琢磨过一个发行版,只是使用,所以我也不好胡说,人家ubuntu的发行版也是100%......
类似ucos那种,实在让人伤心,当然类似的还有 rtx
2.研究起来不要太痛苦。既然是开源,那就意味着代码全公开,也意味着,假如没给钱,假如不存在来自经济支援的情况下,一般不会有收费的技术支持,那就得自己来,既然是要自己来。
程序员都知道看别人代码是很痛苦的。所以,一定要尽量使用各种现代开发方法,工具,让代码看起来不要那么疼。
3.对工具,环境的依赖。
个人观察的来,程序员对这些东西是十分刁钻的,比起普通用户可以接受被软件,系统,厂商绑架而言,程序员是最最叛逆的——否则我们也不会有这么多可以省钱的东西。
热爱这些叛逆的程序员吧!
所以,如果你提到要用什么什么工具,什么什么IDE,之类的,最好只是推荐,最好只是可选,如果带有强迫性质,那么也许 程序员就一定会立马逃开。
假如是,,,only for windows
那就他妈......绝交,绝交!!
- 高质量的代码。必须有一个以上的核心人物作为驱动,而且水平比较高,这样才能在第一版写出质量较高的代码,从而能吸引其他人的使用和能与。
- 完备的文档。要有较完备的文档,方便使用者学习和交流。
- 活跃的社区。只有社区广泛能与才能最终脱颖而出。
- 由社区驱动。项目初始可以仅有少数人参与,但最终成功的开源项目必定是社区广泛参与的,这样才能发挥集思广益的优势,由社区驱动而且单枪匹马。
如果是对于开发者,开源软件(通常是个lib吧)是要被用到自己的软件中,应当
API简洁,轻量化,最好能跨平台,技术支持资源,保持更新, 还要有一个不错的开源协议。
例如Cocos2d-x:
官方版本就支持N多平台 (甚至有emscripten,还有Tizen);
几乎什么都允许的MIT协议;
移植方便,轻量化,API简洁而强大,配置简单; 虽是稍复杂的C++,但提供了一些高级特性降低代码难度(如auto release)。
集成了不少第三方库,libPng, libJpeg, webp,box2d 等等(有些还预编译了,节约用户编译时间),不需要用户自己手工配置第三方库。
除了做游戏需要的功能外,还提供了UI组件,拿来搞UI也可以哦~。
API简洁,轻量化,最好能跨平台,技术支持资源,保持更新, 还要有一个不错的开源协议。
例如Cocos2d-x:
官方版本就支持N多平台 (甚至有emscripten,还有Tizen);
几乎什么都允许的MIT协议;
移植方便,轻量化,API简洁而强大,配置简单; 虽是稍复杂的C++,但提供了一些高级特性降低代码难度(如auto release)。
集成了不少第三方库,libPng, libJpeg, webp,box2d 等等(有些还预编译了,节约用户编译时间),不需要用户自己手工配置第三方库。
除了做游戏需要的功能外,还提供了UI组件,拿来搞UI也可以哦~。
谢谢邀请。正好我这些年其实一直在琢磨开源软件这个事,写一些肤浅的想法,见笑。
先吐槽。我其实是有些抵抗开源软件这个理念的。如果你认为软件开发算是专业工作领域(professional)的话,也没见有医生给病人免费开刀,律师免费帮着打官司或者是建筑师免费帮你设计房屋的。那为什么软件就有那么多人热衷于开源呢。这不是很违反常理吗?
可是我们又不能否认开源软件确实推动了计算机的发展,给我们带来了前所未有的广阔天地。而且软件从散兵游勇的小打小闹到工业化开发这个演进过程中,开源软件起到了不可磨灭的作用。答主从开始摸计算机,到现在有30年整了,一直做软件开发。过去的时候。偶尔能见到光盘里别人的代码,或者签过非扩散协议以后见到久仰大名的软件,我们都是带着膜拜的心情,如饥似渴地看的,
正文开始。那么成功的开源软件都有些什么特点呢?
首先这个开软软件解决了一定的问题。这个问题或者还没有成熟的商业软件,或者商业软件太贵,只有专业公司才能买得起。
然后,这个软件有一个特别稳定的核心(core)定义。
明确的,统一的一个开源许可。这一点非常重要。
成功的开源软件通常还有很大的一个用户/开发者群,就是有人气。这一点可以说是至关重要。
还有也很重要的一点,一个成功的开源软件,一般会有书写完整流利,容易让初学者一看就懂的网站和技术文档,一般是英文的。
找时间再继续补充。
先吐槽。我其实是有些抵抗开源软件这个理念的。如果你认为软件开发算是专业工作领域(professional)的话,也没见有医生给病人免费开刀,律师免费帮着打官司或者是建筑师免费帮你设计房屋的。那为什么软件就有那么多人热衷于开源呢。这不是很违反常理吗?
可是我们又不能否认开源软件确实推动了计算机的发展,给我们带来了前所未有的广阔天地。而且软件从散兵游勇的小打小闹到工业化开发这个演进过程中,开源软件起到了不可磨灭的作用。答主从开始摸计算机,到现在有30年整了,一直做软件开发。过去的时候。偶尔能见到光盘里别人的代码,或者签过非扩散协议以后见到久仰大名的软件,我们都是带着膜拜的心情,如饥似渴地看的,
正文开始。那么成功的开源软件都有些什么特点呢?
首先这个开软软件解决了一定的问题。这个问题或者还没有成熟的商业软件,或者商业软件太贵,只有专业公司才能买得起。
然后,这个软件有一个特别稳定的核心(core)定义。
明确的,统一的一个开源许可。这一点非常重要。
成功的开源软件通常还有很大的一个用户/开发者群,就是有人气。这一点可以说是至关重要。
还有也很重要的一点,一个成功的开源软件,一般会有书写完整流利,容易让初学者一看就懂的网站和技术文档,一般是英文的。
找时间再继续补充。
1.能解决实际问题,这个问题只有通过收费的软件才能解决
2.收到相关业界企业组织大力的支持
3有商业较好的牛逼企业做支撑
4.一定是通过其他方式可以盈利的
5 站在用户体验和需求的角度研发产品,而不是技术牛逼的角度。
2.收到相关业界企业组织大力的支持
3有商业较好的牛逼企业做支撑
4.一定是通过其他方式可以盈利的
5 站在用户体验和需求的角度研发产品,而不是技术牛逼的角度。