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. You can learn more about the Extensions Manager at https://docs.joomla.org/Help36:Extensions_Extension_Manager_Update
Update Notifications
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 you about the availability of new versions. In this way, website administrators can be informed about them 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 when a new version of any extensions they have installed is available. Keeping extensions up to date is crucial to website 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, the 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 adding 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 as a third-party extension. Since it's updated in the same way as a third-party extension, it is a perfect reference for the implementation of the update system: joomla-extensions/weblinks
weblinks/src/pkg_weblinks.xml
.. <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 manually maintained XML file. 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.
Please, check this https://raw.githubusercontent.com/joomla-extensions/weblinks/master/manifest.xml
Reference:
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 called extra_query in the #__update_sites table. 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 parameter according to your requirements and Joomla does not impose any restriction on 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 the 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 the extra_query field. For example: dlid=1234567890123456789012.
When the 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 Third-party Update Systems
Thrid-party update systems, created to deliver updates in a safe and convenient way, similar to the Joomla Update system are considered to comply with the requirement. However, as our aim is to centralize 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.
Concerning to Add-ons distributed via Third-party Update Systems
Add-ons are a special case of extensions managed by a parent extension. Addons are installed, managed and uninstalled with a Third-party Update System.
Since these particular type of extensions are published in JED but they can't be integrated with the Joomla! Update System, they are exempted from the integration requirement. This exception includes extensions that are not installable via the Joomla Installer and are parent-extension specific.
Such extensions will be approved on a case by case basis.
Sample Screenshots
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.
Reference:
- 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.