Juan, Sounds logical to keep the RenderManagerApi (? why the "Api" name?) stuff separated from the Engine interface.
I'd prefer the "context.getEngine().render().textToHtml(...) " syntax or perhaps more consistent "context.getEngine().getRenderManagerApi().textToHtml(...)" dirk On Wed, Apr 8, 2020 at 9:56 PM Juan Pablo Santos Rodríguez < juanpablo.san...@gmail.com> wrote: > Hi, > > one last line; just to clarify, I'm not opposed to have the textToHtml > method on the public api, my concerns were more > inline with not seeing the Engine as being the place for it.. As for how to > call it, > context.getEngine().getManager( RenderingApi.class ).textToHtml(..) > > would be an option, but > context.getEngine().render().textToHtml(..) > > (which under the hood would behave like the first case) would be ok too and > perhaps is a bit more expressive.. WDYT? > > > br, > juan pablo > > On Wed, Apr 8, 2020 at 9:26 PM Juan Pablo Santos Rodríguez < > juanpablo.san...@gmail.com> wrote: > > > Hi Dirk, > > > > would something like context.getEngine().getManager( RenderingApi.class > > ).textToHtml( Context, String ) work for you? > > > > RenderingApi would sit on the o.a.w.api.engine package, and thus being > > part of the public API. It would, initially, consist > > of only the .textToHtml(..) method. We can add more methods (or new *Api > > interfaces) later, as needed. > > > > RenderingManager would then extend RenderingApi, simply inheriting that > > method. The engine.getManager(..) behaviour > > would have to change a little bit to accomodate this, but that would be a > > minimal change. That way the Engine and the > > rendering responsibilities would remain separated on different classes. > > > > Does that approach sound reasonable? > > > > > > best regards, > > juan pablo > > > > > > On Wed, Apr 8, 2020 at 8:18 PM Dirk Frederickx < > dirk.frederi...@gmail.com> > > wrote: > > > >> Sorry, part of the mail was incomplete.Corrected & resend: > >> > >> > >> > Juan, > >> > > >> > Thx for the (long) reply. > >> > It is indeed key to carefully select what will/will-not be added to > the > >> > public api. > >> > > >> > Having textToHtml() on the public api make a lot of sense IMO. It > will > >> > facilitate plugin authors (existing, new) in quickly building new > >> plugins > >> > just be using the public api's (without needing much in-depth > >> > understanding of the internals of JSPWiki) > >> > > >> > textToHtml() is a pretty stable and "static" function as it converts > one > >> > string into another; without dependency on other interfaces in the > >> public > >> > api. > >> > > >> > As "the public "Engine" interface focuses more on the "static" side of > >> the > >> > application" , it could be a good place also to host some other > >> supporting > >> > functions. > >> > But it would probably give a broader role to "Engine" than its initial > >> > purpose. > >> > (maybe we should try to list other "static" functions we'd like to > bring > >> > into the public api, to see whether this makes sense) > >> > > >> > I'm not sure whether promoting the RenderingManager to be part of the > >> > public api is a good idea. > >> > > >> It seems to me that this is much more an internal implementation of > >> > JSPWiki, and not a good candidate for the public api. > >> > > >> > (BTW - Note that when pulling in the RenderingManager, it is also > >> needed > >> > to pull in other dependencies (WikiEventListener). Adding additional > >> > complexities fo Plugin writers.) > >> > > >> > > >> > my .02 cent, > >> > > >> > dirk > >> > > >> > > >> > On Tue, Apr 7, 2020 at 9:47 PM Juan Pablo Santos Rodríguez < > >> > juanpablo.san...@gmail.com> wrote: > >> > > >> >> Hi Dirk, > >> >> > >> >> I've to say I've got mixed feelings about adding the method to the > >> Engine > >> >> (but not to add it somewhere else on the public API). > >> >> On one hand, if it helps with backwards compatibility I wouldn't mind > >> >> putting that shortcut on the Engine, or maybe only on > >> >> the WikiEngine. However once in the API, it would mean that, to > remove > >> it, > >> >> we should release a major version, so instead of > >> >> moving it away we'd perpetuate it in the public API in a place not so > >> well > >> >> suited for it (in this case, for this method, let me > >> >> ellaborate in a bit).. > >> >> > >> >> On the other hand, having to explicit > >> .getManager(RenderingManager.class) > >> >> on wherever (plugin, filter, etc.) explicits > >> >> a dependency between the "wherever" and the rendering manager which I > >> >> think > >> >> is ok, as it clearly depicts expectations > >> >> on what is needed by the "wherever", be it on the public API or not. > >> >> > >> >> What would be the reason of having that method on the public API > >> instead > >> >> of > >> >> having to go through the getManager(..) method? > >> >> The only thing coming to mind is that being on the public API would > >> mean > >> >> plugins, filters, etc, using it would have the certainty > >> >> of still keep working through every minor release. If that's the > >> >> reasoning, > >> >> I'd better promote the RenderingManager interface (or > >> >> maybe only parts of it) to the public API. The Engine as is right now > >> is > >> >> more focused on the "static" side of the application: providing > >> >> dependencies, configuration properties, the associated servlet > context, > >> >> etc. > >> >> > >> >> In this case, textToHtml seems nearer to me to rendering procedures, > so > >> >> having that method on a new interface on the o.a.w.api.engine > >> >> package, and then have the RenderingManager extend from it would be > ok > >> for > >> >> me. And the same with other operations on other > >> >> managers /operations that are common enough. The public API by no > >> means is > >> >> closed, we can add as many classes / interfaces as > >> >> we deem necessary, its only that we must have extra care, as once a > new > >> >> class / method / etc. in there is released, if it ends up being > >> >> ina bad place or a bad decission, it is going to be very difficult to > >> get > >> >> rid of it (i.e. a major release). > >> >> > >> >> Said that and re-reading the public API document + the versioning > >> >> proposal, > >> >> I'd like to emphasize that having to code > >> >> against non-public APIs doesn't mean an extension (or whatever) will > >> >> probably stop working on next minor. The policy for breaking > >> >> changes should be the same as we've doing: only if there isn't a > >> sensible > >> >> workaround; f.ex, prefer overloading a method instead of changing > >> >> its signature. And removing a class / method on the scope of a minor > >> >> release should be done like some releases after announcing, > >> >> perhaps announcing and waiting a couple of years or something like > >> that? > >> >> We've always tried to be as nice as possible for custom > >> >> extensions, having the public API shouldn't mean we are going to stop > >> >> being > >> >> nice.. > >> >> > >> >> This isn't expressed on the public API or versioning proposal pages, > >> but > >> >> should be, somehow. @everybody, how could this be phrased? > >> >> > >> >> (apologies on the large e-mail, been a tough day at work with too > much > >> >> overthinking; hope I haven't digressed too much / have been > >> >> able to express myself clear..) > >> >> > >> >> > >> >> best regards, > >> >> juan pablo > >> >> > >> >> > >> >> On Mon, Apr 6, 2020 at 10:54 PM Dirk Frederickx < > >> >> dirk.frederi...@gmail.com> > >> >> wrote: > >> >> > >> >> > Juan, > >> >> > > >> >> > When converting one of the plugins to the latest api; I noticed > >> that . > >> >> > textToHTML is not available on the public api. > >> >> > I needed to do something like: > >> >> > > >> >> > > >> m_context.getEngine().getManager(RenderingManager.class).textToHTML(... > >> >> > > >> >> > iso > >> >> > > >> >> > m_context.getEngine().textToHTML(... > >> >> > > >> >> > As the textToHtml is IMO a common function used by plugin > writers; I > >> >> would > >> >> > be useful to have that available in the public api. > >> >> > > >> >> > WDYT? > >> >> > > >> >> > dirk > >> >> > > >> >> > On Mon, Apr 6, 2020 at 10:47 PM Dirk Frederickx < > >> >> dirk.frederi...@gmail.com > >> >> > > > >> >> > wrote: > >> >> > > >> >> > > Juan, > >> >> > > > >> >> > > Excellent work done on the api & documentation ! > >> >> > > And tx for the report too. > >> >> > > > >> >> > > > >> >> > > dirk > >> >> > > > >> >> > > On Sun, Apr 5, 2020 at 9:10 PM Juan Pablo Santos Rodríguez < > >> >> > > juanpablo.san...@gmail.com> wrote: > >> >> > > > >> >> > >> Hi, > >> >> > >> > >> >> > >> below is the draft for next board report, I intend to send no > more > >> >> later > >> >> > >> than next Wednesday. As usual, any edits, comments, etc. are > more > >> >> than > >> >> > >> welcome. > >> >> > >> > >> >> > >> > >> >> > >> best regards, > >> >> > >> juan pablo > >> >> > >> > >> >> > >> > >> >> > >> > >> >> > >> > >> >> > > >> >> > >> > ============================================================================= > >> >> > >> > >> >> > >> ## Description: > >> >> > >> The mission of JSPWiki is the creation and maintenance of > software > >> >> > related > >> >> > >> to > >> >> > >> Leading open source WikiWiki engine, feature-rich and built > around > >> >> > >> standard > >> >> > >> JEE components (Java, servlets, JSP). > >> >> > >> > >> >> > >> ## Issues: > >> >> > >> There are no issues requiring board attention. > >> >> > >> > >> >> > >> ## Membership Data: > >> >> > >> Apache JSPWiki was founded 2013-07-17 (7 years ago) > >> >> > >> There are currently 16 committers and 11 PMC members in this > >> project. > >> >> > >> The Committer-to-PMC ratio is roughly 4:3. > >> >> > >> > >> >> > >> Community changes, past quarter: > >> >> > >> - No new PMC members. Last addition was Dave Koelmeyer on > >> 2016-04-06. > >> >> > >> - No new committers. Last addition was Dave Koelmeyer on > >> 2016-04-06. > >> >> > >> > >> >> > >> ## Project Activity: > >> >> > >> This quarter's project activity has revolved mostly around the > >> >> following > >> >> > >> items > >> >> > >> * The refactor of WikiEngine, one of the core classes of JSPWiki > >> >> > >> (JSPWIKI-120) > >> >> > >> * The development of a public API for JSPWiki's custom > extensions > >> >> > >> (JSPWIKI-303) > >> >> > >> * Other bugfixes and improvements > >> >> > >> > >> >> > >> Because of two first, we missed our release train stop this > >> quarter, > >> >> as > >> >> > in > >> >> > >> the > >> >> > >> moment of releasing the master branch, it wasn't backwards > >> compatible > >> >> > with > >> >> > >> current 3rd party extensions. We should be able to release next > >> >> quarter, > >> >> > >> though. > >> >> > >> > >> >> > >> The development of the public API also allowed us to add the > >> >> possibility > >> >> > >> of > >> >> > >> including custom managers on the Wiki Engine (JSPWIKI-806) and > the > >> >> > ability > >> >> > >> of > >> >> > >> swapping core JSPWiki classes (WikiContext, WikiEngine, > WikiPage, > >> >> etc.) > >> >> > >> with > >> >> > >> custom ones through an SPI, bringing up JSPWiki pluggability > >> another > >> >> > step > >> >> > >> up. > >> >> > >> > >> >> > >> ## Community Health: > >> >> > >> There is enough oversight, with questions getting answered on > MLs. > >> >> The > >> >> > >> public > >> >> > >> API sparkled a conversation on how / when to break backwards > >> >> > >> compatibility, > >> >> > >> which ended up on specifying /clarifying our versioning proposal > >> >> [#1]. > >> >> > >> > >> >> > >> We received one security report this quarter, but ended up > >> rejecting > >> >> it. > >> >> > >> > >> >> > >> One pull request merged into master, with 3 people committing > into > >> >> > master. > >> >> > >> > >> >> > >> In order to foster / attract contributors, we also had an > >> overhaul of > >> >> > >> documentation related to different ways of extending / > customizing > >> >> > >> JSPWiki: > >> >> > >> - How to write plugins [#2] > >> >> > >> - How to write filters [#3] > >> >> > >> - How to write page providers [#4] > >> >> > >> - Starting point for developing custom extensions [#5] > >> >> > >> - JSPWiki's public API [#6] > >> >> > >> - Adding / improving translations [#7], [#8] > >> >> > >> > >> >> > >> [#1] > >> >> https://jspwiki-wiki.apache.org/Wiki.jsp?page=VersioningProposal > >> >> > >> [#2 < > >> >> > > https://jspwiki-wiki.apache.org/Wiki.jsp?page=VersioningProposal[#2 > >> >] > >> >> > >> https://jspwiki-wiki.apache.org/Wiki.jsp?page=HowToWriteAPlugin > >> >> > >> [#3 < > >> >> https://jspwiki-wiki.apache.org/Wiki.jsp?page=HowToWriteAPlugin[#3 > >> >> > >] > >> >> > >> https://jspwiki-wiki.apache.org/Wiki.jsp?page=HowToWriteAFilter > >> >> > >> [#4 < > >> >> https://jspwiki-wiki.apache.org/Wiki.jsp?page=HowToWriteAFilter[#4 > >> >> > >] > >> >> > >> > >> >> > https://jspwiki-wiki.apache.org/Wiki.jsp?page=HowToWriteAPageProvider > >> >> > >> [#5 > >> >> > >> < > >> >> > > >> >> > >> > https://jspwiki-wiki.apache.org/Wiki.jsp?page=HowToWriteAPageProvider[#5> > >> >> > >> ] > >> >> > >> > >> >> > >> > >> >> > > >> >> > >> > https://jspwiki-wiki.apache.org/Wiki.jsp?page=StartingPointForCustomExtensions > >> >> > >> [#6 > >> >> > >> < > >> >> > > >> >> > >> > https://jspwiki-wiki.apache.org/Wiki.jsp?page=StartingPointForCustomExtensions[#6 > >> >> > >] > >> >> > >> https://jspwiki-wiki.apache.org/Wiki.jsp?page=JSPWikiPublicAPI > >> >> > >> [#7 < > >> >> https://jspwiki-wiki.apache.org/Wiki.jsp?page=JSPWikiPublicAPI[#7 > >> >> > >] > >> >> > >> https://jspwiki-wiki.apache.org/Wiki.jsp?page=HowToI18n > >> >> > >> [#8] https://jspwiki.apache.org/development/i18n.html > >> >> > >> > >> >> > > > >> >> > > >> >> > >> > > >> > > >