Re: [xwiki-devs] Evolution of the Blog Application

2016-11-23 Thread Guillaume Delhumeau
I go with Option A.

Thanks,

2016-11-17 16:24 GMT+01:00 Sergiu Dumitriu :

> +1 for moving even more of the functionality in Java, not just this
> listener.
>
> On 11/17/2016 07:00 AM, Guillaume Delhumeau wrote:
> > Hi.
> >
> > The Blog Application is one of our main applications. It has been fully
> > written in Velocity, so that even users who don't have programing rights
> > can install it on their wiki.
> >
> > However, I am currently working on XWIKI-13861 [1]. It is about marking
> the
> > blog documents as hidden when they are not "published" so that visitors
> > won't find them by mistake with the search engine. To accomplish it, I've
> > created a listener that change the document visibility when a blog post
> is
> > saved.
> >
> > To implement this listener, we have 2 options, with both benefits and
> > drawbacks:
> >
> > A: Write the listener with Java and introduce an xwiki-platform-blog-api
> > module.
> > ===
> >
> > Pros:
> > * It follows our Best Practices.
> > * We use a nice and powerful language: Java.
> >
> > Cons:
> > * It make the Blog Application dependent to a Java Module, so the wiki
> > administrator needs the PR to install it if the JAR is not already
> > installed in the WAR.
> > * Note that this JAR would be bundled in the XE's WAR while the Blog
> > Application is part of the main wiki flavor, so XE users won't see the
> > change right now.
> >
> > B: Write the listener with Groovy directly on a wiki page.
> > ==
> >
> > Pros:
> > * Blog Application remains a full XAR extension that you can install
> > without PR, as it has always been.
> >
> > Cons:
> > * We need to use the groovy macro, which is not consistent with our Best
> > Practices.
> > * We need a bit of plumbing to register the listener (what we really need
> > is to be able to write listeners easily with an XObject).
> > * If the user has not the PR, the listener will not be registered, so the
> > new behavior introduced by XWIKI-13861 won't be applied. It's a kind of
> > nice degradation but we need to explain it to the user, which will be
> > technical and not user-friendly (we already have lacks on this domain).
> >
> > C: Don't write a listener, but make all changes in Velocity
> > =
> >
> > Pros:
> > * It remains a full XAR extension.
> > * No degradation
> >
> > Cons:
> > * We need to make the business logic of hiding the blog document in a
> > velocity service and in the blog post sheet.
> > * It is less safe than the listener because a user can still change the
> > "hidden" and the "published" values of the XObjects and bypass the
> > synchronization.
> > * We cannot write an automatic migrator that would be executed only on
> wiki
> > events.
> >
> > Conclusion
> > 
> >
> > My preference goes to A, because:
> > * I don't really like the degradation principle for technical reasons
> that
> > the user might not understand.
> > * It's simple & safe.
> > * If I would have written the Blog App myself, I would have made a Script
> > Service in Java to put the business logic away from Velocity.
> > * We have plenty of extensions having Java modules. A better approach
> would
> > be to authorize the installation of approved and/or signed modules even
> > when the admin has not the programming right.
> >
> > Since we need a collegial decision, I am asking you your opinion :)
> >
> > Thanks,
> >
> > [1] http://jira.xwiki.org/browse/XWIKI-13861
> >
>
>
> --
> Sergiu Dumitriu
> http://purl.org/net/sergiu
> ___
> devs mailing list
> devs@xwiki.org
> http://lists.xwiki.org/mailman/listinfo/devs
>



-- 
Guillaume Delhumeau (guillaume.delhum...@xwiki.com)
Research & Development Engineer at XWiki SAS
Committer on the XWiki.org project
___
devs mailing list
devs@xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs


Re: [xwiki-devs] Evolution of the Blog Application

2016-11-17 Thread Sergiu Dumitriu
+1 for moving even more of the functionality in Java, not just this
listener.

On 11/17/2016 07:00 AM, Guillaume Delhumeau wrote:
> Hi.
> 
> The Blog Application is one of our main applications. It has been fully
> written in Velocity, so that even users who don't have programing rights
> can install it on their wiki.
> 
> However, I am currently working on XWIKI-13861 [1]. It is about marking the
> blog documents as hidden when they are not "published" so that visitors
> won't find them by mistake with the search engine. To accomplish it, I've
> created a listener that change the document visibility when a blog post is
> saved.
> 
> To implement this listener, we have 2 options, with both benefits and
> drawbacks:
> 
> A: Write the listener with Java and introduce an xwiki-platform-blog-api
> module.
> ===
> 
> Pros:
> * It follows our Best Practices.
> * We use a nice and powerful language: Java.
> 
> Cons:
> * It make the Blog Application dependent to a Java Module, so the wiki
> administrator needs the PR to install it if the JAR is not already
> installed in the WAR.
> * Note that this JAR would be bundled in the XE's WAR while the Blog
> Application is part of the main wiki flavor, so XE users won't see the
> change right now.
> 
> B: Write the listener with Groovy directly on a wiki page.
> ==
> 
> Pros:
> * Blog Application remains a full XAR extension that you can install
> without PR, as it has always been.
> 
> Cons:
> * We need to use the groovy macro, which is not consistent with our Best
> Practices.
> * We need a bit of plumbing to register the listener (what we really need
> is to be able to write listeners easily with an XObject).
> * If the user has not the PR, the listener will not be registered, so the
> new behavior introduced by XWIKI-13861 won't be applied. It's a kind of
> nice degradation but we need to explain it to the user, which will be
> technical and not user-friendly (we already have lacks on this domain).
> 
> C: Don't write a listener, but make all changes in Velocity
> =
> 
> Pros:
> * It remains a full XAR extension.
> * No degradation
> 
> Cons:
> * We need to make the business logic of hiding the blog document in a
> velocity service and in the blog post sheet.
> * It is less safe than the listener because a user can still change the
> "hidden" and the "published" values of the XObjects and bypass the
> synchronization.
> * We cannot write an automatic migrator that would be executed only on wiki
> events.
> 
> Conclusion
> 
> 
> My preference goes to A, because:
> * I don't really like the degradation principle for technical reasons that
> the user might not understand.
> * It's simple & safe.
> * If I would have written the Blog App myself, I would have made a Script
> Service in Java to put the business logic away from Velocity.
> * We have plenty of extensions having Java modules. A better approach would
> be to authorize the installation of approved and/or signed modules even
> when the admin has not the programming right.
> 
> Since we need a collegial decision, I am asking you your opinion :)
> 
> Thanks,
> 
> [1] http://jira.xwiki.org/browse/XWIKI-13861
> 


-- 
Sergiu Dumitriu
http://purl.org/net/sergiu
___
devs mailing list
devs@xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs


[xwiki-devs] Evolution of the Blog Application

2016-11-17 Thread Guillaume Delhumeau
Hi.

The Blog Application is one of our main applications. It has been fully
written in Velocity, so that even users who don't have programing rights
can install it on their wiki.

However, I am currently working on XWIKI-13861 [1]. It is about marking the
blog documents as hidden when they are not "published" so that visitors
won't find them by mistake with the search engine. To accomplish it, I've
created a listener that change the document visibility when a blog post is
saved.

To implement this listener, we have 2 options, with both benefits and
drawbacks:

A: Write the listener with Java and introduce an xwiki-platform-blog-api
module.
===

Pros:
* It follows our Best Practices.
* We use a nice and powerful language: Java.

Cons:
* It make the Blog Application dependent to a Java Module, so the wiki
administrator needs the PR to install it if the JAR is not already
installed in the WAR.
* Note that this JAR would be bundled in the XE's WAR while the Blog
Application is part of the main wiki flavor, so XE users won't see the
change right now.

B: Write the listener with Groovy directly on a wiki page.
==

Pros:
* Blog Application remains a full XAR extension that you can install
without PR, as it has always been.

Cons:
* We need to use the groovy macro, which is not consistent with our Best
Practices.
* We need a bit of plumbing to register the listener (what we really need
is to be able to write listeners easily with an XObject).
* If the user has not the PR, the listener will not be registered, so the
new behavior introduced by XWIKI-13861 won't be applied. It's a kind of
nice degradation but we need to explain it to the user, which will be
technical and not user-friendly (we already have lacks on this domain).

C: Don't write a listener, but make all changes in Velocity
=

Pros:
* It remains a full XAR extension.
* No degradation

Cons:
* We need to make the business logic of hiding the blog document in a
velocity service and in the blog post sheet.
* It is less safe than the listener because a user can still change the
"hidden" and the "published" values of the XObjects and bypass the
synchronization.
* We cannot write an automatic migrator that would be executed only on wiki
events.

Conclusion


My preference goes to A, because:
* I don't really like the degradation principle for technical reasons that
the user might not understand.
* It's simple & safe.
* If I would have written the Blog App myself, I would have made a Script
Service in Java to put the business logic away from Velocity.
* We have plenty of extensions having Java modules. A better approach would
be to authorize the installation of approved and/or signed modules even
when the admin has not the programming right.

Since we need a collegial decision, I am asking you your opinion :)

Thanks,

[1] http://jira.xwiki.org/browse/XWIKI-13861

-- 
Guillaume Delhumeau (guillaume.delhum...@xwiki.com)
Research & Development Engineer at XWiki SAS
Committer on the XWiki.org project
___
devs mailing list
devs@xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs