============== Zusatzprodukte ============== Finden, evaluieren und installieren von Zusatzprodukten. Finden ====== .. Die meisten Zusatzprodukte für Plone sind im *Products*-Abschnitt auf der Plone- Website aufgeführt: http://plone.org/products. Dabei kann für jedes Produkt angegeben werden, zu welchen Plone-Versionen sie kompatibel sind. Darüberhinaus können noch weitere Angaben gemacht werden wie Dokumentation, Issue tracker und Roadmap. Viele dieser Produkte und auch einige weitere sind im *Collective*-Subversion- Repository unter ``http://svn.plone.org/svn/collective`` zu finden. Dieses Repository kann auch mit einem Web-Browser unter der Adresse http://dev.plone.org/collective/browser durchsucht werden. Die meisten Produkte befinden sich mittlerweile auf Github: https://github.com/collective. .. Eine Liste von Plone-Paketen nach Kategorien unterteilt erhalten Sie auch auf der `OpenComparison `_-Site. Evaluieren ========== Um nun zu überprüfen, ob das Produkt wirklich passend ist, können Sie verschiedene Schritte durchführen: #. Zunächst sollten Sie überprüfen, wie sich das Produkt selbst präsentiert: - Ist es hinreichend gut dokumentiert? - Gibt es einen Bug Tracker? Wie viele offene und geschlossene Bugs gibt es? Wie schnell wurden die Bugs behoben? - In welcher Version liegt das Produkt vor? Eine 0.* oder alpha-Version ist voraussichtlich weniger stabil als ein *final release*. - Gibt es eine Roadmap? Sie gibt Ihnen Hinweise, wie die Planung für die weitere Entwicklung aussieht und wie zukunftssicher das Produkt ist. #. Wie umfangreich und mit welchen Erfahrungen wird das Produkt eingesetzt? Fragen Sie in einer Mailingliste nach, welche Erfahrungen mit dem Produkt gemacht wurden. #. Dann sollten Sie das Produkt ausführlich in einer Testumgebung testen. - Kopieren Sie gegebenenfalls die ZODB aus Ihrem Produktivsystem in Ihr Testsystem. Achten Sie darauf, dass die Buildout-Konfigurationen beider Systeme identisch sind. - Wie hoch ist die Testabdeckung des Produkts? In `Testabdeckung (Code Coverage) `_ erhalten Sie weitergehende Informationen. - Durchlaufen Sie die automatisierten Tests sowohl Ihrer eigenen als auch des neuen Produkts. - Schließlich sollten Sie die Funktionalität und das User Interface auch in Ihrem Browser testen. Allgemeinere und umfassendere Informationen zur Evaluation von OpenSource- Software erhalten Sie im Artikel `Software-Evaluation `_. Installation und Aktivierung ============================ #. Zusatzprodukte können unter ``install_requires`` in der setup.py``-Datei angegeben werden, also z.B.:: install_requires=[ 'setuptools', 'Plone', 'vs.event', ], #. Anschließend wird das Zusatzprodukt noch in der Instanz registriert in der ``configure.zcml``-Datei:: ```` fügt alle Pakete der ``install_requires``-Liste einer Site hinzu. Sollen die Pakete explizit angegeben werden, kann dies z.B. erfolgen mit:: #. Damit unser Zusatzprodukt beim Aufsetzen einer neuen Plone-Site mit unserem ``vs.policy``-Produkt automatisch aktiviert wird, sollten wir es noch in der ``metadata.xml``-Datei eintragen:: 1.0 profile-vs.event:default #. Schließlich sollten diese Änderungen noch in unserem Buildout-Projekt übernommen werden. Hierzu wird das Buildout-Skript erneut aufgerufen:: $ bin/buildout Tests ===== #. Zunächst müssen wir sicherstellen, dass ``vs.event´´ in unseren Tests zur Verfügung steht:: class VsPolicy(PloneSandboxLayer): defaultBases = (PLONE_FIXTURE,) def setUpZope(self, app, configurationContext): # Load ZCML import vs.policy xmlconfig.file( 'configure.zcml', vs.policy, context=configurationContext ) # Install products that use an old-style initialize() # function z2.installProduct(app, 'vs.event') def tearDownZope(self, app): # Uninstall products installed above z2.uninstallProduct(app, 'vs.event') def setUpPloneSite(self, portal): applyProfile(portal, 'vs.policy:default') #. Nun fügen wir den eigentlichen Test hinzu:: def test_vs_event_installed(self): portal = self.layer['portal'] portal_types = getToolByName(portal, 'portal_types') self.assertTrue("VSEvent" in portal_types) #. Schließlich führen wir diesen Test aus:: $ ./bin/test .. toctree:: :titlesonly: :maxdepth: 0 :hidden: haeufig-verwendete-zusatzprodukte linguaplone