Wiki source code of More extension repositories

Last modified by Vincent Massol on 2024/02/26 17:54

Show last authors
1 ==== Introduction ====
2
3 Currently the extensions in XWiki may be in two possible formats: XAR (XWiki Archive) or JAR. Extension may be added to the running system in two ways: either importing them from local system where XWiki runs, or using Extension Manager (bundled in XWiki) that downloads extension from remote repository. At the moment two types of remote repositories are supported: **XWiki Reposiory** and **Maven Repository **.
4
5 And the aim of the "More extension repositories" project is to add integration with other typesof remote repositories:: NPM, Pypi or Bintray. The goal is to be able to import seamlessly an extension deployed for example on Pypi in the same way as it's done e.g. using Maven repository. And so, since Pypi is the repository storing .egg and .whl packages, there will be a need to implement integration between .egg/.whl packages and XWiki (possibly converting them to JAR and using Jython).
6
7
8 ==== Implemenation approach ====
9
10 * The final product of the project will be set of extensions enabling connection to new types of repositories (one per each repository - e.g. "Pypi Repository Integration", "Bintray Repository Integration" ect.).
11 * XWiki has handy API for easy extension of Extension Module, especially: ExtensionRepositorySource, ExtensionHandler, ExtensionRepositoryFactory. Adding support for new repository will come down to providing implementation of this interfaces in the form of Components and packing them into JAR
12 * Integration with Python and JS
13 ** Python - two possibilieties to be investigated:
14 *** include in Pypi implementation of ExtensionRepositorySource (e.g.PypiRepository) a converter from EGG to JAR, so that it exposes toRepository Manager only JARs
15 *** Make PypiRepository expose EGGs to Repository Manager, but implementas well ExtensionHandler (e.g. EGGExtensionHandler) to cope with load ofEGG package to XWiki Java runtime
16 ** JS - to be designed FIXME
17
18 ==== Timeline ====
19
20
21 * **up to 26 June **- working Bintray integration with documentation
22 * **up to 24 July **- working Pypi integration with .egg packages integration with
23 documentation
24 * **up to 21August **- working NPM integration with documentation. (Possibly
25 integration with Python .whl packages)

Get Connected