On Mon, Feb 11, 2013 at 5:15 PM, Sergiu Dumitriu <ser...@xwiki.org> wrote:

> On 02/08/2013 01:36 PM, Denis Gervalle wrote:
> > On Fri, Feb 8, 2013 at 7:15 PM, Vincent Massol <vinc...@massol.net>
> wrote:
> >
> >>
> >> On Feb 8, 2013, at 7:09 PM, Denis Gervalle <d...@softec.lu> wrote:
> >>
> >>> On Fri, Feb 8, 2013 at 3:58 PM, Vincent Massol <vinc...@massol.net>
> >> wrote:
> >>>
> >>>>
> >>>> On Feb 8, 2013, at 3:42 PM, Denis Gervalle <d...@softec.lu> wrote:
> >>>>
> >>>>> By the way, if we agree on @unstable, I also think having another
> >>>>> annotation for marking stable API that are not considered to be
> stable
> >>>> SPI.
> >>>>> Why not something like @onlyAPI or @unstableSPI on an interface ?
> >>>>
> >>>> I think first we need to define what is an SPI and what is an API
> first.
> >>>> ATM I don't think I understand clearly the difference in the context
> of
> >>>> XWiki. Is it clear for you?
> >>>>
> >>>
> >>> I do not really understand your question. The general definition is
> >> rather
> >>> clear: "Service Provider Interface (SPI) is an API intended to be
> >>> implemented or extended by a third party".
> >>
> >> All our component interfaces are meant to be implemented by 3rd parties
> to
> >> override default behaviors. Are they SPI?
> >>
> >
> > If you consider them stable enough, these could be. The distinction is
> > clearly based of what we think of it. Let me take an example:
> > interface DataMigrationManager (do not mixup with DataMigration which is
> an
> > SPI for sure). Currently, I consider this one as an API, but I do not
> > imagine any serious usage of it as an SPI for a third party. Marking it
> API
> > only, would clearly state this point of view.  It means that adding a new
> > method to this interface is not considered a breakage. Anyone which would
> > implement it, knows it could have his code broken later.
> >
>
> How about when Hibernate isn't used? The current implementation is
> marked with the "hibernate" hint, so it suggests that it is valid only
> in a Hibernate environment. It is a SPI, but one that can't easily be
> implemented, since it requires a new storage engine, a new query
> manager, plus rewriting all the $xwiki.search* instances, and so on.
>

Surely, but the key here, is that an SPI is an interface that is intended
to be implemented *by a third party*. In that sens, IMO it is currently
not. This is want I would like to make clear for third parties. If it was,
it would means that my recent breakage in that interface would have cause a
far more important complexity increase. This is why IMO, we should not
intend to have every API supported as SPI.


>
> >>> What I would like to be
> >>> annotated is API that we do not consider stable SPI at the moment. It
> is
> >>> less restrictive than @unstable, but more than not saying anything.
> >>> Is that answering your question ?
> >>
> >> That seems complex. Why not use @unstable on "SPI" classes/methods?
> >>
> >
> > Because the status is about the interface as a whole. It is particularly
> > about adding new methods (or signatures of existing methods), while
> > existing methods are stable.
> > I do not want to add something new, but to state clearly what we think of
> > our interfaces. This is already the case, while we do not really state
> it.
> > Considering anything an SPI is not an option IMO, since it will create
> more
> > complexity over time, for a very low benefit, since the chances of a
> third
> > party to implement an interface like the DataMigrationManager is near
> zero.
> > And if any, this third party will surely agree to apply some minor
> changes
> > to its implementation when needed.
> >
> > All that said, I wonder if it wouldn't be better to annotate SPI
> interface
> > in place of non-SPI one, with a @SPI annotation. Which will favor API
> only
> > and limit complexity. A user really interested in implementing a not
> > annotated interface could easily open an issue explaining his use case,
> so
> > we may open the interface as an SPI.
> >
> >
>
>
> --
> Sergiu Dumitriu
> http://purl.org/net/sergiu
> _______________________________________________
> devs mailing list
> devs@xwiki.org
> http://lists.xwiki.org/mailman/listinfo/devs
>



-- 
Denis Gervalle
SOFTEC sa - CEO
eGuilde sarl - CTO
_______________________________________________
devs mailing list
devs@xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to