Programsko opremo razvijajo tako posamezni navdušenci kot zaposleni v komercialnih podjetjih. Ustvarjajo programe za osebne računalnike, mobilne telefone in druge naprave, ki vsebujejo mikroprocesorje.
Navodila
Korak 1
Klasični model razvoja programske opreme je videti takole. Program ustvarjajo zaposleni v enem podjetju, njegove izvorne kode pa ne gredo izven organizacije. Rezultat sestavljanja se proda uporabnikom. Nenavadno je, da aplikacija shranjuje datoteke v formatih, ki jih konkurenčni programski izdelki ne podpirajo. Če se razvoj aplikacije ustavi, morajo uporabniki skrbeti, ali bodo rezultate svojega dela ponovno shranili v datoteke drugih formatov.
2. korak
Tudi podjetja z lastniško programsko opremo nekatere svoje izdelke pogosto naredijo brezplačne. Hkrati lahko izkoristijo prikazovanje oglasov, izvajanje drugih plačljivih programov in uvedbo dodatnih plačljivih storitev. Na primer, v aplikaciji za IP telefonijo so klici iz računalnika v računalnik morda brezplačni, vendar boste morali klic iz računalnika v telefon plačati. Razvijalce brskalnikov lahko sponzorira oglaševanje s PPC pri uporabi iskalnikov.
3. korak
Samotni programerji običajno ustvarjajo majhne aplikacije in pripomočke. Lahko so zaprti ali odprtokodni, plačljivi ali brezplačni (v kateri koli kombinaciji). Majhni, takšni programi in pripomočki lahko včasih konkurirajo velikim paketom, zasnovanim za isti namen.
4. korak
En navdušenec ne more napisati velikega programa, lahko pa ustvari projekt na Sourceforge, Google Code, Microsoft CodePlex ali podobnem. Po tem bo lahko neomejeno število amaterskih programerjev delalo na kodi skupaj. Večina se jih v prostem času od glavnega dela ukvarja s programiranjem kot hobijem.
5. korak
Ko najdejo kvaliteten odprtokodni projekt, ga lahko poslovno podjetje podpre. Po tem bo program še vedno odprt, vendar ga ne bodo spreminjali samo navdušenci, temveč tudi profesionalni programerji, ki delajo v podjetju. Podjetje lahko nato začne prodajati strojne naprave, ki izvajajo ta program, ali pa za plačilo začne usposabljati uporabnike za delo z njim.