Odprta koda se nanaša na vsaj dve stvari. Prvič, to je blagovna znamka Open Source Initiative® in licenca, ki jo Open Source Initiative® podeli odprtokodni programski opremi (OSS), ki izpolnjuje določena merila, imenovana Open Source Definition. Vendar pa obstajajo druge zamisli o odprtokodni programski opremi, ki ne držijo istih standardov in ponujajo odprtokodno programsko opremo pod različnimi vrstami licenc. Ena stvar, ki jo ima vsa odprtokodna programska oprema skupna, je dostopnost izvorne kode uporabniku, kar pomeni, da lahko uporabnik natančno vidi, kako je bila aplikacija ali program kodiran, in ga pogosto lahko spreminja. Odvisno od vrste licence, ki jo ima, lahko uporabniki spreminjajo in na novo distribuirajo odprtokodno programsko opremo.
Ne glede na vrsto licence, s katero je priložena, je odprtokodna programska oprema enaka lastniški komercialni programski opremi. Lastniška komercialna programska oprema temelji na tem, da eno podjetje razvija in ima v lasti izvorno kodo. Licenca za izdelek omogoča uporabniku uporabo izdelka, kot ga je izdelalo komercialno podjetje. V nekaterih primerih je uporabnikom dovoljeno in/ali spodbujano ustvarjanje vtičnikov ali dodatkov za izboljšanje lastniške komercialne programske opreme, vendar obstajajo omejitve glede tega, kaj lahko počnejo. To je za zaščito naložbe razvijalca programske opreme.
Za gibanjem odprtokodne programske opreme je več ciljev. Ena misel je, da bo ločitev razvoja programske opreme od motiva dobička spodbudila razvijalce, da naredijo tisto, kar je najboljše za programsko opremo in uporabnike, kar bo vodilo do izdelkov, ki imajo večjo uporabnost in manj napak. Verjame se tudi, da bo strokovni pregled brez omejitev glede datuma komercialne izdaje prispeval k programski opremi, ki se še naprej nenehno nadgrajuje, namesto da bi skrbno časovno določili glavne izdaje, ki se ne pojavljajo zelo pogosto, zaradi česar bodo uporabniki vmes imeli hroščavo programsko opremo. Drugi premislek je, da bo z odpiranjem kode veliko razvijalcev, od katerih vsak morda razmišlja o izboljšanju programske opreme, prineslo svoje posebne veščine in vpoglede ter svoj čas, da prispevajo k procesu, kar pospeši razvoj in ga usmerimo v več smereh, s čimer razširimo obseg programske opreme.