開源軟體是一種原始程式碼公開並可供任何人檢視、更改或重新分發的軟體。開源軟體通常是在許多不同的參與者之間以開放、協作的方式開發的。此類專案遵循透明、開放交換、自由參與、快速原型設計以及面向社區的協作開發等原則。
雖然所有開源軟體許可證都允許任何人研究、修改和重新分發開源軟體的反面是閉源軟體,其原始碼不公開,只有本人,創建它的團隊或組織有權修改和分發它。
開源軟體比其他類型的軟體具有優勢。在推廣開放協作理念的同時,開放協作的理念可能使開發人員和使用者受益,同時,由於公開呼籲參與,吸引了來自各個領域的許多不同的專家,因此也可以帶來更高品質的產品。與閉源軟體相比,解決問題也可以更快、成本更低,因為大量參與者可能擁有處理這些問題的權利、存取權限和專業知識。
另一方面,如果開源軟體以分散的方式開發,沒有一個實體協調開發過程,那麼不同的參與者可能需要大量的時間才能就策略決策達成一致。許多開源專案實施特殊類型的治理模型來解決這個問題。從更廣泛的角度來說,旨在使所有或大多數軟體使用開源許可證的運動被稱為「開源」來源軟體運動。這項運動的目標還包括透過由志趣相投的人合作製作高品質程式碼來改進開源技術。支援開源軟體運動的開發人員自願編寫和交換程式碼,作為對開放協作理念的貢獻。