| <html> |
| <head> |
| <title>Sisu</title> |
| </head> |
| |
| <style> |
| dt { |
| display: list-item; |
| list-style-position: outside; |
| list-style-image: |
| url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); |
| margin-left: 16px; |
| } |
| |
| dd { |
| margin-left: 25px; |
| margin-bottom: 5px; |
| } |
| </style> |
| |
| <body> |
| |
| <p> |
| The Sisu project is a proposed open source project under the <a |
| href="http://www.eclipse.org/projects/project_summary.php?projectid=technology">Technology |
| Container Project</a>. |
| </p> |
| |
| <p> |
| This proposal is in the Project Proposal Phase (as defined in the |
| Eclipse Development Process) and is written to declare its intent and |
| scope. We solicit additional participation and input from the Eclipse |
| community. Please send all feedback to the <a |
| href="http://www.eclipse.org/forums/eclipse.proposals">Eclipse |
| Proposals</a> Forum. |
| </p> |
| |
| <h2>Scope</h2> |
| |
| <p>The Sisu project provides a complete dependency injection |
| framework with specific capabilities for bridging to OSGi.</p> |
| |
| <h2>Description</h2> |
| |
| <p> |
| Sisu is a fully compliant <a href="http://www.jcp.org/en/jsr/detail?id=330">JSR330</a> |
| container that supports classpath scanning, auto-binding, and dynamic |
| auto-wiring. Sisu uses Guice to perform dependency injection and provides the JSR330 support, but |
| removes the need to write explicit bindings in Guice modules. |
| Integration with other containers via the Eclipse Extension Registry |
| and the OSGi Service Registry is a goal of this project. |
| </p> |
| |
| <p>Sisu also provides a replacement Plexus container that builds on |
| top of the JSR330 core. Plexus is the dependency injection container |
| used in Maven 2.x. We wanted a more widely used technology for |
| dependency injection and worked to replace Plexus with Sisu, a |
| Guice-based solution, in Maven 3.x. Plexus was also used in m2eclipse |
| and Nexus, but those usages have also been replaced with Sisu.</p> |
| |
| <h2>Relationship with other Eclipse projects</h2> |
| |
| <p>The projects at Eclipse that currently employ the use of Sisu |
| are m2eclipse, Tycho, and Hudson. The Xtext framework is currently |
| using Guice 2.x but is a project that could also levage Sisu and could |
| likely take advantage of some of the OSGi capabilities provided by the |
| Sisu framework. We hope to find other projects that want to leverage |
| dependency injection, in particular using the combination of JSR330 |
| and OSGi, and we work together to improve the framework.</p> |
| |
| <h2>Initial Contribution</h2> |
| |
| <p>The initial contribution of the Sisu will consist of the |
| following parts:</p> |
| |
| <ul> |
| <li><a href="https://github.com/sonatype/sisu">Sisu</a></li> |
| |
| <li>Containers</li> |
| |
| <li>JSR330 support</li> |
| </ul> |
| |
| <p>The following components are Guice extensions that use the Guice |
| SPI.</p> |
| |
| <table> |
| <tr> |
| <td>guice-bean-reflect</td> |
| <td>Bean reflection and introspection, ClassSpace abstraction</td> |
| </tr> |
| <tr> |
| <td>guice-bean-inject</td> |
| <td>Bean property injection (based on custom Guice injection)</td> |
| </tr> |
| <tr> |
| <td>guice-bean-scanners</td> |
| <td>JSR330 classpath scanning and support for indexes</td> |
| </tr> |
| <tr> |
| <td>guice-bean-converters</td> |
| <td>Additional Guice TypeConverters (File, URL)</td> |
| </tr> |
| <tr> |
| <td>guice-bean-locators</td> |
| <td>Lookup/watch implementations across multiple injectors</td> |
| </tr> |
| <tr> |
| <td>guice-bean-binders</td> |
| <td>Auto-bind implementations, auto-wire dependencies</td> |
| </tr> |
| <tr> |
| <td>guice-bean-containers</td> |
| <td>Classic and OSGi entry-points, JUnit/TestNG support</td> |
| </tr> |
| <tr> |
| <td>sisu-inject-bean</td> |
| <td>OSGi aggregate bundle (JSR330 support)</td> |
| </tr> |
| </table> |
| |
| <p>Plexus support builds on top of JSR330 support. The following components are Guice extensions to allow legacy |
| Plexus components to run unmodified within Guice.</p> |
| |
| <table> |
| <tr> |
| <td>guice-plexus-metadata</td> |
| <td>Runtime form of Plexus metadata</td> |
| </tr> |
| <tr> |
| <td>guice-plexus-scanners</td> |
| <td>Plexus XML and Plexus annotation scanners</td> |
| </tr> |
| <tr> |
| <td>guice-plexus-converters</td> |
| <td>Plexus TypeConverters (Date, Bean XML)</td> |
| </tr> |
| <tr> |
| <td>guice-plexus-locators</td> |
| <td>Plexus lookup semantics / visibility filtering</td> |
| </tr> |
| <tr> |
| <td>guice-plexus-binders</td> |
| <td>Auto-bind Plexus components, auto-wire Plexus requirements</td> |
| </tr> |
| <tr> |
| <td>guice-plexus-lifecycles</td> |
| <td>Plexus lifecycle support (start, stop, dispose, etc.)</td> |
| </tr> |
| <tr> |
| <td>guice-plexus-shim</td> |
| <td>Thin facade; delegates legacy API to new container</td> |
| </tr> |
| <tr> |
| <td>sisu-inject-plexus</td> |
| <td>OSGi aggregate bundle (Plexus support)</td> |
| </tr> |
| </table> |
| |
| <p>Registries</p> |
| |
| <p>The following components are Sisu extensions to allow |
| interaction with other containers.</p> |
| |
| <table> |
| <tr> |
| <td>sisu-eclipse-registry</td> |
| <td>Eclipse extension bi-jection [work-in-progress]</td> |
| </tr> |
| <tr> |
| <td>sisu-osgi-registry</td> |
| <td>OSGi service bi-jection [work-in-progress]</td> |
| </tr> |
| <tr> |
| <td>sisu-spi-registry</td> |
| <td>Service Provider injection [work-in-progress]</td> |
| </tr> |
| </table> |
| |
| <p> |
| <a href="https://github.com/sonatype/sisu-guice">Sisu Guice</a> |
| </p> |
| |
| <p>This is a version of Guice that we provide a set of patches on |
| top of. These patches help with various issues and conveniences that |
| we have encountered that the Guice team doesn't wish to apply.</p> |
| |
| <p> |
| <a href="https://github.com/sonatype/sisu-guava">Sisu Guava</a> |
| </p> |
| |
| <p>This is a version of Guauva that we provide a set of |
| patches on top of. These patches help with various issues and |
| conveniences that we have encountered that the Guice team doesn't |
| wish to apply.</p> |
| |
| <p> |
| <a href="https://github.com/sonatype/sisu-maven-plugin">Sisu Maven |
| Plugin</a> |
| </p> |
| |
| <p>The Sisu Maven Plugin primarily provides support for the |
| generation of Sisu index files. These index files cache the results of |
| classpath scanning, providing faster startup times. Sisu has a Java6 |
| APT plugin to generate the index files at compile time, but this can’t |
| help when building with a Java5 JDK or assembling a WAR out of |
| existing components. In such cases the Sisu Maven Plugin can generate |
| the index files as part of the build process. In the future the plugin |
| may also provide support for launching/controlling Sisu applications.</p> |
| |
| <p>All these parts are fully implemented and are currently working |
| together to form the basis of Maven 3.x, Nexus, Hudson, and Tycho.</p> |
| |
| <h2>Legal Issues</h2> |
| |
| <p>There are no known legal issues.</p> |
| |
| <h2>Committers</h2> |
| |
| <p>The following individuals are proposed as initial committers to |
| the project:</p> |
| |
| <ul> |
| <li>Stuart McCulloch, Sonatype (lead)</li> |
| <li>Jason van Zyl, Sonatype (lead)</li> |
| <li>Benjamin Bentmann, Sonatype</li> |
| <li>Igor Fedorenko, Sonatype</li> |
| <li>Alin Dreghiciu, Sonatype</li> |
| </ul> |
| |
| <h2>Mentors</h2> |
| |
| <p>The following Architecture Council members will mentor this |
| project:</p> |
| |
| <ul> |
| <li>Mik Kersten</li> |
| <li>Wayne Beaton</li> |
| </ul> |
| |
| <h2>Interested Parties</h2> |
| |
| <p>The following individuals, organisations, companies and projects |
| have expressed interest in this project:</p> |
| |
| <ul> |
| <li>Dain Sundstrom, Proofpoint</li> |
| <li>Dhanji R. Prasanna</li> |
| <li>Jesse Wilson, Google</li> |
| <li>Werner Keil, Eclipse UOMo</li> |
| <li>Bob Lee, Square</li> |
| <li>David Blevins, IBM</li> |
| <li>Brian de Alwis</li> |
| </ul> |
| |
| <h2>Project Scheduling</h2> |
| |
| <p>The Sisu project intends to make the first code contribution by |
| August 30th, and we hope for the first builds to be available soon |
| after that.</p> |
| |
| <h2>Meaning of the word sisu</h2> |
| |
| <p> |
| <a href="http://en.wikipedia.org/wiki/Sisu">Sisu</a> is a Finnish term |
| loosely translated into English as strength of will, determination, |
| perseverance, and acting rationally in the face of adversity. However, |
| the word is widely considered to lack a proper translation into any |
| language. Sisu has been described as being integral to understanding |
| Finnish culture. The literal meaning is equivalent in English to |
| "having guts", and the word derives from sisus, which means something |
| inner or interior. However sisu is defined by a long-term element in |
| it; it is not momentary courage, but the ability to sustain an action |
| against the odds. Deciding on a course of action and the sticking to |
| that decision against repeated failures is sisu. It is similar to |
| equanimity, except the forbearance of sisu has a grimmer quality of |
| stress management than the latter. The noun sisu is related to the |
| adjective sisukas, one having the quality of sisu. |
| </p> |
| |
| <h2>Changes to this Document</h2> |
| |
| <table> |
| <tr> |
| <th>Date</th> |
| <th>Change</th> |
| </tr> |
| <tr> |
| <td>21-July-2011</td> |
| <td>Document created</td> |
| </tr> |
| <tr> |
| <td>27-July-2011</td> |
| <td>Added several interested parties.</td> |
| </tr> |
| </table> |
| |
| </body> |
| </html> |
| <html><body></body></html> |