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:
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.
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...
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.