Jean-Sebastien Delfino wrote:

[snip]

5. The org.apache.tuscany.assembly.xml package seems to contain
   implementation classes that aren't in an "impl" subpackage.


I'm not sure that we want all non spi packages to be *.impl. In general I think we should avoid extremes, like:
- have all spis in *.spi.* packages
- or have all non spi in *.impl packages

Looking at other Apache projects, many seem to follow a more reasonable and balanced approach, which I hope we can do as well.
>
I think the key requirement is to

1. Make it clear to extension developers what classes/interfaces are
   public SPIs or APIs that they are intended to use directly.  These
   should be sufficient to do all the things they would normally need
   to do.

2. Make it clear to base runtime developers what classes/interfaces
   they are exposing to extension developers as SPIs and APIs.  The
   contracts exposed by these APIs and SPIs should not change from
   one release to the next without going through a deprecation and
   migration process.

Ths can be done either with a clear naming convention or in some other
way, e.g., by writing Javadoc comments, or by maintaining a documented
list of all the APIs and SPIs.  My preference is a clear naming convention
because the other mechanisms tend not to be sufficiently robust.

I don't have strong views on what the convention should be, but I
think it should be clear and consistent so that people always know
whether or not the class or interface that they are using or
developing is intended to be an API/SPI or an internal part of
the implementation.

  Simon


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to