Should I change AppFuse's default web framework?
Currently, the default web framework in AppFuse is Struts. It's nothing fancy like Shale or Struts Ti, but rather Struts Classic. Even though Struts is not dead it's a pain in the ass to work with compared to other MVC frameworks like Spring MVC and WebWork. Yesterday, on the AppFuse Mailing List, I kicked off an informal poll about switching to a different default web framework. I think most of the people that choose Struts w/ AppFuse are choosing it b/c it's the default. Making another framework the default would likely same quite a few users a lot of headaches.
So which one should I make the default? Here's my thoughts from the mailing list thread:
I like Spring MVC and WebWork better than Struts, but I believe that
WebWork is much easier to understand and develop with. Unfortunately,
it's not well documented or marketed, so it's a bit difficult when you
run into snags. Of course, if you contact the user community via
forums or e-mail, answers flow quickly.
...
I'd like to use the framework that's simplest to
understand. Right now, in my eyes, that's WebWork. I think JSF and
Tapestry are excellent too (as component-based frameworks), but
Tapestry's learning curve is difficult and JSF has a lot of issues
(like everything is a post). Hopefully things will get better with
JSF 1.2, but it's probably another 6 months before MyFaces supports
1.2 - let alone the app servers.
...
Maybe we should just drop Struts altogether - or replace it with
Struts Ti? Unfortunately, it'll probably be a while before it's ready
for production (I doubt it's that useable now).
Of course, if a WebWork Book was out - this move would be a lot easier. I did talk to Patrick Lightbody on IM yesterday and he said "it's done" and supposedly he has copies, but I haven't seen anything on the WebWork Blog to prove this.
A related question: how much would it hurt AppFuse if I dropped Struts altogether and went with something like Wicket instead? I'd like to keep that cap at 5 web frameworks. If I dropped Struts and added Wicket, I might lose potential users, which might not be a bad thing.
Posted by Mathias Bogaert on September 15, 2005 at 02:16 PM MDT #
Posted by Matt Raible on September 15, 2005 at 02:22 PM MDT #
Posted by c on September 15, 2005 at 02:30 PM MDT #
Posted by Jason Carreira on September 15, 2005 at 03:06 PM MDT #
I've used all of the web frameworks that you're talking about and webwork _used_ to be my number one choice. Not anymore...
Posted by Ryan Sonnek on September 15, 2005 at 04:17 PM MDT #
Posted by Don Brown on September 15, 2005 at 05:04 PM MDT #
Anyway, Matt, as you might remember I said I'd been letting everyone at my company know about AppFuse. Well, they finally laid out the criteria they wanted in such a tool, had a shootout with various tools, including yours, and they ended up selecting JAG. Part of it was they felt the result of running AppFuse was too bulky and prescriptive (not as flexible for non-supported stuff, which I think that was Hani's rant). They seemed to think that JAG was easier to customize using templates so they could add in home-grown stuff easily to get generated along with the OSS parts. I wasn't part of the shootout so I hope to perform my own later this year and see if I agree with their choice and also understand how to use the tools better.
So I guess if I were to recommend anything, maybe it would be to slim down AppFuse, possibly by breaking it up into discrete pieces that are easily integratable but not automatically integrated, then allow lots of room for other stuff to get plugged in. A working app at the end is great, but a little bit of wiring after generation isn't bad if it buys more room for one-off flexibility and for users to write their own plug-ins. That might make the web framework issue more manageable.
I guess there's really three things - a code generation framework, code generation components, code generators that uses the framework - that make up the whole. The framework is probably the most important piece for you to maintain, but opening up the components and generators for others to maintain/contribute would make it more useful. Then Don or Jason or whomever can come in and do their own component for their web framework, which a) means you spend less time on it, and b) the framework experts (read:authors) can do a high-quality job writing/maintaining/upgrading components, probably quicker than you could.
Posted by gerryg on September 15, 2005 at 05:47 PM MDT #
Posted by D. Jung on September 15, 2005 at 07:56 PM MDT #
Posted by Emiel van der Herberg on September 15, 2005 at 08:15 PM MDT #
But I was also trying to get across the point that while AppFuse is pretty much a 80% solution for out-of-the-gate webapps, it could be more. It's up to Matt whether he goes for another 10%. And whether the option of mostly-complete generated webapps are OK, too, in the cases where something new or unusual needs to be supported and an all-or-nothing approach won't cut it.
Posted by gerryg on September 15, 2005 at 08:32 PM MDT #
Posted by Jason on September 15, 2005 at 09:21 PM MDT #
Posted by Bruce Snyder on September 15, 2005 at 10:37 PM MDT #
Posted by Vui Lo on September 15, 2005 at 11:55 PM MDT #
Posted by serge on September 16, 2005 at 12:40 AM MDT #
i would vote for tapestry. compared to JSF, it's been around longer. sure, the learning curve is higher but recently, we've started seeing more components come up. having components is good and if more tapestry components are added, appfuse's value will start increasing without you having to do anything!!
my second vote is for JSF -- if you want to bet for the long term since there will be more than 100 JSF components in a year's time(at the least!).
BR,
~A
Posted by anjan bacchu on September 16, 2005 at 07:23 AM MDT #
Posted by 85.18.136.92 on September 16, 2005 at 09:28 AM MDT #
Posted by Alexandru Popescu on September 16, 2005 at 01:26 PM MDT #
Posted by Ryan on September 16, 2005 at 01:31 PM MDT #
Posted by Christian Kählig on September 16, 2005 at 01:49 PM MDT #
Posted by Todd Huss on September 16, 2005 at 05:14 PM MDT #
Isn't appfuse dead? If not, then why not just have one framework - whatever the latest and greatest flavour of the month is. You could change it every year and always have the bragging rights on the best toys.
If it is dead, then stick with Struts and the large number of people who are quietly using it day in, day out to do a job. Don't worry about the vocal minority of techno-snobs who feel the need to bile anything thats not in their vested interest. Most people care more about getting the job done, rather than pointless pi**ing contests in the ether.
The real issue is what percentage of your users are you going to screw by dropping struts? If its the least of the five frameworks then you should. Problem will be finding that out, its always the -ve drones re-spouting the rubbish of the hallowed gurus who shout the loudest.
Anyway, who cares - pick the nicest toy and long live appfuse!
Posted by Niall on September 16, 2005 at 11:55 PM MDT #
In fairness, webwork is the one framework I have not reviewed. One reason is that I could not find any examples/demos with ready made ajax/components wired. Even if it is 'superior' - I go with whoever gets me up and running quicker, and that means 'code by example'. I know ajax is the cool new buzzword, but the semantics of our domains are so large we have to have some of these components - a web client would have not even been an option for us a year ago. We intend to contract most of the web layer out to some of the devs on one of these frameworks - but I don't want to be paying them to catch up to another framework unless there is a good reason.
For the railers. Many of the api's we need are only found in Java, otherwise I would be looking a lot closer at rails - since a lot of what I need is already wired up in rails. Nitro may ease some of my concerns with the active record setup, because of the complexity of our persistence - but I have not looked into it enough yet. Luckily, I'm no longer bound by the Java only mantra anymore.
My two cents - and to be quite honest, I'm still learning.
Posted by ian on September 17, 2005 at 12:30 AM MDT #
Posted by Cammm on September 18, 2005 at 03:52 AM MDT #
Posted by Alexandru Popescu on September 18, 2005 at 11:57 AM MDT #
Posted by Ravi on September 18, 2005 at 04:34 PM MDT #
Posted by Bron on September 19, 2005 at 04:20 PM MDT #
Posted by Sib on September 20, 2005 at 04:57 PM MDT #
Posted by Ray Tayek on September 25, 2005 at 10:43 PM MDT #
Posted by Ricardo on September 29, 2005 at 05:25 PM MDT #
Posted by Dan G on October 02, 2005 at 10:50 AM MDT #
Posted by Percy Wegmann on October 03, 2005 at 02:44 PM MDT #
Posted by Hari on June 13, 2006 at 11:17 PM MDT #