Thanks a lot!
Many things got clarified in my mind :)
Best!
Krzysztof
2017-03-27 14:24 GMT+02:00 Thomas Mortagne <thomas.mortagne(a)xwiki.com>om>:
On Mon, Mar 27, 2017 at 1:23 PM, Krzysiek Płachno
<krzysiekplachno(a)gmail.com> wrote:
Thanks for answer, Thomas! Sorry for the delay in
my response, but I
wanted
to gather some more question to put them all in
one mail. It took me a
bit
long, so maybe that was not the best strategy...
1. mvn install -DskipTests=true helped - BUILD SUCCESS :)
2. I've dived a bit more into documentation of system and extension
module
20Architecture
with
such documentation it's going to be pure fun to contribute to project :))
2a. There's prepared API for easy extension of Extension Module,
especially: ExtensionRepositorySource, ExtensionHandler,
ExtensionRepositoryFactory - these interface classes are located in
xwiki-commons project. I've found implementation of this api for XWiki
Repository in xwiki-commons as well. But tried to find implementation of
Maven Repository, but I didn't succeed. Where can I find it?
All supported repositories handlers are located on
https://github.com/xwiki/xwiki-commons/tree/master/
xwiki-commons-core/xwiki-commons-extension/xwiki-
commons-extension-repositories.
The Maven one is
https://github.com/xwiki/xwiki-commons/tree/master/
xwiki-commons-core/xwiki-commons-extension/xwiki-commons-extension-
repositories/xwiki-commons-extension-repository-maven.
2b. If I understood correctly - adding support for Pypi will come
down
to writing a typical Jar extension, that will
implement required
interfaces, and so will be possible to be integrated with Extension
Manager, right? This new "Support of Pypi Extension" is going to be
deployed to Maven or XWiki Repository like any other extension? Will
there
be any difference to other extensions?
Exactly.
2c. It's not completely clear for me how integration with Pypi
should
work. From XWiki repositories XARs are
downloaded, from maven JARs, but
Pypi stores python packages in .egg or .whl. How are they supposed to be
installed in XWiki? Is it like that - during extension installation the
python code inside downloaded package should be transformed to wiki page
and inserted as a script?
Nothing that complex I think. There is some experimentation to do here
but Jython automatically search for python script everywhere in the
classloader and egg (I did not check for whl) are actually very close
to JARs so either:
* Java is not too peaky and all you have to do is handle the egg/wql
file as if it was a JAR extension and Jython will do the rest
* If Java complain about a missing MANIFEST file or something,
repackage the file with a generated MANIFEST java-style file in to (or
anything else that would make Java happy) but it should not be much
more that adding one or two file to what is already a zip file
For Maven need I'm releasing a JAR version of Pygments on Maven
central () and all I do is unpack the egg file as it is and build it
with Maven.
2d. Do I understand it correctly - that for management (instalation
and possibly execution) of extension of given type - the one that is
responsible for this management is the implementation of
org.xwiki.extension.handler.ExtensionHandler? So, regardless how the
downloaded .egg packeges would be managed - they shall be managed in
EggExtensionHandler?
There is to choices here actually:
* make pypi repository handler expose JAR extensions and deal on his
side with what is needed to make EGG package be supported by Java
classloader properly
* make pypi repository handler expose EGG extensions and implement a
EGGExtensionHandler which does what is needed to load the EGG file in
a Java classloader
3. And at the end - just for clarification: What's the difference between
module and extension? Are modules the special (bigger) extensions? Like
Component Module?
http://extensions.xwiki.org/xwiki/bin/view/Extension/Component%20Module
When you see "Module" in
http://extensions.xwiki.org pages name it
usually means top level module documentation usually containing
several (if not many) extensions. Extension basically means file.
Best!
Krzysztof
2017-03-22 17:49 GMT+01:00 Thomas Mortagne <thomas.mortagne(a)xwiki.com>om>:
> On Wed, Mar 22, 2017 at 5:36 PM, Krzysiek Płachno
> <krzysiekplachno(a)gmail.com> wrote:
> > Hi Thomas!
> >
> > Thanks for quick answer!
> >
> > 1) As regards problems during compilation:
> > - on Windows I get following error:
http://pastebin.com/t9REjH3f (it
> > cannot find one snapshot on nexus)
>
> The failure you get is probably because of -Dmaven.test.skip=true. It
> should be OK if you use -DkipTests instead (which build test but don't
> execute them).
>
> > - on linux - run of phantom.js causes memory problems
> >
> > 2) You say that "you usually don't to build XWiki entirely to work on
> it,"
> > but when you upgrade one of the modules, you need to recompile all the
> > modules that depend on it - running "mvn install" on main pom, right?
> (And
> > then typically run some integration test, to assure nothing got
broken
by
> > commit).
> > Or do you only compile locally the module your're working on,
delegating
> > the compilation of whole project to
external service (like jenkins)?
>
> Most of the time modifying a module is not going to have any impact on
> the jar built in backward dependencies, only tests and yes we have
>
http://jenkins.xwiki.org/ to catch that (unless you know your change
> will have a big impact and you should try to fix backward dependencies
> before pushing).
>
> >
> > 3) Yes, my (at least - potentially my ) task regards Extension
Manager,
which is an extension itself, but it's a part of
the "Core extensions"
(according to
http://platform.xwiki.org/xwiki/bin/view/DevGuide/ Architecture)
and located in XWiki-platform module, right?
(More specifically:
xwiki-platform > xwiki-platform-core > xwiki-platfrom-extension ?)
So that's why I stated with preparation of environment for this
xwiki-platform modlue, starting with a try to build it locally :)
Extension Manager is part of the core extensions yes but a Pypi
repository handler would be installed as optional extensions. There is
already extension point for anyone to add support for any kind of
repository without touching Extension Manager. All it takes is
implementing org.xwiki.extension.repository.ExtensionRepositoryFactory
component role (and in case of Pypi also
org.xwiki.extension.handler.ExtensionHandler since it would probably
also need to add support for egg or whl extensions types).
And just to be sure: 4) Have I understood well, that all conversation
regarding open development of XWiki like, clarifying doubts, asking of
advice and ect. should go through mailing list? I mean it may produce
huge
mail stream to many people, and I guess not
everyone is interested in
everything in system, but rather in some part he or she is working on.
Either dev mailing list of IRC for quick questions/answers. Just not
in private mails with the mentor (except for too personal matter of
course).
Btw. I'm going through Dev guides and I'm impressed how well
it's maintained and documented. +1 for the community :)
Always nice to ear since there is never enough or good enough
documentation :)
>
> Best,
> Krzysztof
>
>
> 2017-03-21 16:59 GMT+01:00 Thomas Mortagne <thomas.mortagne(a)xwiki.com
:
> >
> >> usually don't to build XWiki entirely to work on it,
>
>
>
> --
> Thomas Mortagne
>
--
Thomas Mortagne