Installazione dell'estensione e conseguenze
L'idea di avere un sistema estensibile è fantastica, ma come sappiamo gli sviluppatori, non è così semplice. Molte cose possono (e, purtroppo, fare) andare storto.
Panoramica
Inizierò con un elenco di problemi potenzialmente causati dall'installazione di estensioni. Quindi, farò il mio punto principale e indicherò le conclusioni che traggo personalmente da tutto ciò, e infine suggerirò una soluzione. (Probabilmente ci vorrà molto, ci scusiamo in anticipo. Proverò a scrivere il meno possibile e continuerò a trattare l'argomento.)
Quindi, per iniziare, ecco un elenco di problemi comuni rilevati a causa dell'installazione dell'estensione.
Sicurezza
Non viene eseguita alcuna revisione del codice prima che un'estensione venga accettata su Magento Connect. Di conseguenza, molte estensioni contengono vulnerabilità. Ci sono molte ragioni, come sviluppatori inesperti o pigri, l'uso di codice di terze parti vulnerabile e alcune estensioni contengono persino codice dannoso. L'esecuzione di codice in remoto, iniezioni di SQL e tempi di inattività sono una realtà. Le conseguenze sono dati persi sui clienti, credenziali di pagamento perse, entrate perse, tempo perso e fiducia persa.
Prestazione
Un'estensione può funzionare correttamente su un sito o su un'istanza dello sviluppatore, ma con un catalogo o una base clienti diversi può causare seri problemi di prestazioni. Ci possono essere molte ragioni concrete che vanno dal caricamento inefficiente di entità, join SQL non ottimizzati, un numero elevato di richieste ajax, un numero elevato di opzioni o attributi di attributi e molti altri. Come ogni chiamata del commerciante ci dice agli sviluppatori, le prestazioni sono importanti. Questo costa un reddito da commerciante.
conflitti
Anche solo due estensioni, anche se sviluppate utilizzando le migliori pratiche, possono essere in conflitto. Ciò è dovuto principalmente al modo in cui il framework Magento unisce XML di configurazione. Nel migliore dei casi questi conflitti sono visibili tramite una traccia dello stack o uno schermo vuoto, nel peggiore dei casi il sito inibisce comportamenti strani e difficili da eseguire il debug. Un commerciante non sarà in grado di risolvere i problemi e far coesistere estensioni in conflitto senza l'aiuto di uno sviluppatore. Questo costa tempo e denaro.
Aggiornabilità
Non aggiornare non è un'opzione, se non altro per motivi di sicurezza. Le estensioni devono essere mantenute, come basi di codice individuali e come parte del framework Magento. Se viene utilizzata un'estensione e lo sviluppatore originale non continua a mantenere l'estensione, alcuni altri sviluppatori devono subentrare. Non avere uno sviluppatore spesso rende impossibile per un commerciante l'aggiornamento, che a sua volta porta a siti più lenti di quanto non debbano, sfruttando i problemi di sicurezza e quindi a perdere entrate.
Estensibilità
L'aggiunta di nuove funzionalità a un sito esistente diventa sempre più complessa e quindi costosa, poiché ogni estensione nel sistema aggiunge il proprio debito tecnico. Il debito complessivo è molto più grande di ogni singola estensione poiché anche la complessità combinata è maggiore di ciascuna da sola. Non essere in grado di sperimentare facilmente nuove funzionalità e modifiche provoca al commerciante molte entrate perse.
disinstallazione
Le seguenti cose causano la rottura di Magento durante la disinstallazione di un'estensione:
- Record di database che fanno riferimento a una classe nell'estensione disinstallata (ad esempio indicizzatori o modelli di backend degli attributi). Anche le estensioni che seguono le migliori pratiche sono inclini a questo.
- La disinstallazione delle estensioni che sovrascrivono il codice principale lascia a Magento il file originale mancante. Questo ovviamente accade solo se un'estensione non segue le migliori pratiche, ma è un dato di fatto che molte estensioni sono cattive.
La rottura del sito ovviamente costa denaro.
Magento Connect
Dato l'elenco dei problemi sopra, come mai qualcuno può aspettarsi che un non sviluppatore installi un'estensione e valuti se funziona su un determinato sito?
Non esiste una disinstallazione pulita garantita, quindi spesso un'installazione interrotta non può nemmeno essere riparata. L'unica opzione è fare prima un backup completo e quindi eseguire un rollback manuale se qualcosa va storto. Una persona non tecnica può farlo? Nella mia esperienza, no.
Supponiamo che tutto sembri a posto . Fa il tutto mercante di sapere è d'accordo?
E la sicurezza? Che dire dei problemi di prestazioni? Che dire dei problemi di aggiornamento?
Non è possibile che un non sviluppatore possa valutare queste cose.
Il messaggio che Magento Connect comunica è che è facile estendere il tuo negozio Magento installando Magento senza uno sviluppatore. Potrebbe essere utile in un passo di vendita dire a qualcuno che è il caso, ma semplicemente non è vero.
Quello che provo principalmente è che nella comunicazione la necessità di uno sviluppatore è semplicemente implicita e non comunicata. Di conseguenza molti proprietari di negozi rompono il loro negozio installando estensioni. Ciò costa denaro, tempo, nervi e Magento e reputazione degli sviluppatori.
Mi piace che le mie classi abbiano un'interfaccia esplicita e credo che sarebbe positivo se anche il requisito di sviluppatore per Magento fosse comunicato esplicitamente.
conclusioni
Ciò non è affatto positivo per l'ecosistema, anche se la correzione di siti non funzionanti fornisce entrate per alcuni sviluppatori Magento. Gli stessi soldi potrebbero essere utilizzati per creare valore reale per i clienti dei commercianti.
Su Twitter qualcuno ha affermato che i commercianti sono adulti, che possono decidere autonomamente se installare un'estensione o meno. Non sono d'accordo. Se un commerciante non è uno sviluppatore allo stesso tempo, non può decidere da solo.
Magento Connect non dovrebbe permettere alle persone non tecniche di spararsi ai piedi.
Personalmente sono stanco di vedere le installazioni di Magento incasinate a causa delle estensioni. Preferisco di gran lunga creare cose che risolvano un casino.
Sto pensando di rimuovere le mie estensioni da Magento Connect perché non voglio più supportare l'idea errata.
Soluzione
Secondo me la soluzione è semplice ed economica. Non si tratta di creare un altro nuovo marketplace di estensione , commerciale o gratuito. Questo non è un problema tecnico, si tratta solo di comunicazione.
Se Magento Connect affermasse che si tratta di una risorsa per sviluppatori e che le estensioni dovrebbero essere riviste prima dell'installazione e che solo gli sviluppatori dovrebbero installare estensioni, ciò non costituirebbe un problema. I commercianti che installano ancora estensioni lo fanno conoscendo i rischi.
Ecco quindi tre semplici passaggi che renderebbero Magento più adatto ai commercianti:
- Rimuovi l'opzione per installare le estensioni tramite l'interfaccia di amministrazione Magento (ad esempio il downloader).
- Indica in modo chiaro e visibile su Magento Connect che è compito dello sviluppatore scaricare, rivedere e installare qualsiasi estensione.
- Educare gli sviluppatori a fare una revisione completa di qualsiasi estensione da installare su un sito.
Parole finali
Adoro condividere le estensioni. Adoro l'open source. Penso che la community di sviluppatori Magento sia fantastica !!
Revisionare le estensioni è un ottimo modo per imparare. Magento Connect non è male, solo il messaggio che proietta a persone non tecniche.
Ogni sito Magento è un'applicazione. È unico e deve essere trattato come uno sforzo di sviluppo unico.
Dovrebbe essere il consenso generale nell'ecosistema che le estensioni possono essere utili, ma installarle più spesso non richiederà la scrittura o la modifica del codice e quindi richiedere uno sviluppatore.
EDIT : ho pubblicato alcune informazioni di base meno tecniche sul mio blog .