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