9 Replies Latest reply on Dec 15, 2009 6:58 PM by Pete Muir

    Seam: The part of the Weld ecosystem that is officially supported by JBoss

    Francisco Jose Peredo Noguez Master

      I am starting a new forum thread with this subject because I think it needs further clarification.

      Seam 2 does many things (here are most of them in no particular order):

      • Integration with JSF

      • Integration with JPA

      • Integration with JBPM

      • Integration with EJBs

      • Remoting with JavaScript

      • Integration with Wicket

      • Integratoin with JBoss Rules

      • Security Management (JAAS/Authorization/Authentication/Catpchas/OpenId,etc)

      • Internationalization

      • WikiText

      • PDF generation

      • Excel generation

      • RSS support

      • Asynchronicity and messaging

      • Caching

      • WebServices Support

      • GWT support

      • Integration with Spring

      • Integration with Guice

      • Email sending support

      Seam 3 will do all this, and probably many more things. Seam3 will be to Weld as the JBossTools are to the Core Eclipse Platform.

      The JBossTools are not the only plugins available for Eclipse, there are many others, JBossTools are the plugins that were created and are maintained by JBoss. If someone else wants to create a plug-in for Eclipse they can.

      The same is true for Seam 3,  Seam 3 modules will not be the only extensions available for Weld. The can be many others, Seam 3 are the extensions that were created and are maintained by JBoss. If someone else wants to create an extension for Weld they can.

      Seam 3 and Weld could be owned by different enterprises, but it just so happened they belong to the same one. Eclipse was initiated by IBM, IBM also developed Rational Developer Studio, Rational Developer Studio are plugins for Eclipse but they are not the same thing, it just so happened they were both created by IBM.

      I started my own (blatant self promotion) Weld extensions project, you can do it too. That does not mean that my extensions are (or will be) part of Seam 3.

      On the other hand, if a member of the Seam team creates an extension, it makes sense that they will create it inside the Seam project. Think about JBossTools, JBoosTools does a lot of things, while it is a single project it is composed of many subprojects. I could, for example, decide that I only want the HibernateTools (one of the plugins-inside JBossTools) and only install that. I could later decide I also want  to work with the JBossTools
      Richfaces and install only that. Same thing will be (I think) true for Seam 3. You will be able to install only the support for JPA, or only the support for WikiText, or only the support for ExcelGeneration.

      Of course, if you want an integrated development experience, with the assurance from the Seam team that all the plug-ins that you are using have been tested and are compatible with each other, then you are going to have to wait until all of Seam 3 is released together.

      One possible way to deal with this could be to handle version numbers like this (this is just my proposal, the actual way used by the Seam team to handle this could be very different):

      Seam-Integration-With-JPA-0.0.1.jar : First release of the official JBoss Weld extension for JPA
      Seam-Excel-Generation-0.0.1.jar : First release of the official JBoss Weld extension for Excel generation

      They can evolve independently, after some weeks, we could have:

      Seam-Integration-With-JPA-0.0.7.jar : 7th release of the official JBoss Weld extension for JPA
      Seam-Excel-Generation-0.0.8.jar : 8th release of the official JBoss Weld extension for Excel generation

      Then (after some months?) Seam 3.0  is finally released, at that moment the .jars change to:

      Seam-Integration-With-JPA-3.0.9.jar : 9th release of the official JBoss Weld extension for JPA
      Seam-Excel-Generation-3.0.10.jar : 10th release of the official JBoss Weld extension for Excel generation

      That 3 means that the version 9 of the JPA extension, and the version 10 of the Excel Generation extension are both part of the version 3 of Seam. Of course this proposal might be insuficient with deal with all the complexities of extension compatiblity, I guess there will be some kind of compatibility matrix to help us, as the one that is available for Hibernate.

      I would be like Hibernate, where you can download only Hibernate Core, or also download Hibernate Annotations and Hibernate EntityManager, but you may never download Hibernate Shards.

      Or like with Eclipse, in Eclipse, a release is done each year (Europa-3.3-2007, Ganymede-3.4-2008, Galileo-3.5-2009) but plug-ins such as JBossTools, or the WTP or JDT, or TPTP or... are released with their own version numbers and schedules, but once a year, on the Official Eclipse Release they all make an effort to present an integrated front.

      That is what Seam 3 is, an integration of all the extensions for Weld that are created or supported officially by JBoss. Remeber, when you ask for some feature for Weld in this forum, and a Seam team members answer with that will be part of Seam what they are saying is that they are going to build it, but that is not part of the core Weld project, it will be propietary an extension, and all proprietary extensions built by the Seam team will be part of the Seam project.

      I hope this helps a little with all this confusion. Remember that this is probably not accurate, but I think it does reflect the general spirit of the separation between Seam and Weld. And I hope that the Seam and the Weld teams publish something like this as a sticky thread (or even use this one) to help any further confusion to the people in this communities.