Code Monkey home page Code Monkey logo

symphony-extensions-network's Introduction

Symphony Extensions Network

The central place to discuss, organize and optimize the Symphony CMS extensions ecosystem.

Note: Besides serving as an issue tracker for symphonyextensions.com and all things related to the extensions ecosystem this repository aims to provide a comprehensive set of best practices, guidelines and resources regarding extension development and maintenance. We encourage every extension developer to not only keep an eye on this repository (watch/star), but to join the discussion and help us build a platform that in the long run finally might define who, what and wherefore the "symphonists" are :)


Chapters

  1. 1. Extension Ecosystem
  2. 2. Extension Development
  3. 3. Extension Publishing
  4. 4. Extension Migration
  5. 5. Extension Adoption
  6. 6. Extension Transfer
  7. 7. Extension Consolidation
  8. 8. Extension Deprecation
  9. 9. Extension Request

3. Extension Publishing

If you built an extension that might also be useful for other Symphony developers you should think about publishing it. Here's a list of best practices you should follow if you want to share your work with the community:

A) Branches, Releases & Version Numbers

  1. Use branches to develop and maintain your extension on github. Your basic setup should contain a master-branch (representing the latest stable, tested and documented release) and an integration-branch (that is used for ongoing development and incoming pull requests and should cointain stable code too). Experimental and instable stuff should happen in separate feature-branches.
  2. Use releases to publish versions of your extension on github.
  3. Use semantic versioning for your extension's version numbers.
  4. Use tags to tag your releases with the appropriate version number. Don't follow github's recommendation of adding a prefixed v, just use the plain version numbers as tag (e.g. 1.0.0 instead of v1.0.0)
  5. Add a short changelog to each release listing all relevant changes since the previous release.

B) Metadata, Documentation & Licenses

  1. Get familiar with the official Symphony Extension Metadata Schema and add a valid and comprehensive extension.meta.xml to your repo.
  2. Add a descriptive markdown-formatted readme to your repo explaining what your extension does and how to use it.
  3. Keep your readme focussed. You don't have to include everything in here – github wikis are a great way of providing additional documentation, tutorials or examples. 1
  4. If you set up a wiki you should mention it in the readme. A list of links to all wiki pages ain't a bad idea either.
  5. Make use of github topics to tag your repo: symphony-cms and symphony-cms-extension are the official recommended tags for each extension-repository. Depending on the scope of your extension you might also want to add more specific topics (following the symphony-cms-xyz-syntax, e.g. symphony-cms-multilingual).
  6. Add a valid licence to your repo – MIT is a good choice that's used by Symphony itself too.

C) Publishing Platforms

  1. Publish your extension on github
  2. Publish your extension on symphonyextensions.com
  3. You might also want to spread the word in the official chat or forums to get some feedback about your extension.
  4. The official Symphony website also houses a collection of extensions but we don't recommend publishing new extensions there at the moment.

1) This holds especially true if you plan to include tables in your readme – they're not supported on symphonyextensions.com and are better of in a wiki.


5. Extension Adoption

If you own extensions that you no longer want to support, update or care about we'd encourage you to take the following steps to help us find a new home for them:

  1. Submit a new issue (one per extension).
  2. Give it a descriptive title: "Extension Adoption: Extension Name".
  3. Add a link to the extension repository.
  4. Optionally add a short statement about the current state of the extension.
  5. If possible give Nicolas (@nitriques) admin access to the repo so he can manage the transfer for you. 1

Depending on the state, popularity and usefulness of the extension we will then either …

  • … try to find a developer who is willing to take over ownership and further maintenance/development.
  • … transfer the repo to the symphonists organization and provide best possible support there.
  • … mark the extension as deprecated and transfer it to the "symphonists archives".

If you don't give Nicolas admin access to the repo we'll need you to take action after a solution is agreed upon. Thus it would be great if you could keep an eye on the discussion and be available to manage the repo transfer yourself.


1) If the repository is owned by a user account you might need to set up a temporary organization to give other users permission to transfer the repository. Please refer to the github help for details about transferring a repository and repository permission levels.


symphony-extensions-network's People

Contributors

nitriques avatar twiro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

mst-symphonycms

symphony-extensions-network's Issues

Renaming an extension

Supposed I have an extension named "Slider" and would like to rename it to "Slider Field".
Would that be possible in the symphony extension eco-system or would I face unsolvable problems?

  1. On github itself it wouldn't be a problem.
  2. How would it work on symphonyextensions.com? Would it be possible? Would I have to post an issue here and request renaming or could I do it myself?
  3. Regarding Symphony CMS itself. Would it be possible to change the name of an extension while updating or would this be impossible due to the way Symphony uses names to identify extensions? If so would this mean, that a renamed extension would only be possible to include in Symphony as a new extension?

Would be great to clarify this and would be some useful information to include in a kinde of "FAQ" in the readme of this repo.

@nitriques - I'd like to label this issue with FAQ, but it looks like I can't create new labels. Could you take care of this?

.docs .docs .docs

There are way too many places where we have doc.

The only place where I feel comfortable putting my trust in would be to create a .docs folder in the main git repo.

I would not store anything else than markdown files. Any other fancy generator could live elsewhere. But there are two major win

  1. We tie the doc with the release version.
  2. We allow PR on docs!

Am I pretty confident that this is the good way. Please show me that I am wrong/right. ;)

symphonyextensions.com & readme formatting

symphonyextensions.com has some serious issues in understanding some content in markdown-formatted readme-files. For example it can't handle multiple H1-elements, tables or code-blocks that use spaces for indenting instead of tabs.

As these issues come to show very obviously in the readme of the latest version of reflection field I think it would be a good moment to discuss what we could to to improve this.

I see two options:

  1. Improve the capabilities of symphonyextensions.com (might be a little tricky as far as I remember) (But I would gladly take care about any CSS-related stuff if @nitriques could fix the markup/formatter-related part)
  2. Set up some more restrictive guidelines/recommendations regarding the formatting of readme-files that play nicely together with symphonyextensions.com and publish them here in the network-repo.

Option 2 would be easy to do, but option 1 might be the better solution in the long run... what do you think?

New chapter "Extension Publishing"

I took the introduction of github topics as a reason to finally add a second chapter to this repo - it's about recommendations and best practices regarding "Extension Publishing".

This is only a draft for now and at least the two following points need to be discussed and agreed upon before publishing the chapter to the master-branch.

  1. Should the 1.0.0-syntax be promoted as the official best practice for version-tags of github-releases or should we stick with github's own recommendation of adding a prefixed "v":v1.0.0? I'd vote for the first option as this is how Symphony has used version-tags on github since the repo moved there. And not to forget - the prefixed "v" results in missing links in the compatibility-tables on symphonyextension.com... though I guess & hope this could be fixed.
  2. Should publishing extensions on getsymphony.com still be recommended? I'm not so sure...

Any other feedback or ideas hot to optimize this chapter are welcome!

Remove "Storage" extension

Please remove the Storage extension (from the extensions site). Afterwards I will re-add it, because I am the maintainer now.

Extension Transfer: Text Box Field

On behalf of a healthy extension ecosystem I would like to propose an extension transfer of the Text Box Field extension:

  • Text Box Field is currently actively maintained by the symphonists and 20 commits ahead of Rowans repo that hasn't been updated in 3 years.
  • Symphonyextensions.com is still listing Rowans repo as the official extension resource.
  • Multilingual Field also lists Rowans repo as a dependency.

I think this should be changed by...

  1. ...transferring ownership of the extension to either the symphonists account or (even better) to someone who is willing to personally take care of the extension.
  2. ...fixing the entry on symphonyextensions.com and linking to the new "official" repo (will also solve the problem for multilingual field).

@nitriques , @psychoticmeow, @brendo

Github topics

Looks like github just reinvented "tags" and introcuded "topics" to offer a "completely new way to discover similar repositories":

"Topics are labels that create subject-based connections between GitHub repositories and let you explore projects by type, technology, and more."

While this doesn't feel like a big innovation it's still pretty useful and it would be nice to have one or two "official recommended" labels for Symphony that could be documented here and promoted in the community as best practice to be used for tagging github-repos.

I'd suggest...

...as these two terms are pretty distinct and don't interfere with other systems/technologies like solely using symphony or extension does. (sorry for abusing your first extension's repo as example @SeanVella - but as topics are pretty new there aren't many symphony-related repos around that do have any topics attached ;)

Any thoughts?

Compatibility Tables on symphonyextensions.com

Just noticed that older minor releases now get bundled as 2.2.x, 2.3.x, 2.4.xetc. in the compatibility table on symphonyextensions.com.

While it's a good move in general to clean & tighten up the tables I think the current solution is somehow saving at the wrong end:

While almost every extension that's compatible with 2.6.0 will also be compatible with 2.6.7 and every 2.6.x-release in-between the same is not true for compatibility of "patch"-releases in-between older minor releases (before the introduction of semver) .

For example: Symphony 2.3.3 came with a breaking change regarding file upload paths. Thus all upload extensions needed to treat file uploading and storing different in Symphony 2.3.3 than they did in 2.3.2.
I just resubmitted the Reflected File Upload extension and the compat-table on symphonyextensions now shows version 1.1 as compatible with Symphony 2.3.x - but this is only true for Symphony 2.3.0, 2.3.1 and 2.3.2 - as of Symphony 2.3.3 version 1.1 of the extension will break things as Symphony 2.3.3 requires version 1.2 of the extension due to the above mentioned change regarding the file upload path.

I still have some old sites running on Symphony 2.2.x and 2.3.x (I know, better should update) and the detailed compat-tables on symphonyextensions always were of great help when updating
to a newer Symphony version and fighting the fact that every single extension might break with every single patch-release.

So I guess these detailed compat-tables for older symphony releases (at least 2.2.x and 2.3x) are still pretty useful for every developer who needs to update these installations to a newer version.

tl;dr

I would vote for bundling patch-versions of all minor releases starting with Symphony 2.5.0 (the introduction of semver) and keeping single patch-versions listed for older Symphony releases that were not following semantiv versioning (at least for 2.3.x, better also for 2.2.x).

So the latest parts of the compat-table would look something like that:

2.2.5 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.4.0 2.5.x 2.6.x
... ... ... ... ... ... ... ... ... ... ...

Note: This proposal is meant for the single extension pages that offer more space for a detailled compat-table than the compatibility matrix does. In the matrix (that's mainly used to get a quick overview) a general bundling of all patch-versions (just listing 2.2.x, 2.3.x, 2.4.x, 2.5.x and 2.6.x) would be totally sufficient in my eyes.

Change ownership of "slider" extension

a "how-to-transfer-ownership-on-symphonyextensions.com" guide as well as the possibility to file a new issue to request the change if I can't do it myself would be a pretty good start!

Good point!

Here we go - first issue on this repo :)

Ownership of the "slider" extension has been transfered to my github-account today:

It would be great to reflect that change on symphonyextensions.com.

It would be even greater to include a first "FAQ" in the readme that would give me instructions how a change of ownership on symphonyextensions.com works and what i should best do to accomplish it.

Resources about extension development

I'd like to add a short third chapter about extension development to this repo. Not a a real guideline or tutorial, rather a curated list of helpful links - at least for the beginning that would be better than nothing!

The information about extension development I found are mostly somehow out of date, but nonetheless still helpful - does anyone know other / better resources?

Sadly the "We have a tutorial on developing extensions that walks you through how to create a simple extension from scratch." part on the first linked page doesn't seem to be true - the link is dead :(

PHP7 compatibility of extensions

Symphony 2.7 will be compatible with PHP7, but many extensions won't. But how can a developer see if an extension will run on PHP7?

I wonder if we should define a "best practice" for marking extensions compatible with PHP7. Maybe we should add an (interim, to be removed later?) element or attribute to the meta XML scheme?

For example:

<release version="7.4" date="2017-04-28" min="2.7.x" max="2.x.x" php7="yes">

Display of version compatibility

In lang_german version 2.1.0 it states Symphony 2.4.0 as minimum requirement. Thus it should be shown as compatible with Symphony 2.5.x as well if not stated otherwise by some newer version.

    <release version="2.2.1" date="2015-10-29" min="2.6.0">
        - Transliteration for non-breaking space
    </release>
    <release version="2.2.0" date="2015-07-21" min="2.6.0">
        - Symphony 2.6 compatibility
    </release>
    <release version="2.1.0" date="2014-03-18" min="2.4.0">
        - Symphony 2.4 compatibility
    </release>
    <release version="2.0.0" date="2013-04-03" min="2.3.0">
        - Symphony 2.3 compatibility
    </release>

But instead it says Symphony 2.5.x is not compatible.

bildschirmfoto 2016-02-16 um 11 03 06

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.