WP-Optimize nega le accuse di cheating Performance Tools
Pubblicato: 2022-08-31Ieri abbiamo pubblicato le accuse di Gijo Varghese contro UpdraftPlus, i creatori di WP-Optimize. Varghese è il fondatore di FlyingProxy, una società concorrente, e si identifica come un "appassionato di prestazioni". Ha accusato il plug-in di "imbrogliare Pagespeed e altri strumenti" nascondendo il caricamento dei file JavaScript quando gli utenti testano i loro siti attraverso popolari strumenti di test delle prestazioni. Il codice utilizza uno strano insieme di nomi offuscati per gli strumenti di test, il che ha suscitato il suo sospetto.
Varghese ha trascurato di menzionare nel suo tweet che questo è ciò che accade quando una delle impostazioni del plugin in Minify > JS è impostata per rinviare JavaScript. Ci sono due impostazioni dei pulsanti di opzione ma sono confuse.
Il primo pulsante di opzione consente agli utenti di rinviare i file JavaScript selezionati. Dice che i file verranno caricati in modo asincrono (non lo stesso di differire) e quindi dice anche che gli utenti dovrebbero selezionare il primo pulsante di opzione se vogliono escludere gli script dai test di velocità della pagina. Non è chiaro come verranno caricati gli script per l'utente o per i siti di test. Escludere non equivale a rinviare, quindi in questo caso l'interfaccia utente delle impostazioni è alquanto fuorviante e dovrebbe essere più chiara.
La seconda opzione radio è per gli utenti che stanno semplicemente cercando di rinviare tutto JavaScript. Se si seleziona "Rimanda utilizzando JavaScript (utilizza questo metodo se è necessario il supporto per i browser meno recenti)" , dovrebbe fare esattamente ciò che descrive nel collegamento:
Se l'attributo
defer
è impostato, specifica che lo script viene scaricato parallelamente all'analisi della pagina ed eseguito al termine dell'analisi della pagina.
Anche se l'interfaccia utente afferma che sta rinviando tutti i file, WP-Optimize non carica mai JavaScript per i siti di test delle prestazioni. In questa seconda opzione, l'esclusione dei siti di test avviene senza il permesso degli utenti. Se gli utenti lo avessero voluto, avrebbero selezionato il pulsante di opzione precedente e identificato esplicitamente quali script escludere.
Varghese ha omesso alcuni dettagli significativi nel suo rapporto originale, ma era accurato in quanto alcune impostazioni sono fuorvianti su ciò che effettivamente fanno. Lo ha dimostrato in un video di follow-up in cui non è possibile inserire manualmente gli script da escludere e viene controllata la seconda opzione radio.
"Stanno fornendo agli utenti un'opzione per imbrogliare gli strumenti di test", ha detto Varghese. “Inoltre, l'uso di nomi come 'ottavo' per Lighthouse e 'tmetr' per GTmetrix mostra chiaramente cosa stanno cercando di fare.
"La maggior parte degli utenti prova a disabilitare e abilitare diverse funzionalità per vedere quale sta aumentando la velocità / i punteggi negli strumenti di test".
Varghese sostiene che non è necessario fare le cose in modo diverso per gli strumenti di test e gli esseri umani, poiché ciò può creare confusione per i proprietari dei siti. La sua accusa ha tralasciato dettagli significativi e implicava che tutto questo è nascosto nel codice. È per una delle impostazioni ma non per l'altra. L'interfaccia implica che devi inserire manualmente gli script per escluderli dal test, ma anche questo è fuorviante.
WP-Optimize ha pubblicato oggi una risposta pubblica alle accuse, ma non ha rivelato nessuno dei risultati dell'indagine sul codice che hanno completato. Invece, la società ha citato un video creato da Peter Wilkinson di Divi Engine, il quale afferma che gli utenti devono inserire manualmente gli script per far sì che i siti di test li escludano.
Si dice che Wilkinson abbia concluso che "Gijo Varghese ha usato l'inganno per promuovere Flying Pages e Flying Press" nel portare questo problema all'attenzione del pubblico su Twitter.
"In realtà (dalla mia ricerca) WP-Optimize non 'imbroglia' gli strumenti Pagespeed quando installi o riduci a icona JavaScript", ha affermato Wilkinson.
"Per 'imbrogliare' gli strumenti, è necessario aggiungere manualmente i file JS che si desidera caricare in modo asincrono in un'impostazione che ha chiaramente l'etichetta 'Utilizzare questo se si dispone di uno script completamente indipendente o si desidera escludere gli script dai test di velocità della pagina ( PageSpeed Insights, GTMetrix...)'”
Questo non è il caso. Il modo più semplice per eseguire il test consiste nell'installare il plug-in, attivare "rinvia tutto JavaScript" e quindi visualizzare l'origine per verificare che gli strumenti per le prestazioni siano esclusi.
Poiché la risposta pubblica di WP-Optimize al problema non includeva nulla della loro indagine sul codice, li ho contattati di nuovo. Il loro vice capo Venkat Raj non era disponibile a rispondere al motivo per cui altre impostazioni nel plug-in rimuovono silenziosamente JS per gli strumenti di test delle prestazioni con il clic di un pulsante di opzione. Joe Miles, capo della strategia dell'azienda, ha condiviso le ultime informazioni che ha ricevuto sulla questione da Venkat Raj:
"L'impostazione avanzata utilizzata nell'accusa è effettivamente utile per scoprire se i file js/css essenziali stanno effettivamente rallentando la pagina Web o meno. Questa funzione è per impostazione predefinita, disattivata e abilitata solo da utenti esperti che sanno cosa stanno facendo.
"Puoi utilizzare questa funzione se disponi di uno script completamente indipendente o desideri escludere gli script dai test di velocità della pagina (PageSpeed Insights, GTMetrix...)
“Gli script indipendenti sono ad esempio script 'analytics' o 'pixel'. Non sono necessari per il funzionamento del sito web. ' Usalo se hai un foglio di stile completamente indipendente o desideri escludere i fogli di stile dai test di velocità della pagina (PageSpeed Insights, GTMetrix...) '
Questo vale per il primo pulsante di opzione. Il secondo pulsante non ha alcuna indicazione che disattiverà tutti gli script quando si utilizzano strumenti di test, né il team di WP-Optimize sembra essere consapevole del fatto che è disponibile con il clic di un pulsante di opzione.
Miles non ha potuto confermare se è così che dovrebbe funzionare o se si tratta di un bug. Inoltre, non è stato in grado di spiegare il motivo per cui i nomi dei popolari siti di test sono stati offuscati nel codice, ma ha affermato che lo sviluppatore originale "non funziona per noi poiché è codice open source riproposto da altrove".
"Tuttavia, riteniamo che questa sia una distrazione dalle false accuse e ciò che conta è che l'interfaccia utente è molto chiara per le impostazioni, quindi gli utenti non vengono ingannati", ha affermato Miles.
Raul Peixoto, autore di Fast Velocity Minify (FVM), il plugin da cui WP-Optimize ha copiato il codice, ha affermato di poter confermare che questo codice faceva parte di FVM ma ha affermato che non è stato utilizzato allo stesso modo:
Lo scopo di tale codice su FVM era completamente diverso da quello su WP Optimize e inoltre richiedeva agli utenti di abilitare manualmente questa opzione tramite wp-admin (era disabilitata per impostazione predefinita).
Lo scopo di quel codice era di testare in modo selettivo l'impatto di nuovi script o plug-in sulle prestazioni e aiutare gli sviluppatori a decidere se eseguire il refactoring, rimuovere o sostituire plug-in o script pesanti.
Questo esisteva su FVM per rispondere a domande come queste:
“Ho un sito di produzione e le mie prestazioni sono basse. Quali sarebbero le prestazioni se questo plug-in semplicemente non fosse qui, ma senza effettivamente rimuoverlo dal sito per gli utenti regolari ancora?"
"Quale sarebbe la performance se potessi rinviare tutti gli script, o script specifici che non sono attualmente compatibili con il differimento, prima di apportare effettivamente quella modifica per tutti?"
Una spiegazione ufficiale in merito al suo utilizzo su FVM è disponibile nel forum di supporto del plugin a partire da questa mattina.
"Suppongo che gli sviluppatori assunti da WP Optimize non capissero cosa stesse facendo su FVM o con quali impostazioni, o forse potrebbero essersi sentiti tentati di usarlo come un hack", ha detto Peixoto.
"Dovremmo anche ricordare attentamente che a quel tempo non c'erano ancora metriche web vitals pubblicamente disponibili, quindi l'utilizzo di qualcosa di simile avrebbe prodotto risultati "misurabili" migliori, offrendo così un vantaggio del prodotto".
Piexoto ha detto di essersi "sentito in dovere" di rimuovere questo codice due anni fa a causa della frequenza con cui è stato abusato dagli sviluppatori che stavano tradendo i test per i loro clienti:
Passando un po' di tempo, mi sono reso conto che alcuni sviluppatori lo stavano effettivamente usando per imbrogliare i test per i loro clienti, quindi mi sono sentito in dovere di prendere la decisione su FVM 3 (già alla fine del 2020) di rimuovere questa funzionalità, cosa che è stata accolta da un molte proteste di sviluppatori arrabbiati quando i loro clienti hanno iniziato a lamentarsi del fatto che i loro punteggi erano diminuiti.
In quel momento ho cercato di spiegare che avere un buon punteggio non era la stessa cosa di avere buone metriche web vitals, ma alla fine ho rinunciato a questo, poiché alcune persone si preoccupavano più dei risultati dei test che delle prestazioni effettive.
Dopo il rilascio di FVM 3, fondamentalmente lo sto solo mantenendo e correggendo piccoli bug quando segnalato, poiché devo concentrarmi su altre cose. Ho rimosso quella funzione e corretto un paio di bug che erano in sospeso nella versione 3.2.9 e ho inviato un aggiornamento, quindi grazie per avermelo segnalato.
Per qualsiasi motivo, UpdraftPlus ha scelto di unire questo codice in WP-Optimize nel 2020 e, come riportato ieri, da allora non ha più toccato il codice.
Quella che ieri sembrava essere una questione in bianco e nero è una situazione più sfumata. L'implementazione del codice FVM da parte di WP-Optimize è scarsamente documentata nell'interfaccia utente e fuorviante su come vengono caricati gli script. Può portare i proprietari del sito ad attivarlo senza essere utenti avanzati e storicamente ha un alto potenziale di abuso. Quando Varghese lo scoprì, lo espose in modo provocatorio, sentendosi certo di aver trovato un torto a causa di quanto inspiegabilmente offuscato sia il codice. Ciò ha aggravato il problema, ma ha avviato una conversazione più ampia e importante.
Gli utenti dovrebbero avere questo tipo di facile accesso (due clic) per disattivare gli script per gli strumenti di test delle prestazioni? In che modo gli sviluppatori dello stesso settore possono comunicare meglio i potenziali danni agli utenti che vedono nei prodotti di altri? Che tipo di requisiti di documentazione del codice dovrebbero implementare le agenzie per prevenire una situazione come questa in cui il codice deve essere esaminato nell'arco di giorni per scoprire cosa è destinato a fare?