開源軟件即一種依據開源許可證來公開或釋出源代碼的計算機軟件,而在開源許可證中,開源軟件的版權持有人授予用戶可以學習、修改開源軟件,并向任何人或為任何目的分發開源軟件的權利。開放源代碼是開源軟件的首要特征。開源軟件通過在網站上公開源代碼,使得公眾(主要是軟件開發者)可以下載使用、復制、修改源代碼,進而發布(免費/少許收費)基于源代碼的軟件。與開源軟件相對應的是商業閉源軟件,該類軟件的源代碼往往不公開,使用者只能在許可證允許的范圍內使用軟件[1]。

開源許可證通常具備以下10個特點:
(1)免費重新發行。當軟件是來自不同來源的程序集成后的軟件發行版本中的其中一個組件時,許可證不能限制任何團體銷售和分發該軟件,并且不能向這樣的銷售或分發收取許可費和其它費用。
(2)源代碼。程序包含源代碼,并且必須允許以代碼或已編譯的形式發布。
(3)衍生產品。許可證必須允許修改原產品和衍生產品,并且必須允許在與原始軟件相同的許可情況下發布修改過的產品。
(4)源代碼完整性。許可證可以禁止他人以修改過的形式發布源代碼,只在該許可證基于修改程度的目的時,才允許隨源代碼發布“補丁文件”。許可證必須明確允許發布根據修改過的源代碼構建的軟件。許可證要求衍生產品必須附加不同于原始軟件的名稱或版本號。
(5)不得歧視任何人和團體。許可證不得歧視任何人和任何團體。
(6)不得歧視任何特定用途。許可證不得禁止任何人在特定領域內使用某一程序
(7)許可證發布。附加在程序上的權利必須應用于那些重新發布程序的人,無需通過其它人額外加以許可使用。
(8)許可證不得專屬于特定產品。附屬于程序的權利不得僅限于作為特定軟件發行版一部分的程序。
(9)許可證不得對其它軟件加以限制。許可證不得對與已許可軟件一起分配的其它軟件附加任何限制。
(10)許可證必須技術中立。任何許可證都不可以基于單獨的某項技術或界面風格[2]。