# PCGen Monkey Teams Explained

who does what?

In the "About" box of PCGen, you'll quickly notice the PCGen has a monkey meme. I chose "Chief Code Monkey" as my title when I first made PCGen available to the public, and I later adopted the title of Benevolent Dictator. Other teams formed to focus on different aspects of PCGen, and all have taken to referring to themselves as monkeys. In the About box we try to list everyone who has contributed to PCGen in chronological order, and the monkeys are grouped into Code, Content, Test and Engineering.

Here's a primer on what each team does, see the Board of Directors page for a list of those in charge of each team:

Code Monkeys
This team works on the java code. Their trackers are located at pcgen.sf.net.

Content
This team encompasses all content published with PCGen. This includes Data, Docs and Output Sheets.

Data Monkeys
The Data Monkeys work on the data for all the books you load in PCGen. They help answer data questions at the PCGenListFileHelp. They have pcgen_experimental group where they actually work on the different books we're trying to get into PCGen. Their trackers are located at pcgendm.sf.net.

Doc Monkeys
The Doc Monkeys work on the documentation. Their trackers are located at pcgendocs.sf.net.

Output Sheet Monkeys (OS Monkeys)
The Output Sheet Monkeys work on the output sheets which are used to export to character sheets in PCGen. These templates involve xml, xsl and html. Their trackers are located at pcgendocs.sf.net.

Quality Assurance Monkeys (QA Monkeys)
This team works on testing PCGen to make sure the releases are reliable and high quality. They have a yahoo group called pcgenqa where they discuss what they're doing.

Publisher Liason Monkeys
This team servers as the contact for all the publishers. This way all contact with publishers can be more easily managed and consistent.

OGL Monkeys
This team is named after the OpenGamingLicense that made the popularity of 3e possible. This team makes sure that all material included in PCGen meets any license requirements (not just the OGL).

Tracker Monkeys
This is the team that monitors the pcgen yahoo site for bug reports and feature requests. They also prioritize all trackers submitted at the three sourceforge sites.

More Detailed Listing of what each team does:

Code Monkeys
Requirements: Java (any amount)
Some code monkeys work on the interface (GUI), some work on the engine (business logic), some work on optimizations and others perform routine maintenance. All levels of java (even newbie) are accepted and if you've got the time, we've got plenty to do! There is a Developer's Forum where questions from really basic to very advanced can be asked. I'm generally happy to let people work on the section of code that most interests (or irritates!) them, though I ask that all developers help out with the priority 9 trackers (bugs or feature requests at pcgen.sf.net) since that's what has been deemed to be necessary for the next production release of PCGen.

Data Monkeys
Requirements: Accurate typing, preferably some amount of experience with a computer language of any kind
Newbie data monkeys are generally asked to do an initial swipe on a book. Most data monkeys develop a mastery of one area of data (like classes or feats or races), and as they advance they are asked to check the work of other newbie data monkeys. All work currently is done in a proprietary data language called LST (after the adopted extensions of all the data files) and most of it is pretty easy to pick up. There are some bits of it that are more difficult to master, and data gurus are highly prized. :) As data is worked on, it's uploaded to pcgen_experimental so the OGL and Publisher teams can check them. Once a source is completed and checked, it's added to the PCGen releases.

Doc Monkeys
Requirements: Ability to describe clearly how to use software and to present it in an appealing manner.
The Documentation team is responsible for making sure that the screen pics are up-to-date and that the descriptions of how to use the interface makes PCGen understandable for first-time users. They also update the documentation on the LST language to help data monkeys do their work. The documentation is done in html.

Output Sheet Monkeys
Requirements: Familiarity with xml/xsl/htm, preferably some java
Some OS Monkeys work in xml/xsl, and others work in html. It's helpful if they also know java so they can look at the code of PCGen itself to better understand (and even modify) what it's doing when it outputs a character sheet.

Quality Assurance Monkeys
Requirements: Ability to describe steps to reliably reproduce a bug, preferably some professional QA experience but not required
This team develops regression tests to make sure that code changes in PCGen don't break anything that was working. They also help test the interface to make sure that it works as expected. They also help try to determine where and when PCGen slows down or runs into trouble so the Code Monkey team can resolve the problem and improve PCGen's performance. As the QA team discovers issues, it enters the bug in the appropriate place (pcgen.sf.net for code bugs, pcgendm.sf.net for data bugs, pcgendocs.sf.net for doc or OS bugs).

Special Project Monkeys
This team is used intermittently based solely upon need and generally consists of a combination of code and data monkeys.

Publisher Liason Monkeys
Requirements: Desire to communicate to publishers and ability to communicate clearly
Since this group is our contact point with all publishers, it's a small group.

OGL Monkeys
Requirements: Ability to understand and explain licenses like the OGL, LGPL and other licenses with which PCGen must comply.
This team checks all data to make sure that it complies with the OpenGamingLicense, the Lesser GPL and any other licenses that apply to PCGen. Any issues found are immediately reported - to pcgen_experimental if it's a data issue, to pcgen.sf.net if it's a code issue.

Tracker Monkeys
This is the team that monitors the pcgen yahoo group for bug and feature requests. Any bugs that are confirmed are entered as a tracker in the appropriate group's list (code items at pcgen.sf.net, data items at pcgendm.sf.net, output sheet and documentation items at pcgendocs.sf.net). After the confirm/reject a report, they respond to the user's post to indicate the tracker number or to indicate that they couldn't reproduce it. Some trackers help monitor the Files folders where users can upload character files that exhibit a bug they're reporting. Other trackers help monitor all items submitted to the various groups and make sure they're not duplicates, and adjust the priority on the item according to the list of rules supplied by the Board of Directors.

Tracker priority ranks

P9 = Emergency! fix me NOW. This priority is reserved for crashes and other issues which block usability.
P7 = Next production release.
P5 = Production release after that.
P3 = Default priority.
P1 = Low priority.

How this all works:

Scenario 1 - A user submits a bug report
Suppose someone submits something like this to the pcgen yahoo group: "[BUG] 5.7.2 - My Fighter's BAB is 0!". A Tracker Monkey monitoring the group attempts to confirm the bug with the version specified. If no version is specified, simply try the most recent version. If the bug can be confirmed, try it in the most recent production release to see if it was a problem there. If it's a code-related issue, submit a bug report at pcgen.sf.net and indicate whether or not it's a bug in the most recent production release as well as the version specified. If it's a data-related bug, follow the same process at pcgendm.sf.net. If it's a bug in a production release, it gets assigned priority 9. Then respond to the user's post at the yahoo group with the tracker number. If you cannot confirm the bug, respond to the user's post and let them know what you tried. Request more information if it isn't clear what steps the user took. If the tracker was submitted to pcgen.sf.net, a code monkey would work on the item and mark it as closed once the code for it has been checked in. A data monkey would do the same thing for anything submitted to pcgendm.sf.net.

Scenario 2 - QA finds something
A QA monkey testing PCGen comes across an issue. This is reported to the pcgenqa yahoo group so others can confirm it. Once it's confirmed, one of the QA monkeys or one of the tracker monkeys can submit the bug in either pcgen.sf.net or pcgendm.net. It then follows the same process as scenario 1.

Note: Tracker can mean two things. It can refer to a member of the Tracker Monkey team, it can also refer to an item that has been submitted either as a bug report or feature request at a sourceforge site. Sourceforge, also referred to as SF, calls these list of reports as Trackers. This way bug reports and feature requests don't get lost and is a primary way we act on the feedback we receive from our users.

If you have time and talent, which team should you join? All the teams are always looking for new people to join. It's understood that there's a learning curve for anyone new, but we were all there once so we're all glad to help mentor any willing volunteers. PCGen is a lot of fun because it helps make our games more manageable and because the teams get along so well. If you get tired of one team, it's no problem to switch to another. If you're not sure which team to join and you think you fit the needs for a few of them - let us know and we'll be glad to put you wherever the most dire need currently resides.