--- myst: html_meta: "description": "" "property=og:description": "" "property=og:title": "" "keywords": "" --- (plone5-intro-what-is-plone-label)= # What is Plone? Plone is an open source Content Management System (CMS) built in Python. - Open-Source Enterprise-CMS - Written in Python - Plone 5.1 and below support Python 2.7 - Plone 5.2 and later support Python 3.8, 3.7, 3.6 and 2.7 - [RESTful hypermedia API](https://github.com/plone/plone.restapi/) - Based on the Web-Framework Zope - Database: "Zope Object Database" (ZODB) or ORM & SQL/Postgres/Oracle - Runs on Linux, Mac OS, BSD, Solaris, NixOS and Windows Plone has a multitude of powerful features, is easily accessible to editors but also fun for programmers. - Workflow-driven, collaborative management of content - Industrial Strength Security and Access-Control - Limitless Extensibility ```{note} The modular and open component architecture of Plone allows you to change or extend Plone in every respect! ``` ## Core concepts ### Traversal - Plone uses [Traversal](https://5.docs.plone.org/develop/plone/serving/traversing.html) (portal/folder/document) instead of Routing - Python objects in a object tree that looks like a huge nested dictionary: ```python {'site': {'folder': {'page': page_object}}} ``` - Objects can be accessed like walking through a file-system: ```python root['site']['folder']['page'] ``` ```python >>> from plone import api >>> portal = api.portal.get() >>> portal.keys() ['folder1', 'document1'] >>> portal['folder1'] ``` ### Object publishing Objects can be called and return a representation of itself - usually html. ```python >>> obj = portal['folder1']['a-newsitem'] >>> obj >>> obj() u'\n\n\n