成功的開源軟體都有什麼樣的特點?

是什麼讓那些成功的開源軟體從眾多開源競品中脫穎而出的?


真正解決用戶問題,持續更新,使用方便,文檔齊全,有技術支持,有比較好的架構,方便二次開發,有比較好的社區機制。

其實最根上的,還是需要有資源做這些事情。現在成功的開源軟體,都是背後很多資源支持起來的,資源包括很多,錢的支持,人的支持,物的支持。:)


簡單回答是:有人用和架構好。這兩個是核心問題。

首先要明白,開源軟體是為了解決問題,不是為了情懷和理想。「原生」的開源軟體是這樣發展起來的:我要解決一個問題,寫了一個軟體,對這個軟體保密對我意義不大(不靠這個賺錢),然後我就把它開源了,其他人要解決類似問題,然後他也用這個軟體,就用這個軟體改巴改巴,得到了他的解決方案,但他改得很少,也沒有興趣持續維護這個東西,他就把東西回傳到原來的庫上了,原來的庫就得到增強。這種事情發生多了,就會產生一個大家都願意回傳的分支,圍繞這個分支,就會形成一個圈子,這就是社區。到這個社區的改進形成正反饋後,就會有越來越多的人願意回傳代碼,否則自己的維護成本太高。好比我現在立即要作一個播放器,從哪裡開始,找一個合適的OS唄,可能就選了Linux,加上兩個加速器,屏幕,音效卡,GPIO之類的驅動,跑起來了。這東西就是給我的硬體做的,而且都是些通用的東西,保密的意義不大(雖然不是沒有),但主線內核不斷在修Bug,改安全漏洞,2個月一個版本,我自己改根本改不過來,就乾脆回傳了,Linux就是這樣了解到各個用戶的需求,然後慢慢就壯大了。很多人這樣,其他人就不得不跟從了。那些自以為很聰明,拿著代碼回家自己維護的,工作量大了幾十倍不說,東西比別人還差,這些公司慢慢就會被逼死,在這個領域,開源就會成為主流。

總的來說,開源如流水,水要流到哪裡,是自然而然的。但水少的時候,你可以控制它,但它變成黃河了,你就只能順著它了。

這樣,就涉及我說的第二個問題了,要架構好。不少人簡單地認為,架構好就是什麼分層好啦,使用什麼Patten啦,文檔好啦。這些是一方面,但這些不是最重要的方面,架構好是演進的時候最大限度減低使用者的開發成本。

好比你做了一個OS,我基於你的OS開發了一個應用,花了我30人月的代碼,結果我本身還不要增加什麼功能呢,就升級一下你的OS,我就要額外投入10個人員來做修改。那我肯定未來不想用你的這個OS了。這就是架構的好壞。你當然可以不修改,這樣我就沒有這個問題了,但那樣我要的新功能(通常是和別人比出來而要的功能),我還是要投入人力,這我同樣覺得不爽,如果是那樣,我就會拉分支,到時我才是主線,你那個項目就不存在了,我才是社區。很多社區的maintainer,把自己稱為「編輯」,這是個很好的比喻,編輯沒有自己的生活,所以他們寫不出很好的文章,但他們懂如何表達,如何把多個觀點糅合,所以他們的工作是根據自己的Topic,把合適的回傳代碼整合到項目中,這個項目就會成為一個正能量的開源項目,無論它還有什麼缺點,大家都可以接受。——說到底,這個社會是利益驅動的,雖然都戴著理想和情懷的帽子。


天時地利人和。這裡就用成功開源軟體的 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,這裡可謂人和。由此而來成功開源軟體的第三個特點:有一位傑出的創始人,團結了一批天才的程序員,並持之以恆的進行創新、維護和改進


1.能解決實際問題,這個問題只有通過收費的軟體才能解決

2.收到相關業界企業組織大力的支持

3有商業較好的牛逼企業做支撐

4.一定是通過其他方式可以盈利的

5 站在用戶體驗和需求的角度研發產品,而不是技術牛逼的角度。


針對目標行業技術新鮮實用,文檔詳盡,回應迅速


謝邀。

能幫用戶解決問題、清晰完整的文檔、活躍的社區、及時解決軟體使用中的問題、代碼質量。我想到的就這麼多了。


謝邀,以下觀點純屬個人理解。

1、軟體的實用性。

不管什麼樣的開源項目我想實用性必須是第一必要的元素,我想大多數人選擇開源軟體大部分是為了偷懶不去實現功能,但是又怕以後出了問題沒有源碼不好維護。那麼開源的軟體就凸顯其優勢了。

2、軟體的穩定性。

第一點也說了,用開源是為了直接把一個功能拿過來用,那麼這個功能的穩定性必定是很重要的。誰也不會拿個bug頻出的開源軟體給人家擦屁股,那樣還不如自己寫一個。

3、代碼的規範性

所謂是代碼就存在bug,使用了別人的開源軟體那麼總避免不了遇到其中的一些bug,那麼就必須去維護,這時候如果代碼規範。那麼維護的速度就杠杠的。

4、升級保持向前兼容性。

如果你用的一個開源項目本來用得很爽,但是哪天升級一下就各種問題,那就呵呵了。

5、基本的使用手冊

不說要手冊非常完善,但是起碼能夠讓用戶看完手冊知道怎麼去用你的項目,這個是必須的,本來用開源就是為了節約時間,如果還要把代碼看一遍才知道怎麼用(可能還用不對),還不如去重寫一個。


居然被邀請。。。

成功的開源軟體都有的特點是,總會被同等功能的某款商業軟體碾壓。


成功的開源軟體都有什麼樣的特點?

1. 這個軟體項目必須要有一個核心人物, 這個核心人物必須有熱情, 有能力, 有領導力

2. 這個軟體一定能夠解決人們的需求, 而且能夠在一定程度上替代或接近商業軟體

3. 這個軟體核心功能是穩定切優秀的

比如我心目中的優秀開源軟體:

Linux , Filezilla , Bitcoment , VLC, ffmpeg , Live555 ....太多了


謝邀,孤陋寡聞但不拒邀。

成功的開源軟體

1.開源:決定軟體具備某種性質

2.解決問題:決定成功與否

其它賺錢盈利、技術牛逼、軟體工程結構合理、文檔規範齊全等只是添油加醋。

有這樣的現象,做著開源項目,走著商業化的道路。

聽見一些人談論自己的開源項目,能讓他們感覺到成功的因素中,用戶數和影響力也占很大比例。

當我頻繁使用find,grep,awk,gcc,make,emacs...很少會想到它成不成功,用戶數,影響力,盈利與否甚至怎麼盈利。


文檔齊全,便於使用,便於二次開發,持續更新,持續維護,最關鍵的是能解決實際問題。


如果是對於開發者,開源軟體(通常是個lib吧)是要被用到自己的軟體中,應當

API簡潔,輕量化,最好能跨平台,技術支持資源,保持更新, 還要有一個不錯的開源協議。

例如Cocos2d-x:

官方版本就支持N多平台 (甚至有emscripten,還有Tizen);

幾乎什麼都允許的MIT協議;

移植方便,輕量化,API簡潔而強大,配置簡單; 雖是稍複雜的C++,但提供了一些高級特性降低代碼難度(如auto release)。

集成了不少第三方庫,libPng, libJpeg, webp,box2d 等等(有些還預編譯了,節約用戶編譯時間),不需要用戶自己手工配置第三方庫。

除了做遊戲需要的功能外,還提供了UI組件,拿來搞UI也可以哦~。


謝邀。

看了幾個回答。

除了開發質量高,用戶忠誠度高以外,還有就是成熟的社區。

在國外有推特,國內有微博。這些都是推動開源的動力。

廣告和捐贈都不算過分。


  1. 高質量的代碼。必須有一個以上的核心人物作為驅動,而且水平比較高,這樣才能在第一版寫出質量較高的代碼,從而能吸引其他人的使用和能與。
  2. 完備的文檔。要有較完備的文檔,方便使用者學習和交流。
  3. 活躍的社區。只有社區廣泛能與才能最終脫穎而出。
  4. 由社區驅動。項目初始可以僅有少數人參與,但最終成功的開源項目必定是社區廣泛參與的,這樣才能發揮集思廣益的優勢,由社區驅動而且單槍匹馬。


謝邀

雖然個人除了粗淺使用過 Linux,並在網上經常copy能找到的代碼然後吐槽又吐槽以外,其實沒什麼 使用開源代碼的經驗

雖然自己也經常把一些自己做的小的東西扔到網上,但基本上,,還不如打狗的那肉包子......

對於這個問題,我覺得首先要定義的是 怎樣算 成功的開源項目。

這個問題我個人傾向於得到的答案是

「比如.....」

而我更喜歡多插嘴,離題一個回答

那就是 開源項目怎樣才會成功

我覺得最重要的就是

1.是真正的開源,比如Linux,代碼100%,驅動100%——我說的是 至少 內核部分啊,因為我至今沒有從代碼級去琢磨過一個發行版,只是使用,所以我也不好胡說,人家ubuntu的發行版也是100%......

類似ucos那種,實在讓人傷心,當然類似的還有 rtx

2.研究起來不要太痛苦。既然是開源,那就意味著代碼全公開,也意味著,假如沒給錢,假如不存在來自經濟支援的情況下,一般不會有收費的技術支持,那就得自己來,既然是要自己來。

程序員都知道看別人代碼是很痛苦的。所以,一定要盡量使用各種現代開發方法,工具,讓代碼看起來不要那麼疼。

3.對工具,環境的依賴。

個人觀察的來,程序員對這些東西是十分刁鑽的,比起普通用戶可以接受被軟體,系統,廠商綁架而言,程序員是最最叛逆的——否則我們也不會有這麼多可以省錢的東西。

熱愛這些叛逆的程序員吧!

所以,如果你提到要用什麼什麼工具,什麼什麼IDE,之類的,最好只是推薦,最好只是可選,如果帶有強迫性質,那麼也許 程序員就一定會立馬逃開。

假如是,,,only for windows

那就他媽......絕交,絕交!!


我覺得好的開源項目, Linux, Apache, Eclipse.

那麼它們都有什麼特點,我們就可以簡單的分析一下.

首先都有大量的使用者, 只要你的使用量上去了, 願意支持與回饋的用戶才會多起來.

其次, 都是有可以跟同類商業軟體相媲美的質量與功能, 甚至比它們優秀.

那麼它們是怎麼做到的呢?

1.首先是人, 每個優秀的項目發起人都是相當優秀的人甚至大神級別的.

2.其次在發展中都有被商業公司推動的歷史.

3.正好趕上時代需要這種功能的軟體, 而且它正好能符合其中的要求.


首先, 相對其要解決的問題而言, 技術先進.

其次, 相對其要解決的問題而言, 簡潔好懂.

技術先進的方案會吸引到足夠的人來關注, 簡潔好懂的方案可以讓這些被吸引的人很快參與進來從而保持住熱情.


Github 上點贊的人多唄。

對了,另,特此恭喜開源項目 Nutz (Nutz-程序員小夥伴們的另一個選擇) 在 Github 上 (https://github.com/nutzam/nutz) 斬獲 1000+ 贊 ^_^


用戶廣,知名度高,具體可參照Linux


能解決問題(一般在同類中是最優秀的),有良好的社區,持續改進等。


瀉藥

從使用的角度說一說。1.良好的架構層次清楚是使用的首要條件,並且利於二次開發。2.使用過程中豐富而詳實的文檔能夠快速的構建自有軟體。3.規模較大的社區是解決軟體中疑難雜症的良藥。


推薦閱讀:

想去英國讀研 產品設計或工業設計方向 想比較一下皇藝 中央聖馬丁 考文垂 愛丁堡 和創意藝術大學?
有多少人拿著6s,7卻從來不用甚至不知道3dtouch?
如何理解產品設計中的概念設計、功能規劃?
響應式設計應該會是今後的趨勢,對前端的要求也將越來越高,你覺得呢?

TAG:產品設計 | 開源軟體 |