<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BEKK Open &#187; cvs</title>
	<atom:link href="http://open.bekk.no/tag/cvs/feed/" rel="self" type="application/rss+xml" />
	<link>http://open.bekk.no</link>
	<description>Et innblikk i hva som skjer i BEKK</description>
	<lastBuildDate>Fri, 10 Sep 2010 16:43:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hvordan bidra til fri programvare (friprog)</title>
		<link>http://open.bekk.no/2009/03/27/hvordan-bidra-til-fri-programvare-friprog/</link>
		<comments>http://open.bekk.no/2009/03/27/hvordan-bidra-til-fri-programvare-friprog/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 12:37:59 +0000</pubDate>
		<dc:creator>Kjetil Ødegaard</dc:creator>
				<category><![CDATA[Fri Programvare]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[friprog]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[prosess]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://open.bekk.no/?p=101</guid>
		<description><![CDATA[ 
En av de største fordelene med å bruke fri programvare (friprog) er at man selv kan løse problemer man måtte støte på eller gjøre nødvendige endringer. Siden kildekoden er fritt tilgjengelig kan hvem som helst gjøre dette som de vil. Det er dette man i friprog-verdenen kaller &#8220;scratching your own itch&#8221;: hvis man har et [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>En av de største fordelene med å bruke fri programvare (friprog) er at man selv kan løse problemer man måtte støte på eller gjøre nødvendige endringer. Siden kildekoden er fritt tilgjengelig kan hvem som helst gjøre dette som de vil. Det er dette man i friprog-verdenen kaller &#8220;scratching your own itch&#8221;: hvis man har et <em>ønske</em> er man ikke avhengig av at leverandøren skal fikse det, man kan gjøre det selv.</p>
<p>For å slippe å vedlikeholde sine egne endringer når man senere skal oppdatere til ny versjon av produktet kan man prøve å få disse sendt tilbake til prosjektet. Dette er en oversikt over hvordan denne prosessen kan fungere:</p>
<p style="text-align: center; "><img class="size-full wp-image-124 aligncenter" title="friprogbidrag4" src="http://open.bekk.no/wp-content/uploads/2009/03/friprogbidrag4.png" alt="friprogbidrag4" width="587" height="838" /></p>
<h2><a name="S_king_9805171888749769_674205"></a> Søking</h2>
<p>Noe av det første man bør gjøre er å finne ut om andre har hatt samme (eller liknende) ønske. Den enkleste måten å gjøre dette på er å starte med et enkelt søk på Google eller andre søketjenester. Man bør også gå på websiden til prosjektet og gjøre søk i forum/mailinglister/issue-tracker eller andre verktøy fellesskapet bruker. Det går som regel raskt å finne ut om det er en kjent irritasjon, eller om du er på sporet av noe nytt og spennende&#8230;</p>
<h2><a name="Hent_kode_25501051472866887_62_4102783888637136"></a> Hent koden</h2>
<p>Det er viktig å ta utgangspunkt i den siste utgaven av kildekoden til prosjektet. Dette er greit både for å sjekke om noen andre allerede har implementert ønsket ditt, men også for å gjøre det enklere for deg selv å få dine endringer godtatt av de som administrerer prosjektet. Finn ut hvor kildekoden til prosjektet ligger, dette er typisk et eller annet versjonskontrollsystem. Last deretter ned siste utviklingsversjon. Denne kildekoden er nesten alltid mer oppdatert enn siste utgivelse (release).</p>
<h2><a name="Bygg_kode_6030912378277967_706_2203184490326039"></a> Bygg koden</h2>
<p>Det er alltid lurt å sørge for at koden er i en stabil tilstand før du begynner å endre på den. De fleste friprogprosjekter har instruksjoner om hvordan dette gjøres, enten i en README fil eventuelt i dokumentasjon på web. Dersom prosjektet også har automatiserte tester bør du sette deg inn i hvordan du kjører disse. Dette vil forenkle arbeidet med å lage en endring (patch).</p>
<h2><a name="Bruk_riktig_formatering_559995"></a> Bruk riktig formatering</h2>
<p>Når man skal bidra til friprogprosjekter er det viktig å følge formateringen til prosjektet. Dette kan f.eks. være å bruke samme form for tabulator, og at import-uttrykk ikke blir automatisk organisert. Dette vil øke sannsynligheten for at din endring blir godtatt. I noen miljøer kan det være lurt å slå av automatisk formatering av koden.</p>
<h2><a name="Skriv_test_9744098770283938_67_47652362963631634"></a> Skriv en test</h2>
<p>Nå er vi klare til å begynne å endre på kodebasen. Det første du bør gjøre er å skrive en test som illustrerer feilen du ønsker å fikse (eventuelt bruker den funksjonaliteten du ønsker å legge til). Dette er nyttig senere for de som administrerer prosjektet. De kan kjøre testen du har skrevet (uten dine kodeendringer) og få en bekreftelse på at ønsket funksjonalitet ikke fungerer uten kodeendringene dine. Overtalelse er viktig når du skal bidra til fri programvare, og en feilende test er et sterkt argument for at nettopp dine kodeendringer bør flettes inn i prosjektet. Dersom prosjektet allerede har automatiserte tester bruker du det. Du kan eventuelt beskrive en manuell test dersom prosjektet ikke bruker automatiserte tester. Her er det faktisk mulig at testen din ikke vil avdekke noen feil. Dette skjer typisk hvis koden du hentet ned er nyere enn siste release.</p>
<h2><a name="Skriv_kode_7987708104383916_94_8698688465799772"></a> Skriv en fiks</h2>
<p>Nå som du har en test som illustrerer mangelen i kodebasen kan du begynne å kode. Du koder ganske enkelt til testen din passerer. Når du mener du er ferdig kjører du alle testene for å forsikre deg om at du ikke har ødelagt noe.</p>
<h2>Dokumentasjon</h2>
<p>Udokumentert funksjonalitet finnes ikke &#8211; i hvert fall ikke for vanlige brukere. Dersom din fiks endrer eller legger til funksjonalitet i produktet må du også oppdatere dokumentasjonen. Dersom dokumentasjonen ligger under versjonskontroll bør patchen din også inneholde oppdatert dokumentasjon. Dersom dokumentasjon ligger utenfor (f.eks. i en Wiki), bør du legge med en egen fil som beskriver den nye funksjonaliteten. Når endringen din flettes inn i den offisielle koden blir det enkelt å oppdatere dokumentasjonen også.</p>
<h2><a name="Opprydning_697123461775437_986_3054964199215845"></a> Opprydning</h2>
<p>Noe av det viktigste ved patching av prosjekter er å gjøre endringene i kodebasen så små som mulig. Pass på å sjekke at ikke undøvendige linjeskift, organisering av import-uttrykk, eller innrykk kommer med i patchen. Det skal være så enkelt som mulig for eieren av prosjektet å se hva slags endringer patchen inneholder.</p>
<h2><a name="DSCM_6270101970398148_22418669_8574785856233718"></a> Distribuert versjonskontroll (DSCM)</h2>
<p>Dersom prosjektet bruker et distribuert versjonskontrollsystem (DSCM) som Git eller Mercurial, har hvem som helst mulighet til å sjekke inn sine egne endringer i en kopi (fork) av den offisielle koden. Dette skjer uten at de som administrerer prosjektet behøver å gi tilgang på forhånd. Etter at du har sjekket inn og publisert dine endringer til din kopi kan du be administratoren (via epost, IRC, bug tracker eller andre kanaler) om å flette inn dine endringer.</p>
<p>Når du jobber med kode som ligger i et DSCM behøver du ikke å lage en patch fil. Eksempel:</p>
<ul>
<li> <strong>Git:</strong> <span style="font-family: Courier New;">git add fil_1 fil_2 fil_3 &amp;&amp; git commit -m &#8220;La til støtte for verdensherredømme&#8221; &amp;&amp; git push</span></li>
<li> <strong>Mercurial:</strong> <span style="font-family: Courier New;">hg add fil_1 fil_2 fil_3 &amp;&amp; hg commit -m &#8220;La til støtte for verdensherredømme&#8221; &amp;&amp; hg push</span></li>
</ul>
<h2><a name="CSCM_7651684706862506_34376383_2212366755722629"></a> Sentralisert versjonskontroll (CSCM)</h2>
<p>For sentralisert versjonskontroll (CVS, Subversion, etc) lager man en diff-fil (patch) som legges som vedlegg til en ticket. Det er viktig at denne er så liten og ryddig som mulig for å skape minst mulig hodebry å flette (merge) inn endringer man har gjort. En diff-fil lages ved å stå i rotkatalogen for prosjektet man jobber med, og kjøre en diff-komando for SCM-verktøyet man bruker. F.eks:</p>
<ul>
<li><strong>Subversion: </strong><span style="font-family: Courier New;">svn diff -x -w &gt; patch-description-1.diff</span></li>
</ul>
<p>Løpenummeret i filnavnet brukes hvis man ønsker å endre patchen etter å ha submittet den, men før den har blitt flettet inn i trunk.</p>
<h2><a name="Tillatelse_7006063715093944_05_6914820713130824"></a> Tillatelse</h2>
<p>Endringer du gjør i arbeidstiden eies vanligvis av enten arbeidsgiveren din eller kunden. Dersom du ønsker å publisere en patch du har laget på jobb må du derfor få samtykke fra eieren før du publiserer denne.</p>
<p>I noen organisasjoner kan det være vanskelig å få gjennomslag for å &#8220;gi bort&#8221; noe som de har betalt for å få laget. Men å sende slike bidrag tilbake kan faktisk lønne seg for kunden, fordi man da slipper å måtte vedlikeholde selv de lokale endringene man har gjort og å håndtere disse ved alle oppgraderinger.</p>
<h2><a name="Ticket_Issue_4959597009883261_"></a> Endringsmelding</h2>
<p>Lag en ny endringsmelding (ticket/issue) i prosjektets endringshåndteringssystem (tracker) som beskriver endringene du har gjort. Legg ved alt av referanser og/eller filer som trengs for at prosjektet kan flette inn endringene (ref. til DSCM for eller diff-fil). Skriv en kort, men konsis beskrivelse av hvorfor nettopp din endring bør tas inn i prosjektet.</p>
<h2><a name="_Vedlikehold_av_endring__6554853383263815"></a> Vedlikehold av endring</h2>
<p>Det kan i enkelte tilfeller ta flere uker før noen ser på din patch. I mellomtiden er det viktig å vedlikeholde endringene dine. Synkroniser kode opp mot endringer som gjøres i trunk, og ved eventuelle konflikter, løs opp i disse, og send en ny patch (med nytt løpenummer) i <em>samme</em> endringsmelding.</p>
<h2>Oppsummering</h2>
<p>Første gang man bidrar til åpen kildekode kan det være forvirrende å vite hvor man skal begynne. Vi håper denne lille introduksjonen hjelper deg et lite stykke på vei. Hvis du står fast er det beste du kan gjøre å stille spørsmål i prosjektets diskusjonsforum. <a href="http://en.wikipedia.org/wiki/Hacker_(programmer_subculture)">Hackere</a> er stort sett takknemlige for all hjelp de kan få og hjelpsomme overfor nykommere. Lykke til!</p>
]]></content:encoded>
			<wfw:commentRss>http://open.bekk.no/2009/03/27/hvordan-bidra-til-fri-programvare-friprog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
