I går holdt Iver og Pål Martin et innlegg om våre erfaringer på Vipps Developers Meetup.
Sammen med 6 andre foredragsholdere underholdt vi 42 utviklere fra større og mindre selskaper som hadde samlet seg hos Vipps i Oslo. Sjekk siden til Vipps Meetup her.
På bildet ser dere Christian Løverås fra Vipps innlede hele showet.
I korte drag inneholdt vårt foredrag følgende punkt.
Generelt om utvikling av plugins for WooCommerce
Det viktigste er å huske på at man ikke kontrollerer omgivelsene pluginen skal leve i. Det er helt umulig å teste uttømmende ettersom hver installasjon vil variere på følgende:
- Kvalitet på hostingen. Noen kjører på det aller billigste som finnes av hosting, mens andre har dedikert cluster masser av maskinvare.
- Ulike størrelse på butikkene. Enkelte selger en t-skjorte i uka, mens andre kan ha flere tusen ordre om dagen.
- Ulik kompetanse på eierne. Noen kan lite data men har klart å sette opp butikken på egenhånd, mens andre butikker har topp utdannede utviklere.
- 3. parts plugins. Man har ingen kontroll på hva andre plugins kan finne på å gjøre. Man kan støte på plugins som endrer flyten i kassen, statuser på ordre, finurlig utregning av frakt og mye mye annet.
Hvordan dette påvirket Vipps plugin for Woo
Vi måtte programmere svært defensivt og legge inn hooks og filtre mange steder i koden. Dette er enda ikke fullført og vi jobber fortsatt med å hardne pluginen etterhvert som woo-samfunnet gir oss tilbakemeldinger.
Spesielt har vi måttet løse disse utfordingene:
- All konfigurasjon må gjøres med standard WP-verktøy og lagres i databasen – man kan ikke ha egne konfigurasjonfiler
- Callback fra vipps kan komme når som helst, men ikke nødvendigvis idet kunden er kommet tilbake til butikken. Derfor må plugin polle resultatet fra Vipps, noe som skaper en race condition – og det finnes ingen portabel måte å lage låser på i WordPress. Så koden må her skrives for å redusere sannsynlghet for at dette skjer, og å redusere konsekvensens av det når det skjer
- Testing og funksjon med tredjeparts-plugins som vi ikke har tilgang til krever at det logges til Woo loggen i særlig grad slik at kundene kan hjelpe oss å hjelpe dem. Og hver gang vi finner et slikt kritisk punkt, så må vi legge til filtere og hooks som lar kunden ordne problemet inntil vi får testet samhandlingen