Biled Again, this time because my design sucks
Looks like I've been biled again. Unlike the last time, this time Hani doesn't offer any specifics, he merely says that my OSS efforts don't do anything other than the "very very basics".
Java, specifically, goes a long way towards ramming down a set of design principles. Said principles are followed fairly blindly by most practitioners. The OSS world is awash with examples of people who have read the right books, but have absolutely no skill or talent at conceptualising or grokking the underlying principles behind the books. To them, the design pattern is an end goal, not a tool. To pick one example (out of thousands), look at Matt Raible's OSS efforts. It has inheritance! It uses PATTERNS! It is LIGHTWEIGHT! Yet, I'd argue that it's very badly designed (if you don't believe me, just try getting it to do anything other than the very very basics.)
I'm assuming that Hani is speaking about AppFuse and Equinox, because my other efforts in OSS are minimal (Roller, Display Tag, XDoclet and Struts Menu). The reason I'm writing this post is because I'm curious to know what Hani tried to do that didn't work? Was it AppFuse/Equinox that failed? Or was it the underlying framework? Did he try to do indexed properties with WebWork or modify build.xml to deploy to Orion? Is the feature he's looking for something we can fix?
As a defense of my use of patterns, lightweight containers, etc. - it's not so much my doing that these happen to exist - they're more of a reflection on what user's want. It's a problem with Java developers in general - if you're not using patterns - users want to know why. Furthermore, most of the J2EE patterns in AppFuse are from the underlying frameworks, not from anything that I did.
As far as the design of AppFuse, I agree it could use some work. There's a lot of stuff in AppFuse that I don't use - so when I start a project with it - I usually rip out about 20-30% percent of it's features b/c I won't use them. Unfortunately, it's not that easy for others to do this b/c they don't know what they'll break if they remove a bunch of stuff. I'd like to move to a more modular, plug-in type architecture - but I have a feeling that that's the path to over-engineering. Even so, it would be pretty cool if it was possible to turn on/off features (even the use of a particular web framework) by changing a properties file.
Posted by Jason Yip on September 15, 2005 at 08:48 AM MDT #
Posted by Hani Suleiman on September 15, 2005 at 09:49 AM MDT #
Posted by Daniel Berger on September 15, 2005 at 04:02 PM MDT #
Posted by Bruce Snyder on September 15, 2005 at 04:29 PM MDT #
Posted by Solomon on September 15, 2005 at 10:33 PM MDT #
Posted by Brendan Curran on September 17, 2005 at 02:21 PM MDT #
I've just dug in (again) to AppFuse and Equinox to try to get an app running for my kids' school. I started with AppFuse but saw too much happening out of the box that I didn't understand. When you run the build you get an app, but an app that does what? If I haven't written any code, what's this nonsense about updating profiles and such? There's a lot going on behind the scenes and I want to learn how it all works.
So, I regressed to Equinox. Like you said, Matt, if I knew more about how AppFuse worked, it would probably be easier to remove stuff. Instead, I opted for Equinox and added stuff from AppFuse. It's silly, but at least that way I have a better understanding of how everything fits and I can control it. Maybe AppFuse and/or Equinox should not create any app, but provide an examples section (like Tomcat does) for implementing various features? Just a thought.
Keep up the good work!
Posted by Paul Carter on September 20, 2005 at 06:39 PM MDT #
Posted by Will Sargent on September 30, 2005 at 06:55 PM MDT #