Destroy, erase, improve

Nu har det varit tyst här ett tag igen. Jag har ägnat sommaren åt
extrajobb, studier inför tentan i C4, samt jobb på nästa version av
lagen.nu, som nu börjar närma sig ”färdig”-stadiet. På ferenda.lagen.nu finns en betaversion av
siten, och de utåt sett viktigaste nyheterna är att
formgivningen är fräshare, samt att rättsfallsreferaten nu finns med i
fulltext.

Men den stora nyheten bakom kulisserna är att kodbasen till 90% är
helt omskriven, och att den nu är öppen källkod under
BSD-licensen
. Det har tagit lång tid – betydligt längre än det tog
att utveckla den ursprungliga versionen – och frågan som inställer sig
är om det verkligen var en sån lysande idé? Det finns två
förhållningssätt till att slänga gammal kod och skriva om den från
scratch — Joel säger att det är en av sakerna you
never should do
, medans Fred menar att man ska plan to throw one
away; you will, anyhow
.

De flesta utvecklares första impuls när de sitter med en kodbas som
vuxit till en ogenomtränglig röra är att slänga skiten och starta
om. Det är för det mesta en dålig idé, inte minst för att det inte
finns någon garanti för att man inte hamnar i samma sits tre år
senare, när man är klar. Men eftersom det är mycket roligare att bygga
nytt än att reparera gammalt skrivs ofta system om från scratch, trots
att det skulle varit mycket billigare att steg för steg rensa i det
gamla röriga systemet.

Så varför skrev jag då om koden? På grund av glädje och skam. Glädje,
eftersom lagen.nu inte har någon affärsplan, några inkomster ellern
några krav på företagekonomiskt rationell styrning. Det är ett
hobbyprojekt som jag sysslar med för att det är kul, och det har varit
mycket roligare att skriva nytt än att rota runt i den gamla
koden. Skam, för att det hela tiden har varit meningen att släppa
koden fri, och den gamla koden var helt enkelt för dålig för att visa
för folk. En kompis har teorin att det här är anledningen till att
inte mer kod är öppen — det är helt enkelt för pinsamt.

Beslutet att släppa koden fri, tillsammans med en viss andra
systemet-effekt
, har gjort att jag i varje steg i utvecklingen har
funderat kring det bästa sättet att göra en viss sak. För att slippa
skämmas måste man helt enkelt skriva så bra kod som man någonsin
kan. När jag skrev det första systemet var jag ganska grön på python,
och försökte mest komma på något sätt att göra samma sak. Det tar
mycket mer tid att göra rätt än att göra snabbt — särskilt i början
— men känslan av yrkesstolthet gör att det är värt det.

Det betyder inte att det inte finns en massa fulheter i koden. Jag är
inte superstrukturerad, och inte min kod heller. När jag kommit på ett
visst mönster för att göra saker överanvänder jag det gärna, fram till
att jag kommer på nästa mönster. Och namngivning samt övrig
kodstandard ska vi inte prata om. Men grunden är stabil. Arkitekturen
är ganska enkel att förklara, även om det är många (drygt 9000) rader
kod. Jag tror att en ny programmerare kan sätta sig in i det hela
ganska snabbt, och att det kan vara ett ganska kul system att vara med
och bygga på.