Seam's new project lead, Shane Bryzak, announced last week on the seam-dev mailinglist that the Weld Extensions project has be brought under the Seam project banner and renamed to Seam Solder. Today we are announcing the first release of Seam Solder, 3.0.0.Beta1!
Seam Solder retains exactly the same purpose and goals as its predecessor:
a library of portable CDI utilities for use in developing applications, frameworks and other extensions based on CDI (JSR-299)
In other words, Generally Useful Stuff (tm) that you'd likely end up having to painstakingly create anyway.
Ever since Weld Extensions was first proposed, there's been confusion about how it differs from Weld and how it fits with the Seam project. Now, the distinction is more clear.
- Weld: implements CDI, brings it to additional environments
- Seam 3: extends and builds on CDI (plus other goodies)
CDI is the foundation programming model in Seam 3, but there's still room for core extensions and utilities that all Seam modules share to align and avoid code duplication. That's what Seam Solder provides.
solder because it's the term for an alloy that is used to join metallic parts, but not so strongly as a weld. For instance, fastening modules to a circuitboard. Although CDI extensions don't require Solder, they will greatly benefit from the extra reinforcement it supplies.
Solder has a life outside of Seam. If you are building on CDI, we strongly encourage you to evaluate Solder before spending time writing your own utilities. Solder will save you tons of time, and you'll get your extension working much sooner. Plus, we believe that we'll be able to implement startup optimizations for CDI in Solder that you'll immediately benefit from.
Rather than migrating all the resources for Weld Extensions, we made a clean break (i.e., a fork). We encourage everyone using Weld Extensions to switch to Seam Solder. If you are adding new features or fixing issues, please apply them to Seam Solder unless there is some specific reason you are updating Weld Extensions. Weld Extensions is effectively closed.
Seam Solder has undergone some other changes to be consistent with the other Seam modules:
- Uses seam-parent for dependency management and common build tasks
- Source code divided into an API and implementation
- Bumped major version to 3 (the major version of Weld Extensions was 1)
The switch to Solder has an important implication for the other Seam modules. We need to update each module to use Seam Solder and release a new version of that module. This step should happen quite quickly, since Seam Solder will prevent the application from deploying if Weld Extensions is detected on the classpath.
All the resources can be found on the Seam Solder project page. For your convenience, I've laid out the key resources here:
- Project page: Seam Solder project page
- Git repository: http://github.com/seam/solder
- JIRA: http://issues.jboss.org/browse/SOLDER
- Discussion forum: http://seamframework.org/Community/Seam3Users (we'll discuss as part of Seam)
As with all Seam 3 artifacts, Solder is published to the JBoss Community repository. If you are using Maven, here's the dependency declaration you need to add to your POM to include the combined API and implementation library in your project:
<dependency> <groupId>org.jboss.seam.solder</groupId> <artifactId>seam-solder</artifactId> <version>3.0.0.Beta1</version> </dependency>
Alternatively, you can use two dependency declarations so the implementation is only used at runtime:
<dependency> <groupId>org.jboss.seam.solder</groupId> <artifactId>seam-solder-api</artifactId> <version>3.0.0.Beta1</version> </dependency> <dependency> <groupId>org.jboss.seam.solder</groupId> <artifactId>seam-solder-impl</artifactId> <version>3.0.0.Beta1</version> <scope>runtime</scope> </dependency>
This project wouldn't have been possible without the hard work of Pete Muir and Stuart Douglas. Additional thanks goes to Shane Bryzak, Nicklas Karlsson, Lincoln Baxter III and Jason Porter for their contributions.
It's important to note that we are still having some difficulties getting Solder to work on GlassFish. There appears to be some confusion about how extensions are supposed to be handled in non-bean archives (follow GLASSFISH-14808), a feature that Solder makes use of for performance reasons. We anticipate a resolution for GlassFish 3.1, but not likely GlassFish 3.0.1.
For Beta 2, we're planning to tidy up the test suite, compliance, documentation and validation. Then we'll move towards a Final release. That should all happen very soon.
There's still plenty of exciting functionality planned for Seam Solder. If you want to get involved, we encourage you to look through the issue tracker and find something that interests you. If you discover the need for some common functionality when writing your own CDI extensions, consider sharing by adding a feature request (and patch!).