Thanks for bringing this up Allen. On 1/10/07, Allen Gilliland <[EMAIL PROTECTED]> wrote:
I know this has been lightly discussed in the past, but I would like to start a more formal discussion about it now in the hopes that we can come to some kind of decision in the not too distant future and begin working on upgrading from Struts 1.x. I think there are a ton of reasons to upgrade from Struts 1.x and the only real drawback right now is that it requires extra development time, but we've got to bite the bullet some time.
I think this is a very important decision. Roller's UI is one of it's weak points. We need to work to simplify, stream-line and update the UI to meet "Web 2.0" expectations. I do NOT want to do that work with Struts 1.x.
So, it seems like the logical place to start is to get a feel for what options are available and why we like/dislike various options. From previous discussions it sounds like the most notable options are ... Struts2, JSF, and Spring. Feel free to offer other options if you think a different framework should be considered.
My personal preference is to upgrade from Struts 1.x to Struts 2 because: 1) I'm very comfortable with the action framework approach used by Struts 1.x and now perfected by Struts 2.x 2) What I've seen of Struts 2 looks truly great, especially the enhanced tags and easy to test actions 3) We can migrate in a piece-meal fashion, keeping old Struts 1.x code in place as needed 4) It's possible to use JSF within Struts 2 -- so if there's some amazing JSF component or UI contribution someday, we (or somebody else customizing Roller) could still consider using it. 5) The Struts project is a very active Apache community and they've offered to help us before.
I am not a framework junky and haven't played with any of these options extensively, but from what I do know about them I would say that Struts2 sounds the most appealing to me. Struts2 looks very easy to use and should provide by far the easiest upgrade path from our current Struts1 code. Based on the JSF examples Dave used in the Planet sandbox I am a bit hesitant on JSF. I found it to be less intuitive than Struts and would certainly require more effort to migrate to. Spring is also an option, but the upgrade path would be more involved and I don't think it offers anything that Struts2 does not.
That JSF work was definitely easier than it would have been with Struts 1.x, but there were some annoying pain points. It was a pain to add support for HTTP GET in JSF and I had to put way too much JSF specific code into the actions. And the JSP code for a JSF form is about ten times longer than what you'd find in a similar Struts 2 form (due to the new style-sheet driven tags). For starters, it might be a good idea to develop a Struts2 version of the Roller-Planet UI, which is in the sandbox. It's a small UI so that would not be hard to do. Then we'd have some concrete examples to compare and (assuming we choose Struts 2) some code we could re-use in Roller proper.
The only downsides I see to Struts2 right now is that it says it requires Java 5, which isn't an absolute deal breaker, but I think it's a shame since Roller is currently compatible with Java 1.4. The other thing is that Struts2 hasn't actually gone GA yet, but it appears that it's fairly close now, so by the time we actually get around to doing this work it should be ready.
What do others think?
I'd like to know what everybody else thinks too. I'm in something of a planning and requirements stage right now, so this is a perfect time for this discussion. Currently, my opinion is that Roller 4.0 should include Struts 2, require at least Java 5, and feature a re-written authoring UI (replacing at least the entry editor, entry management and categories pages). - Dave
