I cannot take credit for the insight, and I cannot find where I read it, but an interesting tidbit all the same... Most, if not all, of the "we are so much better than Struts" frameworks out there embed large chunks of Struts via commons-*. A large majority of the commons-* libraries started life in Struts and got factored out into standalone libraries.