Midgard (Software)
# Midgard (Software)

Midgard ist ein objektbasiertes Software-Framework für datenbankbasierte Web- und Desktop-Anwendungen. Midgard wurde ursprünglich zur Entwicklung von Webanwendungen wie Web-Content-Management-Systemen in PHP konzipiert, bietet mittlerweile aber ebenfalls Sprachanbindungen für die Programmiersprachen Python, Java und C#.
Das Midgard-Projekt nutzt ein an Ubuntu angelehntes Versionsmodell, d. h. zweimal pro Jahr wird eine neue Hauptentwicklungslinie freigegeben. Die Neuerungen der aktuellen 8.09-Serie umfassen unter anderem eine eingebaute Replikations-Schnittstelle und D-Bus-Unterstützung.
Ein weiteres Hauptmerkmal des Midgard-Frameworks ist die Datenbank-Abstraktionsschicht MgdSchema, die auf Basis von XML-Beschreibungen die Struktur der Datenbank-Tabellen verwaltet und einzelne Einträge als Objekte in den verschiedenen unterstützten Sprachen zur Verfügung stellt.

## MidCOM

Midgard setzt im Web-Anwendungsfall auf ein LAMP-System auf, und stellt mit dem mitgelieferten CMS-Framework MidCOM ein Komponentensystem bereit. Durch die mitgelieferten Komponenten können viele Anwendungsfälle wie Blogs, Foren oder Wiki-Systeme sehr einfach integriert werden. Zur Administration wird die Oberfläche Asgard bereitgestellt.
Durch das eingebaute ACL-System lassen sich verschiedene Rollenkonzepte realisieren, so dass beispielsweise Designer und Seitenautoren unterschiedliche Zugriffsrechte für einzelne Datenbankobjekte haben können.
Die Anwendungs-Logik wird in wiederverwendbaren MidCOM Components organisiert, deren Datenstruktur über ein System von sog. Datamanager Schemas weitgehend anpassbar ist. Website-Inhalte werden in Topics organisiert, die mit der jeweils zuständigen Komponente verbunden sind.
Das Layout wird durch ein System von in PHP, HTML und CSS geschriebenen Style Elements realisiert, die den Topics zugewiesen werden. Styles und Style Elements sind in einer Baumstruktur organisiert, unterstützen Vererbung und sind mehrfach verwendbar.

## Lizenzierung

Das Midgard-Framework ist grundsätzlich freie Software; die Lizenzierung der Teilkomponenten der Software unterliegt folgendem Modell:
* Midgard core libraries, "MidCOM": GNU Library General Public License;
* Offizielle Dokumentation: GNU Free Documentation License (GNU GFDL)

## Architektur

Die Midgard-Architektur setzt sich aus folgenden Kern-Komponenten zusammen:

### GNU/Linux, Apache, MySQL und PHP (= LAMP)

    Basis für eine skalierbare Plattform;

### Midgard Framework

    Technische Verwaltung von Berechtigungen (Permissions), Vorlagen (Templating) und Inhalten (Content). Das Framework, auch „Core“ genannt, besteht aus einer in C geschriebenen Anwendung, die APIs für Java, Python und PHP bereitstellt;

### MidCOM

    Ein in PHP geschriebenes Komponenten-Framework, mit dem strukturierte Inhalte aus vorgefertigten und wiederverwendbaren Komponenten erstellt werden können

### Website

    Anzeigen und Verwaltung der Inhalte.