I go with Option A.

Thanks,

2016-11-17 16:24 GMT+01:00 Sergiu Dumitriu <[email protected]>:

> +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
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>



-- 
Guillaume Delhumeau ([email protected])
Research & Development Engineer at XWiki SAS
Committer on the XWiki.org project
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to