JBoss Development Process Guide

2004, Ivelin Ivanov, Ryan Campbell, Pushkala Iyer, Clebert Suconic, Mark Little, Andrig Miller, Alex Pinkin

2005


Table of Contents

Preface
1. Overview
1.1. Background
1.2. JEMS integration milestones
2. Productizing Steps in the Overall Release Process
2.1. I. Background
2.2. II. Turning a Project into a Product
2.2.1. I. Product Road Map Creation and Maintenance
2.2.1.1. Questions for Constructing the Road Map
2.2.1.2. Project road map checklist:
2.2.2. II. Reference Documentation
2.2.2.1. Project reference documentation checklist:
2.2.3. III. On-line Education
2.2.3.1. Project on-line education checklist:
2.2.4. IV. Training Materials
2.2.4.1. Training materials checklist:
2.2.5.
2.2.6. V. Quality Assurance
2.2.6.1. Quality assurance checklist:
2.2.7. VI. Development and Management Tooling
2.2.7.1. Development tooling checklist:
2.2.8. VII. Release the stable or final release
2.2.8.1. Release checklist:
2.3. Appendix A.
2.3.1. Key Contacts for the Productizing Process
3. JBoss Issue Tracking
3.1. Creating a new Project
3.2. Creating Release Notes
3.2.1. Adding Issues to Release Notes
3.2.2. Generating Release Notes
3.3. Issues
3.3.1. Types
3.3.2. Priorities
3.3.3. Estimates and Due Dates
3.3.4. Affects Checkboxes
3.4. Managing Container Projects
3.5. Project Source Repository and Builds
3.6. Testsuites
3.7. Dependency Tracking with JIRA
4. Build Reference
4.1. Overview and Concepts
4.2. Component Build
4.2.1. Component Info Elements Reference
4.2.2. Component Definition Elements Reference
4.2.2.1.
4.3. How to Synchronize and Build
4.4. Tutorial: Anatomy of a Component Build
4.4.1. Top Level Build
4.4.2. Component Level Build
4.4.2.1. Defining an Artifact
4.4.3. Placing an Artifact in the Release
4.5. How to Add a Component to the Repository
5. CVS Access for JBoss Sources
5.1. Understanding CVS
5.2. Obtaining a CVS Client
5.3. Anonymous CVS Access
5.4. Committer Access to CVS and JIRA
6. CVS Administration
6.1. Creating and Managing Release Branches
6.1.1. Release Numbering
6.1.2. Example Release Scenarious
6.2. Creating a New Binary Release Branch
6.3. Checking Code into the MAIN Trunk
6.4. Checking in a Patch on a Release Branch
6.5. Checking in a Patch on a Non-JBoss CVS Module Release Branch
7. SVN Access for JBoss Sources
7.1. Understanding SVN
7.2. Obtaining an SVN Client
7.3. Anonymous CVS Access
7.4. Committer Access to SVN and JIRA
8. SVN Administration
8.1. Creating and Managing Release Branches
8.1.1. Release Numbering
8.1.2. Example Release Scenarious
8.2. Creating a New Binary Release Branch
8.3. Checking Code into the MAIN Trunk
8.4. Creating a service patch
9. Coding Conventions
9.1. Templates
9.1.1. Importing Templates into the Eclipse IDE
9.2. Some more general guidelines
9.3. JavaDoc recommendations
10. Logging Conventions
10.1. Obtaining a Logger
10.2. Logging Levels
10.3. Log4j Configuration
10.3.1. Separating Application Logs
10.3.2. Specifying appenders and filters
10.3.3. Logging to a Seperate Server
10.3.4. Key JBoss Subsystem Categories
10.3.5. Redirecting Category Output
10.3.6. Using your own log4j.xml file - class loader scoping
10.3.7. Using your own log4j.properties file - class loader scoping
10.3.8. Using your own log4j.xml file - Log4j RepositorySelector
10.4. JDK java.util.logging
11. Logging
11.1. Relevant Logging Framework
11.1.1. Overview of log4j
11.1.1.1. Categories, Appenders, and Layout
11.1.1.2. Category Hierarchy
11.1.1.3. Appenders and layouts
11.1.1.4. Configuration
11.1.2. HP Logging Mechanism
11.1.2.1. Log Handler
11.1.2.2. Log Channel
11.1.2.3. Log Writers
11.1.2.4. Log Formatters
11.1.2.5. Log Levels and Thresholds
11.1.2.6. Interactions
11.2. I18N and L10N
11.2.1. The Java Internationalization API
11.2.2. Java Interfaces for Internationalization
11.2.3. Set the Locale
11.2.4. Isolate your Locale Data
11.2.5. Example
11.2.6. Creating Resource Bundles
11.2.7. Example of Use
11.3. The Common Logging Framework
11.3.1. Package Overview: com.arjuna.common.util.logging
11.3.1.1. Interface Summary
11.3.1.2. Class Summary
11.3.1.3. LogFactory
11.3.1.4. Setup of Log Subsystem
11.3.2. Getting Started
11.4. Default File Level Logging
11.4.1. Setup
11.5. Fine-Grained Logging
11.5.1. Overview
11.5.2. Usage
12. JBoss Test Suite
12.1. How To Run the JBoss Testsuite
12.1.1. Build JBoss
12.1.2. Build and Run the Testsuite
12.1.3. Running One Test at a Time
12.1.4. Clustering Tests Configuration
12.1.5. Viewing the Results
12.2. Testsuite Changes
12.2.1. Targets
12.2.2. Files
12.3. Functional Tests
12.3.1. Integration with Testsuite
12.4. Adding a test requiring a custom JBoss Configuration
12.5. Tests requiring Deployment Artifacts
12.6. JUnit for different test configurations
12.7. Excluding Bad Tests
13. Support and Patch Management
13.1. Introduction
13.1.1. Cumulative Patch
13.1.2. One-off Patch
13.2. Support Workflow
13.3. Cumulative Patch Process
13.3.1. Development Phase
13.3.2. QA Phase
13.3.3. JBN Phase
13.4. One-Off Patch Process
13.4.1. Development Phase
13.4.2. QA Phase
13.4.3. JBN Phase
13.5. Support Patch Instructions Template
13.6. How To QA a One-Off Support Patch
13.7. How To QA a Cumulative Patch
14. Weekly Status Reports
15. Documentation and the Documentation Process
15.1. JBoss Documentation
15.2. Producing and Maintaining Quality Documentation
15.2.1. Responsibilities
15.2.1.1. The product team
15.2.1.2. The documentation team
15.2.2. Product documentation review
15.2.3. Keep the documentation up-to-date
15.2.4. Articles and books
15.2.5. Authoring JBoss Documentation using DocBook
16. JBoss QA Lab Guide
16.1. Quick Start Guide
16.2. Lab Setup
16.2.1. Topology
16.2.2. File System
16.2.3. Databases
16.2.4. Servers
16.3. QA Lab FAQ
17. Project Release Procedures
17.1. Tagging Standards
17.2. JBoss Versioning Conventions
17.2.1. Current Qualifier Conventions (Post 2006-03-01)
17.2.2. Practices
17.2.3. Legacy Qualifier Conventions (Pre 2006-03-01)
17.3. JBoss Naming Conventions
17.3.1. Naming of Build Artifacts
17.3.2. Jar Manifest Headers
17.4. Pre-Release Checklist
17.5. QA Release Process
17.6. Release Notes
18. Serialization
18.1. Performance Consideration - Use Externalization
18.2. Version Compatibility
18.2.1. In Externalizable Objects
18.2.2. Regular Serialization
18.2.3. Compatible and Incompatible Changes
19. How to Update the Development Guide
19.1. Checking Out The Guide As A Project
19.2. Building The Modules
19.3. Request Development Guide Update