Libpqxx en de lessen van achttien jaar open source

interview

Bij Eonics gebruiken we zoveel mogelijk opensourcesoftware. Als ontwikkelaars van onafhankelijkheid sluiten de principes van opensource namelijk naadloos aan bij onze missie. Naast het gebruik van opensource dragen we echter ook op verschillende manieren bij aan dergelijke software. Een voorbeeld hiervan is onze Python consultant Jeroen Vermeulen die al decennialang op vele manieren actief is in de open source community. In dit artikel lees je over zijn ervaringen naar aanleiding van een project dat hij achttien jaar geleden begon en nog altijd onderhoudt: libpqxx.

Jeroen is een ervaren Python ontwikkelaar met een lange staat van dienst in binnen- en buitenland. Hij werkte in het buitenland maar keerde een aantal jaren geleden terug naar Nederland. Inmiddels werkt hij als Senior consultant bij Eonics. Momenteel zit hij op een klus bij de ING in Amsterdam. Naast zijn dagelijkse werk ontwikkelt en onderhoudt hij diverse open source projecten. Onlangs bereikte zijn libpqxx project de respectabele leeftijd van achttien jaar en dit was voor de redactie van de Inbox een mooie aanleiding om hem te vragen naar de inhoud van dit stukje software én wat anderen van zijn uitgebreide ervaring als open source ontwikkelaar kunnen opsteken.

Afbeelding: Jeroen Vermeulen vertelt met plezier over zijn bijdrage aan open source software

Dit kan beter

Eerst vertelt Jeroen hoe het allemaal begon en wat libpqxx nou precies inhoudt. Jeroen: “PostgreSQL is een bekend en veelgebruikt opensource-databasepakket, ook wel postgres genoemd. Deze database is door de jaren heen uitgegroeid tot een van de beste databases ter wereld  en wordt bijvoorbeeld ook bij Eonics succesvol in vele projecten ingezet. Mijn libpqxx project is een zogenaamde API voor programma’s geschreven in C++ om met deze database te kunnen communiceren. Anders gezegd: het is de vertaler voor C++ programmeurs die graag op een effectieve manier met een postgres database willen communiceren, een lijmlaag die zorgt dat ze goed op elkaar passen.” Toen Jeroen in 2000 zelf aan de slag wilde met C++ en postgres bleek deze vertaalslag al eerder gedaan te zijn. Jeroen was echter ontevreden over  de manier waarop deze was ontworpen. “De bestaande library was toen libpq++, vandaar mijn naam libpqxx. Ik heb de plusjes gewoon op hun kant gezet. Deze library werkte wel maar er was volgens mij niet goed nagedacht over de problemen die het moest oplossen. Dus stroopte ik mijn mouwen op en besloot dit beter te doen: libpqxx was geboren.”

Afbeelding: libpqxx is een API die C++ programmeurs in staat stelt om op een effectieve manier tegen de PostgreSQL database applicatie te "praten"

Het idee van opensourcesoftware is dat je het bouwt met open broncode zodat anderen jouw werk eenvoudig kunnen gebruiken en aanpassen voor hun eigen projecten. Aangezien libpqxx al zo lang bestaat vragen we Jeroen naar voorbeelden van het gebruik van zijn software. Jeroen: “Als je dit soort dingen goed bouwt, hoor je er juist verbazend weinig over. Regelmatig kom ik mensen tegen die zeggen: ‘Mijn werkgever wil niet zeggen welke software wij gebruiken, maar libpqxx zit daar zeker tussen.’ Een goede library doet zijn werk zonder op te vallen, dus vanuit dat perspectief is libpqxx zeker geslaagd.”

Van broncode tot vriendschap

De opensource gedachte van het vrijelijk delen van je intellectuele gedachtegoed werkt voor Jeroen zelfs door in het echte leven. “Ik heb een tijd in Thailand gewoond en gewerkt. Het was daar niet altijd makkelijk om mede-nerds te vinden. Op een dag ging ik naar een bijeenkomst waar ik iemand tegenkwam die bezig was met het porten van zijn Windows/Microsoft SQL applicaties naar GNU/Linux met PostgreSQL, en daar had hij een API voor nodig. De perfecte aanleiding om met hem in gesprek te gaan over mijn werk aan libpqxx. Dit was ik echter niet gewend want tot dan toe waren de meeste gebruikers collega’s of ex-collega’s. Ik legde hem mijn visie uit, beseffende dat ik mogelijk eigenwijs of arrogant over kon komen, maar tot mijn verbazing bleef hij vriendelijk en geïnteresseerd. Mijn eigenwijze visie sprak hem wel aan. Hij werd een libpqxx is gebruiker en tot op de dag van vandaag zijn we nog altijd vrienden.”

Achttien jaar is lang in de wereld van de software. We zijn dan ook benieuwd naar de ervaringen van Jeroen als je voor zo’n lange tijd een stukje software bouwt en onderhoudt. Jeroen: “Na een aantal jaren weet je soms echt niet meer wat er nou precies in je hoofd omging toen je een specifiek stukje software schreef. Meestal kun je dan een andere programmeur de schuld geven, maar dit werkt natuurlijk niet als je weet dat je zelf deze code ooit hebt opgeschreven! Dit heeft mij geleerd om bij het schrijven van een code goed na te denken over hoe deze code overkomt op iemand anders die de code moet lezen zónder de context te kennen. Bekende voorbeelden hiervan zijn: goed nadenken over zaken als naamgeving van variabelen, functies en het commentaar dat je bij de code geeft. Tegelijkertijd probeer ik het kort en bondig te houden omdat ik heb geleerd dat je als programmeur vaak onder tijdsdruk moet proberen een stuk code te begrijpen. Op een lange roman zit dus niemand te wachten.”

"Als programmeur moet je vaak onder tijdsdruk proberen een stuk code te begrijpen. Op een lange roman zit dus niemand te wachten.”

Waar te beginnen

Bij Eonics werken ontwikkelaars van alle leeftijden en nationaliteiten met zeer uiteenlopende achtergronden en ervaringsniveaus. We zijn dan ook benieuwd naar de tips van Jeroen aan beginnende ontwikkelaars die ook graag aan opensourcesoftware willen bijdragen. Jeroen: “Het lastige met de bekendere volwassen projecten is dat je er vaak behoorlijk diep in moet duiken om wezenlijk bij te kunnen dragen. Wat echter altijd goed werkt is proberen goede vragen te stellen om zo de oude rotten in het project meer inzicht te geven in welke onderdelen meer aandacht en uitleg kunnen gebruiken. Een andere manier is om simpelweg te beginnen met stukken code op te schonen en te verbeteren. Daarbij moet je  geen wezenlijke functionele veranderingen doorvoeren. Daarvandaan is het een kleine overstap naar het echte werk.”

Ook voor mensen die, net als Jeroen, zelf een project willen beginnen, heeft hij tips. “Het is moeilijk te voorspellen of jouw idee of project bekend of populair wordt, maar dat geeft niet! Begin met bouwen en maak je over de rest geen zorgen. Het zal sowieso je kennis en kunde enorm verrijken. Waar je wel naar kunt kijken is of je werk concreet gewaardeerd en gebruikt wordt door andere ontwikkelaars en het nut ervan. Dit kan een goede indicatie zijn dat je op de goede weg zit met je ideeën. Daarnaast moet je niet bang zijn om nieuwe dingen uit te proberen, ook al lijken ze niet meteen nuttig. Op deze manier kom je namelijk wel op de beste nieuwe ideeën en doorbraken.”

"Begin met bouwen en maak je over de rest geen zorgen, het zal sowieso je kennis en kunde enorm verrijken."

We sluiten af met de laatste tip van Jeroen voor beginnende open source ontwikkelaars. Dit advies is volgens ons universeel van toepassing op het ontwikkelen van goede software, of misschien zelfs wel het dagelijks  leven. “Tenslotte wil ik benadrukken dat je altijd duidelijk moet zijn. Dit leer je door goed te letten op wat anderen onduidelijk vinden, aan wat jij opschrijft. Op school leer je dat correctheid de belangrijkste eigenschap van software is, en pas daarna de functionaliteit. Volgens mij klopt dit niet. Wanneer je fouten maakt, kun je die namelijk altijd later nog verbeteren, mits jouw code duidelijk met de lezer communiceert. Wanneer niemand begrijpt wat je eigenlijk probeert te zeggen, is alle hoop sowieso verloren.”

Tot slot

We danken Jeroen voor de leerzame informatie. Is je interesse gewekt en wil je  meer weten over de opensourcesoftware van Jeroen, neem dan een kijkje op de website van libpqxx of bekijk zijn GitHub profiel.

Wil je op de hoogte blijven van artikelen die geplaatst worden in de Inbox? Schrijf je dan in op de nieuwsbrief: