========
Features
========

Operating System Support
========================
Moin is implemented in Python, a platform-independent language.
It works on Linux, macOS, Windows, FreeBSD and other OSes that support
Python.

That said, Linux is the preferred and most tested deployment platform and
will likely have fewer issues than, for example, Windows.

Servers
=======
* Built-in Python server from Werkzeug, which is easy to use.
* Any server that talks WSGI to Moin:

  - Apache2 with mod_wsgi
  - nginx with uwsgi
  - IIS with isapi-wsgi (not recommended - if you must use Windows, but have
    a choice concerning the web server, please use Apache2).
  - Other WSGI servers, see https://wsgi.readthedocs.io/en/latest

* With the help of flup middleware about any other server speaking:

  - fastcgi
  - scgi
  - ajp
  - cgi (slow, not recommended)

Authentication
==============
* Built-in - username/password login form of Moin, MoinAuth
* Built-in HTTP Basic Auth - browser login form, HTTPAuthMoin
* Auth against LDAP / Active Directory (LDAPAuth)
* Any authentication your web server supports via GivenAuth

Authorization
=============
* Content Access Control Lists (ACLs)

  - global, using a mapping, so you can apply ACLs on parts of the namespace
  - local, per wiki item
  - give rights, such as:

    + create, destroy
    + read, write, rename
    + admin

  - to:

    + specific users
    + specific groups of users
    + all logged-in users
    + all users

* Function ACLs

Anti-Spam
=========
* Form Ticketing

Storage
=======
Item Types
----------
* we store data of any type, such as text, images, audio, binary
* we separately store any metadata
* everything is revisioned

Storage Backend Types
---------------------
* file system
* sqlite3
* everything supported by SQLAlchemy
* you can easily add your own backend with little code

Serialization
-------------
* dump backend contents to a single file
* load backend contents from such a file

Search / Indexing
=================
* important metadata is indexed
* content data is converted (if possible) and indexed
* fast indexed search, fast internal operations
* flexible and powerful search queries
* search current and historical contents
* using a shared index, find content in any farm wiki

User Interface
==============
OO user interface
-----------------
* Most functionality is done in the same way no matter what type your wiki
  item has.

Templating
----------
* Theme support / User interface implemented with templates

Wiki features
-------------
* Global History for all items (full list)
* Latest Changes ("Recent Changes"), only lists the latest changes of an item
* Local History for one item ("History")
* Diffs between any revision

  + text item diffs, rendered nicely with HTML
  + image diffs
  + binary "diff" (same or not same)
* Tags / Tag Cloud
* Missing Items
* Orphaned Items
* "What refers here?" functionality
* "What did I contribute to?" functionality
* Sitemap
* Macro support
* Multiple names and Namespaces support

Markup support
--------------
* MoinWiki
* Creole
* MediaWiki
* reST
* DocBook XML
* Markdown
* HTML
* plus code / text file highlighting for many formats

Feeds
-----
* Atom
* Google Sitemap

Notification
------------
* by email: smtp or sendmail

Translation / Localization
--------------------------
* Translations into English, German and Swedish are currently available.
* any localization, provided by babel / pytz

Logging
=======
* Flexible logging provided by the `logging` module of the Python standard library

Technologies
============
* HTML5, CSS, JavaScript with jQuery, SVG
* Python
* Flask, Flask-Caching, Flask-Babel, Flask-Theme, Click
* Whoosh, Werkzeug, Pygments, Flatland, Blinker, Babel, EmeraldTree
* SQLAlchemy (supports all popular SQL DBMS), SQLite, Kyoto Tycoon/Cabinet
