Inline. On 1/30/06, Troy J. Kelley <[EMAIL PROTECTED]> wrote: > > I did my best to see if this was already addressed by searching mail > archives. All I found so far is a comment from Craig here: > > http://marc.theaimsgroup.com/?l=struts-user&m=112604395721097&w=2 > > Craig writes: > "If, on the other hand, you decide to commit to JSF's controller early > rather than late, you might as well just use Shale along with it from the > beginning. Unlike the way that other frameworks deal with JSF, Shale > *assumes* you will be using the JSF controller architecture, and it just > adds ease of use around problems you'll face anyway. It doesn't try to treat > JSF as purely a component architecture." > > I'm in a situation where I'm consulting in a corporate environment. I > really love what shale has to offer, but I'm concerned about adopting things > a bit too early. I checked out the "API Stability" section of the project > docs (http://struts.apache.org/struts-shale/api-stability.html - which is > great, btw)
Thanks ... I hope it nudges my fellow framework developers (both here and other webapp projects) to provide the same sort of information. and I'm trying to answer the question: > > What components of shale can I integrate into a JSF app and get the > biggest benefit from, without sacrificing stability at the functional and > API level? > > For instance, shale-core is a mixture of Developing and Evolving packages > at both the Application and Framework level. If I'm writing and enterprise > app that's going to production in 6 months, how do I choose wisely? :-) The most conservative approach would be to use the following rules: * Stay away from any package targeted as "Framework" ... that's for modifying Shale itself, rather than using it. (If you find yourself tempted to change things here, please file RFEs so we can make the stuff you need a standard part of Shale). * Stick with packages marked as "Stable" or "Evolving". In practical terms, that means (as of today): * The JSF components provided by Shale are only those needed to integrate framework capabilities ... I don't forsee Shale itself becoming a general repository for JSF components. Instead, it should interoperate nicely with libraries like those from MyFaces. * The ViewController APIs (org.apache.shale.view) that an application requires are solid, although new features might get added later. One reason for my confidence here is that Sun Java Studio Creator 2 (for which I'm the architect) provides very similar (paranoids would say "suspiciously" similar :-) capabilities in the page beans that it produces for you, and the paradigm seems to fit the proposed application design pattern quite nicey. * The dialog stuff (one of my favorite features) is marked as "Evolving" not because I expect to break backwards compatibility, but because some known deficiences need to be addressed (particularly in dealing with more than one simulataneously active dialog) that *might* require such changes. Even in that circumstance, I would strive to not break old apps (one of the reasons Struts 1.x was and is popular is we were really conservative about changes like this) ... but it's not yet clear what we might need/want to do to finish this functionality. * I'm pretty happy with the new remoting stuff (org.apache.shale.remoting) but it's going to stay "Evolving" until someone actually *does* use it and provides some feedback. Hows that Catch-22 for you? :-). (It also needs better documentation ... in progress.) * Do not assume that APIs marked "Developing" necessarily *will* break -- so depending on them shouldn't be dismissed out of hand. It's just that the likelihood of needing adaptations here is slightly higher than "Evolving" packages. I've included the start of a package dependency diagram that might help - > it's incomplete. I figured somebody might know this by heart, and could > finish it quickly :-) Feel free to distribute. I don't see the attachment, but as long as you stick with the packages targeted at *Application* deveopers rather than *Framework* developers, you should not have to care about internal-to-Shale dependencies on the framework stuff. That's our job to deal with any changes there. You should focus on using the public application APIs only. I've spent the past several days doing research on web app frameworks and > JSF is a contender for *this environment* - but only becomes more promising > with offerings like facelets and shale (IMHO). Certainly looks like a contender to me :-). And don't forget to look at the components over at http://myfaces.apache.org-- they are doing some interesting things. Much more comprehensive than the sum total of all the UI-oriented JSP tag libraries I have looked at to date. That's one of the benefits of a common base API. Thanks, > -Troy Craig