19 Dec 2011

The problem

There are almost 350 extensions now. Wow! Sadly though, not all are actively maintained, and not all are updated to be compatible with new Symphony versions. How do you spot when a new extension is released? If you start a new Symphony project after six months away, how do you find new extensions that might be useful? As an extension developer, how much time do you waste updating your PHP drivers, README files and content on the Symphony site when releasing a new version?

It's clear that there hasn't been enough extension-loving recently (sniggers): they are tricky to discover on the Symphony website; they are difficult for their managers to maintain; and Symphony doesn't get enough information to know about dependencies, compatibility and updates to give useful feedback to site builders.

Let's change that.

A partial solution: extension.meta.xml

Over the last few months we have been discussing how developers should document extension compatibility with various Symphony releases, how extension dependencies should be captured and what format this data should follow. If you've got an hour to kill, read the above. If not, all you need to know is that the extension.meta.xml file was born.

Extension Metadata Schema v1.0

The schema is human-readable and really easy to write and maintain. Use it to keep track of your extension's name, description and type; its repository URL and links; its version history and changelog; its dependencies and its screenshots and screencasts.

From today onwards, all extensions should provide a meta XML file as well as the extension.driver.php in the root. It's not yet a requirement, but the plan is for the about() array inside drivers will be deprecated, and Symphony will use the XML instead.

This opens new possibilities for Symphony to:

  • alert you when a new version of an extension is found and maybe even update it for you
  • prevent you enabling an extension that is incompatible with your Symphony instance
  • alert you if an extension requires another extension to be installed first

But it's not just Symphony that can parse these files. Having this content in a structured format means we can build new tools and services that consider extensions in an intelligent way...


Symphony Extensions is a small project that I started on the train home from the Symposium in Cologne in October. It tracks extensions for Symphony that live on GitHub.

For site developers, you get a searchable directory of all Symphony extension repositories. See when an extension is updated, see what's popular, and get a git clone link as easily as possible.

For extensions developers, all you need to do is push an extension.meta.xml file to your repo and add the extension in two clicks. Nothing else, ever again.

In addition to watching repositories, the site hosts a blog where I and others will be writing about extension development, and featuring collections of extensions that work well together. There are already two articles to read on the new extension.meta.xml syntax and a guide to caching using extensions.

It's not yet clear whether Symphony Extensions will replace the extension lists on this website, but I hope this is going to grow into a useful resource for everyone. I'm going to be nagging all extension developers to migrate their repos (Rowan, I'm looking at you...) over the coming weeks and there are plenty of features I want to add too (search by extension status/compatibility, user interface refinement, exposing data through an API).

Follow @symextensions on Twitter to get instant notifications of new and updated extensions, and I'll deliver site news there too.

Lastly, a massive thank you to all of the beta testers who have been playing breaking the site over the last six weeks. Allen, Craig, Brendan, Rowan, Nils H, Nils W, Michael E, Simone, Jonas, Stephen, John P, Huib — your feedback has been invaluable.


  • Nils
  • 19 Dec 11, 3:41 am

Nick, this is gorgeous!
Thanks a lot for all the hard work.


Thanks for the hours of discussions and not taking a plane for coming back home :)

Awesome, thanks a lot nick et al!

  • eKoeS
  • 19 Dec 11, 6:28 am

Thanks for the hours of discussions and not taking a plane for coming back home :)


Great stuff! Another push forward for the symphony community! Thanx!

@nickdunn - You absolutely amaze me! You are incredible! Wow, thank you all for a wonderful Christmas present! Absolutely cool!

  • Lewis
  • 20 Dec 11, 6:53 am

Nick, brilliant! You've kicked it up a notch :)

Thanks, Nick. You've done an amazing job with the GitHub OAuth integration. I love the extension.meta.xml generator.

Thanks guys. Now you just need to add your extensions! Please.

Nice work Nick!! You must be some super genius =D

Nice work Nick!! You must be some super genius

He is.


  • into
  • 12 Jan 12, 3:50 am

Nick ! thank you.

Create an account or sign in to comment.

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