Joomla! Update System requirement
What is the Joomla! Update System?
Starting with Joomla! 1.6, Joomla! has featured an update system to help keep systems up to date. The Joomla! Update System is mainly driven by the Extensions Manager. For more information about the Extensions Manager: https://docs.joomla.org/Help36:Extensions_Extension_Manager_Update
The Joomla! Update System provides a handy way to update the installed extensions, but it also implements a notification system from the extension developer to inform the availability of new versions. In this way, system adminitrators can be informed and choose how to manage the system.
Sample image: Notification of available updates
Sample image: A new extension version has been installed
The new JED requirement
New Listing Requirement: All extensions uploaded to JED after 10th January 2017 are required to use the Joomla Update System. This will help to ensure that site owners are always notified of when a new version of their installed extensions is available. Keeping extensions up to date can help to improve security.
In this guideline, we include a brief detail about how to implement the Joomla Update System for free and paid extensions. All developers are encouraged to visit Joomla Docs for more information or check how other extensions have already to adopted the update system.
With regards to extensions already listed on JED, they will not be unpublished if they are not in compliance with this new requirement. Instead, a popup warning will be shown to users when clicking the Download button, informing them that the extension doesn't support update servers and therefore must be updated manually.
Don’t forget to check if your extensions use the Joomla! Update System.
Joomla Update System
One of the most powerful features of Joomla! is the possibility to extend it with third-party extensions. To keep these extensions updated, Joomla Update System allows to quickly automate the process to check all installed extensions and update them from the extension manager.
From the developer point of view, extensions are linked to the source, via the extension manifest, to a feed of available updates.
To deliver the updates, there are two main use cases: Free extension or Paid extension. The first case is simple and updates could be directly distributed via the same download stream than the initial download. In the paid extension case, since updates are restricted to valid subscriptions/ memberships, then a method to check it must be integrated into the updating process.
In the following chapters, we describe the most common practices to distribute extensions updates.
Joomla Update System - Free extension
In this case, the Extension Update System requires to add a tag in the extension manifest to define a URI to publish the available updates:
Defining an update server
In order to use this feature, an update server must be defined in your extension's manifest.
<extension> <...> <updateservers> <server type="collection">http://example.com/list.xml</server> <server type="extension" priority="2" name="My Extension's Updates">http://example.com/extension.xml</server> </updateservers> </extension>
Updates XML file
The extension server type allows developers to define an extension's manifest to pull updates from a single extension's manifest.
update> <name>Joomla! 1.7</name> <description>Joomla! 1.7 CMS</description> <element>joomla</element> <type>file</type> <version>1.7.0</version> <infourl title="Joomla!">http://www.joomla.org/</infourl> <downloads> <downloadurl type="full" format="zip">http://joomlacode.org/gf/download/frsrelease/15279/66552/Joomla_1.6.5_to_1.7.0_Package.zip</downloadurl> </downloads> <tags> <tag>stable</tag> </tags> <maintainer>Sam Moffatt</maintainer> <maintainerurl>http://sammoffatt.com.au</maintainerurl> <section>Testing</section> <targetplatform name="joomla" version="1.6"/> </update>
Sample case: Joomla! Weblinks
At this time, Joomla! Weblinks extension is distributed in the same way than a third-party extension. Since it's updated in the same way than a third-party extension, it is a perfect reference implementation of the update system: joomla-extensions/weblinks
.. <updateservers> <!-- Note: No spaces or linebreaks allowed between the server tags --> <server type="extension" name="Web Links Update Site">https://raw.githubusercontent.com/joomla-extensions/weblinks/master/manifest.xml</server> </updateservers> </extension>
As shown in this manifest, the extension updates are distributed from a XML file manually maintained. If you prefer to create the XML update streams from a download manager, several alternatives can be found in JED.
NOTE: Double check the targetplatform
The common issue when Joomla does not detect a new version in the definition of the targetplatform.
Joomla Update System - Paid extensions
This case is similar to a Free extension. However, an additional validation is required to check if the user is entitled to receive the update. This validation is performed online and it must be supported by the extension developer system.
To identify the user updating his/her system, Joomla has an additional parameter extra_query in #__update_sites. This parameter will be added to the declared download URL, providing the opportunity to accept or reject the download.
You can manage the extra_query according to your requirements and Joomla does not impose any restriction in the field information. It has to valid as a URL parameter.
Sample case: Akeeba Release System and Akeeba Subscriptions
Akeeba Release System and Akeeba Subscriptions are the extensions that Akeeba extension developer implements to manage its own extensions. They are free alternatives to build upon your own release system.
In this context, a Download Id (dlid) must be defined in the extension to be updated and stored in extra_query field. For example: dlid=1234567890123456789012.
When Joomla update manager calls your site to download the update, it includes the Download Id. Akeeba ARS and Subs work together to check the membership and return the proper response.
Concerning to Third-party Update Systems
Thrid-party update systems, created to deliver updates in a safe and convenient way, similar to Joomla Update system are considered to comply with the requirement. However, as our aim is to centralise information about updates in the Extensions: Update area, then a third-party update system must also provide the version availability information for the Joomla! Update Manager. Users must not be required to visit each extension to know its status.
Extension View - Joomla! Update System compliance
Extension Form - Joomla! Update System requirement
Extension View - Joomla! Update System not supported
Extension View - Joomla! Update System not supported - Confirmation Dialog
Which is the best way to comply with VAT-MOSS, delivering e-services that are electronically supplied?
The administrative aspects of how an extension developer manages their business is beyond the scope of what the JED can regulate. It is the responsibility of the developer to ensure that he or she is operating within any legal requirements that are imposed by their local government. We can only recommend consulting with a local accountant and/or lawyer to ensure that you are meeting any local legal requirements.
You can implement the Update Servers in a similar way to how Paid Extensions manage it - you can implement the Update Servers to inform the users about the available updates and display a message saying that the update is available through contacting them via your website. The key point here is to inform users about the updates - the decision to provide them automatically or not is your decision.
In the same way, that there are several download managers that help to manage updates, there are also subscription managers that can help you to manage VAT. Alternatively, there are also e-commerce platforms that can consolidate sales.
- Tim's Joomla! News - How to add Joomler Updater to commercial component
- Akeeba Release System - A software dissemination / download repository component for Joomla!
- Akeeba Subscriptions
- Allow commercial (for a fee) components to use the Joomla! extensions update feature [Tracker 32684] #2508 - There are some additional references linked off the pull request.