More extension repositories

Version 3.3 by Krzysztof Płachno on 2017/05/29 16:30

 
 Feature
 Idea
 

Description

Introduction

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 .

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).

Implemenation approach

  • 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.).
  • 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
  • Integration with Python and JS
    • Python - two possibilieties to be investigated:
      • include in Pypi implementation of ExtensionRepositorySource (e.g.PypiRepository) a converter from EGG to JAR, so that it exposes toRepository Manager only JARs
      • Make PypiRepository expose EGGs to Repository Manager, but implementas well ExtensionHandler (e.g. EGGExtensionHandler) to cope with load ofEGG package to XWiki Java runtime
    • JS - to be designed FIXME

Timeline

  • up to 26 June - working Bintray integration with documentation
  • up to 24 July - working Pypi integration with .egg packages integration with
    documentation
  • up to 21August - working NPM integration with documentation. (Possibly
    integration with Python .whl packages)

 


Tags: gsoc
    

Get Connected