Hey all. I wanted to drop the developers a few notes regarding my recent experience with Struts2. I've been a Struts/WebWork user for quite some time and recently attempted a stab at the Struts 2 switch because I'm planning on using Struts 2 for building client sites for the company I work for. Also, I definitely am trying to be very constructive and if I come off badly I do apologize. Okay on to the info:
1. Arrived at the Struts homepage and Struts 2 almost looked dead. No activity since October and no news or release information. Adding some news every few weeks will help keep new comers from bailing.
2. Tried to download the release using the release navigation. Here I was presented with the fact that there was a 2.0.1 BETA, which is the latest development release. I spent the next while looking for the 2.0.0 release, figuring that was the last stable release. Couldn't find it obviously. The versioning currently looks to the outside to be a complete mess and it is very confusing and non standard. I would not release a patch version (major.minor.patch) until the major version is released. Therefore all the references to 2.0.1 through 2.0.6 are very confusing because these are not really final releases, but all BETAs. Plus, there is talk about 2.0.1 BETA and 2.0.4 and 2.0.6 and this is all quite confusing. I would probably fix the version into a standard alpha, beta, release candidate model. So, currently it would be something like 2.0.0-RC6 or the like working towards a final release of 2.0.0.
3. The documentation for Struts 2 contains references to zero configuration and the web.xml configuration file also contains this stuff. There are also a number of references to all the annotations. These are not available in the 2.0.1BETA JAR files and therefore I had a hard time using them ;) I did find them in the nightly snapshots, which aren't functional. I would keep the documentation inline with the latest beta and not the latest nightly snapshot. Anyone who wants bleeding edge will be willing to look at the source to see new stuff or build the latest snapshot docs themselves.
4. The tutorials reference a hybrid of WebWork 2 configuration, classes, tags and files and Struts2 configuration and files. This would definitely be confusing for a newcomer. I would probably keep the tutorials using only struts2 configuration, classes, tags and files since that is what the latest beta release uses. I would in turn direct folks to the WebWork wiki for running WebWork 2 if they don't want to use the BETA release.
5. There is really no getting started document for Struts2. It would be a bit of a stumbling block for a newcomer to have various JAR files in the distribution without any clue on which to use or what the 'struts2-all' jar contains. There should be a true Struts2 getting started document that contains a complete step by step to getting an application running. This could start with the CRUD made easy tutorial for WW2 and make it more complete for Struts2.
6. From the guide perspective, it is very difficult to figure out how to write actions. This information is buried in the Struts Configuration Elements guide and in the Action Configuration guide under that. In fact many of the top level and nested guides are a bit confusing and don't necessarily follow the standard path developers will take when getting started as well as when trying new things. The top level components should be items will be working on when building an application such as AJAX, Actions, Validation, etc. rather than items like "Struts Configuration Elements" Under these headings would be the configuration, the code, the interfaces, examples, etc. This will be how most folks are going to be using Struts2. They'll be creating an action, adding validation, handling action results, adding interceptors, etc. There are a number of guides that are on the right track.
7. I had a bit of trouble figuring out how to grab the code because the link is on the main Struts page. Adding a link to the Struts2 page will help a lot.
8. Running the unit tests from the subversion repository causes out of memory errors on my machine using the standard 16M of memory that maven defaults to run with. I found that after the tests had run it required almost 150M of memory to run the tests. I gave maven 512M, but this was a stumbling block. This seems like a rather incorrect behavior for tests since after each test there should be very little on the heap. Is there a memory leak or some reason very large objects are hanging about?
9. This is a bit nit picky.... The current code in subversion is broken therefore I was unable to run from sources. One of the things I really like about many frameworks I've worked with and coded on was the fact that a clean checkout was almost guaranteed to compile, test and run. This helps a lot for folks that want the bleeding edge and to start contributing.
I'll try to keep looking around in source code and grabbing the latest code to see how things are progressing. I'm also slated to have a large amount of time at work devoted to getting the companies frameworks and documentation up to the newest architecture I've created and would be willing to help on Struts 2 work whenever possible. I'm particularly interested in minimizing ramp up time as well as making application development time minimal (zero config kinda stuff).
Thanks, Brian Pontarelli
smime.p7s
Description: S/MIME Cryptographic Signature