68
Kotti #PloneKonf 1 Ich Zope und Plone- Entwickler 9 Jahre ”Power-Entwickler”

Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Embed Size (px)

DESCRIPTION

Bei neuen Projekten stellt sich oft die Frage: Verwende ich Plone oder Pyramid? Während Pyramid viele wichtige Konzepte aus der Zope-Welt in modernerem und schlankerem Gewand anbietet, fehlen viele der zur Umsetzung von klassischen CMS-Anwendungen erforderlichen Bausteine, die Plone so erfolgreich machen. Einige davon liefert Kotti und bietet sich damit als eine schlanke Plone-Alternative an.

Citation preview

Page 1: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 1

Ich

Zope und Plone-Entwickler

9 Jahre ”Power-Entwickler”

Page 2: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 2

Plones Stärken

Warum verwende ich Plone?

Page 3: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 3

Plones Stärken

PHP Java .NET

Page 4: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 4

Plones Stärken

Enterprise Beans SOAP ...

Page 5: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 5

Plones Stärken

Enterprise Anzüge Krawatten Pants

Page 6: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 6

Plones Stärken

Python!!1 fun produktiv

Page 7: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 7

Plones Stärken

Python!!1 einfach lesbar expressiv

Page 8: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 8

Plones Stärken

Plone bricht Versprechen WTF? Plone??!

Page 9: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 9

Plones Stärken

Plone bricht Versprechen einfach lesbar expressiv Love hurts

Page 10: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 10

Plones Stärken

Community!! Anzüge Krawatten PANTS

Page 11: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 11

Plones Stärken

Community!! international freundschaftlich professionell

Page 12: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 12

Plones Stärken

Flexibilität Erweiterbarkeit

Plone sagt ja wo andere geht nicht sagen

Page 13: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 13

Plones Stärken

Anpassen through the web sehr interessant für Bastler und Communities

uninteressant für mich

Page 14: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 14

Plones Stärken

Plone Core hat viele Features out of the box

Page 15: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 15

Plones Stärken

viele freie Add-Ons nur ein kleiner Teil gut programmiert und gewartet

Page 16: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 16

Plones Stärken

Plones Killer-Features Object File System (OFS) Rechte, Rollen, Gruppen Workflows

Page 17: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 17

Plones Stärken

ObjectFileSystem

Page 18: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 18

Plones Stärken

Rechte Rollen Gruppen

Page 19: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 19

Plones Stärken

Workflows

Page 20: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 20

Plones Schwächen

Core hat zu viele Features out of the box

Page 21: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 21

Plones Schwächen

verschiedene konkurrierende Technologien

[more than] only one way to do it

Page 22: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 22

Plones Schwächen

Code kompliziert zu eifriges Adaptieren neuer Technologien

Zope 3 und Component Architecture

Page 23: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 23

Plones Schwächen

Page 24: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 24

Plones Schwächen

Page 25: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 25

Plones Schwächen

Page 26: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 26

Pyramid

Page 27: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 27

Pyramid

Stärken gegenüber Zope Pythonic fits your brain Kleiner Kern Ausgezeichnete Doku

Page 28: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 28

Pyramid

Page 29: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 29

Pyramid

SEXY

Page 30: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 30

Pyramid

Basis für allerlei Anwendungen nicht nur CMS

gut für komplexe Anwendungen

Page 31: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 31

Pyramid

Zope-Wurzeln vgl. Plone Killer-Features

OFS (eigtl Traversal) Rechte, Rollen, Gruppen Workflows

Page 32: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 32

Pyramid

Pyramid hat viele weitere Komponenten die ein CMS braucht

Page 33: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 33

Pyramid

solider Erweiterungs-Mechanismus

pyramid.includes = pyramid_debugtoolbar pyramid_tm

Page 34: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 34

Pyramid

Internationalisierung:pyramid.i18n

Page 35: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 35

Pyramid

Templates und Customization:Chameleon (ZPT)pyramid.asset

Page 36: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 36

Pyramid

Rechte, ACLs, Gruppen:pyramid.security

Page 37: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 37

Pyramid

keine Anwendung kein CRUD keine Datenbank unopinionated

Page 38: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 38

Pyramid

Ich will mein CMS mit Pyramid machen!

WHAT DO?

Page 39: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 39

Pyramid

für unser CMS fehlt noch Verdrahtung Konfiguration

Page 40: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 40

Pyramid

für unser CMS fehlt noch Persistenz OFS User Interface Formulare

Page 41: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 41

Pyramid

für unser CMS fehlt noch Benutzer / Benutzerverwaltung

Control Panel Schnittstelle für Add-Ons

Page 42: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 42

Kotti

genau diese Dinge liefert

Page 43: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 43

Kotti ♥ Pyramid

schließt die Lücke zw. Pyramid und CMS

ist Framework und out of the box CMS, wie Plone

Page 44: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 44

Kotti ♥ Pyramid

nutzt bestehende Pyramid-Mechanismen voll aus

und Komponenten aus Pyramid- und Python-Community

Page 45: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 45

Kotti ♥ Pyramid

wenig neue Konzepte Pyramid-Entwickler sollen möglichst Bekanntes vorfinden

erbt Pyramids Stärken

Page 46: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 46

Kotti ♥ SQLAlchemy

Kottis Datenbank verwendet SQL Datenbank

nicht ZODB SQLAlchemy

Page 47: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 47

Kotti ♥ SQLAlchemy

Kottis Datenbank keine großen Abstraktionen

SQLAlchemy API abgesehen von Nodes

Page 48: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 48

Kotti ♥ Twitter Bootstrap

Default Oberfläche benützt Bootstrap CSS, JavaScript Responsive Design dokumentiert, getestet

Page 49: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 49

Kotti ♥ Twitter Bootstrap

j

CRAZYSEXY

Page 50: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 50

Kotti ♥ Colander und Deform

Default Formulare basieren auf Deform Schemas Validierung Widgets

Page 51: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 51

Kotti ♥ Beaker

Kotti verwendet Beaker für das Sessioning Daten die vorübergehend gespeichert werden

konfigurierbar

Page 52: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 52

Kotti ♥ plone.i18n

Plone??! Ja, plone.dott!

Page 53: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 53

Kotti ♥ repoze.workflow

leicht zu integrieren nicht out of the box dabei

Page 54: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 54

Kotti ♥ YOU

Kotti konfiguriert alle diese Komponenten

damit du es nicht machen mußt

Batteries included

Page 55: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 55

Kotti ♥ YOU

Page 56: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 56

Kottis Design

möglichst einfach kein Big Design konzentriert sich auf:

(kleinen) Core Erweiterbarkeit

Page 57: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 57

Kottis Nodes API

root = get_root()

dict-like root['hey'] = Document(...) root['hey'].title = u'Ho' del root['hey'] root.values() # usw.

Page 58: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 58

Kottis Nodes API

Reihenfolge (ordered) child = root.children.pop(1) root.children.insert(0,child)

alle Content-Typen (Dokumente, Files, …) sind Nodes

Page 59: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 59

Kottis Benutzerdatenbank API

P = get_principals()

P['daniel'] = {    'name': 'daniel',    'title': 'Daniele',    'password': 'woops',    }

Page 60: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 60

Kottis Schnittstellen für Add-Ons

kotti.includes

kotti.populators

kotti.available_types

kotti.asset_overrides

Page 61: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 61

Kottis Templates

Master-Templates Unterschied zwischen

Öffentliche Oberfläche Redakteurs-Oberfläche

Page 62: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 62

Kottis Templates

leicht austauschbar z.B. nur öffentliche Oberfläche

oder nur Dokument-Template

Page 63: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 63

Kottis Templates

Kotti Slots (Viewlets) def render_hello(context, request):    return u'Hello, World!'

from kotti.views.slots import *register(  RenderLeftSlot, None, render_hello)

Page 64: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 64

Kottis Zukunft

Page 65: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 65

Kottis Vergangenheit

existiert seit > 1 Jahr ich verwende es

ein großes Projekt ein kleines Projekt andere Projekte, Websites

Page 66: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 66

Kottis Vergangenheit

Add-Ons kotti_calendar kotti_twitter kotti_contactform kotti_analytics

Page 67: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 67

Kottis Gegenwart

Sprint! WYSIWYG Hochladen von Dateien und Bildern

kotti_blogkotti_whatever

Page 68: Kotti: Eine moderne und schlanke Plone-Alternative auf Basis von Pyramid und SQLAlchemy

Kotti #PloneKonf 68

Ciao

github.com/Pylons/Kotti kottidemo.danielnouri.org #kotti auf Freenode @dnouri [email protected]