Welcome to WebWork! If you're reading this you are probably one of those whose task it is to construct and maintain websites that involve a team of developers and contain a large portion of dynamic content, and you are also perhaps tired of archaic frameworks that solve this that perhaps get the job done but with way too much work involved. If this description fits you, you've come to the right place! WebWork (WW) is an attempt to deal with the issues involved in building such systems, and to do so using the latest technology and best practices that have evolved through experimentation and experience.

This document will describe most of what you will need to know to get started with WebWork. For those remaining questions that you may have, or those that naturally arise once you've started using it, the WebWork project has an active community that can help you. See the section called Community for more info.

Background

When the "net" exploded into the awareness of common people, it did so in a chaotic and unprecendented way with enthusiasts creating new websites by the minute, on a wide range of topics. As the 'net matured, and the knowledge on how to utilize it grew, more and more websites turned from being static to becoming dynamic. Databases and legacy systems were being used to provide the backend for websites, making them much more alive than the first iteration. As time went on, it became apparent that tools needed to crafted that were explicitly constructed to help build these websites, as the complexity of the systems, and the construction itself, continuously accelerated.

With the introduction of "internet time", where the 'net became the core of many businesses, it was not only important to build highly advanced websites that could be used by the customers of 'net businesses, they had to be constructed in a very short amount of time. This strive for complexity, while keeping the construction time minimal, increased the need for tools that were as simple to use as possible, as that is a crucial factor to minimize the time needed to accomplish a particular task with it. This coincided with the advent of Open Source as a popular way to construct software, and one of the main characteristics of (most) Open Source projects is the ability to "cut the crap", and keep things simple. Complexity meant more documentation to write, it meant more questions by users, and since the creators of the software often were users themselves the need to keep things simple became very important.

Purpose

Based on the background provided, it becomes easy to see the motivation for a tool such as WebWork, and the underlying process that generated its creation. WebWork is a community project conducted using the Open Source process, aimed at providing tools and a framework for building complex websites in a short amount of time, that are easy to understand and easy to maintain. Java is the platform and language upon which it is based, although it supports many others as the language in which systems are built, such as JavaScript and XML.

WebWork is architecturally based upon best practices and design patterns that have proven themselves to be useful in this context. It is also based on a strong motivation to keep things as simple as possible, while maintaining flexibility (which is a difficult balancing act).

It also encourages you, as a user, to do things the way you seem fit for your needs. WebWork can be configured and used in a wide range of ways, many of which are useful depending on the context. As an example of this, WebWork supports many different ways of providing the HTML generation technology, such as JSP, the Velocity template engine, and XSLT. They are all widely different, both philosophically and technologically, but can all be used with WebWork, and different users do indeed use all of these ways. "You can't do that" is a statement that we try to avoid as much as possible, and when we can't it is often because another tool would be better suited for the task :-).

Where to go next?

So, where to next? This document is laid out in the most likely order that you will do things, starting with instructions on how to install it. Then follows a description of the core concepts upon which WW is built, and how these have been implemented. After that you will find a description of the various view technologies that can be used with WW, and how they are integrated. If your favourite view technology is not in the list, then feel free to volunteer integrating it into WW. You will probably be surprised how little work is generally involved (for reference, the Velocity integration was done in less than 5 hours).

Next follows a series of sections that describe various best practices, and how to use WW with other tools. What good is a tool if you can't use it properly? This is dealt with in the HowTo sections.

Lastly, you will find sections on the administrative issues around WebWork, such as licensing, the community description, a FAQ, and a feature list. If you are still undecided on whether to use WebWork or not, the FAQ and feature list are probably your next reads in the documentation.