Wat is er nu leuker dan een slimme oplossing te bedenken voor je probleem, en daar dan een stukje software voor te maken ? Juist ja, er met anderen over praten, de (source) code delen en met z’n allen de oplossing – en misschien dan ook de software – verbeteren en aanpassen aan andere omstandigheden.

 Dit is één van de onstaansgronden van open source. Het is gewoon leuk om met een team van (verschillende) mensen aan een gemeenschappelijk doel te werken, en dit in een open setting te doen, zodat iedereen kan leren, helpen en gebruiken. We noemen dat de community-geest. Zie ook: www.artofcommunityonline.org

Distributiesystemen
Om dit open gedachtengoed en de community eromheen van dienst te zijn is het belangrijk dat het samenwerken wordt ondersteund door tools. Met deze tools kan dan de community van gedistribueerde teams code, ideeën et cetera delen. In de Open wereld wordt er veel gebruikgemaakt van file repositories waarin de code en documentatie van een project zijn opgeslagen. Deze systemen houden dan direct ook de verschillende versies bij, en wie wanneer en waarom welke wijziging heeft gemaakt.

Een bekende repository is GitHub. Vanuit de cloud kan softwarebroncode worden gedistribueerd onder ontwikkelaars. Heel veel community-driven projecten slaan hun code of documenten op in GitHub (www.github.com). Als we niet in de ontwikkelaarswereld zitten en direct binaire brokken software willen installeren op ons systeem, zonder dat we die eerst hoeven te compileren, gebruiken we soortgelijke systemen. Deze vaak cliënt-gedreven systemen (zoals rpm of yum) kunnen een bepaalde versie van een applicatie, in een zogenaamd package downloaden van distributieservers, zoals de NLUUG FTP-server, en dit vervolgens op het lokale systeem installeren. Om dit te doen moeten er vaak afhankelijkheden worden opgelost door andere (versies van) pakketten erbij te installeren in een bepaalde volgorde.

Packages
Al deze open manieren van softwaredistributie hebben gemeen dat er een serverkant bestaat, vaak een repository-server op het internet, en een client die lokaal bepaalt welke files er nodig zijn, deze downloadt en ze vervolgens in een juiste vorm op het systeem plaatst. Op het internet zijn voor de verschillende package-systemen van (Linux-)distributies allemaal repositories waar vandaan de packages komen. Welke packages er van welke server worden opgehaald, wordt door de client bepaald op basis van een configuratie file. Voor yum is dit bijvoorbeeld /etc/yum.conf. De package client gaat nu de servers langs en bepaalt op basis van de bereikbaarheid en beschikbaarheid van packages welke server wordt gebruikt voor het ophalen van de software. In Nederland is de NLUUG FTP-server één van de best bereikbare servers voor het ophalen van Linux-packages.

Source code
Wanneer een software package niet als installeerbare binary beschikbaar is, kan de software-broncode vaak worden gedownload vanaf het versie-beheersysteem van de ontwikkel-community. Dit kan github.com zijn, of een andere server. Ook hier is (vaak) een client voor nodig op het doelsysteem. Ook kunnen de repositories vaak door middel van een webinterface worden benaderd. Om echter een complete release op te halen is dit niet handig. Git (voor git repositories) of svn (voor subversion repositories) kunnen een complete versie (release) van een project in source code ophalen, waarna met make of configure;make en daarna make install één en ander kan worden gecompileerd en geïnstalleerd op het systeem.

De NLUUG
Open software kan dus op vele manieren binnen en buiten de community worden gedistribueerd. Allemaal door middel van open protocollen vanuit vaak open systemen. De NLUUG speelt daarin een rol door het beschikbaar stellen van een distributieserver voor zeer veel verschillende projecten, en kennis te delen over het ontwikkelen en gebruiken van open systemen, open software met open standaarden. Een reden te meer om mee te doen als ‘Open’ enthousiast en met ons de Open wereld verder uit te bouwen.

 

Over Rudi van Drunen
Naast zijn taken als vader en geek probeert Rudi van Drunen bij Oelan de technische productontwikkeling vorm te geven. Daarnaast is hij bestuurslid van de NLUUG en was hij Conference Chair van LISA2010. Hij neemt vaak deel aan conferenties en is een geregelde spreker op ‘open’ events.