Who We Are
==========


Craig R. McClanahan -- Committer
---------------------------------

I've been involved with servlet and JSP technology since around 1998.  It
started out that I needed a way to build some web applications for several
projects, and liked Java a lot better than the alternatives.  I also liked the
price tag of open source software, and started using Apache JServ -- later on,
getting involved in the project (like many people, I was whining about the
twelve months it took to get from version 0.9 to version 1.0, and my son said
"Dad, you know Java -- go help them finish it!" -- so I did :-).

For quite a while, I was participating a lot on the JSP-INTEREST and
SERVLET-INTEREST mailing lists (http://archives.java.sun.com), especially on
the topic of good architectures for web applications.  I was disgusted with the
hash that many beginners created when they used (or abused) scriptlets in JSP
pages, and built (for my former employer) a pretty comprehensive framework that
could be considered ("Struts 0.01 without the custom tags").  It was
proprietary code, but I was able to describe the concepts, and there started to
be a feeling on the lists that this "Model 2" thing was pretty cool -- but
there were no good examples to look at, so it was mostly hand waving types of
discussions.

Over the same time period, I got involved as an individual contributor in the
Java Community Process (http://java.sun.com/jcp), and joined the expert group
that defined the servlet 2.2 and JSP 1.1 specs.  Sun was impressed enough to
offer me a job as the technical lead on the team within Sun (currently five
other individuals) that works on Tomcat (http://jakarta.apache.org/tomcat) --
the architecture for Catalina, which is the servlet container part of Tomcat
4.0, is also mine -- so I am in the really nice position of getting paid to
work on open source software :-).  And, participate on the expert groups for
Servlet 2.3 and JSP 1.2.  And, speak at various conferences, including
ApacheCon and JavaOne.  And, talk to groups within Sun about using Struts and
JSP/servlet technology.  And ... (there's some really interesting things being
considered for the future).

The original design of what came to be Struts has been in my head for a long
time, since those interesting mailing list discussions, but the first version
of the actual code was written on my laptop on a Memorial Day weekend vacation
trip (end of May, 2000) to the Oregon coast -- in between watching the surf and
having the house shaken by a windstorm at night.  Since then, it has gathered
attention and popularity as we approach our first official release, and it
delights me to see my "baby" grow up so well :-).  Of course, it is no longer
just me -- there have been incredible numbers of good ideas from all over, and
a peek at the TODO list for 1.1 says that even more good stuff is coming in the
future.

One motivation factor was Jason Hunter's article about the Problems with JSP
< http://www.servlets.com/soapbox/problems-jsp.html >. Jason and I get along
fine, even though we have different preferences about presentation
technologies.  Besides being the author of a very popular book about servlets,
with a second edition coming soon, Jason is also the representative for the
Apache Software Foundation on the Executive Committe of the Java Community
Process.

Personally, I live in Portland, Oregon (even though my team at Sun is mostly in
Cupertino, CA -- staying here was part of the job deal :-).  I like to support
Oregon sports teams (Oregon State Beavers, Oregon Ducks, Portland Trailblazers)
and work on cool software.

I figured out I was getting pretty old when I realized that 2000 was the 25th
year I had been paid to work in some aspect of software development :-).  I've
got a son who is a full-time software developer (primarily in PHP so far, but
I'm going to corrupt him with Java eventually :-), and a daughter in college.
I'll happily let the other committers speak for themselves.



Kevin Duffy -- Developer
------------------------

That's a lie. Craig stole my ideas!! It was me who started Struts..who just
took it from under my nose and finished it!

nah..just kidding. Craig has inspired me to learn alot about servlets, jsp,
and so on. So much so that I started my own "lite-weight" framework that is
very similar to Struts, only no where near as robust. Mine simply has a
controller servlet, which like Struts keeps a hashtable of action class
instances, maps them via a .xml config file (yet another Craig idea). There
are three differences between my small framework and Struts .5 (not sure
about the 1.0 version..haven't followed it since .5).

1) Auto-population of beans works with nested objects and does not require a
"tagging" interface..therefore any javabean can be used (which is really not
a big deal if you design them properly anyways).

2) Action classes implement "executeCommandXXX(ActionContext context)"
methods which return a String that the ControllerServlet uses to lookup the
mapping then forwards to the JSP page mapped to that String. The
ControllerServlet uses reflection with a "command" attribute to call the
method in the action class. Therefore, if a request comes in with an
attribute "command=Search", the action class method executeCommandSearch()
is called.

3) I added an XSL ControllerServlet which replaces the last part of the
ControllerServlet (extends it). Instead of forwarding to the JSP page, it
reads in the JSP output (via URLConnection), then applies an XSL (also
mapped in the xml config file for now), rendering HTML output. This is all
done automatically and the only difference is that JSP pages would create
dynamic XML and then an XSL would be written.

I have to thank Craig for most of what I am able to do with the MVC stuff,
and a few others on the list who have contributed. I created my small
framework because Struts had a big following and there were a few things I
didn't need, as well as would liked to have seen changed. To change them
would mean the many thousands of people using it could also be affected. I
probably should have just modified the source ;)

Anyways..Craig is the man! He has been a big inspiration to myself (thanks
Craig). I only wish I could work on his team!! Hey..and I live 20 minutes
from Cupertino too! ;) (hint hint)



Ted Husted -- Committer
-----------------------

My primary interest in Struts is to put it to work writing lots of
real-life Web applications:-) To do that effectively means having good
documentation and code samples at my fingertips, so that's been my focus
with the Struts product so far.

I've been writing software for hire since 1984, but only recently jumped
on the Java bandwagon. My initial interest was with electronic
publishing, and started by converting my various print projects to
electronic media. The "Information Superhighway" was still the private
stomping ground of Universities and government agencies then. The rest
of us had to make do with diskettes and bulletin boards.

Between 1985 and 1994, I created and marketed several software products
for publishing on disk, the most popular being "Dart" and "Iris". In
1992, Dart was awarded the Digital Quill for software excellence,
featured in PC Magazine (February 1992), and bundled with McGraw Hill's
bookset,"Paperless Publishing" by Colin Hayes (McGraw Hill 1994). Dart
won a second Digital Quill in 1993. Several titles that used Iris for a 
publishing system have also won awards and been widely distributed, 
including "Hermitville USA." I was also fortunate to find kindred souls 
on CompuServe and America Online, who helped me pioneer resources areas 
in 1993 and 1994 for the nascent electronic publishing industry.

I finally cut loose on the Internet in 1995, launching Epub News, an
electronic newspage about electronic publishing. After taking on several
private contracts, I opened the Husted dot Com Website (www.husted.com)
in 1996. I've drifted away from electronic books, but have noticed that
several products are now making their way into the consumer mainstream
-- as usual, I was twenty minutes into the future:-)

My favorite all-time project is the Hitchhikers Guide to Science
Fiction. This was one of my earliest hypertext projects (it started as a
print-book idea), and I had a lot of fun bringing it forward onto the
Web. (Now, if I only had time to bring it current and dress it up!)

My favorite all-time client is is WXXI Public Broadcasting Council, 
where serving as the station's Webmaster. WXXI provides public 
broadcasting services for television and radio, and we are working to do 
the same online. Along with providing companion Web sites for every WXXI
production, we stream both our AM and FM signals, in both Real and 
QuickTime, with online archives in the works. It's a long journey, but 
we've taken the first steps. I'm responsible for most of the regular 
updates to the site, and much of the overall layout and design. We're 
grateful to have won the PBS award for best Web site in our market for 
two years running.

Our most ambitious projects at WXXI have been Spring Marketplace 2000
and the NY Election Finder. For Spring Marketplace, we put our annual
auction fully online for simultaneous telephone and Website bidding. On
NY Election, we offered not only the usual election-finder application,
but collected voter registration records from around the state, so
people could also check their registration status and polling place. I
developed the Web-enabled database applications for both projects.

Currently, I'm expanding the WXXI online auction software into a
complete package for hosting online auctions as fund-raisers; this is 
to be an open-source project called Gavel, and will, of course, rely 
heavily on Struts.

###
