檢視 開源軟體 授權類型
1998年2月成為軟體開發社群中值得注意的月份之一:成立了開源計劃(OSI)公司,并引入了開源标簽。 該術語表示基于協作改進和源代碼共享的軟體開發方法。 在這些活動之前, Netscape為其Web浏覽器共享了一個源代碼 ,鼓勵世界各地的工程師共同努力,改善産品的更新版本。
從那時起,員工和初學者就開始使用SourceForge , Tigris以及後來的GitHub或Bitbucket等網站進行軟體下載下傳,分發和協作。
什麼是開源軟體?
開源軟體(OSS)是根據許可提供的,該許可使使用者可以出于其目的通路,更改和改進其源代碼。 開源倡議在十個簡短的段落中解釋了這種軟體類型的功能。
簡而言之,此類軟體必須包含源代碼并允許以源代碼形式和編譯形式進行分發(即使使用初始産品的名稱和許可)。 任何人都可以修改程式并将其用于派生作品中,而不論其行業或項目為何。 例如,工程師可以使用部分源代碼來擴充程式的功能,修複錯誤或建立新軟體。 在後一種情況下,專家可以節省大量開發時間。 然後,開發人員可以免費共享或出售産品。 但是有一個限制:開發人員必須以相同的條款分發開源程式的修改後的部分,并提供源代碼。
開源與專有軟體
開源軟體與專有軟體相反。 專有軟體使用者首次運作時必須簽署最終使用者許可協定 (EULA)。 與開放源代碼軟體許可不同,這些協定限制使用者共享和修改産品。
那些使用帶有專有解決方案的開源軟體的人必須僅保留以前的開源。 此外,許可證禁止使用者将開放源代碼作為專有代碼包含在專有解決方案中。
開源意味着免費嗎?
好吧,事實并非如此。 這是對開源軟體最常見的誤解之一。 免費是指将源代碼用于個人目的,同時贊揚軟體作者。 該軟體可能是免費提供的,并且可能會按月,按年或一次性付款(價格通常基于使用者)。 許多供應商傾向于收取咨詢和技術支援費用,而不是下載下傳軟體。 他們還可以出售産品獲得許可的條款的豁免,或歡迎産品使用者捐贈。 開發人員的另一項獲利選擇是推薦補充其開源軟體并從其推廣的供應商那裡獲得一定收益的解決方案。
開源許可證
在開放源代碼許可中定義了此類軟體的使用,修改和分發條款。
開源計劃已經準許了數百個現有許可證中的80多個許可證 。 這些已準許的許可證可以分為寬松許可證和版權保留許可證。 前者允許您在出于任何目的使用該代碼時自擔風險,同時确認其作者或貢獻者。 許可許可證的示例包括MIT , Berkeley Source Distribution(BSD) , BSD 3-Clause和Apache 2.0 。
後者是copyleft許可證,它對許可許可證有附加要求。 它需要共享分布式二進制檔案的源代碼,并且不允許對被許可人的許可使用施加額外的限制。 此外,您不能更改源代碼的copyleft條款。 一些copyleft許可證包括GNU通用公共許可證 (2.0和3.0版), GNU較小通用公共 (三個版本:2、2.1和3), Mozilla 通用 許可證2.0(MPL-2.0) , GNU Affero通用公共許可證v3(AGPL-3.0) 。
使用開源軟體的好處
開源許可不涉及版權限制。 相對的使用自由度為此類産品帶來了優勢,進而吸引了許多使用者。 具有公開源代碼的軟體的主要優點是:
- 靈活性。 可以定制軟體以滿足特定的業務需求。 工程師可以編寫更多代碼來添加額外的功能,反之亦然-删除不必要的部分。
- 穩定性。 您可以放心地将此産品用于長期項目,因為如果它的作者停止使用它,它不會從市場上消失或過時。 使用者社群将使用開源軟體。
- 安全性和可靠性。 許多具有不同技能水準的人可能會在同一軟體上工作,這可能會導緻代碼不一緻。 那時,開源文化是有益的。 來自世界各地的其他開發人員可以檢視,修複和更新此代碼。 代碼審查越快,軟體越安全和可靠。 作者和使用者改進了解決方案,因為他們需要性能良好。
- 評估更容易。 您(或您的開發人員)所見即所得。 源代碼的完全透明性使您的團隊可以檢查和評估産品,以了解其功能和缺陷。
- 更好的支援。 作為OSS使用者,您有更多的方法來獲得技術建議和支援:從供應商,專門從事此确切産品的咨詢公司,或者從準備在各個論壇或郵件清單中分享其經驗和知識的其他使用者那裡擷取。
- 可能節省。 此類産品可能具有下載下傳價格,并且通常需要可付費的客戶支援。 但是請記住,開源軟體的購買成本通常低于商業軟體的購買成本,并且還存在免費的開源程式。
此外,初級開發人員或學生可以使用開源代碼來學習如何更好地編寫代碼。 至少必須有一些生活領域,人們可以從别人的錯誤中學到,對嗎?
小型企業和企業的開源軟體類型
Internet上提供了許多帶有開源代碼的解決方案。 我們描述的軟體組允許建構組織的IT基礎結構,跨部門管理資料和内容,應用程式開發和測試以及管理與客戶的互動。
作業系統
Linux作業系統具有多種版本,又稱為發行版,将适合具有不同計算機素養水準的使用者。 最受歡迎的Linux發行版包括Ubuntu Linux , Arch Linux , Fedora , Linux Mint , Debian和openSUSE 。
FreeBSD是一個免費的開放源代碼作業系統,它是基于Berkeley Software Distribution(BSD) Unix的類Unix作業系統。 它是最受歡迎的BSD作業系統:Netflix,Hacker News,Yahoo!和Netcraft等巨頭的網站都在使用它。
Android是Google的移動作業系統。 您可以在我們的專用文章中找到有關Android應用程式開發的更多資訊。
ReactOS是與Windows相容的免費開源作業系統。
網絡伺服器
Web伺服器是一種計算機系統,它使用超文本傳輸協定(HTTP)通過Internet将資料從網頁分發到最終使用者。
根據W3Techs的資料,截至2018年11月, Apache HTTP Server是最受歡迎的Web伺服器,有45%的網站在使用它。 BuiltWith Internet服務公司已經統計了62,624,313個使用Apache的實時網站 。
NGINX在伺服器受歡迎度競賽中排名第二,占運作網站的40.2%(W3Techs于11月的統計資料),根據BuiltWith的資料,該網站占43190053個網站。 Web伺服器是在類似BSD的許可證下釋出的。
在最受歡迎的伺服器中,有兩個開源Web伺服器。 資料來源: W3Techs
Node.js是伺服器端跨平台JavaScript環境,旨在用于建構和運作網絡應用程式(例如Web伺服器)。 Node.js在多個許可下可用。 在11月,有0.5%的代碼在Node.js上運作。
Apache Tomcat用于運作Java應用程式。 更具體地說,它是Java Servlet,它是擴充Web伺服器功能的Java軟體元件。 根據Apache許可證版本2釋出,Apache Tomcat支援0.4%的網站。
Lighttpd是針對高性能環境優化的Web伺服器。 它是根據BSD許可釋出的,有0.1%的站點使用。
資料庫系統
開源資料庫的功能已達到專有解決方案的水準,這是由于越來越多的公司将其用于大型項目。
TrustRadius審查平台通過專用的TrustMap圖表說明了開源資料庫在不同規模的公司中的流行程度。 結果基于潛在買家的滿意度等級和研究頻率。 該圖表包括在其網站上有10條或更多評論的産品。
讓我們談談帶有開放源代碼的流行資料庫。
MySQL是使用最廣泛的關系嵌入式資料庫之一。 在2010年,Oracle購買了它,是以該公司正在尋求支援。
PostgreSQL是一個對象關系資料庫(ORD),支援macOS伺服器,大多數Linux發行版和Microsoft Windows。
MariaDB是MySQL資料庫的分支,是以通路資料的接口與SQL中的相同。
Apache Hive允許快速編寫類似SQL的查詢,以從Hadoop分布式檔案系統(HDFS)和其他相容系統中提取資料。 Apache Hive可用作資料庫和資料倉庫。
SQLite是一個獨立的,無伺服器,零配置的事務型資料庫引擎。
移動開發架構
Ionic是一個免費的開源SDK(軟體開發工具包),用于混合跨平台移動應用程式開發。 除了本機應用程式,Ionic還允許建構漸進式Web應用程式 。
React Native是一個開源架構,用于使用JavaScript和React(用于UI開發的Facebook JavaScript庫)快速建構本機應用程式。 用React Native編寫的代碼可用于Android和iOS。
Flutter是Google提供的開源多平台SDK。 那些想要使用Flutter的人必須知道Dart程式設計語言。
Xamarin是Microsoft的跨平台移動應用程式開發工具,允許工程師共享近90%的書面代碼。 Xamarin使用C#程式設計語言,并且基于.NET架構。
品質檢查自動化工具
Selenium是一套開源軟體測試自動化工具。 該工具支援移動測試,多種程式設計語言,作業系統和浏覽器。
Watir (Ruby中的Web應用程式測試)是一個開源Ruby庫,用于執行簡單的自動化測試。 它适用于Edge,Internet Explorer,Firefox,Chrome和Safari。 在RubyGems上也可以使用。
Robot Framework是用于關鍵字驅動測試的開源自動化架構。 它可以用于網絡和移動(Android和iOS)測試。
大資料分析工具
Apache Hadoop是最流行的大資料架構,用于為計算機叢集中運作的應用程式分布式處理大量資料和存儲。
Apache SAMOA (可擴充進階大規模線上分析)平台可以分析流資料并開發ML算法,而無需使用分布式流處理引擎(例如Apache Storm或Apache Samza)。
HPCC (高性能計算叢集)系統是LexisNexis Risk Solutions提供的開源大資料分析平台。
辦公軟體套件
Apache OpenOffice是根據Apache 2.0許可釋出的免費辦公軟體包。 它的用例包括文字處理,示範,圖形,電子表格,資料庫等。該套件以OpenDocument(ODF)格式存儲資料,并能夠從其他常見的Office軟體包讀取和寫入檔案。
LibreOffice是另一個免費的開源辦公套件。 LibreOffice使用者可以使用文本文檔,資料庫,電子表格,繪制流程圖和矢量圖形,建立示範文稿以及編輯公式。 該軟體還允許導出和處理不同的文檔格式,包括PDF。
NeoOffice是針對Mac使用者的基于OpenOffice和LibreOffice的軟體套件。 該套件提供三個版本,其中一個版本-NeoOffice Viewer-是免費的,但無法儲存文檔。
内容管理系統(CMS)
内容管理軟體允許使用者建立,管理,編輯和釋出數字内容。
WordPress是最流行的開源CMS之一,用于基于PHP腳本語言和MySQL資料庫系統建構動态部落格,網站和應用程式。 可以擴充到超過45,000個插件。
Django是一個用于在Internet和Intranet(組織的專用網絡)上釋出内容的平台。 該平台使用Django和Python編寫,适合具有不同背景和技能的使用者:營銷人員,開發人員和業務主管。
Joomla! 是一個免費的開源CMS,支援MySQL,MySQLi或PostgreSQL資料庫。 該平台使使用者可以更好地控制他們顯示Web内容的方式,并具有數千個模闆和擴充名。 專家還注意到 Joomla! 是開發電子商務網站的不錯選擇。
Joomla! 簡單來說
Drupal是高度可擴充的,免費的開源CMS,已在全球超過一百萬個站點中使用。 其内容管理功能包括移動編輯,編輯工作流,細化标簽和就地内容建立。
DNN是建立在.NET架構上的免費的開源内容管理平台,不需要全面的程式設計知識。 DNN為全球超過750,000個網站提供動力。
企業資源計劃(ERP)工具
ERP是包括許多子產品在内的綜合系統,可用于跨組織所有部門的資訊管理。
ERPNext是具有HR管理,協作工具,企業資産管理,項目管理和CRM功能的開源和“無限擴充”産品。 該解決方案專為中小企業,尤其是非技術人員而設計。 線上托管時,它對超過五個使用者收費,如果在本地安裝,則完全免費。
MixERP是建立在ASP.net架構上的開源系統。 它可以幫助企業管理庫存,銷售以及人事和會計部門的工作。 雖然免費下載下傳和使用,但提供商會收取支援費用(每期49美元)。 根據Capterra的評論 ,該解決方案缺少薪資和制造管理選項。 這就是大型企業需要使用雲或本地付費版本之一的原因。
Apache OFBiz是一個完全可定制的,可擴充的業務軟體套件。 該軟體包帶有開箱即用的子產品,用于會計,倉儲和庫存管理以及制造和制造資源計劃(MRP)。 電子商務公司也可以使用它來滿足他們的需求,例如訂單管理和CRM。 Apache OFBiz用Java編寫,并根據Apache 2.0許可進行分發。 它是免費和開源的。
具有列出的計費功能的Apache OFBiz子產品。 資料來源: Apache OFBiz
尋找ERP工具的人有很多選擇。 您還可以考慮使用Odoo , Dolibarr , Opentaps , xTuple PostBooks , Openbravo , iDempiere或VIENNA Advantage社群版 。
企業資源計劃系統結合了許多子產品,每個子產品都有特定的用途。 如果您對一項或多項功能感興趣,則可以考慮使用單獨的産品(例如,會計,人力資源或CRM工具)。 讓我們仔細看看客戶關系管了解決方案。
客戶關系管理(CRM)系統
SuiteCRM基于SugarCRM社群版。 後者曾經是這類開源産品的上司者。 該解決方案專為各種類型,規模和行業的企業而設計。 使用SuiteCRM,使用者可以生成發票和報價,維護銷售線索和合同,制作報告以及管理文檔和注釋。 該解決方案甚至允許客戶登入以跟蹤他們自己的案件。
CiviCRM是基于Web的解決方案,重點關注非營利組織。 該解決方案功能包括案例和聯系人管理,貢獻,交流,事件,成員,倡導活動,對等籌款活動和報告。 CiviCRM在GNU Affero通用公共許可證版本3下可用。
EspoCRM是一個基于Web的軟體,最适合中小型組織。 可以使用可購買的擴充包來擴充諸如銷售自動化,電子郵件管理(個人和群發郵件),事件和任務計劃之類的标準功能。 某些附加功能是VoIP內建以及與Google Calendar和MailChimp的同步。 供應商根據GPLv3許可證分發CRM。
那些值得檢查并嘗試其他解決方案Zurmo , 不含脂肪CRM , 好vtiger和奧羅CRM 。
如何選擇開源軟體?
有許多注意事項。 我們将解決的方面應幫助您回答幾個主要問題: 該産品是否具有所需的功能? 我們如何擴充其功能? 該産品及其元件是否安全? 我們如何使用和維護該解決方案? 我們負擔得起嗎? 讓我們開始。
功能和靈活性
首先,軟體必須具有您日常操作中所需的功能。 一個好的做法是列出必要的功能,并将其與程式的功能進行比較。 開發人員通常在其網站上提供簡短的解決方案說明。 您可以在常見問題解答部分和文檔中找到更多資訊。
了解該程式如何與您現有的軟體元件內建,以及與哪些作業系統相容。 確定檢查是否還需要購買其他硬體來滿足解決方案要求。
該軟體可能不具備所有必需的功能,也可能包括非必需的功能。 是以,了解如何填補功能空白或自定義程式非常重要。 一種選擇是尋找另一種缺少功能的軟體。 另一種方法是利用開源軟體的優勢,并通過更改代碼來擴充其功能。 無論是内部管理還是外包管理,都必須評估組織是否有足夠的時間和财力來實施這些變更。
安全
由于源代碼對所有人都是公開可用的,并且單個易受攻擊的開源元件使整個應用程式處于風險之中。 測試軟體元件的安全漏洞。
開發人員可以在國家漏洞資料庫(NVD)美國政府資料庫中檢查産品是否安全。 NVD提供了安全性清單參考,錯誤配置,與安全性相關的軟體漏洞,解決方案名稱和影響名額的資料庫。
線上計算機安全新聞門戶和資訊安全服務提供商SecurityFocus通過服務和資訊源鞏固了開發社群。 您可以使用Bugtraq郵件清單,在SecurityFocus郵件清單上與其他使用者讨論問題,或者使用SecurityFocus漏洞資料庫監視跨平台和服務的安全性。
另外,定期檢查項目的錯誤跟蹤器應該成為日常工作。
維護與支援
了解如何為所選軟體獲得維護和支援也很重要。 大型開源軟體開發人員通常會聘請另一家定期咨詢使用者的公司。 如果有幾家公司提供客戶支援,請對自己在客戶中的聲譽進行調查,并檢查其财務狀況,以幫助選擇合适的公司。 但是,提供技術支援的軟體供應商就是您夢dream以求的軟體供應商。
您可以建立一個内部維護團隊。 在這種情況下,專家将必須找到盡可能多的支援論壇和相關資源,以及有關軟體使用和維護的資訊。
不要低估了您可以獲得的知識以及與活躍使用者社群共享的知識。
使用者社群
足夠的使用者社群是軟體完成這項工作的标志之一。 而且更重要的是,随着每個新版本的釋出,錯誤報告和修複,此類産品将保持競争力并不斷改進。 高品質的軟體必須由一群有或沒有編碼技能的人組成,他們将專注于改善其功能并提供回報。 確定您能夠及時獲得有關部署和內建的建議,或者對其他任何問題的解答。
專家建議檢查項目郵件清單檔案并将問題釋出到清單中,以檢視人們對此有多快的React。
文獻資料
專業人士不僅可以建構好的軟體,還可以描述其功能,工作方式以及使用方法。 從理論上講。 事實上,2017年GitHub調查的使用者中有93%注意到文檔不完整或過時是一個普遍的問題。
開源軟體使用者的痛點。 資料來源: GitHub
是以,我們的建議是閱讀軟體文檔并評估其是否寫得好并且足以了解解決方案的功能和用法。 關心産品和使用者社群的作者通常會鼓勵代碼使用者和非代碼使用者一起使文檔清晰。 開發人員可以解釋貢獻的條款并獎勵使用者的文檔要求。
發牌
根據之前提到的GitHub 2017年開源調查,有64%的使用者同意開源許可證會影響他們是否使用項目的決定。 值得澄清的是,當使用者計劃更改軟體而不隻是使用軟體時,許可證的類型很重要。
是以,您應該仔細檢查許可條件,并確定它們适用于您的組織。 您還必須確定您使用的所有軟體許可證都是在相容許可證下頒發的。
計算機科學家David A. Wheeler建議驗證是否有針對某個項目的未決訴訟,評估其成功的可能性,并評估可能的後果。 “僅僅采取一些法律行動不一定是一個問題; 廣受歡迎的OSS / FS項目和大型專有供應商有時會引起輕率的訴訟。 在這種情況下,您需要檢查證據(或至少由技術人員檢查證據)以确定問題是否嚴重。” David總結道。
預算編制
我們都生活在物質世界中,是以我們不能忽略預算等方面。 盡管使用共享源代碼擷取或自定義軟體要比從頭開始建構軟體便宜,但需要考慮其他方面,例如部署和教育訓練。
如何估算部署價格? 這是David A. Wheeler的另一個提示:計算總擁有成本(一段時間内部署軟體的所有費用)或特定時間段内的投資回報率(ROI)。
切記要考慮初始軟體許可證,産品安裝以及許可證和産品更新的價格。 人員,技術支援,資料轉換(在現有系統和新系統之間),硬體或其他軟體的購買也應估算。
結論
對于各種規模的組織和企業而言,使用開源軟體群組件可能都是合理的。 好處包括發行自由,修改或擴充軟體功能的能力以及可能節省的開發成本,僅舉幾例。
優秀的軟體由龐大的使用者社群支援,該社群緻力于保持軟體的更新,監視安全漏洞并不斷完善源代碼。 借助知識共享和互助的文化,您可以確定在需要時獲得專業建議和幫助。
同時,開源解決方案的品質和安全性差異很大。 這就是為什麼根據您自己的技術要求和标準标準評估産品的重要性,我們在上面已經對其中的一些标準進行了評估。
Joel Filipe在Unsplash上拍攝的照片
最初釋出在AltexSoft技術部落格 “ 如何使用開源軟體:功能,主要軟體類型和選擇建議 ”
翻譯自: https://hackernoon.com/how-to-use-open-source-software-features-main-software-types-and-selection-advice-80fbdb0d0f60
檢視 開源軟體 授權類型