自由開源軟體專案和私有軟體 (proprietary software) 的開發有不少的差異,其中最大的不同處在於,自由開源軟體專案是先選定一個適用的自由開源軟體授權條款,例如 GPL (GNU General Public License),當貢獻者 (contributor) 同意其撰寫的程式後續將依循該授權條款的規定後,將其撰寫程式提供給該軟體開發專案使用。但僅僅如此還不夠,為確保自由開源軟體專案後續能合法利用、甚至再散布專案中的軟體程式,該專案管理者必須取得所有程式開發者對其程式的著作權讓與,或是不可撤回的著作權授權,及相關的專利權授權。
而前述這些權利的讓與或授權及其他相關的細部規定,可以透過多種不同形式展現,不少自由開源軟體專案會選擇的,通常是以一份貢獻者契約 (contributor agreement) 來呈現,作為一種自我保護的手段。此外,藉著貢獻者契約的事先約定,若專案在未來欲轉換授權方式,專案管理者自身即有足夠的權限為之,而毋須再耗費龐大的時間及人力成本回頭一一聯繫程式貢獻者並取得其全數同意。