Monet ohjelmoinnin metodologiasta mielipiteitä esittävät kirjoitukset tekevät pohjaoletuksia siitä, millaisessa ympäristössä ja millaisilla taustaehdoilla ohjelmointityötä tehdään. Tämä on tietenkin ymmärrettävää, koska ihmiset tekevät ohjelmointityötään tietyssä ympäristössä eivätkä välttämättä kuluta aikaansa sen miettimiseen, mitkä kaikki kontekstuaaliset piirteet voisivat olla toisin siitä huolimatta, että työ miellettäisiin edelleen ohjelmointityöksi. Tässä on muutamia asioita, jotka ovat toisin, kun ohjelmistokehitys ei olekaan kaupallista.
Avoimet ohjelmat eivät ole projekteja.
"Projekti" on lähinnä hallinnollinen, ei tekninen termi. Projekti on budjetointi-, ohjaus- ja seurantaviitekehys, eikä ohjelmakoodi "kuulu" johonkin projektiin muuten kuin määrittelyn perusteella (lisää aiheesta: http://c2.com/cgi/wiki?WhatIsaProject).
Avoimia ohjelmia tuottavat ihmiset voivat järjestellä työtään projekteiksi, mutta heidän ei ole pakko tehdä niin. Avoin ohjelma on joka hetkellä "valmis" siinä mielessä, että sen ei tarvitse luvata muuta kuin toimivansa juuri niin kuin sattuu toimimaan.
Avoimilla ohjelmilla ei ole päämäärää.
Päämäärät ja tavoitteet ovat jotain, mitä asetetaan työlle, jotta saataisiin jotain aikaan. Avoimen ohjelmiston kehittäjät voivat asettaa päämääriä ja tavoitteita työlleen lupauksina käyttäjille, mutta ne eivät sido ohjelmaa vaan kehittäjiä, eivätkä kehittäjät kärsi muuta kuin kasvojen menetyksen siitä, etteivät pidä lupauksiaan.
Avoin ohjelma on itsenäinen. Sille voi asettaa oman päämääränsä, jos ei pidä kehittäjien asettamasta. Päämäärien ja tavoitteiden kaltaista politiikkaa tarvitaan vasta, jos haluaa teettää visioitaan muilla tai muiden kanssa yhdessä.
Avoimilla ohjelmilla ei tarvitse olla aikataulua.
Aikataulu voi auttaa resurssien kohdentamisessa. Firmoilla resurssit ovat rajalliset, joten resurssit kannattaa kohdentaa siihen, mikä määritellään hyödylliseksi. Avoin ohjelma sen sijaan saa kehitysaikaa sitä enemmän, mitä useampia asioita joku haluaa toteuttaa siihen. Resurssit tulevat uusien kehittäjien muodossa (esim. ihminen, joka tykkää ohjelmasta, ja haluaa toteuttaa siihen tarvitsemansa ominaisuuden) sekä uuden motivaation muodossa (ohjelman tunteva ja siihen tunteellisesti sitoutunut kehittäjä tajuaa, että jotain olisi hienoa toteuttaa).
Aikatauluja tarvitaan myös mainostamisen ajoittamiseen. Avoimia ohjelmia ei ole pakko mainostaa.
Avointen ohjelmien vaatimuksia ei kannata muuttaa.
Kaupallisessa maailmassa saadaan yleensä ensin asiakas (tai kuvitteellinen asiakas), ja ohjelma tehdään asiakkaan vaatimusten mukaan. Avoin ohjelma tehdään jostain syystä, ja sitä käyttävät ne, joiden vaatimuksiin se sattuu vastaamaan (jos jostain syystä tietävät, että ohjelma vastaa heidän vaatimuksiinsa).
Seurauksena kaupallisten ohjelmien vaatimuksia kannattaa muuttaa, jotta vaatimuksiaan muuttavat asiakkaat pysyisivät. (Asiakkaat, jotka eivät muuta vaatimuksiaan, eivät yleensä tuo lisää rahaa.) Avoimen ohjelman vaatimukset kannattaa pitää samoina, jotta olisi mahdollisimman selkeää, mitä sen on tarkoitus tehdä tai ratkaista. Lisäksi avoimet ohjelmat tarjoavat selkeän lisäarvon niille käyttäjille, jotka eivät halua joutua opettelemaan uutta toimintatapaa, mutta haluavat kylläkin, että ohjelmavirheet korjataan.
Tämä oli ensimmäinen suuri valaistumiseni Unix-ympäristön ohjelmista: minun ei tarvitsisi enää koskaan opetella käyttämään uutta ohjelmaa, ellen halua. Samat, 70-luvulta periytyvät ohjelmat ovat aina käytössäni, jos jostain syystä haluan käyttää niitä, eikä niiden käytön opetteluun mennyt vaiva mene hukkaan.