<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Dear all,<br>
    <br>
    here are the paragraphs I want to add to the "Contributing to
    Infinispan" page in relation to the API, Commons, Core split.
    Comment please on clarity, grammar, spelling, etc<br>
    <br>
    <h2>API, Commons, Core</h2>
    In order to provide proper separation between public APIs, common
    utilities and the actual implementation of Infinispan, these are
    split into 3 modules: infinispan-api, infinispan-commons and
    infinispan-core. This separation also makes sure that modules, such
    as the remote clients, don't have to depend on infinispan-core and
    its transitive dependencies. The following paragraphs describe the
    role of each of these modules and give indication as to what goes
    where.<br>
    <br>
    <h3>API</h3>
    The infinispan-api module should only contain the public interfaces
    which can be used in any context (local, remote, etc). Ideally it
    should not contain any concrete classes, however this rule can be
    relaxed for small, self-contained classes which need to be
    referenced from the API interfaces. When promoting interfaces from
    infinispan-core to infinispan-api, please bear in mind the type of
    functionality that is being exposed: if something only makes sense
    for local mode and not for remote mode (e.g. eviction), then it
    should remain in infinispan-core.<br>
    <br>
    <h3>Commons</h3>
    The infinispan-commons module contains utility classes which can be
    reused across other modules. Classes in infinispan-commons should be
    self-contained and not pull in unnecessary dependencies. They should
    also make no reference to configuration aspects specific to a
    particular environment.<br>
    <br>
    <h3>Core</h3>
    The infinispan-core module contains the actual implementation used
    for local/embedded mode. When adding new functionality to the APIs,
    it is generally safe to start by putting them in infinispan-core and
    promoting them to infinispan-api only when it is deemed to do so and
    it makes sense across the various use-cases.<br>
    <br>
    <br>
  </body>
</html>