Wenn eine Software-Plattform entwerfen, was sind die wichtigsten Elemente, die eine erfolgreiche steckbare Architektur bilden?

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

Frage

Ich habe durch die wachsende Zahl von Software-Plattformen wirklich beeindruckt, dass externe Entwickler beitragen Code über eine steckbare Architektur (Plugins / Erweiterungen).

lassen

Ich habe studiert, welche Plattformen das beste Plug-Communities haben ...

Ausgezeichnete Plugin Architekturen mit blühenden Plugin Gemeinden:

Dann gibt es Plattformen mit weniger aktiven Plugin Gemeinden:

(Aus Gründen des Fokus, lassen Sie sich auf der Seite legen oder ignorieren Plattformen, die vollwertige Software-Anwendungen ermöglichen, wie Microsoft Windows, iPhone und Facebook.)

Was würden Sie sagen, gibt einer Software-Plattform eine erfolgreiche Plugin-Architektur mit vielen Plugins, im Vergleich zu einer anderen Plattform mit einer kleineren oder inaktiver Entwickler-Community?

Nur um die Dinge begonnen, hier ist eine unvollständige Liste:

  • Die Plattform macht etwas im Großen und Ganzen nützlich. Lassen Sie uns die Menschen im Internet surfen, kaufen und Sachen verkaufen, veröffentlichen Blogs und Message Boards, usw.
  • Die Plattform ist Open Source (oder auf ein Minimum, ist der Quellcode frei verfügbar ist).
  • Alle wichtigen Funktionen in der Plattform sind voll plugabble durch Haken und Filter.
  • Alle oder die meisten steckbaren Funktionen sind gut dokumentiert (oder es gibt ein Wiki, so dass Entwickler es für Sie dokumentieren können).
  • Es gibt ein Forum oder E-Mail-Liste, in der Entwickler-Plugins teilen kann, und Tipps und Tricks
  • Es gibt ein Forum oder E-Mail-Liste, in der weniger anspruchsvoller Benutzer Hilfe bei der Installation erhalten und die Plug-in konfigurieren.

Welche Art von Dingen kann eine Plattform Entwickler tun, um eine steckbare Architektur zu schaffen, die viele externen Entwickler ermutigt Plugins zu erstellen?

War es hilfreich?

Lösung

Persönlich gibt es 3 wichtige contributers, ob ich (und tun) schreiben Apps für jedes gegebene System lernen:

Ist das System sehr nützlich, so dass ich es genug verwenden wollen würde genug motiviert werden, um es zu verlängern?

Ist das System mit einer Sprache, die ich kenne, oder ist einfach im Gegensatz zu einigen obskuren oder proprietäre oder auf andere Weise zu komplizierte Lösung zu lernen (siehe elisp)?

Ist das Plugin-System sehr gut in einer klaren Sprache dokumentiert, so dass ich mein Plugin über die Arbeit des Schreibens gehen und nicht zu verbringen Stunden (oder Tage), um das System zu entziffern?

Wenn diese Dinge wahr sind, ist der einzige Grund, warum Sie nicht für eine Plattform entwickeln wollen, ist, dass jemand anderes bereits Plugins für alle Ihre Ideen geschrieben hat. :)

Ich denke, es ist auch sehr hilfreich / wichtig, eine zentrale und gut bekannt Repository haben Benutzer Hause Plugins beigetragen (wie pro Ihren Beispielprojekte). Ich hasse es, um die Bahn scheuern einzelne, möglicherweise geringe Qualität zu finden oder sogar möglicherweise bösartigen Add-ons für etwas, was ich zu tun bin versucht. Dies sollte eine Website sein, oder wie auch Foren oder Mailinglisten-Archiv können lästig und zeitaufwendig zu graben, durch sein wiki.

Andere Tipps

Sie fehlt der Punkt.

Die JVM ist eine steckbare Architektur. Jede Klassendatei Stecker hinein und erweitert sie.

Apache ist eine steckbare Architektur auf mehreren Ebenen. Es ist die „Mods“. Einige Mods laufen andere Interpreten, die sich steckbare Architekturen sind. PHP, mod_wsgi / Python, etc. sind alle in Apache gesteckt.

Python ist eine steckbare Architektur mit Python .pyc Dateien und Objektdateien (.dll, .SO ist), die in sie stecken.

Jede Sprache Rahmen ist - in der Tat -. Eine steckbare Architektur

Die Plattform ist eine Stiftung

Ein Blick auf eine Software-Plattform ist als Fundament, auf dem andere Software, um verlässt sich eine andere Aufgabe zu erfüllen. Dies kann eine einfache und ziemlich offensichtliche Aussage Naht, aber es ist ein sehr wichtiger.

Die Grundlagen sollten einfach

muss eine Plattform einen Zweck haben und Plattform-Entwickler sollten sich dessen bewusst sein, wenn APIs so zu gestalten, dass es wird deutlich, was die primarry Anwendungsfälle sind und die APIs um sie sollten so straightford wie möglich gemacht werden in Bezug auf die Art und Weise zu verwenden, sie dazu bestimmt sind, sondern auch in Bezug auf die doccumentation um sie herum.

Erweiterungspunkte sollte klar sein,

Extensibility in einer platoform ist über Entwickler die oppotunity Bereitstellung zu erweitern oder die Plattform zu ändern. Ist dies etwas, das Sie fördern wollen, dann müssen Sie ganz klar die Art und Grenzen dieser Erweiterbarkeit machen und eine gut definierte Gruppe von Schnittstellen für diese zu ermöglichen, bieten.

Dies könnte alles selbstverständlich klingen, aber wenn Sie eine Gemeinschaft wollen um eine Plattform zu entwickeln, muss diese Plattform einen Einsatz haben und sich sollte es eine einfache Erfahrung sein.

Sorry, wenn dies ein wenig „achitectural astronaught“ Nähte, ich glaube ich einige gültige Punkte gemacht, kann ich gut habe sie schlecht gemacht, können Sie dies darauf hin, oder ergänzen

Vergessen Sie nicht, Eclipse- (mit > 1000 3rd party "Plugins" registriert (in der Tat sie von noch kleineren Plugins in Eclipse Terminologie gemacht werden)). Ein Teil des Erfolgs kann kommen, dass es gute Faustregeln, wie man ein Plugin zu entwerfen, die von anderen auch erweiterbar ist. Es gibt auch eine strenge API Versionierung (die natürlich auch ihre Nachteile hat, auch).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top