The Gathering Technical blog

Meg, gondul og åpen kildekode

19 Feb 2019, by Håkon Solbjørg from Tech:Support

Hei bloggen!

I dag tenkte jeg å blogge litt om gondul og åpen kildekode, og også litt om hva dette har å si for utviklere/"it-folk". Om du ikke har hørt om noen av disse tingene før, så frykt ikke -- det kommer en innføring!

Som fersk programmerer er det noe man blir opplært i: Copy/paste av kode er dårlig praksis.

Hvis man løser et problem én gang, så er det litt dumt å kopiere koden og lime den inn et annet sted for å løse det igjen.
Tenk om man fant en feil (eller bug, som det heter på fint), da må man huske alle stedene man har kopiert koden til, og oppdatere den. Det er tungvint!

Derfor eksisterer det i programmering funksjoner, som er en liten kodesnutt man kan gjenbruke flere ganger.
Det er akkurat samme konsept som matematiske funksjoner: Dersom du har f(x) = x^2 så vil f(2) = 2^2 = 4.
Her har man gjenbrukt det samme uttrykket ved å kalle det f(x) istedenfor x^2. Det er veldig mye mer gjenbrukbart, dersom man på et senere tidspunkt vil endre funksjonen til å gjøre (x^2)-1 istedenfor.

Poenget mitt med denne lille innføringen er at et viktig prinsipp i programmering er å ha gjenbrukbar kode, altså funksjoner, som ... kan gjenbrukes gjennom programmet.

Det har seg ofte slik at man trenger å gjøre de samme tingene i flere forskjellige programmer, eksempelvis så er det mange nettsider som trenger innloggingsfunksjonalitet -- skal man lage dette på nytt hver eneste gang?
Det er kanskje ikke akkurat den største jobben, tenker man, men det er ganske viktig å gjøre nettopp innlogging riktig.
Hvis du noen gang har fått en e-post om at du burde bytte passord fordi noen har klart å få tak i dine innloggingsdetaljer så har du mest sannsynlig brukt en nettside som ikke hadde god nok sikkerhet rundt innlogging/brukerinfo.

Det er bedre å gjøre ting riktig én gang og gjenbruke det, enn å gjøre det på nytt hver gang og kanskje glemme ting.
Det finnes et ordtak for dette: Det er ingen vits i å finne opp hjulet på nytt.

Okei, men hva har dette å si for programmering? Og meg? Og gondul?

I programmeringsverdenen kan man ofte "hente inn en pakke" som gjør noe standard for deg. For eksempel håndtere innlogging. Så slipper man å tenke så veldig mye på dette. Denne koden kommer ofte fra prosjekter som er åpen kildekode, som betyr at hvem som helst kan gå inn å lese koden, for eksempel for å forstå hvordan den fungerer.

Så, rett som det er så er det folk som har lyst til å endre på hvordan denne koden fungerer. Og kanskje det er andre som har lyst på den samme nye funksjonen? Der skinner åpen kildekode.

Man kan sende inn en "patch" som er en "endring" av koden. Dette kan være for å fikse en bug eller for å komme med helt nye funksjoner.
Så vil den (eller de) som "eier" koden se over disse endringene og eventuelt legge dem til.
Før så ble dette ofte gjort på e-post (og gjøres fortsatt over e-post noen steder), men nå gjøres dette ofte gjennom et verktøy som håndterer slike patcher, f.eks. "git", og gjerne med en nettside til, à la GitHub.

Dersom eieren(e) av koden syns dette var en nyttig patch så inkluderer de den gjerne i koden og legger ut en ny versjon av den, så folk kan bruke den nye versjonen som løser dette problemet eller har denne nye featuren. Til slutt så har det seg sånn at folk gjerne tar denne koden i bruk i sine egne programmer, nettopp for å slippe å finne opp hjulet på nytt hele tiden.

Okei, dette ble litt mer om versjonskontroll(systemer) enn man kanskje bryr seg om, så hva har dette å si for meg og gondul?

Først av alt: Hva er gondul?

(Noen får arrestere meg om jeg forteller feil her!)

Gondul er et system for å håndtere (primært) nettverksutstyret som driver The Gathering hvert år.
Etter at man innså at det å konfigurere en og en switch eller gå igjennom alle switchene for å teste at de funker var tidkrevende, så var det noen som tenkte at det må da være mulig å automatisere dette!

Så hva gjør egentlig gondul? Det må gjerne README-fila i gondul fortelle i detalj, men kort fortalt så er det et system som sjekker at blant annet alle deltakerswitchene er i korrekt tilstand.
I tillegg så har det støtte for å sjekke at ting ellers "er riktig", og også sende ut konfigurasjonen til switchene.
For eksempel så er det veldig lett å se om noen har dratt ut strømmen på en switch, fordi gondul viser dette ved å tegne opp switchen i "værkartet" til gondul som en rød switch, fordi den ikke svarer når vi spør om den er der.
Rød er ikke bra. Grønn er bra. Ikke rød.
Når den har fått strømmen sin tilbake og fått startet opp så blir den grønn igjen, og alt er vel og bra.

Så, kort om gondul. Det som er litt kult er at gondul er hjemmelaget til TG. Systemet er laget veldig modulært ("oppstykket"), så det går fint an å bruke det til andre datapartyer enn TG, men det brukes i hvert fall aktivt på TG.

Ikke nok med det! For at andre skal kunne bruke gondul så må de jo få tak i det på noe vis. Og gondul har løst dette ved å være helt åpen kildekode.
Alt av gondul finner dere her. Og hvis man trykker på "Contributors" så får man opp en liste av alle som har gjort noe med gondul. Kult, hæ?

Så hvis noen bruker gondul så kan de rapportere inn feil eller foreslå features rett på den nettsiden. Det er litt kult.

Jeg jobber til daglig som systemutvikler, og jeg syns åpen kildekode er kjempegøy. Det er morsomt å se hvordan andre har løst problemer, og det er fint når jeg slipper å løse et problem som noen andre har løst før meg.
Ikke minst er det gøy å bidra til det.

Blant annet så har jeg (selvskryt ahead) løst en bug jeg fant i et program og rettet et par skrivefeil i andre. Det er bare småting, men det er veldig gøy at kode som jeg selv har skrevet blir brukt av andre verden over.

De siste par årene så har åpen kildekode tatt av med storm, og store aktører som Microsoft, Google og Facebook har alle programvare ute som er åpen kildekode. Alt fra teksteditorer til programmeringsspråk og programmeringsbiblioteker.

Under TG i fjor så fant jeg ut om gondul og at det var åpen kildekode, og jeg fant en feil som gjorde at gondul noen ganger viste en ugyldig status på en av verdiene til en switch.
Ettersom all kildekoden lå åpent ute på internett så fant jeg ut hva som skapte feilen, klarte å gjenskape den, og skrev litt kode som gjorde at denne feilen ikke vil skje igjen.
Så sendte jeg inn et forslag til endring, og dette ble akseptert og dratt med inn i gondul.

Så nå har jeg faktisk bidratt bittelitt til gondul!

Og i år så har jeg fortsatt med å bidra til gondul litt fra sidelinjen, ved å utforske ting man kan gjøre med gondul uten å direkte påvirke gondul i seg selv.

Blant forslagene er å få NOC-en til å blinke med lysene dersom noe på værkartet er i "feil" tilstand, sende en melding til chatten til tech og så videre.

Labels: Tech TG19

Håkon Solbjørg

Ofte bedre kjent som Sklirg. Systemutvikler by day, programmerer by night. Befinner meg omtrent alltid foran en datamaskin, enten om det er for å kode eller for å spile.

Crew: Tech:Support

About

TG - Technical Blog is the unofficial rambling place of the Info:Systems, Tech:Net and Tech:Server crews from The Gathering.

Related sites

Collaborators