Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
HI!
 TIBERIU ICHIM
12+ years experience with Plone
2+ years experience with Kotti
KOTTI 101
A short introduction to the
Web Application FrameworkKotti
IN THIS PRESENTATION
What is Kotti?
First impressions
Overview of features
Major alternatives
Advantages and drawbacks
Kot...
WHAT IS KOTTI?
Started in 2011, at a Plone conference
Developers with common history: Plone
Developed in several sprints
Already stable f...
BSD licensed
1.0.0 in January 2015
current version: 1.2.0
~9k downloads per month
still small, but
active, healthy and wel...
fast
light
flexible
well tested
SCREENSHOTS
CODE SAMPLES
CREATING AN ADDON
CUSTOM CONTENT TYPE
 THE NODE CLASS
adjacency list pattern
parent
children
single root node => node tree
dictionary protocol
DICTIONARY PROTOCOL
TRAVERSAL
JOINED TABLE INHERITANCE
class hierarchy is broken up among dependent tables
each model class has its own table
that table...
POLYMORPHIC QUERIES
VIEWS
SIMPLEST VIEW ATTACHED TO A CONTENT TYPE
TEMPLATE
SCHEMA DEFINITION: FORM CREATION, VALIDATION
ADD / EDIT FORMS
CONFIGURATION
CHOICES MADE BY KOTTI
PYRAMID
probably the most advanced ORM for Python
database agnostic
has many nice, useful features
hybrid properties
association p...
BOOTSTRAPCSS
has all the components for modern UIs
responsive
well known
easy to customize
COLANDER & DEFORM
COLANDER
define data schema
validate & deserialize
HTML forms
JSON
XML
serialize Python structures to
strings
mappings
lis...
DEFORM
render HTML forms from structures serialized by Colander
outputs Bootstrap 3 forms (Deform 2)
REPOZE.WORKFLOW
a content workflow system
states define
role / permission mapping
transitions define
from_state
to_state
required_permissi...
FILEDEPOT
storing and serving files in web applications
multiple backends
local filesystem
S3
GridFS
roll your own
integrates with S...
... and many others:
Bleach
Babel
Alembic
py.test
jQuery
etc.
OVERVIEW OF FEATURES
User friendly
Developer friendly
USER FRIENDLY
BUILTIN CONTENT TYPES
Document
File
Image
USER INTERFACE
create content
edit content
delete
change state
folder contents view for batch operations
Obviously inspire...
...
workflows
security: roles, permissions, groups, sharing tab
user management
multi file upload
editors can choose which...
BUILT FOR DEVELOPERS
Simplicity
Traversal
Easy polymorphism
...
Transactions
easy configuration from .ini or python code
flexible user input sanitization
...
events system
flexible blob storage
i18n interface
...
slots (like viewlets)
inlining views
macros
override templates (like z3c.jbot)
...
95% coverage of python code
scale data from single file to replicated cluster
able to use countless other pyramid exte...
ALTERNATIVE TO...
Plone
Django
SubstanceD
PLONE
fully featured CMS
many add-ons
TTW development
well established, large community
many many features
heavy on resources
hard to learn and understand
over 300 packages
MANY COMPETING TECHNOLOGIES
For models and schemas:
CMF
Archetypes
Dexterity
zope.schema
...
Package infrastructure:
Zope2
ZCA
Grok
...
Presentation layer:
Diazo
browser views
portal_view_customizations
portal_skins
...
Forms:
CMFFormController
Archetypes
zope.formlib
z3c.form
plone.autoform
KOTTI VS. PLONE
Plone is source of inspiration
more similar to CMF in scope
no application server, only one global site
no...
DJANGO
many add-ons
large community
not quite a CMS
weird for Zope/Plone developer
SUBSTANCED
very good pedigree
similar features on the surface
ZODB vs SQLAlchemy
has undo, audit log
KOTTI, ON ITS OWN
Advantages
Drawbacks
ADVANTAGES
Best set of core libraries
pyramid
sqlalchemy
deform
Avoid burnout
smaller dev stack
smaller time in server startup
smaller time in testing
no lengthy builds
Knowledge transfer
Easier to dive into Plone if you know Kotti
... but if you're already a Plone developer
Zope Page Templates
slots, like viewlets
ZCA & .zcml
many concepts that are si...
DRAWBACKS
no undo or versioning, yet
small number of Kotti extensions.
smaller number of builtin features
not tweakable by editors
N...
THE FUTURE
will always stay
“lean and mean in all of the right ways”
the core is stable
python 3 support (almost done)
undo/versioning, using sqlalchemy-continuum
REST api (partially) impleme...
WHERE TO GO NEXT
Kotti documentation website
github.com/Kotti/kotti.git
on IRC
Kotti CMS 101
Kotti CMS 101
Kotti CMS 101
Kotti CMS 101
Kotti CMS 101
Kotti CMS 101
Kotti CMS 101
Kotti CMS 101
Prochain SlideShare
Chargement dans…5
×

Kotti CMS 101

896 vues

Publié le

A short introduction Kotti CMS, a Pyramid powered CMS developed by Plone developers

Publié dans : Logiciels
  • Soyez le premier à commenter

Kotti CMS 101

  1. 1. HI!  TIBERIU ICHIM 12+ years experience with Plone 2+ years experience with Kotti
  2. 2. KOTTI 101 A short introduction to the Web Application FrameworkKotti
  3. 3. IN THIS PRESENTATION What is Kotti? First impressions Overview of features Major alternatives Advantages and drawbacks Kotti in the future
  4. 4. WHAT IS KOTTI?
  5. 5. Started in 2011, at a Plone conference Developers with common history: Plone Developed in several sprints Already stable for many years
  6. 6. BSD licensed 1.0.0 in January 2015 current version: 1.2.0 ~9k downloads per month still small, but active, healthy and welcoming community
  7. 7. fast light flexible well tested
  8. 8. SCREENSHOTS
  9. 9. CODE SAMPLES
  10. 10. CREATING AN ADDON
  11. 11. CUSTOM CONTENT TYPE
  12. 12.  THE NODE CLASS adjacency list pattern parent children single root node => node tree dictionary protocol
  13. 13. DICTIONARY PROTOCOL
  14. 14. TRAVERSAL
  15. 15. JOINED TABLE INHERITANCE class hierarchy is broken up among dependent tables each model class has its own table that table only includes attributes local to that class
  16. 16. POLYMORPHIC QUERIES
  17. 17. VIEWS SIMPLEST VIEW ATTACHED TO A CONTENT TYPE
  18. 18. TEMPLATE
  19. 19. SCHEMA DEFINITION: FORM CREATION, VALIDATION
  20. 20. ADD / EDIT FORMS
  21. 21. CONFIGURATION
  22. 22. CHOICES MADE BY KOTTI
  23. 23. PYRAMID
  24. 24. probably the most advanced ORM for Python database agnostic has many nice, useful features hybrid properties association proxies ordering list transactions integrated to pyramid request lifecycle
  25. 25. BOOTSTRAPCSS has all the components for modern UIs responsive well known easy to customize
  26. 26. COLANDER & DEFORM
  27. 27. COLANDER define data schema validate & deserialize HTML forms JSON XML serialize Python structures to strings mappings lists
  28. 28. DEFORM render HTML forms from structures serialized by Colander outputs Bootstrap 3 forms (Deform 2)
  29. 29. REPOZE.WORKFLOW
  30. 30. a content workflow system states define role / permission mapping transitions define from_state to_state required_permission guards
  31. 31. FILEDEPOT
  32. 32. storing and serving files in web applications multiple backends local filesystem S3 GridFS roll your own integrates with SQLAlchemy files are handled like a plain model attribute transaction aware
  33. 33. ... and many others: Bleach Babel Alembic py.test jQuery etc.
  34. 34. OVERVIEW OF FEATURES User friendly Developer friendly
  35. 35. USER FRIENDLY
  36. 36. BUILTIN CONTENT TYPES Document File Image
  37. 37. USER INTERFACE create content edit content delete change state folder contents view for batch operations Obviously inspired by Plone
  38. 38. ... workflows security: roles, permissions, groups, sharing tab user management multi file upload editors can choose which view is used on any content item
  39. 39. BUILT FOR DEVELOPERS Simplicity Traversal Easy polymorphism
  40. 40. ... Transactions easy configuration from .ini or python code flexible user input sanitization
  41. 41. ... events system flexible blob storage i18n interface
  42. 42. ... slots (like viewlets) inlining views macros override templates (like z3c.jbot)
  43. 43. ... 95% coverage of python code scale data from single file to replicated cluster able to use countless other pyramid extensions
  44. 44. ALTERNATIVE TO... Plone Django SubstanceD
  45. 45. PLONE fully featured CMS many add-ons TTW development well established, large community
  46. 46. many many features heavy on resources hard to learn and understand over 300 packages
  47. 47. MANY COMPETING TECHNOLOGIES For models and schemas: CMF Archetypes Dexterity zope.schema
  48. 48. ... Package infrastructure: Zope2 ZCA Grok
  49. 49. ... Presentation layer: Diazo browser views portal_view_customizations portal_skins
  50. 50. ... Forms: CMFFormController Archetypes zope.formlib z3c.form plone.autoform
  51. 51. KOTTI VS. PLONE Plone is source of inspiration more similar to CMF in scope no application server, only one global site no local settings no need for GenericSetup no need for most portal_* utilities native SQL indexing, no need for portal_catalog obviously no TTW development
  52. 52. DJANGO many add-ons large community not quite a CMS weird for Zope/Plone developer
  53. 53. SUBSTANCED very good pedigree similar features on the surface ZODB vs SQLAlchemy has undo, audit log
  54. 54. KOTTI, ON ITS OWN Advantages Drawbacks
  55. 55. ADVANTAGES
  56. 56. Best set of core libraries pyramid sqlalchemy deform
  57. 57. Avoid burnout smaller dev stack smaller time in server startup smaller time in testing no lengthy builds
  58. 58. Knowledge transfer Easier to dive into Plone if you know Kotti
  59. 59. ... but if you're already a Plone developer Zope Page Templates slots, like viewlets ZCA & .zcml many concepts that are similar or reimplemented
  60. 60. DRAWBACKS
  61. 61. no undo or versioning, yet small number of Kotti extensions. smaller number of builtin features not tweakable by editors No: TTW content types composable layouts portlet management
  62. 62. THE FUTURE will always stay “lean and mean in all of the right ways”
  63. 63. the core is stable python 3 support (almost done) undo/versioning, using sqlalchemy-continuum REST api (partially) implementing JSONAPI split up some functionality from core
  64. 64. WHERE TO GO NEXT Kotti documentation website github.com/Kotti/kotti.git on IRC

×