5. De uitdaging voor port-onderhouders

Deze sectie geeft u een idee waarom ports onderhouden moeten worden en schetst de verantwoordelijkheden van een onderhouder van een port.

5.1. Waarom ports onderhoud nodig hebben

Een port creëeren is een eenmalige taak. Er zeker van zijn dat een port actueel is en blijft bouwen en draaien is een voortdurende inspanning. Onderhouders zijn mensen die wat van hun tijd wijden aan het vervullen van deze doelen.

De voornaamste reden waarom ports onderhoud nodig hebben is om het nieuwste en beste van software van derde partijen aan de FreeBSD-gemeenschap te geven. Een aanvullende uitdaging is om individuele ports werkend te houden binnen het evoluerende raamwerk van de Portscollectie.

Als onderhouder zult u de volgende uitdagingen moeten aangaan:

5.2. Verantwoordelijkheden als onderhouder

5.2.1. Houd uw ports actueel

Deze sectie schetst het proces dat gevolgd wordt om uw ports actueel te houden.

Dit is een overzicht. Meer informatie over het bijwerken van een port is beschikbaar in het Porter's Handbook.

  1. Kijk uit naar updates

    Houd de stroomopwaartse leverancier in de gaten wat betreft nieuwe versies, updates, en beveiligingsreparaties voor de software. Mailinglijsten met aankondigingen of webpagina's met nieuws zijn hiervoor handig. Soms zullen gebruikers contact met u opnemen en vragen wanneer uw port wordt bijgewerkt. Als u het druk hebt met andere dingen of u het om enige andere reden niet nu kunt bijwerken, vraag ze dan om u te helpen door een update te sturen.

    U kunt ook geautomatiseerde email van de FreeBSD Ports Version Check ontvangen die u informeert of er een nieuwe versie van het distributiebestand van uw port beschikbaar is. Meer informatie over dat systeem (inclusief hoe toekomstige emails te stoppen) staat in het bericht.

  2. Verwerk veranderingen

    Verwerk veranderingen in de port wanneer ze beschikbaar komen. U dient een patch aan te kunnen maken tussen de originele port en uw bijgewerkte port.

  3. Herzie en test

    Herzie en test uw veranderingen grondig:

    • Bouw, installeer, en test uw port op zoveel mogelijk platforms en architecturen. Het is gebruikelijk dat een port op één tak of platform werkt maar faalt op een ander.

    • Zorg dat de afhankelijkheden van uw port compleet zijn. De aangeraden manier om dit te doen is door uw eigen tinderbox voor ports te installeren. Bekijk bronnen voor meer informatie.

    • Controleer of de pakketlijst actueel is. Dit omvat het toevoegen van nieuwe bestanden en mappen en het verwijderen van ongebruikte regels.

    • Verifieer uw port met portlint(1) als gids. Bekijk bronnen voor belangrijke informatie over het gebruik van portlint.

    • Overweeg of veranderingen aan uw port andere ports zouden kunnen kapotmaken. Bespreek de veranderingen met de onderhouders van die ports als dit het geval is. Dit is speciaal van belang als uw update de versie van de gedeelde bibliotheek verandert; in dit geval dienen de afhankelijke ports minstens een verhoging van de PORTREVISION te krijgen zodat ze automatisch worden bijgewerkt door geautomatiseerde gereedschappen als portmaster of portupgrade(1).

  4. Stuur veranderingen in

    Verzend uw update door een PR met een uitleg van de veranderingen en een patch die de verschillen tussen de originele port en de bijgewerkte port bevat in te sturen. Bekijk alstublieft Probleemrapporten voor FreeBSD schrijven voor informatie over hoe een echt goed PR te schrijven.

    Opmerking: Stuur alstublieft geen shar(1)-archief van de gehele port; gebruik in plaats daarvan diff(1) -ruN. Op deze manier kunnen committers veel gemakkelijker zien welke veranderingen er precies gemaakt worden. De sectie in het Porter's Handbook over Upgrading bevat meer informatie hierover.

  5. Wacht

    Op een gegeven moment zal een committer uw PR behandelen. Dit kan minuten, maar ook weken duren — ben dus alstublieft geduldig.

  6. Geef feedback

    Als een committer een probleem vindt in uw veranderingen zullen ze het waarschijnlijk aan u terugkoppelen. Een snel antwoord helpt om uw PR sneller gecommit te krijgen, en is beter voor het behouden van een discussie wanneer er geprobeerd wordt om problemen op te lossen.

  7. En ten slotte

    Uw veranderingen zullen gecommit worden en uw port zal bijgewerkt zijn. Het PR wordt vervolgens door de committer gesloten. Dat is alles!

5.2.2. Zorg ervoor dat uw ports correct blijven bouwen

Deze sectie gaat over het ontdekken en oplossen van problemen die verhinderen dat uw ports correct bouwen.

FreeBSD garandeert alleen dat de Portscollectie op de -STABLE-takken werkt. U dient 7-STABLE of 8-STABLE te draaien, bij voorkeur de laatste. In theorie zou het voldoende moeten zijn om de nieuwste uitgave van elke STABLE-tak te draaien (aangezien de ABI's niet horen te veranderen), maar als u die tak kunt draaien is dat beter.

Aangezien de meerderheid van FreeBSD-installaties op PC-compatibele machines draait (wat wordt aangeduid als de i386-architectuur), verwachten wij van u dat u de port op die architectuur werkend houdt. We prefereren dat de ports ook op de amd64-architectuur draaien. Het is prima om hulp te vragen als u een van deze machines niet heeft.

Opmerking: De gebruikelijke manieren om te falen voor niet-i386 machines zijn dat de originele programmeurs aannamen dat, bijvoorbeeld, pointers ints zijn of dat een relatief lakse oudere gcc compiler werd gebruikt. Steeds meer reorganiseren applicatie-auteurs hun code om deze aannames te verwijderen — maar als de auteur de code niet actief onderhoudt, zult u dit zelf moeten doen.

Deze taken moet u uitvoeren om ervoor te zorgen dat uw port gebouwd kan worden:

  1. Kijk uit naar bouwfouten

    Controleer regelmatig het geautomatiseerde portbouwcluster, pointyhat, en de scanner voor distributiebestanden om te zien of er ports zijn die u onderhoudt die er niet in slagen om gebouwd of opgehaald te worden (bekijk bronnen voor meer informatie over deze systemen). Rapportages over mislukkingen kunnen ook via email van andere gebruikers of geautomatiseerde systemen tot u komen.

  2. Verzamel informatie

    Als u eenmaal op de hoogte bent van een probleem, verzamel dan informatie die u helpt het op te lossen. Bouwfouten die door pointyhat worden gerapporteerd worden vergezeld door logs die aangeven waar het bouwen mislukte. Als de mislukking door een gebruiker aan u werd gerapporteerd, vraag ze dan om informatie te verzenden die u helpt om het probleem te vast te stellen, zoals:

    • Bouwlogs

    • De commando's en opties die gebruikt werden om de port te bouwen (inclusief opties die in /etc/make.conf zijn ingesteld)

    • Een lijst met op hun systeem geïnstalleerde pakketten als aangegeven door pkg_info(1)

    • De versie van FreeBSD die ze draaien als aangegeven door uname(1) -a

    • Wanneer hun Portscollectie voor het laatst was bijgewerkt

    • Wanneer hun bestand INDEX voor het laatst was bijgewerkt

  3. Onderzoek en zoek een oplossing

    Helaas is er geen rechttoe-rechtaan proces dat gevolgd kan worden om dit te doen. Herinner: vraag om hulp als u vast zit! De FreeBSD ports mailinglijst is een goede plaats om te starten, en de stroomopwaartse ontwikkelaars zijn vaak zeer behulpzaam.

  4. Stuur veranderingen in

    Net zoals bij het bijwerken van een port, dient u nu de veranderingen te integreren, te herzien en te testen, uw veranderingen als een PR in te sturen, en feedback te geven als dat nodig is.

  5. Stuur patches naar de stroomopwaartse auteurs

    In sommige gevallen moet u patches maken om de port op FreeBSD te laten draaien. Sommige (maar niet alle) stroomopwaartse auteurs zullen zulke patches in hun code accepteren voor de volgende uitgave. Als dit zo is, kan dit zelfs hun gebruikers op andere op BSD-gebaseerde systemen helpen en misschien dubbel werk besparen. Overweeg alstublieft om geschikte patches naar de auteurs te zenden als teken van goede wil.

5.2.3. Onderzoek foutrapporten en PR's die aan uw port gerelateerd zijn

Deze sectie gaat over het ontdekken en repareren van bugs.

FreeBSD-specifieke bugs worden in het algemeen veroorzaakt door aannames over de bouw- en draaiomgevingen die niet voor FreeBSD gelden. U zult zo'n soort fout minder snel aantreffen, maar het kan subtieler en moeilijker zijn om het vast te stellen.

De onderstaande taken moet u uitvoeren om ervoor te zorgen dat uw port als bedoeld blijft werken:

  1. Reageer op bugrapporten

    Bugs kunnen per email via de GNATS Probleemrapportendatabase aan u worden gerapporteerd. Bugs kunnen ook direct door gebruikers aan u gerapporteerd worden.

    U dient binnen 14 dagen op PR's en andere rapporten te reageren, probeer hier alstublieft niet zo lang over te doen. Probeer zo snel mogelijk te reageren, zelfs als het alleen maar is om te zeggen dat u wat meer tijd nodig heeft voordat u aan het PR kan werken.

    Als u niet na 14 dagen heeft gereageerd, mag elke committer via een maintainer-timeout uit een PR committen waarop u niet heeft gereageerd.

  2. Verzamel informatie

    Als degene die de bug heeft gerapporteerd niet ook een reparatie heeft aangeleverd, zult u informatie moeten verzamelen die u in staat stelt om er een te genereren.

    Als de bug reproduceerbaar is, kunt u zelf de meeste vereiste informatie verzamelen. Zo niet, vraag dan degene die de bug rapporteerde om de informatie voor u te verzamelen, zoals:

    • Een gedetailleerde beschrijving van hun acties, verwacht gedrag en eigenlijk gedrag van het programma

    • Kopiën van invoergegevens die de bug aanzwengelden

    • Informatie over hun bouw- en uitvoeromgeving — bijvoorbeeld een lijst van geïnstalleerde pakketten en de uitvoer van env(1)

    • Coredumps

    • Stacktraces

  3. Elimineer onjuiste rapporten

    Sommige bugrapporten kunnen onjuist zijn. De gebruiker kan het programma simpelweg verkeerd gebruikt hebben; of hun geïnstalleerde pakketten kunnen verouderd zijn en bijgewerkt moeten worden. Soms is een gerapporteerde fout niet specifiek voor FreeBSD. Rapporteer in dit geval de bug naar de stroomopwaartse ontwikkelaars. Als u de bug kunt repareren, kunt u de port ook patchen zodat de reparatie is toegepast voor de volgende stroomopwaartse uitgave.

  4. Vind een oplossing

    Net als met bouwfouten dient u een oplossing voor het probleem te vinden. Nogmaals, vraag om hulp als u vastzit!

  5. Stuur veranderingen in of keur ze goed

    Net als bij het bijwerken van een port, dient u nu de veranderingen te integreren, ze te herzien en te testen, en ze in een PR op te sturen (of een vervolg te verzenden als er al een PR voor het probleem bestaat). Als een andere gebruiker veranderingen in het PR heeft ingezonden, kunt u ook een vervolg sturen waarin u zegt of u de veranderingen wel of niet goedkeurt.

5.2.4. Ondersteuning bieden

Deel van een onderhouder zijn is ondersteuning bieden — niet noodzakelijk voor de software in het algemeen — maar voor de port en alle FreeBSD-specifieke rariteiten en problemen. Gebruikers kunnen contact met u opnemen voor vragen, suggesties, problemen, en patches. Meestal zal hun correspondentie specifiek voor FreeBSD zijn.

Af en toe zult u uw diplomatieke vaardigheden moeten gebruiken, en gebruikers die algemene ondersteuning zoeken vriendelijk naar de geschikte bronnen verwijzen. Minder vaak zult u iemand tegenkomen die vraagt waarom de RPMs niet actueel zijn of hoe ze de software onder Foo Linux kunnen draaien. Grijp deze kans om ze te vertellen dat uw port actueel is (als het dat is, uiteraard!) en stel voor dat ze FreeBSD uitproberen.

Soms zullen gebruikers en ontwikkelaars besluiten dat u een druk persoon bent wiens tijd waardevol is en wat werk van u overnemen. Ze kunnen bijvoorbeeld:

  • een PR insturen of u patches toesturen om uw port bij te werken,

  • een PR onderzoeken en er misschien een reparatie voor aanleveren, of

  • op andere wijze veranderen aan uw port insturen.

In deze gevallen is uw hoofdplicht om op tijd te reageren. Nogmaals, de timeout voor niet-reagerende onderhouders is 14 dagen. Na deze periode mogen niet-goedgekeurde veranderingen gecommit worden. Ze hebben de moeite genomen om dit voor u te doen; dus probeer tenminste op tijd te reageren. Daarna dient u zo snel mogelijk hun veranderingen te herzien, goed te keuren, te wijzigen, of met hen te bediscussiëren.

Als u ervoor kunt zorgen dat ze het gevoel hebben dat hun bijdrage gewaardeerd wordt (wat zo hoort te zijn), dan heeft u een grotere kans om ze te overtuigen om in de toekomst meer voor u te doen :-).