Dipende dalla tua piattaforma, ma alcune cose generali da tenere a mente
Controllo delle versioni
Cosa succede se si aggiorna l'applicazione, tutti i vecchi plug-in diventano obsoleti (il problema di Firefox)
Isolamento I
plugin possono fare quello che vogliono? Ti fidi sempre di loro? Oppure devi eseguirli in una sorta di sandbox e richiedere autorizzazioni.
Aggiornamenti
Come gestite gli aggiornamenti dei plugin?
Sicurezza
Come si garantisce l'autore di un plug-in, si evita lo spoofing o l'utente viene indotto a installare codice dannoso. Solitamente risolto da una sorta di firma del codice
Serializzazione
Spesso quando si utilizza l'isolamento di qualche tipo, è necessario serializzare le informazioni tra thread o processi diversi. Come lo fai nel modo più efficiente?
Estensibilità
Quali aspetti è necessario estendere? Come massimizzare il potenziale dei plugin senza che l'API diventi ingombrante.
Se ti rivolgi a sviluppatori di terze parti per i plug-in, direi che la cosa più importante (dalla mia esperienza) è vedere l'API e le classi del plug-in come completamente diversi dal resto dell'applicazione e renderlo facile da sviluppare per il più possibile. È molto facile per l'architettura dall'app principale "spostarsi" nei plug-in in modo che gli autori dei plug-in debbano imparare molto di più di quello che devono. Rendilo facile per loro, pensa a quale tipo di interfaccia ed esperienza vorresti come autore di plugin.
Un'altra buona mentalità non è quella di pensare come "Il plugin farà tutte queste cose (nel codice) ma piuttosto," il plugin deve fornire queste informazioni ". In questo modo l'applicazione può consumare le informazioni necessarie ed eseguire l'elaborazione effettiva che semplifica il plugin.
Inoltre, in generale, ogni volta che puoi seguire un approccio descrittivo (metadati, come xml) anziché un codice, hai un grande vantaggio poiché i metadati sono più facili da trasportare, versione, distribuzione, sicurezza e possono essere più facilmente configurati da terze parti