Published:
10 October 2011

Background

Until now, developers have documented their Symphony extensions in two ways. Firstly, every extension.driver.php must include an about() method which returns an array of metadata including the extension name, description, version, release date and author. This information is used to render the Extensions page in Symphony itself.

Secondly, it has become convention to include a README file in the root of the extension folder as well. Traditionally this has been plain text, but with Github's markdown support so popular, the majority are written with Markdown and include additional information such as dependencies, installation instructions, usage examples and a changelog.

The problem with these methods is that there is a lot of duplication. Every time a developer issues a new version of an extension he must update the version number and release date in both files. Equally, there is often information buried in the body of the README which would be useful for Symphony to parse and understand (dependencies and compatibility, I'm lookin' at you).

The idea of storing additional metadata in the about() function has been around for a long time, but never gained much attention. We have decided to merge all of the useful, structured metadata about extensions and their developers into a single XML file: extension.meta.xml.

Specification

The specification was discussed and refined in forum thread "Extension compatibility" and Github issue #767 "Improve Extension Metadata". Read them if you dare. Or simply refer to the final specification:

Symphony Extension Metadata Schema v1.0

Most importantly, if your extension already exists on the Symphony CMS website, then I have created a generator tool to grab your extension details and build an XML file to get you started. Easy.

From the specification document:

There are two tools to make generating the XML files easier:

The generator tool will create a basic XML file based on information found on the extension's page on the main Symphony website. Use this as a starting point, but please double check the data is correct before pushing to your repository.

The lint tool validates your XML against the formal XSD schema. This will return any errors such as basic XML validation, as well as missing required fields or bad values.

So developers, go forth and write XML and get your extensions onto this site. It will take a few minutes now, but will save hours later.

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details