XWiki Extension Repository Redesign

Last modified by Ecaterina Moraru (Valica) on 2017/09/04 14:49

This document is a  redesign proposal for XWiki's extension repository.

This document should be read in the context of the Extension Manager design proposal and it should be refactored to take it into account. The current proposal seems to be a lighter version of that proposal. It must be made sure that this proposal is not incompatible and that there's a mirgation path so that we move from this proposal to the full fledged one later on in case this proposal is accepted.

User need

The extension repository should allow XWiki users to download XWiki extensions.

Extensions can be any downloadable program that can be used with an XWiki Server.

An extension can for instance be:

  • a simple code example
  • a panel
  • a wiki macro
  • a java plugin
  • a full XWiki application
  • a package comprised of any of the previous type
  • a separate application that is not ran on an XWiki instance but that interacts with it using XWiki APIs

It should be possible for a user to view only the applications that are compatible with the XWiki version of the user's XWiki server.

It should be possible to browse applications by type, by tags, by popularity, by number of downloads.

It should be possible to download the latest version of an application or a previous version.

From an XWiki installation it should be possible for certain types of applications:

  • To configure one or more repositories to browse
  • To browse the repository directly from an XWiki installation and install applications seemlessly.
  • To view applications that are not up-to-date on an XWiki installation.
  • To package an application and publish it on the repository of your choice

Existing Repository

We have an existing repository on code.xwiki.org which allows to download extensions. The system is split in 6 areas for each type of extension:

  • snippets: simple code sample
    • details of the snippet including the code
  • macros: XWiki Java Macro, Wiki Macro (any language)
    • created by the devteam/contributor
    • bundled with skin
    • bundled in xwiki core: yes/no
    • contributor name
    • macro type: velocity, radeox, xwiki 2.0, wiki macro
    • macro details
    • link to macro download page
  • plugins: java plugin
    • created by the devteam/contributor
    • bundled in xwiki product
    • contributor name
    • plugin details
    • link to plugin download page
  • applications: mostly XWiki velocity code
    • one line description
    • created by the devteam/contributor
    • bundled in xwiki product
    • contributor name
    • application details
    • link to application download page
    • icon
  • skins: a new look and feel
    • same as application
  • extensions: an external module
    • created by the devteam/contributor
    • contributor name
    • plugin details
    • link to extension download page
  • modules: an XWiki plateform component
    • link to xwiki pom

The modules are more there for documentation as they are bundled in the plateform by default.

Each Download page has the latest version number and for each downloadable version the following fields:

  • name
  • version
  • download link
  • release notes
  • install notes

The user interface to create any of this is a bit confusing. It is not clear to the user how to create the download packages. It is not clear how to set the link of the download file in a downloadable item (a initial improved UI has been done for Applications but is not used for the other items).

We don't have information of version compatibility in the repository.

The major issue is that you don't know where you extension is when you are looking for it (macros ? snippets ? applications ?). We need to regroup all of them together and improve navigating and finding the high quality extensions. They should be a rating mecanism and download statistics to help people find the better extensions.

Naming

We need to decide what the name should be for the repository. Possible choices are:

  • Prefix
    • Add-On
    • Extension
    • App
    • Store
    • Modules
    • Plugins
  • Suffix
    • Directory
    • Repository
    • Store
    • Catalog

Repository Design

General Principles

  • There should be a meta data to know if the application can be installed without manual configuration (import + install script at the maximum) and without restart of the server.
  • There should be a REST api to list applications compatible with a specific version of xwiki

Data Model

The following classes are proposed

  • XRCode.ExtensionClass
    • title:  name of the application
    • description: short description of the application
    • details: details and documentation about the application
    • type:
      • installable:  snippet, wiki macro, application, skin, colortheme
      • not installable: xwiki10macro, plugin, module, extension
    • status: experimental/beta/stable
    • createdBy: created by the devteam/contributor
    • bundledWith: bundled in xwiki package
    • contributor: main contributor name/core developer name (has to be an xwiki.org account)
    • contributors: additional contributors (free text field)
    • licence: licence could be a list or free text field -> we could also force only LGPL packages or a list of special licences GPL/LGPL/ASL
    • icon: icon file name representing the application
    • screenshot: main screenshot reprensenting the application
    • svn: svn URL of the trunk for this application
    • installable: yes/no wether this can be installed without restart
    • minversion: minimum xwiki platform version with which it is compatible
    • maxversion: maximum xwiki plateform version with which it has been tested
  • XRCode.DownloadClass
    • filename: filename or url
    • filenames: additional file names or url
    • extension: page of the extension it is part of
    • dependencies: additional downloads needed
    • version: version
    • status: experimental/beta/stable
    • minversion: minimum xwiki platform version with which it is compatible
    • maxversion: maximum xwiki plateform version with which it has been tested
    • download link
    • release notes
    • install notes

User Interface

Here is a proposal for the main page of the repository:

XWikiExtensionRepository.png

Here is a proposal for a module in the repository:

XWikiExtensionRepositoryApp.png

Getting Updates about new applications

Additionnally it should be possible to register your Wiki on the repository and if you accept to send information about the applications you have installed you will be informed of the updated applications.

An application in XWiki should allow to register your Wiki on the repository and view updated applications directly from XWiki.

Registering a Wiki on the repository

If you are logged in on the repository you have the possibility to register your Wiki. The URL given will allow to launch the installation directly and to store the fact that the application has been installed. From then on you can be informed of updated modules and dependencies can be checked before installing modules.

Data Model
  • XRCode.WikiClass
    • owner: account create on the repository wiki
    • passcode: secret passcode for this wiki
    • url: url of the wiki
    • registrationdate: registration date
    • notification: notify the owner or a specific email of updated modules
    • notificationemail: email to send notifications
  • XRCode.WikiInstalledClass
    • addonurl: page of the add-on installed
    • version: version installed
    • dateinstalled: date installed
Tags:
   

Get Connected