Durante la progettazione di una piattaforma software, quali sono i principali elementi che compongono un successo architettura plug?

StackOverflow https://stackoverflow.com/questions/880602

Domanda

Sono stato molto impressionato dal numero crescente di piattaforme software che lascia fuori gli sviluppatori di contribuire al codice attraverso un'architettura plug - (plugins/extensions).

Ho studiato che le piattaforme sono i migliori plugin di comunità...

Ottimo Plugin Architetture fiorente plugin comunità:

Poi ci sono piattaforme con meno attiva plugin comunità:

(Per il bene di messa a fuoco, mettiamo da parte o ignorare le piattaforme che consentono a pieno titolo delle applicazioni software, come Microsoft Windows, iPhone e Facebook.)

Cosa vorresti dire che dà una piattaforma software con successo una architettura a plugin con un sacco di plugin, contro un'altra piattaforma con una più piccola o inattivi comunità di sviluppatori?

Solo per ottenere le cose iniziate, ecco un elenco parziale:

  • La piattaforma fa qualcosa di ampiamente utile:lasciate che la gente navigare in internet, comprare e vendere cose, la pubblicazione di blog e bacheche, etc.
  • La piattaforma è open source (o, come minimo, il codice sorgente è liberamente disponibile).
  • Tutte le funzioni importanti nella piattaforma sono completamente plugabble tramite ganci e filtri.
  • Tutti o la maggior parte pluggable funzioni sono ben documentati (o c'è un wiki in modo che gli sviluppatori possono documentare per voi).
  • C'è un forum o mailing list, dove gli sviluppatori possono condividere i plugin e condividere suggerimenti e trucchi
  • C'è un forum o mailing list dove meno sofisticati, gli utenti possono ottenere un aiuto per l'installazione e la configurazione del plugin.

Che tipo di cose può una piattaforma per sviluppatori per creare un'architettura plug-che incoraggia un sacco di sviluppatori esterni di creare plugin?

È stato utile?

Soluzione

Personalmente ci sono 3 principali collaboratori fanno se imparo a (e non) scrivere applicazioni per ogni sistema:

Il sistema è molto utile in modo che vorrei utilizzare è sufficiente essere motivati sufficiente per estendere?

È il sistema che utilizza una lingua che io sono a conoscenza di, o è facile da imparare e non piuttosto oscuro o di proprietà o comunque eccessivamente complicata soluzione (vedi elisp)?

È il sistema di plugin, molto ben documentata in un linguaggio chiaro, in modo che posso andare per il lavoro di scrittura e il mio plugin e non passare ore (o giorni) per decifrare il sistema?

Se queste cose sono tutte vere, l'unico motivo per cui non vogliono sviluppare per una piattaforma che qualcun altro ha già scritto un plugin per tutte le vostre idee.:)

Credo sia estremamente utile/importante avere un centrale e ben noto repository a casa dell'utente contribuito plugin (come per le vostre progetti di esempio).Odio dover setacciare il web per trovare i singoli, eventualmente, di bassa qualità o addirittura potenzialmente dannosi add-ons per una cosa che sto cercando di fare.Questo dovrebbe essere un sito web o un wiki come anche forum o negli archivi della mailing list può essere fastidioso e richiede tempo per scavare attraverso.

Altri suggerimenti

Ti manca il punto.

La JVM è un'architettura pluggable. Ogni file di classe si inserisce in esso e si estende.

Apache è un'architettura pluggable a più livelli. Ci sono i "mods". Alcuni mods eseguire altri interpreti, che sono esse stesse architetture pluggable. PHP, mod_wsgi / Python, ecc sono tutti collegato ad Apache.

Python è un'architettura pluggable con i file Python .pyc e oggetto file (di DLL, di .SO) che si inseriscono in esso.

Ogni quadro lingua è - in effetti -. Un'architettura pluggable

La piattaforma è una Fondazione

Una vista di una piattaforma software è una base su cui si basa altro software per eseguire un'altra operazione. Questo può cucitura una dichiarazione semplice e piuttosto ovvio, ma è importante.

Le nozioni di base dovrebbe essere facile

Una piattaforma deve avere uno scopo e sviluppatori della piattaforma deve essere a conoscenza di questo quando si progettano le API in modo che diventi ovvio ciò che i casi di utilizzo primarry sono e le API intorno a loro dovrebbe essere il più straightford possibile utilizzare rispetto alla strada essi sono progettati, ma anche per quanto riguarda la doccumentation intorno a loro.

punti di estensione dovrebbe essere ovvio

estensibilità in un Platoform è di fornire agli sviluppatori l'oppotunity per estendere o modificare la piattaforma. Se questo è qualcosa che si vuole incoraggiare, allora avete bisogno di fare molto chiara la natura e le limitazioni di questa estensibilità e di fornire un insieme ben definito di interfacce per consentire questo.

Tutto ciò potrebbe sembrare ovvio, ma se si vuole una comunità per sviluppare attorno ad una piattaforma, che la piattaforma deve avere un impiego e l'estensione dovrebbe essere un'esperienza semplice.

Scusate se questo cuciture un po ' "astronaught achitectural", penso che ho fatto alcuni punti validi, posso anche aver fatto loro male, si sentono liberi di farlo notare o aggiungere a loro

Non dimenticare Eclipse (con > 1000 registrati 3rd party "plugins" (in realtà sono fatti di plug-in ancora più piccoli in Eclipse terminologia)). Parte del suo successo può venire da che ci sono buone regole pratiche su come progettare un plugin che è anche estendibile da altri. C'è anche una rigorosa politica di controllo delle versioni API (che ovviamente ha i suoi inconvenienti, anche).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top