Lansări în etape pentru dezvoltatorii de pluginuri și teme WordPress: evitarea unei „lansări Clusterbug”

Publicat: 2020-12-23

Vă amintiți ultima dată când ați lansat o nouă versiune a pluginului sau a temei dvs. WordPress pentru a descoperi rapid că ați adăugat din greșeală o nouă eroare majoră care a trecut prin fisurile secvenței de testare?

Yoast SEO 3.0 a spart multe site-uri web în 2015. Elementor 3.0 a făcut același lucru în acest an. Iar acestea sunt doar două exemple din capul meu de companii fantastice din spațiul nostru cu peste 100 de angajați și personal dedicat QA (și nu, nu are legătură cu versiunea 3.0, dar poate este un semn să omiteți acea versiune în software-ul dvs.); )).

Indiferent dacă sunteți un programator autodidact sau un inginer de software, un dezvoltator independent sau faceți parte dintr-un magazin mare de pluginuri/teme, cu toții trebuie să ne confruntăm cu erori. Este o parte inevitabilă a dezvoltării software.

Indiferent de automatizările CI/CD/de testare fanteziste pe care le-ați implementat – nu veți putea niciodată să le testați pe toate. Numărul de configurații de server (PHP, MySql, caching, server web), versiuni WP, combinații de pluginuri și teme... este nesfârșit.

Și este contraintuitiv. Cu cât produsele dvs. devin mai populare și mai stabile, cu atât sunt mai mari șansele pentru o lansare de temut „Clusterbug”, care vă va epuiza sprijinul, poate afecta în mod semnificativ încrederea și loialitatea clienților dvs. și poate afecta reputația generală a mărcii.

Deși nu puteți evita erorile, puteți, și cu siguranță ar trebui, să reduceți riscul cât de mult puteți.

Dacă aveți un smartphone, probabil ați observat că unii dintre prietenii dvs. primesc actualizări Android/iOS cu zile, săptămâni, uneori chiar cu luni înainte de a le obține. Asta nu este o coincidență și nu, nu este nimic personal împotriva ta. Este un proces de implementare progresivă intenționat numit Staged Rollouts, care ajută companii precum Apple să livreze actualizări majore de software pe peste un miliard de dispozitive.

Da, un miliard!

Poți măcar să înțelegi cât de responsabilitate ar avea un lider de versiune de la Apple pe umerii lor dacă ar trebui să împingă o actualizare live la 1,5 miliarde de dispozitive mobile simultan? nu pot. Pun pariu că niciun om sănătos nu ar fi de acord să-și asume o asemenea responsabilitate.

Deci, cum funcționează mecanismul de lansare în etape? Cum o poți implementa? Și ce așteaptă WordPress.org? Acestea sunt subiectele pe care le voi trata mai jos.

Ce sunt lansările în etape pentru pluginurile și temele WordPress?

Lansările în etape vă permit să specificați numărul (sau procentul) de site-uri web pentru care doriți să lansați o nouă versiune. Un mecanism de lansări în etape vă permite să începeți ciclul de lansare cu expunere limitată și apoi să îl creșteți treptat în timp ce monitorizați asistența și feedbackul, creând astfel încrederea în versiunea dvs. pentru dvs. și pentru utilizatori.

Prezentare generală a mecanismului de lansări în etape Freemius

Care sunt beneficiile lansărilor în etape?

În loc să riscați întreaga bază de instalare cu eliberarea de erori potențiale, conflicte cu pluginuri/teme terțe sau chiar probleme de UI/UX, puteți lansa versiuni progresiv, minimizând numărul de persoane și site-uri web care vor fi expuse la probleme neașteptate. Odată ce ați rezolvat toate problemele și erorile descoperite în timpul procesului de lansare, marea majoritate a utilizatorilor dvs. vor fi expuși la o versiune „matură” și mult mai stabilă.

Folosim actualizări continue pentru a asigura calitatea noilor noastre versiuni. Dacă există o problemă cu o nouă ediție, o putem identifica rapid și doar un mic subset de utilizatori ar fi fost afectați.

John Turner, fondator la SeedProd

Utilizarea implementărilor în etape este CEA mai bună practică pentru lansarea responsabilă a software-ului – un proces pe care îl urmează multe companii (indiferent de dimensiune) din afara bulei WP.

Există o mare oportunitate pentru comunitatea WordPress de a profita de Staged Rollouts, la care voi ajunge în curând.

Programele beta sunt similare cu lansările în etape?

Configurarea unui program beta pentru produsul dvs. WordPress este un început excelent, dar este departe de a fi la fel de eficient ca lansările în etape și are un scop și o dinamică fundamental diferite.

Cu excepția cazului în care pluginul sau tema dvs. este extrem de populară și are o comunitate mare, este destul de dificil să recrutați un grup beta suficient din punct de vedere statistic, deoarece doar o mică parte din utilizatori vor fi interesați să se alăture. Chiar dacă excelați în recrutarea unui grup decent de beta-testeri, trebuie să vă bazați pe disponibilitatea și bunăvoința acestora pentru a testa produsul și apoi să sperați că vor depune eforturi suplimentare pentru a raporta problemele pe care le găsesc.

Câți oameni crezi că vor trece prin acest proces? Nu multe.

Beta Test Meme

Testarea beta este un proces de pre-producție în care eforturile dvs. de asistență sunt controlate pe deplin, iar testerii se așteaptă să aibă probleme cu lansările beta. Prin urmare, așteptările testerilor cu privire la calitate nu reprezintă sentimentul general al bazei dvs. de utilizatori.

Mai mult, un program Beta responsabil își va avertiza testatorii să evite utilizarea versiunilor beta în medii de producție, astfel încât testarea beta nu simulează cu adevărat site-urile web de producție live.

Cum să gestionezi o lansare în etape pentru pluginul sau tema WordPress?

Ca parte a cercetării mele despre Staged Rollouts, am avut șansa de a-l întâlni pe Amir Helzer și de a învăța din experiența lor de peste 2 ani folosind Staged Rollouts cu WPML și Toolset, pluginuri care rulează pe peste 1.000.000 de site-uri WordPress.

Iată ce a împărtășit Amir despre implementarea lansărilor în etape:

Când un site web instalează oricare dintre pluginurile noastre, tragem un număr aleatoriu între 1 și 100 și îl stocăm în baza de date a site-ului pentru a-l aminti. Această metodă împarte, în esență, site-urile web în 100 de coșuri într-un mod aleatoriu.

Când o versiune este gata de lansare, ea va deveni disponibilă doar în mod progresiv pentru un singur bin selectat. În fiecare zi, creștem expunerea versiunii la încă 5% din site-urile web din coșul desemnat. Și remediați și corectați problemele viitoare pe măsură ce mergem.

Mecanismul de lansări în etape WPML distribuie actualizări în binurile de utilizatori

Pentru a diversifica mediile folosind versiunea actualizată și pentru a evita în mod repetat aceleași „victime” de lansare timpurie, Amir a confirmat că fiecare lansare nouă merge mai întâi într-un coș diferit de utilizatori.

Această abordare înseamnă, de asemenea, că un ciclu mediu de lansare durează aproximativ o lună pentru a fi disponibil pentru fiecare utilizator.

Durează timp până când oamenii văd o nouă versiune disponibilă în WP Admin și își actualizează versiunea. Și chiar și după ce o fac, poate dura zile până când descoperă o problemă.

Cu dimensiunea publicului nostru, inevitabil, fiecare lansare are unele probleme. Scopul nostru principal este să ne asigurăm că evităm introducerea de noi probleme și, dacă o facem, avem un proces de încredere pentru a le rezolva.

Ciclul de lansare este într-adevăr lung, dar chiar dacă, în cel mai rău caz, există o eroare nebună pe care am ratat-o ​​la testare, 95% dintre utilizatorii noștri nici măcar nu sunt conștienți de toată drama, deoarece nu sunt expuși lansării. până când este stabil.

Amir a subliniat, de asemenea, importanța sincronizării cu întreaga echipă înainte de lansări, în special asistența pentru clienți și dezvoltarea. În acest fel, membrii echipei pot acorda un accent suplimentar asupra biletelor declanșate din cauza problemelor legate de lansarea în curs de desfășurare, cu scopul de a verifica, confirma și remedia problemele valide și de a elibera patch-uri cât mai repede posibil.

Avem trei niveluri de suport în echipa noastră. Nivelul 1 va analiza problema, va valida că este de fapt o problemă legată de lansarea pluginului prin reproducerea acestuia. Când un caz pare să aibă legătură cu noua ediție, acesta trece la nivelul 2, care va depana problema pentru a valida că este într-adevăr legat de ediție și va localiza părțile relevante în codul care declanșează problema. Dacă este validat, dezvoltatorul responsabil pentru codul respectiv va fi notificat imediat pentru a acorda prioritate unei remedieri.

OnTheGoSystems este o companie mare, cu aproape 100 de angajați, așa că este logic că și-au perfecționat procesul de lansare în etape. Dar, chiar și în calitate de dezvoltator de produs unic cu un singur nivel de asistență (tu și tu), cunoștințele lui Amir ne pot învăța că este esențial să alocam resurse dedicate versiunilor. Este o practică bună să acordați prioritate biletelor de asistență care chiar „miroase” să fie legate de noua versiune și să reduceți cât mai mult posibil expunerea la probleme noi.

De ce nu există (aproape) niciun plugin sau teme care acceptă lansări în etape?

În pregătirea pentru scrierea acestui articol, am încercat să cer comunității să vadă cine utilizează lansările în etape pentru a obține feedback despre experiența lor, ce au învățat etc.

Deloc surprinzător, am găsit doar două companii WordPress în rețeaua mea care au înființat Staged Rollouts ca parte a ciclului lor de lansare. Mulți dezvoltatori nici măcar nu știau de concept, iar restul nu îl folosesc, deoarece soluția lor de distribuție nu îl acceptă (sau s-ar fi gândit să-l dezvolte și nu au timp).

Sondaj Facebook realizat de Vova Feldman Majoritatea nu utilizați lansări în etape

Majoritatea dezvoltatorilor de pluginuri și teme care nu vând prin Freemius își vând de pe site-ul lor prin EDD sau WooCommerce, care ambele nu acceptă lansări în etape. Cei care vând prin piețe precum CodeCanyon și ThemeForest, de asemenea, nu au o soluție ieșită din cutie și, cel mai probabil, nu o vor avea niciodată.

Chiar și dezvoltatorii care sunt conștienți de concept nu au de ales decât să își dezvolte propriul mecanism pentru a sprijini lansările în etape. Această dezvoltare a infrastructurii este de obicei foarte greu de prioritizat în cadrul unei companii de produse.

Abonați-vă și obțineți o copie gratuită a documentului nostru

Cartea de afaceri cu pluginul WordPress

Exact cum să creezi o afacere prosperă cu pluginuri WordPress în economia abonamentului.

Distribuie unui prieten

Introdu adresa de e-mail a prietenului tău. Le vom trimite prin e-mail doar această carte, onoarea cercetașului.

Vă mulțumesc pentru partajarea

Minunat - tocmai a fost trimisă o copie a „Cartea de afaceri cu pluginuri WordPress”. . Vrei să ne ajuți să răspândim și mai mult cuvântul? Continuă, împărtășește cartea cu prietenii și colegii tăi.

Multumesc pentru abonare!

- tocmai v-am trimis copia „The WordPress Plugin Business Book” către .

Ai o greșeală de scriere în e-mail? faceți clic aici pentru a edita adresa de e-mail și a trimite din nou.

Coperta de carte
Coperta de carte

Cum vă oferă lansările în etape un avantaj comercial?

Deoarece aproape nimeni nu profită de lansările în etape în prezent, dacă începeți să utilizați lansările în etape și le comercializați în mod corespunzător pe site-ul dvs. web pentru a le informa vizitatorilor că aveți cicluri de lansare responsabile, vă oferă cu siguranță un avantaj competitiv și crește încrederea în produsul dvs. /marca!

Dacă analizați piața din perspectiva unui dezvoltator, veți observa că mulți dezvoltatori își urmăresc îndeaproape concurenții și, de obicei, își stabilesc prețurile în intervalul de preț al pieței pe verticala lor, ceea ce duce la produse WordPress concurente care oferă caracteristici similare în același interval de preț.

Din perspectiva cumpărătorului, asta înseamnă că deseori este o problemă cu privire la ce produs să cumpere, deoarece toate au caracteristici și prețuri comparabile. Dar, atunci când evaluezi mai multe plugin-uri care costă la fel și, dau sau ia, au aceleași caracteristici, nu ai fi înclinat să mergi cu produsul care oferă lansări în etape, știind că lansările sale de producție ar trebui să fie mai stabile decât concurenții?

Lansările în etape măresc încrederea în produsul și afacerea dvs. Este un avantaj pe care îl puteți valorifica înainte ca lansările în etape să devină o practică standard (ceea ce sper cu adevărat să facă).

Freemius acceptă acum lansări în etape pentru pluginuri și teme plătite

Suntem încântați să inițiem lansările în etape în ecosistemul de pluginuri și teme premium WordPress. Partenerii noștri de vânzări pot acum lansa actualizări în siguranță, încrezător și fiabil, cu un impact minim asupra utilizatorilor sau resurselor de asistență/dezvoltare.

Știm cât de provocatoare și stresante pot fi lansările majore, mai ales că există întotdeauna riscul potențial de a vă afecta negativ marca după o lansare „Clusterbug”.

Cu lansările în etape, există o plasă de siguranță pentru sustenabilitatea și apărarea mărcii partenerilor noștri și atenuează stresul inutil asociat cu lansările pentru o bază mare de utilizatori.

Acest lucru merge mână în mână ca un beneficiu pentru clienții partenerilor noștri. Când utilizatorii achiziționează produse vândute prin Freemius, acum pot avea încredere că optează pentru o soluție alimentată de Staged Rollouts și se pot aștepta la lansări mult mai stabile de la pluginuri și teme premium care utilizează mecanismul.

Dacă vindeți cu Freemius, iată cum să utilizați corect mecanismul nostru de lansări în etape.

Cum a implementat Freemius lansările în etape?

Fiecare site web care activează o licență pentru a debloca un plugin sau o temă premium primește o înregistrare în baza noastră de date. Primul lucru pe care l-am făcut este să introducem o nouă proprietate last_served_update_version pentru a stoca cea mai recentă versiune de produs care a fost pusă la dispoziție pentru un site web.

Apoi, am îmbogățit tabelul responsabil cu stocarea datelor de lansare cu două proprietăți noi: limit , uniques .

Când un dezvoltator semnalează o versiune ca fiind lansată, i se va solicita următorul dialog, permițându-i să configureze procentul (sau numărul) de site-uri web care au o licență activă la care doresc să lanseze versiunea plătită:

Limită de lansare a lansărilor în etape Freemius în funcție de procent sau număr de site-uri

Dacă au stabilit o lansare limitată, sistemul va număra totalul site-urilor web active cu o licență activă și apoi va stabili noua proprietate limit a versiunii în consecință.

În cele din urmă, am actualizat punctul final API apelat de site-uri web pentru a verifica dacă există o nouă ediție și am introdus următoarea logică (în pseudo-cod):

  latest_version = load latest version of product X
  If (website is on latest_version)
  	return “no new version”

  If (last_served_update_version of website same as latest_version)
  	return “no new version”

  If (latest_version is limited)
  	If (latest_version is limited AND uniques >= limit)
  	      return “no new version”

  	previous_version = load the previous version of product X

  	If (previous_version is limited too AND uniques <= previous_version.uniques)
  		If (website not using previous_version AND
  	  	  	last_served_update_version different from previous_version)
  			  	return “no new version”
  	else If (random({true, false}) )
  		return “no new version”

  	Set last_served_update_version of website to latest_version
   	Increment uniques by 1

  return latest_version
  

Acest algoritm asigură că:

  • Expunerea lansării este limitată în funcție de procentul stabilit al lansării.
  • Dacă versiunea anterioară este încă în etapă, adică nu a fost niciodată expusă întregii baze de instalare, site-urile web care au primit versiunea anterioară în etape vor fi expuse mai întâi la cea mai recentă versiune în etape.

Spre deosebire de arhitectura de lansări în etape a WPML care asigură că fiecare lansare va merge la un subset diferit al bazei lor de instalare folosind bin-uri logice, implementarea noastră se bazează pe aleatorie. Deci, un site web poate primi două lansări în stadiu incipient în două cicluri de lansare consecutive. Cu toate acestea, avantajul acestei abordări este că am reușit să livrăm lansări în etape tuturor clienților partenerilor noștri, fără a fi nevoie să impunem o actualizare SDK, care poate dura multe luni, chiar ani, pentru a se propaga la toți clienții.

De ce sunt esențiale lansările în etape pentru viitorul WordPress?

Când l-am întrebat pe Amir care a fost declanșatorul lor pentru a dezvolta Staged Rollouts pentru ciclurile de lansare WPML, iată ce mi-a spus:

Acum 3 ani, la WordCamp Europe, am petrecut timp discutând cu clienții WPML pentru a colecta tot felul de feedback despre experiența lor generală. Frustrarea numărul 1 pe care am găsit-o a fost că clienților noștri le era frică să actualizeze pluginul, deoarece le poate rupe site-ul în mod neașteptat.

Amir Helzer,

Fondatorul OnTheGoSystems (WPML, Toolset)

Eu mă raportez absolut la asta.

Politica noastră internă la Freemius când vine vorba de actualizarea pluginurilor și temelor este... pur și simplu nu! Cu două excepții: dacă există o problemă de securitate cunoscută sau o caracteristică disponibilă într-o versiune mai nouă de care avem nevoie pentru site-ul nostru.

Politica noastră de actualizări a fost „scrisă prin sânge” după mai multe incidente de actualizări care au mers prost și au cauzat dureri de cap neașteptate și pierderi de timp, întrerupându-ne funcționarea și termenele. Și da, am fi putut evita o parte din stres cu un mediu de scenă, dar acest lucru nu ne-ar fi economisit timp și bătăi de cap dacă am fi vrut totuși să continuăm actualizarea la producție.

WordPress a evoluat puțin de atunci, iar acum avem dezactivare automată în cazul erorilor de plugin. Cu toate acestea, acest lucru nu se aplică temelor, iar dezactivarea unui plugin esențial pentru site-ul nostru este încă o mare problemă.

Concluzia este că, dacă eu, în calitate de dezvoltator de pluginuri și director general al unei companii care ajută mii de dezvoltatori de pluginuri și teme să-și dezvolte afacerile, sunt îngrijorat că ne distrug site-ul de fiecare dată când actualizăm pluginuri sau teme pe site-ul nostru, atunci asta înseamnă cu siguranță majoritatea utilizatorilor nu au încredere în actualizarea software-ului în spațiul nostru.

Lipsa lansărilor în etape ne reține pe noi și întregul ecosistem WP și oferă soluțiilor concurente bazate pe SaaS un avantaj considerabil. Utilizatorii WiX și Shopify nu trebuie să se gândească deloc la actualizări! Actualizările au loc pentru ei în fundal, iar software-ul lor este întotdeauna actualizat, în ceea ce privește securitatea și funcțiile.

Lipsa lansărilor în etape reține întregul ecosistem WP și oferă soluțiilor bazate pe SaaS un avantaj considerabil. Utilizatorii WiX și Shopify nu trebuie să se gândească la actualizările software – acestea se întâmplă doar în fundal. Tweet

Dacă ați urmărit săptămâna trecută State of the Word, co-fondatorul WordPress, Matt Mullenweg, înțelege în mod clar importanța software-ului actualizat. Iată viziunea lui Matt pentru actualizările WP:

… permițându-vă să vă înscrieți pentru actualizările automate pentru Core. Acesta este primul pas către obiectivul nostru, permițând WordPress-ului dvs. să se mențină, în esență, atunci când îl puteți seta și îl puteți uita și va primi actualizări automate, în fundal și fără probleme pentru toate pluginurile, temele și nucleul dvs. Tweet

Singurul mod în care îmi pot imagina WordPress devenind un „setat și uitați” este dacă actualizările de software pot fi mai fiabile și de încredere, iar asta se poate întâmpla numai cu lansări în etape.

WordPress.org: Iată cum puteți introduce lansări în etape pentru depozitul de pluginuri și teme

Similar implementării noastre, două noi meta-opțiuni trebuie adăugate la fiecare versiune de plugin și temă din baza de date WordPress.org: limit și uniques .

Editarea opțiunii meta limit poate fi expusă în Vizualizarea avansată pentru proprietarul conectat (și poate pentru alți committers):

WordPress.org Mecanism de lansare în etape sugerat de Vova Feldman

Un dezvoltator va avea o modalitate de a controla expunerea fiecărei lansări, precum și capacitatea de a stabili o limită pentru următoarea lansare.

Deoarece WordPress.org nu stochează date structurate pentru fiecare site web care primește actualizări de la WordPress.org, în loc să stocheze cea mai recentă versiune „văzută” de un site web în baza de date WordPress.org, stocarea datelor poate fi delegată site-urilor web. . Aceasta înseamnă că 'update_plugins' tranzitoriu și datele trimise către API-ul WordPress.org la verificarea actualizărilor vor trebui să fie îmbogățite cu o last_served_update_version .

În cele din urmă, punctele finale API de actualizări WordPress.org pot fi îmbogățite cu aceeași logică pe care am folosit-o pentru implementarea Freemius Staged Rollouts. Doar în loc să se bazeze pe last_served_update_version din baza de date wp.org, mecanismul va depinde de valoarea trimisă de pe site de pe bază.

Ușor, nu?

este Angajare
Dezvoltator PHP senior
Construiți nucleul produselor, serviciilor și API-urilor Freemius și vedeți impactul dvs. direct asupra afacerilor cu pluginuri și teme WordPress.
Specialist în migrații de comerț electronic
Gestionați procesul de migrare a licenței și de integrare a produselor pentru companiile cu pluginuri și teme care încep să vândă cu Freemius.
Marketer de conținut
Împărtășiți cunoștințele noastre prin conținut scris, vizual și audio acționabil despre cele mai bune modalități de a vinde pluginuri și teme.

Să readucem încrederea utilizatorilor pentru a apăsa butonul de actualizare

Cu toții vrem să vedem WordPress reușind și să crească în mod constant mai mare și mai bun!

Cu atât de multe resurse care intră în Gutenberg, este clar că conducerea WordPress recunoaște că trebuie să facem platforma mult mai accesibilă pentru Joe obișnuit, netehnic. Chestia este că, atâta timp cât actualizările de software nu pot fi de încredere, chiar și cu Gutenberg și toți uimitorii constructori de pagini pe care îi avem la dispoziție, o persoană fără tehnologie va fugi la Wix la prima actualizare întreruptă și nu aș putea da vina. lor.

Îi fac un apel către fondatorul EDD, Pippin Williamson, CEO-ul WooCommerce, Paul Maiorana și echipa WordPress.org: Avem ocazia de a face ecosistemul de plugin și teme mult mai stabil pentru comunitatea WordPress mai mare. Să permitem utilizatorilor să-și păstreze software-ul în siguranță și actualizat cu mai puțină frică și frustrare. Deși s-ar putea să nu pară o prioritate ridicată pe termen scurt, sunt sigur că toți vom beneficia de pe termen lung.