Search

I mentioned that

This would be a good time to create a feature to track extension compatibility.

Would it be possible to add an area for extension developers to note compatibility of their extensions with each release in the list of downloads?

Update: Here’s my Unofficial Symphony CMS Extensions Library

What about the possibility for people to “watch extensions” and see all compatibilities in a list, much like the forum-filter? :-)

What about adding compatibility information to the extensions about() array? I suppose this could be parsed by the download section to offer information here on this site. Furthermore it would be possible to check for compatibility issues before running update.php and prompt a note to the user which extensions need special care.

Nils: Great idea, I didn’t think about update.php! But how will it find out if a certain extension won’t work? One could ask extension devs to try out the RCs but then you won’t recieve feedback from all of them…

Also I doubt it will be possible to parse that data in the downloads-section.

Also I doubt it will be possible to parse that data in the downloads-section.

Well, the raw code of any extension.driver.php can be accessed on github. Shouldn’t it be possible to autodiscover these links and parse them?

By the way: does github have an API?

But how will it find out if a certain extension won’t work?

If this site would store the compatibility information fetched from github, the updater could phone home to check for incompatibilities and newer extension versions.

Symphony CMS Extensions Library

How about if we use GitHub to track extensions and compatibility. If someone adds or updates an extension, they add their extension to the list and submit a pull request to the extensions repository. The repository simply tracks a list of submodules. So if you want all the latest extensions, you simply clone this repository and update the submodules.

We can also have different branches, which contain different collections of extensions:

  • Default
  • Stable
  • Development
  • Experimental
  • My Favourites

So each of us can have a list of favourites in our own branch repository that we can checkout for our projects.

Extensions Compatibility

I have started a test branch with an example list of extensions with compatibility information for each:

  • Name (linked to GitHub repository)
  • Description
  • Author
  • Version
  • Release Date
  • Compatibility

The compatibility can remain as n/a until verified by the community that the extension is compatible.

I forgot: I was going to add a “Type” or “Category” column.

  • Field
  • Data Source
  • API Extension

Or something similar. What should the categories be?

How about if we use GitHub to track extensions and compatibility. If someone adds or updates an extension, they add their extension to the list and submit a pull request to the extensions repository. The repository simply tracks a list of submodules. So if you want all the latest extensions, you simply clone this repository and update the submodules.

I’m not sure if I like this idea. I see some problems:

Setting up submodules, cloning and all this git related stuff may be easy for some of us. Personally, I’m a visual thinking person and I really hate that git is a command line powered monster. I learned the basics to push and pull things but man how often have I screwed up a repository due to problems while pushing to and pulling from GitHub. And GitHub is nothing more than a visualisation of what’s in a git repository - nothing more.

If we like to have a working compatibility tracking, I think the needed information should reside inside the extensions themselves. E. g. in the about() array. A compatibility check should be done automatically by the system and it should offer an easy way to upgrade in the Symphony interface (at least a link to the download area).

Remember the green update icon in version 1.7? This was a nice an clean interface and it was tracking visually what was happening technically. That was the “Symphony way” for me which has been cut off when Symphony 2 was created. I know this was done to reduce clutter and to concentrate on the core features. But I thought these nice features (all those that were in the system wide drawer with calendar and search) will at least return as extensions. In my opinion these user interface candies should return for compatibility checkups.

If technically GitHub is used for this check-up: okay (I’m not sure if it’s a good idea to be dependent on GitHub in all areas though). But in the first place we need an idea of a good user experience. And for me git is not a good user experience if you are not a techie.

github does seem a bit over-engineered…

Really, wouldn’t this be pretty easy to with Symphony itself?

Alternatively, and I know this might be controversial…, but wouldn’t a third-party wiki work equally as well for documenting this kind of thing and other documentation? (I don’t doubt that you could build a decent wiki with Symphony but I personally think it would be better to focus on Symphony itself rather than building tools that could, arguably, be serviced better by other tools..) I guess an example of what I’m suggesting is Atlassian’s Confluence extension area.

Simon

I’m not keen on using Github for this at all — it’s a huge barrier to entry.

I think we need an integrated way of doing this, such that extensions define their compatible Symphony versions as Nils suggested in the about() or similar.

During an upgrade Symphony would report which extensions are out of date and ask the developer whether they want to continue or not (knowing it could break things).

If there was some way of tracking the current version number and compatibility (by using the Github API for example) the upgrade process could also tell you which version you need or the latest version, with a direct link to Github.

I think there needs to be tighter integration between these things — having a big list on Github feels like a step backwards.

Well, this is in no way a suggestion that this should be the official means of dispersing this information. More of a stop-gap solution in the interim, and an aid to developers who are accustomed to using GitHub.

I think the consensus is that we all want extensions compatibility checking, and updating, available through the Symphony admin, similar to the way it used to be with Campfire Services. The same goes for the core application and for workspaces/themes.

GitHub is not a tool that will appeal universally, so I would much rather see a Symphony native solution in the long run. More than anything, I just want to keep the dialog open about how create a better user experience for Symphony users who are looking for extensions.

At this point, we’re still waiting for a well-documented extensions API. I’m wondering whether we need an about method for the Extension class that provides more information than it currently does:

    public function about() {
        return array(
            'name'          => 'Extension Name',
            'version'       => '1.0',
            'release-date'  => '2009-07-30',
            'author'        => array(
                'name'          => 'Author Name',
                'website'       => 'http://example.com/',
                'email'         => 'author@example.com'
            )
        );
    }

Some extensions still contain a description variable, which seems to have been deprecated at some point. Do we also need variables for compatibility and type? If all extensions are to have a GitHub repository, there should also be a source variable that points to this repository.

So, I figured out a way to modify the content.systemextensions.php file to output a list with all the necessary information for a comprehensive list. But, since the $about array was created pre-GitHub, the array seems incomplete to me, because it is missing a link to the source on GitHub.

If I take code from the symphony/content/content.systemextensions.php file and modify the list view to output this instead:

            foreach($extensions as $name => $about){

                ## Setup each cell
                $github = $about['name'];

                if(isset($about['github']))
                    $github = Widget::Anchor($about['name'], $about['github']);

                $td1 = Widget::TableData($github);          
                $td2 = Widget::TableData($about['description']);
                $td3 = Widget::TableData($about['version']);
                $td4 = Widget::TableData($about['release-date']);   

                $link = $about['author']['name'];

                if(isset($about['author']['website']))
                    $link = Widget::Anchor($about['author']['name'], General::validateURL($about['author']['website']));

                elseif(isset($about['author']['email']))
                    $link = Widget::Anchor($about['author']['name'], 'mailto:' . $about['author']['email']);    

                $td5 = Widget::TableData($link);    

                ## Add a row to the body array, assigning each cell to the row
                $aTableBody[] = Widget::TableRow(array($td1, $td2, $td3, $td4, $td5), NULL);        

            }

Then, I am able to create a table listing of all the extensions.

Name Description Version Release Date Author
Activity Log 1.0.1 2009-05-19 Rowan Lewis
Additional Page Types Adds JSON and CSV as page output types 0.1 2009-03-02 Max Wheeler
Admin CSS Override 1.0 2009-05-31 Michael Eichelsdoerfer
Advanced Symphony Database Connector (ASDC) 1.2 2009-01-21 Alistair Kearney
Akismet Spam Filtering Allows you to add a spam filter to your front end saving events. 1.3 2009-02-08 Alistair Kearney
Breadcrumb 1.0 2009-01-02 Alistair Kearney
Browse DevKit 1.0.1 2009-05-20 Rowan Lewis
CacheLite Allows for simple frontend caching using the CacheLite library. 0.1.5 2009-07-29 Max Wheeler
Calendar Overlay Converts date fields into calendars. 1.0.3 2009-04-02 Rowan Lewis
Can Of Spam Protect your forms against spam with a hidden field. 1.003 2009-02-18 Rowan Lewis
Clean URL Params Allows you to use /key:value/ instead of ?key=value in URLs. 1.0.0 2009-03-24 Rowan Lewis
Collapse Sectionfields Add a link to collapse all fields in section edit pages, making field ordering a lot easier. 1.0.1 2009-07-11 Carsten de Vries
Content Type Mappings 1.3 2009-04-30 Symphony Team
Cookie Monster 1.1 2008-05-16 Symphony Team
Data Source: Gravatar 1.1 2008-10-21 Nick Dunn
Data Source: Server Headers 1.1 2008-08-19 Alistair Kearney
Data Source Cache Force refresh of data source caches 0.1 2009-02-23 Nick Dunn
Debug DevKit 1.0.3 2009-07-24 Rowan Lewis
Deutsche Übersetzung 1.0 2009-01-23 Nils Hörrmann
Dynamic Event Redirect 0.0.5 2009-04-01 Max Wheeler
Entity Diagram 1.3 2009-07-01 Nick Dunn
EventEx: multiple section form submission 1.01 2009-01-21 Your Hero Paul
Export Ensemble 1.9 2009-07-28 Alistair Kearney
Field: Advanced Taglist 1.0 2009-01-21 Alistair Kearney
Field: Advanced Upload An enhanced upload field with image preview. 1.004 2009-04-23 Rowan Lewis
Field: Bi Link A bi-directional linking system for Symphony. 1.0.11 2009-04-28 Rowan Lewis
Field: Curl Input A field that validates and tests URLs with curl. 1.0.4 2009-03-30 Rowan Lewis
Field: Date Tag List A new way of storing dates, merging a tag list with a date field. 1.002 2008-12-05 Rowan Lewis
Field: Enhanced Tag List 1.2 2009-06-01 craig zheng
Field: Expression Define simple expressions and test values against them in a data source. 1.0.1 2009-07-03 Rowan Lewis
Field: Filter Allows to filter datasource and publishing with expressions and parameters. 1.0 2009-03-12 Marcin Konicki
Field: Flex Date A field that stores an expiry date allowing quick and easy manipulation. 1.004 2009-03-19 Rowan Lewis
Field: Hash 1.0 2008-04-13 Symphony Team
Field: Increment Number 1.0 2008-12-19 Nick Dunn
Field: Language Adds browser-languages parameter to list of all parameters available for data-sources and XSLT to use. Enables language field. 1.0 2009-03-04 Marcin Konicki
Field: Map Location 1.0 2008-02-01 Symphony Team
Field: Mediathek 1.1.3 2009-03-13 Nils Hörrmann
Field: Number 1.4 2008-05-14 Symphony Team
Field: Numeric Grouping Group entries on output every nth entry. 1.0.2 2009-03-30 Rowan Lewis
Field: Page Select Box 1.2 2008-12-23 Symphony Team
Field: Publish Notes Lets you add arbitary HTML to the Publish screen. 0.1.0 2009-07-29 Max Wheeler
Field: Reference Link 1.1 2009-02-13 craig zheng
Field: Reflection Allows you to automatically combine multiple fields into one. 1.0.6 2009-04-23 Rowan Lewis
Field: Repeating Date A field that generates, stores and filters repeating dates. 1.0.6 2009-05-15 Rowan Lewis
Field: Select Box Link 1.10 2009-07-27 Symphony Team
Field: Signed File Upload 1.02 2009-07-31 Tony Arnold
Field: Sub Section Edit linked sections within a parent section. 1.009 2009-01-29 Rowan Lewis
Field: Text Box An enhanced text input field. 2.0.6 2009-07-24 Rowan Lewis
Field: Unique File Upload Upload files with unique names, using the UNIX timestamp. 1.0 2009-05-06 Michael Eichelsdoerfer
Field: Unique Text Input 1.3 2008-12-12 Symphony Team
Field: XML Textarea field that only accepts valid XML 1.0 2009-04-29 Alistair Kearney
Field: XML Select Box 0.1 2009-07-22 Nick Dunn
File Manager Upload, Edit and manage files and folders. 0.8.2 2008-01-31 Alistair Kearney
Filter: Email Template 1.0.13 2008-04-01 Rowan Lewis
Filter: No Editing of Entries Allows you to prevent users from editing entries from front end forms. 1.0 2009-06-12 Nils Werner
Firebug Profiler View Symphony profile and debug information in Firebug. 1.1 2009-05-05 Nick Dunn
Formatter: Rich Text (TinyMCE) 1.01 2009-07-23 Symphony Team
Formatter: Textile Plus Format text using Textile with some extra features. 1.0.2 2009-05-15 Rowan Lewis
Formatter: widgEditor 0.1 2009-01-21 Max Wheeler
Front End Authentication 1.0 2008-09-24 Symphony Team
Frontend Member Manager Allows you to manage a member driven community. 1.008 2009-03-18 Rowan Lewis
Global Parameter Loader Allows you to add parameters, PHP evaluated or not, to Symphony’s parameter pool. 1.1.7 2009-05-24 Carsten de Vries
Global Resource Loader Allows you to select datasources and events to be used on all pages. 1.001 2009-01-08 Rowan Lewis
Google Custom Search Engine Use Google AJAX Search API as data source in Symphony. 2.3 2009-06-25 Marcin Konicki
HTML Formatter Allows HTML to be used as input, safely. 2.0.1 2009-06-26 Rowan Lewis
Import Manager Import data from XML documents directly into Symphony. 1.002 2009-01-06 Rowan Lewis
Improved Page Resolve Pass parameters to index if none of them selects valid page. 1.0 2009-03-02 Marcin Konicki
IP Location Lookup 1.0 2008-05-04 Alistair Kearney
JIT Image Manipulation 1.02 2009-03-06 Alistair Kearney
jQuery Date Picker 1.1 2009-01-20 Max Wheeler
Logs DevKit 1.0.1 2009-05-20 Rowan Lewis
MailChimp Supports subscribing a new address, first name, last name to your MailChimp account. 1.0 2009-05-8 Mark Lewis
Maintenance Mode 1.1 2009-01-27 Alistair Kearney
Markdown and SmartyPants Text Formatter Includes 3 Text Formatters: PHP Markdown, PHP Markdown Extra and PHP Markdown Extra plus SmartyPants. This Text-to-HTML conversion tool is developed by Michel Fortin. 1.8 2007-12-06 Alistair Kearney
markItUp! Add some basic text editor buttons to every textarea that is using one of supported formatters. 1.0 2009-03-09 Marcin Konicki
Multiselect to Checkboxes Convert all multiselect fields into checkboxes 1.0 2009-05-17 Fazal Khan
Nested Cats 1.0 2009-03-28 Andrey Lubinov
New Visiter Use to differentiate between new and repeat visitors. 1.0 2009-04-12 Mark Lewis
Order Entries 1.6 2009-06-28 Nick Dunn
Page Fields 1.0.3 2009-07-05 Simon Keary
Pages Editor - Minimal 1.0 2009-04-30 Alistair Kearney
Page Templates Create pages from predefined templates. 0.65 2009-06-13 craig zheng
PayPal Payments Allows you to process and track Website Payments Standard transactions from PayPal. 1.0 2009-07-10 Max Wheeler
Ping-o-Matic 1.1 2009-06-11 Symphony Team
Populate Entry Choose an existing entry and with its existing values create a new entry. 1.0.0 2009-07-23 Carsten de Vries
Profile DevKit 1.0.1 2009-05-20 Rowan Lewis
Publish Filtering Add a filter box to publish index pages. 1.2 2009-07-14 Nick Dunn
reCAPTCHA This is an event that uses the reCAPTCHA service to help prevent spam. 1.0 2008-05-07 Symphony Team
Section Schemas 1.2 2009-04-16 Nick Dunn
Select Box Filter Automatically add a filter to select boxes. 1.0.0 2009-03-23 Rowan Lewis
SEO Manager Manage page titles, descriptions, keywords and even headers. 1.002 2008-12-11 Rowan Lewis
Session Monster 1.0 2008-05-12 Symphony Team
Shrimp Intelligent short URL redirection. 1.0.0 2009-07-01 Max Wheeler
Templated Text Formatters Allows to chain text formatters into one text formatter and/or create new text formatters based on installed templates. For example You can chain Markdown and BBCode text formatters, so text will be formatted by Markdown first and than by BBCode. 1.5 2009-06-25 Marcin Konicki
Textformatter Labels 1.0.1 2009-06-25 Michael Eichelsdoerfer
Translation Manager Import and export translation files, check state of translations. 0.9 2008-12-24 Marcin Konicki
Typogrify Text Formatters Format entries using Typogrify formatter 1.0.1 2008-03-23 Tony Arnold
Uploadify Add an upload progress bar to file uploads. 1.000 2009-02-26 Nick Dunn
Vimeo Videos Cache a video from Vimeo. 0.1 2009-02-23 Nick Dunn
Yahoo! Search BOSS Use Yahoo! Search BOSS API as data source in Symphony. 1.3 2009-06-25 Marcin Konicki

If all extensions developers could include the description and github indices to the $about array, we could very easily have a complete list of extensions with links to their respective GitHub repositories.

public function about() {
    return array(
        'name'          => 'Type: Extension Name',
        'github'          => 'http://github.com/author/repository/tree/master',
        'version'       => '1.0',
        'release-date'  => '2009-07-31',
        'author'        => array(
            'name'          => 'Author Name',
            'website'       => 'http://example.com/',
            'email'         => 'author@example.com'
        ),
        'description'  => 'A brief description of this extension.',
        'requirements'  => 'Symphony 2.0.5',
    );
}

While we’re talking about it: what about splitting up name and type?
Concerning the requirements: what about extensions that do work in all versions but one, e. g. Symphony 2.0 required but not working in 2.0.2?

The Unofficial Symphony CMS Extensions Library

I’ve been fiddling around with these submodules for a bit, just testing how well the download works. I had encountered some issues before because I hadn’t properly updated the .gitmodules file, but now everything is working smoothly. It’s beautiful to watch all 107 extensions download without a hitch, all with a couple commands:

git clone git://github.com/bauhouse/extensions.git
git submodule update --init

@Nils, good points. It would be much more preferable to have the name and type split. Plus, for requirements, some extensions have dependencies on other extensions or libraries, and these should be indicated here. The dependencies might need to be an array of GitHub tree hashes.

Another issue is that there can be multiple versions of the same extension. Someone can fork, for example, the Content Mappings Extension. Does this become a new version? Should it be renamed? It could get really confusing, really fast. I think we need some guidelines or policies so this business of creating extensions doesn’t go off the rails.

  • Naming conventions
  • Requirements
  • Best practices

Which is basically saying, is there something we can do to help get an extensions API documented?

@bauhouse Wow! Thanks for pulling that together!

@bauhouse and others… This thread will be a tremendous help as we put together the new Extensions area. Good work!

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