Project Starter Pack for ATG
Get your ATG project off to a flying start by using a development environment that's based on our own project experience and best practices. It'll have your development team producing code from day one.
Most development projects need a significant amount of time and effort to establish the development environment and build processes. Something that can even be further complicated when the project is an application development project, where your environment must adhere to application specific conventions. The same can be said when a new developer joins the project team. If no conventions are used and followed, it can take the developer a significant amount of time to become comfortable with the project build - time which would have been better spent developing the application.
Spindrift's development environment adresses these problems by providing an adaptable, consistent framework for software installation, code development and testing, revision control, automated continuous integration and packaging for your ATG projects. Once the development environment is established, anyone will be able to walk up to the project with a fresh machine and fully build the system with minimal effort.
Spindrift is committed to using Open Source Software wherever practical and the framework uses many OSS software components by default. It is adaptable however, and commercial alternatives can be integrated as well.
The framework consists of the following building blocks:
ATG installation and configuration
We have described a common application module layout that allows easy packaging for different targets; Content Administration server yes/no, development environment or test/acceptance/production?, etc. Also, the directory structure within an application module have been standardized.
Database and schema setup
Conceptually, it seems like an easy task. Create a database schema, run the SQL scripts provided with the ATG installation and start the application against the new schema. However, once you start using ATG's Content Administration things can get really complicated, really fast. Now you must maintain two schemas, one versioned schema for the CA application and one non-versioned schema for your target site. Then, you decide that you'd really like to use ATG's switching deployment. You create another schema for your target site so that they can be switched. But now, when you deploy and switch, you just lost all the changes that were written from the front-end (such as profiling information, placed orders, etc.) since the last switch. So you need to create another schema that stores data that shouldn't be switched when a deployment from CA occurs. Add in another target (Staging) and you start losing count.
As part of the framework, we have come up with a set of conventions and best practices to manage the data explosion in the scenario described above.
Development build tools and processes
Central to the build process is Maven. Maven is a set of standards, a repository format, and a piece of software used to manage and describe projects. It defines a standard life cycle for building, testing and deploying project artifacts. It provides a framework that enables easy re-use of common build logic for all projects following Maven's standards. Our framework uses Maven to control many aspects of the build process. We have also developed some custom plugins specific to ATG, for example to automatically generate the manifest files of ATG application modules.
IDE installation and configuration
The framework uses Eclipse as the preferred IDE. Eclipse is an open source community whose projects are focused on building an open development platform comprised of extensible frameworks, tools and runtimes for building, deploying and managing software across the lifecycle. A large and vibrant ecosystem of major technology vendors, innovative start-ups, universities, research institutions and individuals extend, complement and support the Eclipse platform. Maven integrates nicely with Eclipse and our framework lets Maven automatically generate the configuration files for Eclipse. Eclipse also integrates with Subversion through the Subclipse plugin (other Subversion plugins are available as well).
Revision control
Larger, fast-changing projects with many authors need a Version Control System to maintain changes and avoid general chaos. Our framework uses Subversion, a free/open-source version control system that most developers should already be familiar with.
Continuous integration
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.
Our framework uses Continuum, a continuous integration server for building Java based projects and partner to Maven. As a commercial alternative, we can integrate with Bamboo as well.
