Calculatoarele sunt mașini care rulează pe milioane de linii de cod. Programatorii scriu cod în diferite limbi, dar tot acest cod are câteva caracteristici de bază, indiferent de limbajul folosit. Un program are întotdeauna două seturi de cod, cod sursă și cod obiect. Codul sursă este ceea ce este creat în prealabil, limbajul pe care programatorul îl folosește pentru a da instrucțiuni compilatorului computerului pentru a face programul să ruleze. Rezultatul compilatorului care a compilat aceste instrucțiuni de cod sursă se numește cod obiect.
Termenii sunt intuitivi, prin aceea că codul sursă este începutul, sau sursa, al operației, iar codul obiect este rezultatul dorit, sau obiectul, al întregului exercițiu. Este stocat în fișiere care sunt create de compilatorul computerului și pot deveni apoi scopul final intenționat de programator.
Odată ce codul sursă a fost compilat în fișiere, acesta poate continua apoi la procesorul computerului, care execută instrucțiunile finale. Aplicațiile software disponibile în mod obișnuit sunt colecții uriașe de cod obiect care nu pot fi modificate fundamental, deoarece codul sursă nu este inclus. Este ca și cum ai avea soluția la problemă, dar nu toți pașii folosiți pentru a ajunge la ea. Schimbarea acestui cod fără a avea codul sursă poate fi un exercițiu de frustrare.
Acest proces în mai mulți pași este necesar deoarece computerele pot executa numai acele instrucțiuni care sunt scrise în limbajul mașinii. Acesta este rezultatul final, care sunt versiuni executate de cod obiect. Deci, atunci când un consumator primește o aplicație software, acel consumator primește o versiune executată a codului sursă care a devenit limbaj de mașină care a fost transformat în proiectul final.
Având în vedere accentul actual pus pe codul open-source, tot mai multe aplicații sunt lansate cu căi în codul sursă. Programatorii și programatorii diligenti pot accesa acel cod sursă, îl pot schimba pentru a satisface nevoile lor și apoi pot crea cod obiect nou, care îndeplinește un scop care poate fi diferit de cel intenționat de programatorii originali.