<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://159.203.101.162/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=James</id>
	<title>PCGen Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://159.203.101.162/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=James"/>
	<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php/Special:Contributions/James"/>
	<updated>2026-05-13T23:52:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Joining_the_Code_Team&amp;diff=3917</id>
		<title>Joining the Code Team</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Joining_the_Code_Team&amp;diff=3917"/>
		<updated>2015-06-03T13:10:52Z</updated>

		<summary type="html">&lt;p&gt;James: Github update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
A list of what to do to join the code team&lt;br /&gt;
&lt;br /&gt;
=General steps=&lt;br /&gt;
&lt;br /&gt;
# Get a [http://groups.yahoo.com Yahoo Groups] id.&lt;br /&gt;
# Be sure to subscribe to the [http://groups.yahoo.com/group/pcgen_developers/ Developer's mailing list]&lt;br /&gt;
# Introduce yourself on the list&lt;br /&gt;
# Find the [http://games.groups.yahoo.com/group/pcgen/ pcgen] project on Yahoo! Groups and join.&lt;br /&gt;
# Get as many IM IDs as possible (most people use Pidgin, Meebo or Gaim) and get online with them.&lt;br /&gt;
# Also join the IRC channel #pcgen on ~DALnet &amp;amp; ~Freenode, we have our meetings and group discussions there in real time.&lt;br /&gt;
# Get the latest official version of PCGen from SF and run it.&lt;br /&gt;
# Get an id at [https://github.com/ GitHub].&lt;br /&gt;
# Find the [https://github.com/PCGen/pcgen/ pcgen] repository and [https://help.github.com/articles/fork-a-repo/ fork] it.&lt;br /&gt;
&lt;br /&gt;
=Your first change=&lt;br /&gt;
# Get your [[Basic Developer Setup|development environment set up]]&lt;br /&gt;
# Select an issue that interests you, either from our issues flagged as bitsize in the [http://jira.pcgen.org/secure/IssueNavigator.jspa?reset=true&amp;amp;mode=hide&amp;amp;jqlQuery=component+%3D+Bitesize+AND+project+%3D+CODE+AND+resolution+%3D+Unresolved+ORDER+BY+updated+DESC Code] and [http://jira.pcgen.org/secure/IssueNavigator.jspa?reset=true&amp;amp;mode=hide&amp;amp;jqlQuery=component+%3D+Bitesize+AND+project+%3D+NEWTAG+AND+resolution+%3D+Unresolved+ORDER+BY+updated+DESC New Tag] projects, or one you have encountered.&lt;br /&gt;
# Build a fix that fixes the bug or implements the new feature&lt;br /&gt;
# Test the fix, preferably by writing a unit test&lt;br /&gt;
# Submit the fix as a [https://help.github.com/articles/using-pull-requests/ pull request] to the pcgen repository.&lt;br /&gt;
# Your pull request will be reviewed and friendly feedback provided by one of the team.&lt;br /&gt;
&lt;br /&gt;
=Joining the team=&lt;br /&gt;
&lt;br /&gt;
# Once your pull request (PR) is accepted and merged, you're part of the code team.&lt;br /&gt;
# Your second PR should be adding your name to the team listing!&lt;br /&gt;
# Put your details in this wiki under the [[Code]] team!&lt;br /&gt;
&lt;br /&gt;
Any questions, don't hesitate to ask!&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_Instructions&amp;diff=3914</id>
		<title>Release Instructions</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_Instructions&amp;diff=3914"/>
		<updated>2015-05-25T21:40:30Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to follow when making a release of PCGen. If it is your first time, please check the prereqs section at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
The first time you run a release you will have to make sure you have the following tools available:&lt;br /&gt;
===Release Notes===&lt;br /&gt;
* Text editor&lt;br /&gt;
* Web browser&lt;br /&gt;
* Perl interpreter&lt;br /&gt;
* Perl modules: readonly (installed on Windows via ActivePerl's Perl Package Manager)&lt;br /&gt;
&lt;br /&gt;
===Release===&lt;br /&gt;
* Java SDK 1.6 (the one that includes the javac compiler)&lt;br /&gt;
* Gradle 1.x&lt;br /&gt;
* SVN&lt;br /&gt;
* Perl interpreter&lt;br /&gt;
* [http://nsis.sourceforge.net/Download NSIS]&lt;br /&gt;
&lt;br /&gt;
===Outstanding Issues===&lt;br /&gt;
You need to check JIRA for any outstanding issues to ensure the release meets our QA std.&lt;br /&gt;
&lt;br /&gt;
* Alpha releases require no Blockers, allow Critical only with Code lead exception&lt;br /&gt;
* Beta releases require no Blockers or Criticals&lt;br /&gt;
* RCs/final releases require no Blockers, Criticals, or Majors&lt;br /&gt;
&lt;br /&gt;
==Create Release Notes==&lt;br /&gt;
&lt;br /&gt;
# Update your local copy of pcgen from github&lt;br /&gt;
# Copy the previous set of release notes to pcgen-release-notes-nnn.html where nnn is the version number.&lt;br /&gt;
# Do a global replace of the old version number to the new version number, both as n.nn.n and nnnn&lt;br /&gt;
# Open Jira and for each project open the release notes for the version.&lt;br /&gt;
# Copy the html to the changelog section, changing h2 tags to h3.&lt;br /&gt;
# Update the What's New section with any high profile changes.&lt;br /&gt;
# Update the Thanks section with the list of people who committed during the cycle. The search filter &amp;quot;is:pr is:closed is:merged updated:&amp;gt;2015-02-09&amp;quot; is useful for triming the list of pull request to those included in the release.&lt;br /&gt;
# Commit the new release notes and notify pcgen_bod so they can review it.&lt;br /&gt;
# Notify pcgen dev and experimental lists of upcoming release, asking for autobuilds to be tested. Best to give 24 hours notice.&lt;br /&gt;
&lt;br /&gt;
==The Build==&lt;br /&gt;
# Using a clean directory with no changes to the pcgen files&lt;br /&gt;
# '''svn update''' the PCGen repository (5 mins)&lt;br /&gt;
# Release manager edits src/java/pcgen/gui/prop/PCGenProp.properties to set the release date, version number, contributors, etc. and commit the result (5 mins)&lt;br /&gt;
# If switching to or from RC mode, edit gradle.properties and adjust the version number to be in the correct format. e.g. 6.4.0RC1 or 6.4.0 &lt;br /&gt;
# Execute '''gradle clean prepareRelease slowtest''' in the pcgen directory and verify there are no failing Junit test. Also check if there are any &amp;quot;Unknown publisher&amp;quot; messages. If so you need to add new entries for the listed publishers to the gendatalist.pl script. (20 mins)&lt;br /&gt;
# Check Jira for any closed requests missing from the release notes. Steps 4 and 6 of 'Create Release Notes' section above can be used to assist here. (10 mins)&lt;br /&gt;
# Update the readme.md file with the what's new section of the release notes.&lt;br /&gt;
# Execute '''gradle fullZip''' or '''gradle buildNsis''' to generate a testing zip or exe. (3 mins)&lt;br /&gt;
# Smoke test the newly built pcgen full zip or exe.  (30 mins)&lt;br /&gt;
# Create a folder for the release under the [https://sourceforge.net/projects/pcgen/files/ File Manager]&lt;br /&gt;
# Upload the release notes using the File Manager to the release folder&lt;br /&gt;
# Run '''gradle pcgenRelease''' (which updates the gradlefiles and tags the SVN repository). (2 mins)&lt;br /&gt;
# Upload the release files to SourceForge. The quickest way is uploading via the web, the same way you uploaded the release notes etc. (10 mins)&lt;br /&gt;
# Update Readme.MD with the SHA256 checksums from target/SHA256-digests.txt. Upload the revised file and check-in. (5 mins)&lt;br /&gt;
# Notify PCGen_bod of the new release. (5 mins)&lt;br /&gt;
# PR Monkeys create a news item for the new release&lt;br /&gt;
# PR Monkeys send announcement to all pcgen mailing list for the new release&lt;br /&gt;
&lt;br /&gt;
==Update JIRA==&lt;br /&gt;
&lt;br /&gt;
For each of the projects, mark the version you are working on as released and create the next version if it doesn't already exist. When marking a version as released, please make sure the released date is set to today.&lt;br /&gt;
 &lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/CODE/versions Code Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/DATA/versions Data Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/DOCS/versions Documentation Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/NEWSOURCE/versions New Source Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/NEWTAG/versions New Tag Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/OS/versions Output Sheets Versions]&lt;br /&gt;
&lt;br /&gt;
==Mac Installer==&lt;br /&gt;
&lt;br /&gt;
See [http://pcgen.svn.sourceforge.net/viewvc/pcgen/Trunk/pcgen/installers/mac-installer/instructions.html Instructions]&lt;br /&gt;
&lt;br /&gt;
==Signing Files with PGP==&lt;br /&gt;
'''Historical only''' We used to use the [[http://www.gnupg.org/ GnuPG for Windows]] to generate the signatures. You will need the private key, either your own, or the PCGen one (contact the PCGen BOD). Once GnuPG is installed and knows about the key you wish to use, it is just a matter fo right clicking on the files to be signed (multi-select is fine) and selecting GPGee &amp;gt; Sign and then making sure the PCGen key is selected, hitting OK and entering the passphrase for the key. This creates an .asc signature file for each selected file.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Yes, even the best installs of all the program amount to nothing if there is a hitch. These are basic notes from the current issues cropping up and resolutions. These notes are not prettified yet. The idea being we will get a full set of troubleshooting tips and tricks here in the near future.&lt;br /&gt;
&lt;br /&gt;
Check your versions. &lt;br /&gt;
JDK1.5 is required with JAVA_HOME variable (see below)&lt;br /&gt;
SVN must be a true .exe install, TortoiseSVN will not meet this requirement&lt;br /&gt;
SVN exe can be found here [[http://subversion.tigris.org/files/documents/15/46531/Setup-Subversion-1.6.5.msi SVN]]&lt;br /&gt;
&lt;br /&gt;
My Computer &amp;gt; System &amp;gt; Advanced Settings:&lt;br /&gt;
For JAVA_HOME make sure it's a set System Variable and make sure it's using the correct path to your current installation base folder&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Meeting_2015_01_30&amp;diff=3901</id>
		<title>Meeting 2015 01 30</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Meeting_2015_01_30&amp;diff=3901"/>
		<updated>2015-01-31T01:39:20Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Board Meeting=&lt;br /&gt;
&lt;br /&gt;
==Attendance==&lt;br /&gt;
* Chair - Andrew Maitland&lt;br /&gt;
* Data 2nd - Doug Limmer&lt;br /&gt;
* OS 2nd - Stefan Radermacher&lt;br /&gt;
* Arch - Tom Parker&lt;br /&gt;
* Observer - David Bender&lt;br /&gt;
* Observer - Jeff (Swiftbrook)&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
* License will review newer sources finished this weekend&lt;br /&gt;
* Stefan will finish data reviews this weekend&lt;br /&gt;
* Doug is still working on Advanced Class Guide&lt;br /&gt;
* James will release 6.5.1 next weekend (Feb 7/8)&lt;br /&gt;
* Code Bug introduced for deities tab&lt;br /&gt;
* Deep Dive discussion by Tom:&lt;br /&gt;
** Proposed integrating the non-solver portion of the formula parser - this would allow the BOOLEAN functions that we're using for Archetypes and Racial Traits&lt;br /&gt;
** Brought up Performance issue for Trailing PRExxx&lt;br /&gt;
** Brought up thoughts about handling the PRE/REQ concepts and PRETHIS&lt;br /&gt;
** Discussed a solution for the REQ/PRE but would lose user feedback - re-thinking how to utilize that better&lt;br /&gt;
** Eluded to new tools for the data team&lt;br /&gt;
&lt;br /&gt;
==RAW LOG==&lt;br /&gt;
&lt;br /&gt;
* [15:01] &amp;lt;@Andrew[Chair]&amp;gt; I have 3pm PST/6pm EST&lt;br /&gt;
* [15:01] &amp;lt;@Andrew[Chair]&amp;gt; it's time according to my schedule&lt;br /&gt;
* [15:01] &amp;lt;@Andrew[Chair]&amp;gt; We want to wait another 5 minutes for James?&lt;br /&gt;
* [15:02] &amp;lt;Distant_Scholar&amp;gt; I just got an e-mail saying James won't make it (I imagine y'all did, too).&lt;br /&gt;
* [15:02] &amp;lt;@Andrew[Chair]&amp;gt; I didn't...&lt;br /&gt;
* [15:03] &amp;lt;Distant_Scholar&amp;gt; I got it on the BOD mailing list.&lt;br /&gt;
* [15:03] &amp;lt;Distant_Scholar&amp;gt; I'll (try to) copy it in below.&lt;br /&gt;
* [15:03] &amp;lt;Distant_Scholar&amp;gt; JD: Hi,  I'm not able to make today's meeting sorry&lt;br /&gt;
* [15:03] &amp;lt;Distant_Scholar&amp;gt; JD: Code report:&lt;br /&gt;
* [15:03] &amp;lt;Distant_Scholar&amp;gt; JD: * Welcome to Mark Cline who joined the code monkeys last week.&lt;br /&gt;
* [15:04] &amp;lt;Distant_Scholar&amp;gt; JD: * Some small non arch changes to the code&lt;br /&gt;
* [15:04] &amp;lt;Distant_Scholar&amp;gt; JD: * Aiming to put out 6.5.1 soon. Could be next weekend if everyone is ok with that.&lt;br /&gt;
* [15:04] &amp;lt;Distant_Scholar&amp;gt; JD: Cheers, James.&lt;br /&gt;
* [15:04] &amp;lt;@Andrew[Chair]&amp;gt; Okay, cool&lt;br /&gt;
* [15:04] &amp;lt;@Andrew[Chair]&amp;gt; Guess we should start then&lt;br /&gt;
* [15:04] &amp;lt;@Andrew[Chair]&amp;gt; *Bangs gavel*&lt;br /&gt;
* [15:05] &amp;lt;@Andrew[Chair]&amp;gt; Hi all, welcome to the PCGen Board of Directors meeting for January 30th, 1500 hours PST&lt;br /&gt;
* [15:05] &amp;lt;@Andrew[Chair]&amp;gt; Agenda:&lt;br /&gt;
* [15:05] &amp;lt;@Andrew[Chair]&amp;gt; Quick reports for immediate items&lt;br /&gt;
* [15:05] &amp;lt;@Andrew[Chair]&amp;gt; Nixed - Release Schedule (James isn't present)&lt;br /&gt;
* [15:05] &amp;lt;@Andrew[Chair]&amp;gt; Tom's Deep Dive Discussion&lt;br /&gt;
* [15:06] &amp;lt;Tom[Arch_SB]&amp;gt; Not sure if deep dive is useful without James&lt;br /&gt;
* [15:06] &amp;lt;Tom[Arch_SB]&amp;gt; that's really one of the sounding boards&lt;br /&gt;
* [15:06] &amp;lt;@Andrew[Chair]&amp;gt; Hm, well... We can pitch ideas at him.&lt;br /&gt;
* [15:07] &amp;lt;@Andrew[Chair]&amp;gt; He does read the reports too... :)&lt;br /&gt;
* [15:08] &amp;lt;@Andrew[Chair]&amp;gt; Okay, since the deep dive won't be happening as deeply, I'll just report my absent report blurb as well.&lt;br /&gt;
* [15:08] &amp;lt;@Andrew[Chair]&amp;gt; Content Report:&lt;br /&gt;
* [15:08] &amp;lt;@Andrew[Chair]&amp;gt; Data: Cleared two new sources into the release &amp;quot;Adventurer's Armory&amp;quot; and &amp;quot;AP #67&amp;quot;; waiting on Stefan to clear a few more sources now - Blood of the Moon, Taldor, Technology Guide. &lt;br /&gt;
* [15:08] &amp;lt;@Andrew[Chair]&amp;gt; I just finished coding up Inner Sea Combat - that's now off to License and Data for review. Doug is still working on Advanced Class Guide.&lt;br /&gt;
* [15:08] &amp;lt;@Andrew[Chair]&amp;gt; I had to redo the system that controlled Ranger Bonus Feats, and the Archetype control for the Ranger Combat Style. &lt;br /&gt;
* [15:08] &amp;lt;@Andrew[Chair]&amp;gt; We are in discussion about EQMOD naming standards, looks like we'll be doing real names to follow object naming like we do for equipment.&lt;br /&gt;
* [15:08] &amp;lt;@Andrew[Chair]&amp;gt; Documentation: Found a few bugs, but otherwise nothing is happening here.&lt;br /&gt;
* [15:09] &amp;lt;@Andrew[Chair]&amp;gt; Outputsheets: Working with Tom to update items to use the new FACT/FACTSET system. Stefan is working on a few issues.&lt;br /&gt;
* [15:09] &amp;lt;@Andrew[Chair]&amp;gt; That's it for Content&lt;br /&gt;
* [15:09] &amp;lt;@Andrew[Chair]&amp;gt; Questions before I post Paul's License report?&lt;br /&gt;
* [15:09] &amp;lt;Tom[Arch_SB]&amp;gt; not from me&lt;br /&gt;
* [15:09] &amp;lt;Distant_Scholar&amp;gt; There is someone else working on ACS; I forget who, though.  Andrew Wilson, maybe?&lt;br /&gt;
* [15:10] &amp;lt;@Andrew[Chair]&amp;gt; There's been a few.&lt;br /&gt;
* [15:10] &amp;lt;@Andrew[Chair]&amp;gt; I added a one-off contributor as well&lt;br /&gt;
* [15:11] &amp;lt;@Andrew[Chair]&amp;gt; Okay, Paul reports: I intend to have all the files for licensing cleared this weekend.&lt;br /&gt;
* [15:11] &amp;lt;@Andrew[Chair]&amp;gt; I haven't heard from Admin.&lt;br /&gt;
* [15:12] &amp;lt;@Andrew[Chair]&amp;gt; Tom, you're up. *passes talking stick*&lt;br /&gt;
* [15:12] &amp;lt;Tom[Arch_SB]&amp;gt; So as you mentioned, FACT/FACTSET went in with the new output models&lt;br /&gt;
* [15:12] &amp;lt;Tom[Arch_SB]&amp;gt; so working to add to those as necessary, will take a bunch of effort to get through those&lt;br /&gt;
* [15:13] &amp;lt;Tom[Arch_SB]&amp;gt; Looking further at the formula system and how that can be integrated, perhaps a short discussion on that at the end&lt;br /&gt;
* [15:13] &amp;lt;Tom[Arch_SB]&amp;gt; Main focus though is driving as much as we can to the new output system to try to decouple from the old output tokens/code&lt;br /&gt;
* [15:13] &amp;lt;Tom[Arch_SB]&amp;gt; that gives learning of what can be/has to be done in the OS and what macros and other things will be useful&lt;br /&gt;
* [15:14] &amp;lt;Tom[Arch_SB]&amp;gt; as what as what will still require some code support (hopefully very little)&lt;br /&gt;
* [15:15] &amp;lt;Tom[Arch_SB]&amp;gt; I also merged a change today that will hopefully quiet Jenkins&lt;br /&gt;
* [15:15] &amp;lt;@Andrew[Chair]&amp;gt; :-) Thank You&lt;br /&gt;
* [15:15] &amp;lt;Tom[Arch_SB]&amp;gt; lots of &amp;quot;administrative code cleanup&amp;quot; if you will&lt;br /&gt;
* [15:15] &amp;lt;Tom[Arch_SB]&amp;gt; any questions?&lt;br /&gt;
* [15:16] &amp;lt;@Andrew[Chair]&amp;gt; Not really a question, more of a &amp;quot;When you free to work on it?&amp;quot;&lt;br /&gt;
* [15:16] &amp;lt;Tom[Arch_SB]&amp;gt; We can cover that offline,  not sure how to predict that well&lt;br /&gt;
* [15:17] &amp;lt;@Zaister&amp;gt; good evening&lt;br /&gt;
* [15:17] &amp;lt;@Andrew[Chair]&amp;gt; Fair enough. Otherwise, no direct question. Just eager to hear what you want to share about the system changes.&lt;br /&gt;
* [15:17] &amp;lt;Tom[Arch_SB]&amp;gt; Hi Stefan&lt;br /&gt;
* [15:18] &amp;lt;@Andrew[Chair]&amp;gt; Hi Stefan&lt;br /&gt;
* [15:19] &amp;lt;@Zaister&amp;gt; Did we get the domain tabs stack trace fixed? That was caused by the FACT merge&lt;br /&gt;
* [15:19] &amp;lt;@Andrew[Chair]&amp;gt; Stefan, since you're here, you have anything to add to the reports or discussion? :)&lt;br /&gt;
* [15:19] &amp;lt;@Andrew[Chair]&amp;gt; (before we drag out more details from Tom)&lt;br /&gt;
* [15:19] &amp;lt;Tom[Arch_SB]&amp;gt; Didn't see that bug report, is there a JIRA for it?&lt;br /&gt;
* [15:19] &amp;lt;@Zaister&amp;gt; I hope I finally get the reviews done over the weekend, I have nothing more at the moment&lt;br /&gt;
* [15:19] &amp;lt;@Andrew[Chair]&amp;gt; I didn't see any report either.&lt;br /&gt;
* [15:20] &amp;lt;@Zaister&amp;gt; tom: I don't think so, but I get a stack trace everytime I run the program, and the deity list is empty. I think there was a list posting&lt;br /&gt;
* [15:20] &amp;lt;Tom[Arch_SB]&amp;gt; looks like James opened one&lt;br /&gt;
* [15:20] &amp;lt;Tom[Arch_SB]&amp;gt; CODE-2818&lt;br /&gt;
* [15:20] &amp;lt;Tom[Arch_SB]&amp;gt; I'll look at that&lt;br /&gt;
* [15:20] &amp;lt;Tom[Arch_SB]&amp;gt; thanks for the pointer&lt;br /&gt;
* [15:21] &amp;lt;@Zaister&amp;gt; cool&lt;br /&gt;
* [15:22] &amp;lt;@Andrew[Chair]&amp;gt; Okay Tom... you teased us about Formula parser stuff, fact/factset and some nifty super secret project... so discuss. :)&lt;br /&gt;
* [15:24] &amp;lt;Tom[Arch_SB]&amp;gt; Well, tonight is going to be on the formula parser&lt;br /&gt;
* [15:25] &amp;lt;Tom[Arch_SB]&amp;gt; There have been ongoing concerns about integration, and still trying to work through a decent way to do that&lt;br /&gt;
* [15:25] &amp;lt;Tom[Arch_SB]&amp;gt; Was thinking it might be good to integrate but in the initial pass, without any ability to do equations&lt;br /&gt;
* [15:25] &amp;lt;Tom[Arch_SB]&amp;gt; This sounds a bit strange, but it's actually still a lot of capability&lt;br /&gt;
* [15:25] *** PapaDRB has quit IRC: Quit: ~ Trillian Astra - www.trillian.im ~&lt;br /&gt;
* [15:25] &amp;lt;Tom[Arch_SB]&amp;gt; much of the FLAG stuff could work, so the data could be removing the current &amp;quot;it's a var but we're using it as a flag&amp;quot;&lt;br /&gt;
* [15:26] &amp;lt;Tom[Arch_SB]&amp;gt; which offloads BONUS and thus would help out&lt;br /&gt;
* [15:26] &amp;lt;Tom[Arch_SB]&amp;gt; also is better semantics&lt;br /&gt;
* [15:26] &amp;lt;Tom[Arch_SB]&amp;gt; I can also use the solving system internally to get rid of some code&lt;br /&gt;
* [15:26] &amp;lt;Tom[Arch_SB]&amp;gt; and make things more consistent and debuggable&lt;br /&gt;
* [15:27] &amp;lt;Tom[Arch_SB]&amp;gt; (anything passing through a solver would appear in the solver debugging system which was in the EqVar demo)&lt;br /&gt;
* [15:28] &amp;lt;Tom[Arch_SB]&amp;gt; It actually brings in the solver so we get some experience with it, starts to move data without trying the more risky rip up of formulas (but certainly reduces use of BONUS so there is less to worry about later)&lt;br /&gt;
* [15:28] &amp;lt;Tom[Arch_SB]&amp;gt; I think it's a good first step and wanted to get thoughts on that&lt;br /&gt;
* [15:28] &amp;lt;@Andrew[Chair]&amp;gt; Sounds really good to me. Ranger already proved we need that.&lt;br /&gt;
* [15:29] &amp;lt;@Andrew[Chair]&amp;gt; This means we'd get PREBOOL for the initial pass?&lt;br /&gt;
* [15:29] &amp;lt;Tom[Arch_SB]&amp;gt; Yes, that would be part of it&lt;br /&gt;
* [15:30] &amp;lt;@Andrew[Chair]&amp;gt; Archetypes would be a great test bed, see how that helps performance :)&lt;br /&gt;
* [15:30] &amp;lt;Tom[Arch_SB]&amp;gt; well...&lt;br /&gt;
* [15:30] &amp;lt;Tom[Arch_SB]&amp;gt; to set expectations....&lt;br /&gt;
* [15:30] &amp;lt;Tom[Arch_SB]&amp;gt; there are a few things in the performance issue category&lt;br /&gt;
* [15:30] &amp;lt;Tom[Arch_SB]&amp;gt; one is BONUS&lt;br /&gt;
* [15:30] *** Swiftbrook has quit IRC: Ping timeout: 246 seconds&lt;br /&gt;
* [15:30] &amp;lt;Tom[Arch_SB]&amp;gt; but one is having a trailing PRExxx at all&lt;br /&gt;
* [15:30] &amp;lt;Tom[Arch_SB]&amp;gt; so eventually we need to think in mental models that try to minimize trailing PRExxx&lt;br /&gt;
* [15:31] &amp;lt;Tom[Arch_SB]&amp;gt; (The default object trick, while useful to get around some issues PCGen has had and a few that it may still have is a long term issue)&lt;br /&gt;
* [15:31] &amp;lt;@Andrew[Chair]&amp;gt; If you have a better model to handle Archetypes, I'm very open to discussions.&lt;br /&gt;
* [15:32] &amp;lt;Tom[Arch_SB]&amp;gt; That's one thing I've been looking at to try to figure out a good model&lt;br /&gt;
* [15:32] &amp;lt;Tom[Arch_SB]&amp;gt; It's kind of an interesting problem&lt;br /&gt;
* [15:32] &amp;lt;Tom[Arch_SB]&amp;gt; was looking at Stefan's PRETHIS FREQ as well and want to find something better than that when it's &amp;quot;can't do another of &amp;lt;blah&amp;gt;&amp;quot;&lt;br /&gt;
* [15:33] &amp;lt;@Zaister&amp;gt; ah that one&lt;br /&gt;
* [15:33] &amp;lt;@Andrew[Chair]&amp;gt; Yeah, the basic PRExxx turn red issue, and that doesn't even touch the MULT:YES items&lt;br /&gt;
* [15:34] &amp;lt;Tom[Arch_SB]&amp;gt; it really highlights a few different things all at once.&lt;br /&gt;
* [15:34] &amp;lt;Tom[Arch_SB]&amp;gt; Well, that's what I think anyway, based on my research so far&lt;br /&gt;
* [15:34] &amp;lt;@Andrew[Chair]&amp;gt; Yes, many issues. All stem from no better solution has been presented to solve it.&lt;br /&gt;
* [15:34] &amp;lt;Tom[Arch_SB]&amp;gt; One is the &amp;quot;there is a &amp;lt;foo&amp;gt; modification performed by an archetype and once you have one that does that you can't take another&amp;quot;&lt;br /&gt;
* [15:35] &amp;lt;Tom[Arch_SB]&amp;gt; (that performs that mod)&lt;br /&gt;
* [15:35] &amp;lt;Tom[Arch_SB]&amp;gt; One is the red display issue, so it's really back to PRE/REQ&lt;br /&gt;
* [15:35] &amp;lt;Tom[Arch_SB]&amp;gt; and separating those concepts&lt;br /&gt;
* [15:35] &amp;lt;@Andrew[Chair]&amp;gt; Yes, separating concepts is a good idea.&lt;br /&gt;
* [15:36] &amp;lt;Tom[Arch_SB]&amp;gt; One of the big challenges is in communication back to the user&lt;br /&gt;
* [15:37] &amp;lt;Tom[Arch_SB]&amp;gt; I have at least one model that would work logically, but the info window wouldn't necessarily be able to say why it wasn't available&lt;br /&gt;
* [15:37] &amp;lt;Tom[Arch_SB]&amp;gt; I'm unsure what the reaction to that would be&lt;br /&gt;
* [15:37] &amp;lt;@Andrew[Chair]&amp;gt; Which situation is this?&lt;br /&gt;
* [15:38] &amp;lt;@Andrew[Chair]&amp;gt; Feedback is important for debugging issues&lt;br /&gt;
* [15:38] &amp;lt;Tom[Arch_SB]&amp;gt; Any Ability&lt;br /&gt;
* [15:38] &amp;lt;Tom[Arch_SB]&amp;gt; sorry, not the use case I'm talking about&lt;br /&gt;
* [15:38] &amp;lt;Tom[Arch_SB]&amp;gt; When you go in to select a Feat, for example&lt;br /&gt;
* [15:38] &amp;lt;Tom[Arch_SB]&amp;gt; Super Weapon Foo is red because you need to be specialized in something first&lt;br /&gt;
* [15:39] &amp;lt;Tom[Arch_SB]&amp;gt; right now, presumably, there is a PREFEAT:Weapon Specialization or whatever&lt;br /&gt;
* [15:39] &amp;lt;@Andrew[Chair]&amp;gt; yes&lt;br /&gt;
* [15:39] &amp;lt;Tom[Arch_SB]&amp;gt; (or maybe it's implicitly the choose?  I should actually check that)&lt;br /&gt;
* [15:39] &amp;lt;@Andrew[Chair]&amp;gt; PREABILITY:1,CATEGORY=Feat,Weapon Focus&lt;br /&gt;
* [15:39] &amp;lt;Tom[Arch_SB]&amp;gt; anyway, presume it's a PREFEAT for discussion&lt;br /&gt;
* [15:39] &amp;lt;Tom[Arch_SB]&amp;gt; ok&lt;br /&gt;
* [15:40] &amp;lt;Tom[Arch_SB]&amp;gt; so that PREABILITY produces text in the info window of &amp;quot;must have 1 of Ability (Feat ) Weapon Focus&amp;quot;&lt;br /&gt;
* [15:40] &amp;lt;Tom[Arch_SB]&amp;gt; or some such&lt;br /&gt;
* [15:40] &amp;lt;Tom[Arch_SB]&amp;gt; and that text will be red&lt;br /&gt;
* [15:40] &amp;lt;@Andrew[Chair]&amp;gt; yes&lt;br /&gt;
* [15:40] &amp;lt;Tom[Arch_SB]&amp;gt; since it's not met&lt;br /&gt;
* [15:40] &amp;lt;Tom[Arch_SB]&amp;gt; that's the text I'm talking about&lt;br /&gt;
* [15:40] &amp;lt;@Andrew[Chair]&amp;gt; okay&lt;br /&gt;
* [15:40] &amp;lt;Tom[Arch_SB]&amp;gt; I have a system that might dramatically simplify the data, but those would be lost&lt;br /&gt;
* [15:41] &amp;lt;Tom[Arch_SB]&amp;gt; but I suspect the &amp;quot;why can't I take this&amp;quot; might be important to some folks&lt;br /&gt;
* [15:41] &amp;lt;@Andrew[Chair]&amp;gt; Yes, we'd have an increase in help desk &amp;quot;calls&amp;quot;&lt;br /&gt;
* [15:41] &amp;lt;Tom[Arch_SB]&amp;gt; so not sure about that model and whether I can adapt it&lt;br /&gt;
* [15:42] &amp;lt;@Andrew[Chair]&amp;gt; So, silly question, why can't we just use a PRETEXT:Must have Weapon Focus to take this feat. ?&lt;br /&gt;
* [15:43] &amp;lt;Tom[Arch_SB]&amp;gt; two reasons&lt;br /&gt;
* [15:43] &amp;lt;@Andrew[Chair]&amp;gt; not sure if we need the color coding to indicate, but having a message on what is required regardless would be the minimal thing to me.&lt;br /&gt;
* [15:43] &amp;lt;Tom[Arch_SB]&amp;gt; one would be data sprawl&lt;br /&gt;
* [15:43] &amp;lt;Tom[Arch_SB]&amp;gt; the other is... hard to explain&lt;br /&gt;
* [15:44] &amp;lt;Tom[Arch_SB]&amp;gt; This isn't what I'm thinking, so dont' take it AT ALL literally, but imagine the ability to do a PREOTHER to apply a PRE to another object&lt;br /&gt;
* [15:44] &amp;lt;Tom[Arch_SB]&amp;gt; you'd need the PRETEXTOTHER as well&lt;br /&gt;
* [15:44] &amp;lt;Tom[Arch_SB]&amp;gt; hmm&lt;br /&gt;
* [15:44] &amp;lt;Tom[Arch_SB]&amp;gt; that's interesting though&lt;br /&gt;
* [15:44] &amp;lt;Tom[Arch_SB]&amp;gt; let me think on that&lt;br /&gt;
* [15:44] &amp;lt;Tom[Arch_SB]&amp;gt; there are ways something like that could work&lt;br /&gt;
* [15:45] &amp;lt;Tom[Arch_SB]&amp;gt; maybe&lt;br /&gt;
* [15:45] &amp;lt;Tom[Arch_SB]&amp;gt; need more brainpower than I have after a long week :/&lt;br /&gt;
* [15:45] &amp;lt;@Andrew[Chair]&amp;gt; PREOTHER is an interesting concept...&lt;br /&gt;
* [15:45] &amp;lt;Tom[Arch_SB]&amp;gt; don't even go there&lt;br /&gt;
* [15:45] &amp;lt;@Andrew[Chair]&amp;gt; :P&lt;br /&gt;
* [15:45] &amp;lt;Tom[Arch_SB]&amp;gt; the goal is less PRExxx not more&lt;br /&gt;
* [15:45] &amp;lt;@Andrew[Chair]&amp;gt; You brought it up.&lt;br /&gt;
* [15:45] &amp;lt;Tom[Arch_SB]&amp;gt; as an analogy&lt;br /&gt;
* [15:46] &amp;lt;@Andrew[Chair]&amp;gt; Okay, so model with deficiencies to be thought about later.&lt;br /&gt;
* [15:47] &amp;lt;@Andrew[Chair]&amp;gt; Did that tie into less trailing PRExxx?&lt;br /&gt;
* [15:48] &amp;lt;Tom[Arch_SB]&amp;gt; yes&lt;br /&gt;
* [15:49] &amp;lt;@Andrew[Chair]&amp;gt; All right, so for now, PREBOOL will allow a smooth switch over, performance might not improve due to the prexxx trailing issue.&lt;br /&gt;
* [15:50] &amp;lt;@Andrew[Chair]&amp;gt; but it will be less to migrate when we integrate more of the formula system.&lt;br /&gt;
* [15:50] &amp;lt;Tom[Arch_SB]&amp;gt; It will improve some&lt;br /&gt;
* [15:50] &amp;lt;Tom[Arch_SB]&amp;gt; since the system will only solve once not every loop&lt;br /&gt;
* [15:50] &amp;lt;Tom[Arch_SB]&amp;gt; just not as dramatic as one might hope for&lt;br /&gt;
* [15:50] &amp;lt;Tom[Arch_SB]&amp;gt; need a more dramatic data architecture change to get that&lt;br /&gt;
* [15:51] &amp;lt;Tom[Arch_SB]&amp;gt; and you guys need new tools before that is a reasonable request&lt;br /&gt;
* [15:51] &amp;lt;@Andrew[Chair]&amp;gt; hm, sounds good, but you do understand how archetypes work right?&lt;br /&gt;
* [15:51] &amp;lt;@Andrew[Chair]&amp;gt; when you say &amp;quot;solve once&amp;quot; I don't want to have an issue with things not updating when an archetype is taken&lt;br /&gt;
* [15:52] &amp;lt;Tom[Arch_SB]&amp;gt; solve once means solve once&lt;br /&gt;
* [15:52] &amp;lt;Tom[Arch_SB]&amp;gt; it &amp;quot;knows&amp;quot; dependencies&lt;br /&gt;
* [15:53] &amp;lt;@Andrew[Chair]&amp;gt; Okay, as long as it works. I'm happy. Just jumping on potential issues before we get to converting.&lt;br /&gt;
* [15:53] &amp;lt;@Andrew[Chair]&amp;gt; When would you plan on implementing this phase of the Formula System Parser then?&lt;br /&gt;
* [15:54] &amp;lt;Tom[Arch_SB]&amp;gt; Need to get the git infrastructure set up first&lt;br /&gt;
* [15:54] &amp;lt;Tom[Arch_SB]&amp;gt; James helped me the first part of that a bit ago, but we need to finish that up so I understand the setup&lt;br /&gt;
* [15:54] &amp;lt;@Andrew[Chair]&amp;gt; ok&lt;br /&gt;
* [15:54] *** Swiftbrook has joined #pcgen&lt;br /&gt;
* [15:54] &amp;lt;Tom[Arch_SB]&amp;gt; then it's in a git sandbox anyway and we can figure out what the criteria are for swapping it in&lt;br /&gt;
* [15:55] &amp;lt;Tom[Arch_SB]&amp;gt; kind of like we did with FACT/FACTSET&lt;br /&gt;
* [15:55] &amp;lt;Tom[Arch_SB]&amp;gt; there is some research required to make sure there aren't nasty issues&lt;br /&gt;
* [15:55] &amp;lt;Tom[Arch_SB]&amp;gt; so it may be a slower integration&lt;br /&gt;
* [15:55] &amp;lt;@Andrew[Chair]&amp;gt; Sounds like about a month out if not more then&lt;br /&gt;
* [15:55] &amp;lt;Tom[Arch_SB]&amp;gt; I don't have a good sense to put a calendar up for it though&lt;br /&gt;
* [15:56] &amp;lt;Tom[Arch_SB]&amp;gt; I'd like to have it running in git within a few weeks, then figure it out from there&lt;br /&gt;
* [15:56] &amp;lt;Tom[Arch_SB]&amp;gt; I'm not sure I have deep time to invest until mid Feb anyway&lt;br /&gt;
* [15:57] &amp;lt;Tom[Arch_SB]&amp;gt; any other ?, I need to duck out at 7&lt;br /&gt;
* [15:57] &amp;lt;@Andrew[Chair]&amp;gt; Okay, and I presume the new data tools comment was for finishing up the DSL discussion.&lt;br /&gt;
* [15:57] &amp;lt;Tom[Arch_SB]&amp;gt; no&lt;br /&gt;
* [15:57] &amp;lt;Tom[Arch_SB]&amp;gt; those are unrelated&lt;br /&gt;
* [15:58] &amp;lt;@Andrew[Chair]&amp;gt; New toys then, goodie :)  Okay, I've got nothing else to ask. Anyone else in the last minute or so?&lt;br /&gt;
* [15:58] &amp;lt;Distant_Scholar&amp;gt; Not me.&lt;br /&gt;
* [16:00] &amp;lt;@Andrew[Chair]&amp;gt; Thanks for coming everyone. Meeting adjourned *Bangs gavel*&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Building_PCGen&amp;diff=3826</id>
		<title>Building PCGen</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Building_PCGen&amp;diff=3826"/>
		<updated>2014-12-20T10:32:41Z</updated>

		<summary type="html">&lt;p&gt;James: Update info to reflect move to gradle wrapper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
=Building PCGen from the command line=&lt;br /&gt;
&lt;br /&gt;
This process uses the [[Gradle]] tool, you need the following software packages:&lt;br /&gt;
&lt;br /&gt;
* Java Development Kit (aka Java SDK or JDK). You should use the latest version (update) of the JDK 6.0 available for download from [http://www.oracle.com/technetwork/java/javase/downloads/index.html here]. At the time of writing this was Java SE 6 Update 45. Java 7 will also work, but no 1.7 specific features should be used in the code just yet. Other JDKs might work, but no one has tried.&lt;br /&gt;
* You will also need the latest version of the PCGen source code available from SVN. See [[Subversion Setup]] for details.&lt;br /&gt;
&lt;br /&gt;
Open a command window and change to the root directory/folder where you installed the PCGen source code. There should be a file called build.gradle there.&lt;br /&gt;
&lt;br /&gt;
Type gradlew at the command prompt. This will make sure you have a clean start and then build the pcgen.jar file. You can start pcgen.jar, pcgen.exe or pcgendev.sh to run it or manually run the jar file using a command line like&lt;br /&gt;
&amp;lt;pre&amp;gt;java -Xmx1024M -jar pcgen.jar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generate the JavaDocs use gradlew javadoc. To run all the tests use gradlew slowtest (which can take a while).&lt;br /&gt;
&lt;br /&gt;
Typing the command &amp;lt;pre&amp;gt;gradlew&amp;lt;/pre&amp;gt; will clean the project, build the code and run a small selection of tests.&lt;br /&gt;
&lt;br /&gt;
Typing the command &amp;lt;pre&amp;gt;gradlew slowtest&amp;lt;/pre&amp;gt; will build the code and run the full test suite and produce a report.&lt;br /&gt;
&lt;br /&gt;
=Using Eclipse to build PCGen=&lt;br /&gt;
&lt;br /&gt;
You can build PCGen from within Eclipse. It is configured by default to use the gradle dependencies however you will need the &amp;quot;Gradle Integration for Eclipse&amp;quot; plugin which can be installed free from the Eclipse Marketplace.&lt;br /&gt;
&lt;br /&gt;
Once installed, Eclipse will share the jars as specified in build.gradle. You can also accesa gradle tasks from within Eclipse using the &amp;quot;Window &amp;gt; Show View &amp;gt; Other&amp;quot; menu and then selecting &amp;quot;Gradle Tasks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Running and debugging==&lt;br /&gt;
&lt;br /&gt;
# Open the PCGen project.&lt;br /&gt;
# Open the Run dialog by right-clicking on the PCGen project and selecting Run As &amp;gt; Run Configurations&lt;br /&gt;
# Select the Java Application node.&lt;br /&gt;
# Press the New button for a new configuration. Edit by field, thus:&lt;br /&gt;
Name -&amp;gt; PCGen&lt;br /&gt;
&lt;br /&gt;
Main class -&amp;gt; pcgen.system.Main&lt;br /&gt;
&lt;br /&gt;
VM arguments (Arguments tab) -&amp;gt; -Xmx1024M&lt;br /&gt;
# Press Apply to save the configuration.&lt;br /&gt;
# Press Run to start PCGen.&lt;br /&gt;
&lt;br /&gt;
You can also run a single test by right clicking on the test and selecting Debug &amp;gt; JUnit Test. This is a great way to track through a bug too.&lt;br /&gt;
&lt;br /&gt;
=Using IDEA to build PCGen=&lt;br /&gt;
&lt;br /&gt;
You can build PCGen from within IntelliJ IDEA. Intellij will recognize the Gradle build for the project and provide access to the tasks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Running and debugging==&lt;br /&gt;
&lt;br /&gt;
NB - IDEA will build the software sufficient for running and debugging within the IDE automatically just by following these step. This is not the same as the build from the Building section, above, which builds the software suitable for command-line use.&lt;br /&gt;
&lt;br /&gt;
# Open the PCGen.ipr project file.&lt;br /&gt;
# Get the Run/Debug Configurations dialog with Run &amp;gt; Edit Configurations from the menu bar.&lt;br /&gt;
# Select the Application tab.&lt;br /&gt;
# Press the [+] button for a new configuration. Edit by field, thus:&lt;br /&gt;
Name -&amp;gt; PCGen&lt;br /&gt;
&lt;br /&gt;
Main class -&amp;gt; pcgen.system.Main&lt;br /&gt;
# Uncheck Display settings before running/debugging.&lt;br /&gt;
# Press Ok.&lt;br /&gt;
&lt;br /&gt;
You can now run PCGen with the green right-pointing triangle on the toolbar and debug with the green right-facing beetle on a blue diamond. Or just use the Run menu.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Building_PCGen&amp;diff=3726</id>
		<title>Building PCGen</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Building_PCGen&amp;diff=3726"/>
		<updated>2014-09-07T07:36:54Z</updated>

		<summary type="html">&lt;p&gt;James: Indicate gradle 2 does not work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
=Building PCGen from the command line=&lt;br /&gt;
&lt;br /&gt;
This process uses the [[Gradle]] tool, you need the following software packages:&lt;br /&gt;
&lt;br /&gt;
* Java Development Kit (aka Java SDK or JDK). You should use the latest version (update) of the JDK 6.0 available for download from [http://www.oracle.com/technetwork/java/javase/downloads/index.html here]. At the time of writing this was Java SE 6 Update 45. Java 7 will also work, but no 1.7 specific features should be used in the code just yet. Other JDKs might work, but no one has tried.&lt;br /&gt;
* Gradle 1.12 (not later - we know Gradle v2 does not work for us) from [http://www.gradle.org/ here]. Gradle is fully cross-platform Java based build tool. See [[Gradle]] section for further details&lt;br /&gt;
* You will also need the latest version of the PCGen source code available from SVN. See [[Subversion Setup]] for details.&lt;br /&gt;
&lt;br /&gt;
Open a command window and change to the root directory/folder where you installed the PCGen source code. There should be a file called build.gradle there.&lt;br /&gt;
&lt;br /&gt;
Type gradle at the command prompt. This will make sure you have a clean start and then build the pcgen.jar file. You can start pcgen.jar, pcgen.exe or pcgendev.sh to run it or manually run the jar file using a command line like&lt;br /&gt;
&amp;lt;pre&amp;gt;java -Xmx1024M -jar pcgen.jar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generate the JavaDocs use gradle javadoc. To run all the tests use gradle slowtest (which can take a while).&lt;br /&gt;
&lt;br /&gt;
Typing the command &amp;lt;pre&amp;gt;gradle&amp;lt;/pre&amp;gt; will clean the project, build the code and run a small selection of tests.&lt;br /&gt;
&lt;br /&gt;
Typing the command &amp;lt;pre&amp;gt;gradle slowtest&amp;lt;/pre&amp;gt; will build the code and run the full test suite and produce a report.&lt;br /&gt;
&lt;br /&gt;
=Using Eclipse to build PCGen=&lt;br /&gt;
&lt;br /&gt;
You can build PCGen from within Eclipse. It is configured by default to use the gradle dependencies however you will need the &amp;quot;Gradle Integration for Eclipse&amp;quot; plugin which can be installed free from the Eclipse Marketplace.&lt;br /&gt;
&lt;br /&gt;
Once installed, Eclipse will share the jars as specified in build.gradle. You can also acces gradle tasks from within Eclipse using the &amp;quot;Window &amp;gt; Show View &amp;gt; Other&amp;quot; menu and then selecting &amp;quot;Gradle Tasks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Running and debugging==&lt;br /&gt;
&lt;br /&gt;
# Open the PCGen project.&lt;br /&gt;
# Open the Run dialog by right-clicking on the PCGen project and selecting Run As &amp;gt; Run Configurations&lt;br /&gt;
# Select the Java Application node.&lt;br /&gt;
# Press the New button for a new configuration. Edit by field, thus:&lt;br /&gt;
Name -&amp;gt; PCGen&lt;br /&gt;
&lt;br /&gt;
Main class -&amp;gt; pcgen.system.Main&lt;br /&gt;
&lt;br /&gt;
VM arguments (Arguments tab) -&amp;gt; -Xmx1024M&lt;br /&gt;
# Press Apply to save the configuration.&lt;br /&gt;
# Press Run to start PCGen.&lt;br /&gt;
&lt;br /&gt;
You can also run a single test by right clicking on the test and selecting Debug &amp;gt; JUnit Test. This is a great way to track through a bug too.&lt;br /&gt;
&lt;br /&gt;
=Using IDEA to build PCGen=&lt;br /&gt;
&lt;br /&gt;
You can build PCGen from within IDEA. You will need to do a little bit of setup first though:&lt;br /&gt;
# Go to the Window &amp;gt; Tool Windows &amp;gt; Ant Build. Press the [+] button to add a build file.&lt;br /&gt;
# Navigate to and select the build.xml Ant script in the root of the PCGen project tree. Press Ok.&lt;br /&gt;
&lt;br /&gt;
You can now select any Ant target you wish. Particularly helpful are the build and fetch-data targets.&lt;br /&gt;
&lt;br /&gt;
==Running and debugging==&lt;br /&gt;
&lt;br /&gt;
NB - IDEA will build the software sufficient for running and debugging within the IDE automatically just by following these step. This is not the same as the build from the Building section, above, which builds the software suitable for command-line use.&lt;br /&gt;
&lt;br /&gt;
# Open the PCGen.ipr project file.&lt;br /&gt;
# Get the Run/Debug Configurations dialog with Run &amp;gt; Edit Configurations from the menu bar.&lt;br /&gt;
# Select the Application tab.&lt;br /&gt;
# Press the [+] button for a new configuration. Edit by field, thus:&lt;br /&gt;
Name -&amp;gt; PCGen&lt;br /&gt;
&lt;br /&gt;
Main class -&amp;gt; pcgen.system.Main&lt;br /&gt;
# Uncheck Display settings before running/debugging.&lt;br /&gt;
# Press Ok.&lt;br /&gt;
&lt;br /&gt;
You can now run PCGen with the green right-pointing triangle on the toolbar and debug with the green right-facing beetle on a blue diamond. Or just use the Run menu.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_Instructions&amp;diff=3722</id>
		<title>Release Instructions</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_Instructions&amp;diff=3722"/>
		<updated>2014-09-05T11:52:07Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to follow when making a release of PCGen. If it is your first time, please check the prereqs section at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
The first time you run a release you will have to make sure you have the following tools available:&lt;br /&gt;
===Release Notes===&lt;br /&gt;
* Text editor&lt;br /&gt;
* Web browser&lt;br /&gt;
* Perl interpreter&lt;br /&gt;
* Perl modules: readonly (installed on Windows via ActivePerl's Perl Package Manager)&lt;br /&gt;
&lt;br /&gt;
===Release===&lt;br /&gt;
* Java SDK 1.6 (the one that includes the javac compiler)&lt;br /&gt;
* Gradle 1.x&lt;br /&gt;
* SVN&lt;br /&gt;
* Perl interpreter&lt;br /&gt;
* [http://nsis.sourceforge.net/Download NSIS]&lt;br /&gt;
&lt;br /&gt;
===Outstanding Issues===&lt;br /&gt;
You need to check JIRA for any outstanding issues to ensure the release meets our QA std.&lt;br /&gt;
&lt;br /&gt;
* Alpha releases require no Blockers, allow Critical only with Code lead exception&lt;br /&gt;
* Beta releases require no Blockers or Criticals&lt;br /&gt;
* RCs/final releases require no Blockers, Criticals, or Majors&lt;br /&gt;
&lt;br /&gt;
==Create Release Notes==&lt;br /&gt;
&lt;br /&gt;
# Update your local copy of pcgen from SVN&lt;br /&gt;
# Copy the previous set of release notes to pcgen-release-notes-nnn.html where nnn is the version number.&lt;br /&gt;
# Do a global replace of the old version number to the new version number, both as n.nn.n and nnnn&lt;br /&gt;
# Open Jira and for each project open the release notes for the version.&lt;br /&gt;
# Copy the html to the changelog section, changing h2 tags to h3.&lt;br /&gt;
# Update the What's New section with any high profile changes.&lt;br /&gt;
# Update the Thanks section with the list of people who committed during the cycle.&lt;br /&gt;
# Commit the new release notes and notify pcgen_bod so they can review it.&lt;br /&gt;
# Notify pcgen dev and experimental lists of upcoming release, asking for autobuilds to be tested. Best to give 24 hours notice.&lt;br /&gt;
&lt;br /&gt;
==The Build==&lt;br /&gt;
# Using a clean directory with no changes to the pcgen files&lt;br /&gt;
# '''svn update''' the PCGen repository (5 mins)&lt;br /&gt;
# Release manager edits src/java/pcgen/gui/prop/PCGenProp.properties to set the release date, version number, contributors, etc. and commit the result (5 mins)&lt;br /&gt;
# If switching to or from RC mode, edit gradle.properties and adjust the version number to be in the correct format. e.g. 6.4.0RC1 or 6.4.0 &lt;br /&gt;
# Execute '''gradle clean prepareRelease slowtest''' in the pcgen directory and verify there are no failing Junit test. Also check if there are any &amp;quot;Unknown publisher&amp;quot; messages. If so you need to add new entries for the listed publishers to the gendatalist.pl script. (20 mins)&lt;br /&gt;
# Check Jira for any closed requests missing from the release notes. Steps 4 and 6 of 'Create Release Notes' section above can be used to assist here. (10 mins)&lt;br /&gt;
# Update the readme.md file with the what's new section of the release notes.&lt;br /&gt;
# Execute '''gradle fullZip''' or '''gradle buildNsis''' to generate a testing zip or exe. (3 mins)&lt;br /&gt;
# Smoke test the newly built pcgen full zip or exe.  (30 mins)&lt;br /&gt;
# Create a folder for the release under the [https://sourceforge.net/projects/pcgen/files/ File Manager]&lt;br /&gt;
# Upload the release notes using the File Manager to the release folder&lt;br /&gt;
# Run '''gradle pcgenRelease''' (which updates the gradlefiles and tags the SVN repository). (2 mins)&lt;br /&gt;
# Upload the release files to SourceForge. The quickest way is uploading via the web, the same way you uploaded the release notes etc. (10 mins)&lt;br /&gt;
# Update Readme.MD with the SHA256 checksums from target/SHA256-digests.txt. Upload the revised file and check-in. (5 mins)&lt;br /&gt;
# Notify PCGen_bod of the new release. (5 mins)&lt;br /&gt;
# PR Monkeys create a news item for the new release&lt;br /&gt;
# PR Monkeys send announcement to all pcgen mailing list for the new release&lt;br /&gt;
&lt;br /&gt;
==Update JIRA==&lt;br /&gt;
&lt;br /&gt;
For each of the projects, mark the version you are working on as released and create the next version if it doesn't already exist. When marking a version as released, please make sure the released date is set to today.&lt;br /&gt;
 &lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/CODE/versions Code Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/DATA/versions Data Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/DOCS/versions Documentation Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/NEWSOURCE/versions New Source Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/NEWTAG/versions New Tag Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/OS/versions Output Sheets Versions]&lt;br /&gt;
&lt;br /&gt;
==Mac Installer==&lt;br /&gt;
&lt;br /&gt;
See [http://pcgen.svn.sourceforge.net/viewvc/pcgen/Trunk/pcgen/installers/mac-installer/instructions.html Instructions]&lt;br /&gt;
&lt;br /&gt;
==Signing Files with PGP==&lt;br /&gt;
'''Historical only''' We used to use the [[http://www.gnupg.org/ GnuPG for Windows]] to generate the signatures. You will need the private key, either your own, or the PCGen one (contact the PCGen BOD). Once GnuPG is installed and knows about the key you wish to use, it is just a matter fo right clicking on the files to be signed (multi-select is fine) and selecting GPGee &amp;gt; Sign and then making sure the PCGen key is selected, hitting OK and entering the passphrase for the key. This creates an .asc signature file for each selected file.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Yes, even the best installs of all the program amount to nothing if there is a hitch. These are basic notes from the current issues cropping up and resolutions. These notes are not prettified yet. The idea being we will get a full set of troubleshooting tips and tricks here in the near future.&lt;br /&gt;
&lt;br /&gt;
Check your versions. &lt;br /&gt;
JDK1.5 is required with JAVA_HOME variable (see below)&lt;br /&gt;
SVN must be a true .exe install, TortoiseSVN will not meet this requirement&lt;br /&gt;
SVN exe can be found here [[http://subversion.tigris.org/files/documents/15/46531/Setup-Subversion-1.6.5.msi SVN]]&lt;br /&gt;
&lt;br /&gt;
My Computer &amp;gt; System &amp;gt; Advanced Settings:&lt;br /&gt;
For JAVA_HOME make sure it's a set System Variable and make sure it's using the correct path to your current installation base folder&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Code&amp;diff=3695</id>
		<title>Code</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Code&amp;diff=3695"/>
		<updated>2014-07-19T21:54:02Z</updated>

		<summary type="html">&lt;p&gt;James: /* Developer Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Welcome to the Wiki section for the Code Monkey team!&lt;br /&gt;
&lt;br /&gt;
=Mission Statement=&lt;br /&gt;
'''TBA'''&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* [[Developers Meeting]]&lt;br /&gt;
* [[Dev Meeting Log 20090429]]&lt;br /&gt;
* [[Dev Meeting Log 20090815]]&lt;br /&gt;
* [[Dev Meeting Log 20090911]]&lt;br /&gt;
* [[Dev Meeting Log 20091017]]&lt;br /&gt;
* [[Dev Meeting Log 20091114]]&lt;br /&gt;
* [[Dev Meeting Log 20120309]]&lt;br /&gt;
* [[Dev Meeting Log 20120429]]&lt;br /&gt;
* [[Dev Meeting Log 20121103]]&lt;br /&gt;
* [[Dev Meeting Log 20140627]]&lt;br /&gt;
&lt;br /&gt;
==For New Starters==&lt;br /&gt;
* [[Joining the Code Team]] General steps to take to prepare yourself&lt;br /&gt;
* [[Code Monkey Introduction]]&lt;br /&gt;
&lt;br /&gt;
==Developer Environment==&lt;br /&gt;
* [[Basic Developer Setup]]&lt;br /&gt;
* [[Subversion Setup]]&lt;br /&gt;
* [[Merging]] with SVN&lt;br /&gt;
* [[Building PCGen]], also see [[Gradle]]&lt;br /&gt;
* [[Continuous Integration]]&lt;br /&gt;
&lt;br /&gt;
==Coding==&lt;br /&gt;
* [[Coding Standards]]&lt;br /&gt;
* [[Deprecating a Token]]&lt;br /&gt;
* [[Explanation of the Code Base]]&lt;br /&gt;
* [[PCGen Code Exploration Almanac]]&lt;br /&gt;
* [[Graph Theory]]&lt;br /&gt;
* [[Logging in the Code Base]]&lt;br /&gt;
* [[Unit Testing]]&lt;br /&gt;
* [[Removing Libraries]]&lt;br /&gt;
* [[Unnecessary Code Detector]]&lt;br /&gt;
&lt;br /&gt;
=Completed Sub Projects=&lt;br /&gt;
* [[Ability Object TODO List]]&lt;br /&gt;
* [[LST_Editor_Verification]]&lt;br /&gt;
&lt;br /&gt;
=Open Sub Projects=&lt;br /&gt;
* [[Internationalization]]&lt;br /&gt;
* [[CDOM]]&lt;br /&gt;
* [[UI Overhaul]]&lt;br /&gt;
* [[LST_Editor]]&lt;br /&gt;
* [[Major Code Projects]]&lt;br /&gt;
* [[Template Engine]]&lt;br /&gt;
&lt;br /&gt;
=Active Team Members=&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Silverback|Silverback]]===&lt;br /&gt;
* [[James Dempsey]]&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Second|2nd]]===&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Chimp|Chimp]]===&lt;br /&gt;
* [[Tom Parker]]&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Gibbon|Gibbon]]===&lt;br /&gt;
* Jayme Cox&lt;br /&gt;
* [[Stefan Radermacher]]&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Tamarin|Tamarin]]===&lt;br /&gt;
* [[Andrew Wilson]]&lt;br /&gt;
* [[Martijn Verburg]]&lt;br /&gt;
* [[Connor Petty]]&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Lemur|Lemur]]===&lt;br /&gt;
* [[Eddy Anthony]]&lt;br /&gt;
* Per Christian Henden&lt;br /&gt;
* Thomas Cooper &lt;br /&gt;
* [[Tod Milam]] - Mac Developer&lt;br /&gt;
* [[Kim Winz]]&lt;br /&gt;
&lt;br /&gt;
===[[X-Terminator Mark II]]===&lt;br /&gt;
* [[Greg Bingleman]] - [http://www.codemonkeypublishing.com Code Monkey Publishing]&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
* Brad Stiles, SVN advice&lt;br /&gt;
* Jason Buchanan, Advice on old code&lt;br /&gt;
* [[Jonas Karlson]], Advice on old code&lt;br /&gt;
&lt;br /&gt;
=Passive Team Members=&lt;br /&gt;
&lt;br /&gt;
* B. K. Oxley (Provides IntelliJ licenses)&lt;br /&gt;
&lt;br /&gt;
=Inactive Team Members=&lt;br /&gt;
&lt;br /&gt;
===[[Explanation_of_Teams#2nd|2nd]]===&lt;br /&gt;
* Devon Jones&lt;br /&gt;
&lt;br /&gt;
===[[Explanation_of_Teams#Chimp|Chimp]]===&lt;br /&gt;
* Aaron Divinsky&lt;br /&gt;
&lt;br /&gt;
===[[Explanation_of_Teams#Tamarin|Tamarin]]===&lt;br /&gt;
* Andriy Sen&lt;br /&gt;
* [[Kevin Fernandes]]&lt;br /&gt;
* [[Koen Van Daele]]&lt;br /&gt;
* [[Joe Frazier, Jr.]]&lt;br /&gt;
* Per Christian Henden&lt;br /&gt;
&lt;br /&gt;
===[[Explanation_of_Teams#Lemur|Lemur]]===&lt;br /&gt;
* Bill Neumann&lt;br /&gt;
* Dan Parks&lt;br /&gt;
* [[Eduard Martinescu]]&lt;br /&gt;
* Eric Jarman&lt;br /&gt;
* Jasper Spaans&lt;br /&gt;
* Julio Esslinger Viegas&lt;br /&gt;
* Peter Barker&lt;br /&gt;
* [[Rick Ryker]]&lt;br /&gt;
* Thomas Clegg&lt;br /&gt;
* Tony Lavalle&lt;br /&gt;
* Hades Lucifer [7/20/10]&lt;br /&gt;
* Josh Johnston [7/20/10]&lt;br /&gt;
* MotorViper    [7/20/10]&lt;br /&gt;
* [[Steven West]] [7/20/10]&lt;br /&gt;
* [[Alec Ross]] [7/20/10]&lt;br /&gt;
* [[Tir Gwaith]] [7/20/10]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
* [[Andargor]], Suggestions&lt;br /&gt;
* [[Bryan McRoberts]], Advice on old code&lt;br /&gt;
* Kurt Wimmer, Suggestions&lt;br /&gt;
* Walter Duncan, Held the old pcgen_autobuild user&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Gradle&amp;diff=3686</id>
		<title>Gradle</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Gradle&amp;diff=3686"/>
		<updated>2014-07-05T07:32:11Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
[[File:Gradle_logo.gif]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
PCGen is now built using the Gradle build tool. &lt;br /&gt;
&lt;br /&gt;
=Installing Gradle=&lt;br /&gt;
&lt;br /&gt;
See [[http://www.gradle.org/docs/current/userguide/installation.html Gradle Install Guide]] for a tutorial on installing Gradle. It is pretty simple though.&lt;br /&gt;
&lt;br /&gt;
=Main Tasks=&lt;br /&gt;
&lt;br /&gt;
These are the tasks which you are more likely to use everyday. All tasks are run using gradle taskname . If you run gradle without any tasks it will run clean and build by default. Tasks names are not case sensitive.&lt;br /&gt;
&lt;br /&gt;
===clean===&lt;br /&gt;
&lt;br /&gt;
Clean erases all output from previous builds and sets all tasks to be rerun (not up to date).&lt;br /&gt;
&lt;br /&gt;
===build===&lt;br /&gt;
&lt;br /&gt;
Compile PCGen, rebuild the plugin jars, run the fast unit tests and make the pcgen.jar file. Note this also stamps the build with the SVN revision, which can be seen in the PCGen About window.&lt;br /&gt;
&lt;br /&gt;
===slowtest===&lt;br /&gt;
&lt;br /&gt;
Runs the full suite of tests including the character integration tests and the data tests.&lt;br /&gt;
&lt;br /&gt;
===datatest===&lt;br /&gt;
&lt;br /&gt;
Run just the data related tests.&lt;br /&gt;
&lt;br /&gt;
===inttest===&lt;br /&gt;
&lt;br /&gt;
Runs just the character integration tests.&lt;br /&gt;
&lt;br /&gt;
=Useful Tasks=&lt;br /&gt;
&lt;br /&gt;
Here are some of the other tasks which you may wish to use.&lt;br /&gt;
&lt;br /&gt;
===javadoc===&lt;br /&gt;
&lt;br /&gt;
Produce the javadoc.&lt;br /&gt;
&lt;br /&gt;
===allReports===&lt;br /&gt;
&lt;br /&gt;
Produce the code quality reports for the main code only (not the test folders).&lt;br /&gt;
&lt;br /&gt;
===pfinttest===&lt;br /&gt;
&lt;br /&gt;
Runs just the Pathfinder character integration tests.&lt;br /&gt;
&lt;br /&gt;
===fullZip===&lt;br /&gt;
&lt;br /&gt;
Produce the full PCGen zip file as used in the autobuild and the release.&lt;br /&gt;
&lt;br /&gt;
===prepareRelease===&lt;br /&gt;
&lt;br /&gt;
Prepare PCGen for release. This will update and commit the version, do a clean build including the unit tests and generate the data list for the installer.&lt;br /&gt;
&lt;br /&gt;
===pcgenRelease===&lt;br /&gt;
&lt;br /&gt;
Release a new version of PCGen. This will build PCGen, produce the release artifacts, tag the release and then update and commit the version ready for new dev work. The upload to SourceForge is manual though!&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=File:Gradle_logo.gif&amp;diff=3685</id>
		<title>File:Gradle logo.gif</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=File:Gradle_logo.gif&amp;diff=3685"/>
		<updated>2014-07-05T07:29:56Z</updated>

		<summary type="html">&lt;p&gt;James: Gradle logo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gradle logo&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Gradle&amp;diff=3684</id>
		<title>Gradle</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Gradle&amp;diff=3684"/>
		<updated>2014-07-05T07:29:11Z</updated>

		<summary type="html">&lt;p&gt;James: Created page with &amp;quot;{| align=&amp;quot;right&amp;quot;   | __TOC__   |}  =Introduction=  PCGen is now built using the Gradle build tool.  =Installing Gradle=  See [[http://www.gradle.org/docs/current/userguide/ins...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
PCGen is now built using the Gradle build tool.&lt;br /&gt;
&lt;br /&gt;
=Installing Gradle=&lt;br /&gt;
&lt;br /&gt;
See [[http://www.gradle.org/docs/current/userguide/installation.html Gradle Install Guide]] for a tutorial on installing Gradle. It is pretty simple though.&lt;br /&gt;
&lt;br /&gt;
=Main Tasks=&lt;br /&gt;
&lt;br /&gt;
These are the tasks which you are more likely to use everyday. All tasks are run using gradle taskname . If you run gradle without any tasks it will run clean and build by default. Tasks names are not case sensitive.&lt;br /&gt;
&lt;br /&gt;
===clean===&lt;br /&gt;
&lt;br /&gt;
Clean erases all output from previous builds and sets all tasks to be rerun (not up to date).&lt;br /&gt;
&lt;br /&gt;
===build===&lt;br /&gt;
&lt;br /&gt;
Compile PCGen, rebuild the plugin jars, run the fast unit tests and make the pcgen.jar file. Note this also stamps the build with the SVN revision, which can be seen in the PCGen About window.&lt;br /&gt;
&lt;br /&gt;
===slowtest===&lt;br /&gt;
&lt;br /&gt;
Runs the full suite of tests including the character integration tests and the data tests.&lt;br /&gt;
&lt;br /&gt;
===datatest===&lt;br /&gt;
&lt;br /&gt;
Run just the data related tests.&lt;br /&gt;
&lt;br /&gt;
===inttest===&lt;br /&gt;
&lt;br /&gt;
Runs just the character integration tests.&lt;br /&gt;
&lt;br /&gt;
=Useful Tasks=&lt;br /&gt;
&lt;br /&gt;
Here are some of the other tasks which you may wish to use.&lt;br /&gt;
&lt;br /&gt;
===javadoc===&lt;br /&gt;
&lt;br /&gt;
Produce the javadoc.&lt;br /&gt;
&lt;br /&gt;
===allReports===&lt;br /&gt;
&lt;br /&gt;
Produce the code quality reports for the main code only (not the test folders).&lt;br /&gt;
&lt;br /&gt;
===pfinttest===&lt;br /&gt;
&lt;br /&gt;
Runs just the Pathfinder character integration tests.&lt;br /&gt;
&lt;br /&gt;
===fullZip===&lt;br /&gt;
&lt;br /&gt;
Produce the full PCGen zip file as used in the autobuild and the release.&lt;br /&gt;
&lt;br /&gt;
===prepareRelease===&lt;br /&gt;
&lt;br /&gt;
Prepare PCGen for release. This will update and commit the version, do a clean build including the unit tests and generate the data list for the installer.&lt;br /&gt;
&lt;br /&gt;
===pcgenRelease===&lt;br /&gt;
&lt;br /&gt;
Release a new version of PCGen. This will build PCGen, produce the release artifacts, tag the release and then update and commit the version ready for new dev work. The upload to SourceForge is manual though!&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Building_PCGen&amp;diff=3683</id>
		<title>Building PCGen</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Building_PCGen&amp;diff=3683"/>
		<updated>2014-07-05T06:42:12Z</updated>

		<summary type="html">&lt;p&gt;James: Migrate to the Gradle build&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
=Building PCGen from the command line=&lt;br /&gt;
&lt;br /&gt;
This process uses the [[Gradle]] tool, you need the following software packages:&lt;br /&gt;
&lt;br /&gt;
* Java Development Kit (aka Java SDK or JDK). You should use the latest version (update) of the JDK 6.0 available for download from [http://www.oracle.com/technetwork/java/javase/downloads/index.html here]. At the time of writing this was Java SE 6 Update 45. Java 7 will also work, but no 1.7 specific features should be used in the code just yet. Other JDKs might work, but no one has tried.&lt;br /&gt;
* Gradle 1.12 (or later) from [http://www.gradle.org/ here]. Gradle is fully cross-platform Java based build tool. See [[Gradle]] section for further details&lt;br /&gt;
* You will also need the latest version of the PCGen source code available from SVN. See [[Subversion Setup]] for details.&lt;br /&gt;
&lt;br /&gt;
Open a command window and change to the root directory/folder where you installed the PCGen source code. There should be a file called build.gradle there.&lt;br /&gt;
&lt;br /&gt;
Type gradle at the command prompt. This will make sure you have a clean start and then build the pcgen.jar file. You can start pcgen.jar, pcgen.exe or pcgendev.sh to run it or manually run the jar file using a command line like&lt;br /&gt;
&amp;lt;pre&amp;gt;java -Xmx1024M -jar pcgen.jar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generate the JavaDocs use gradle javadoc. To run all the tests use gradle slowtest (which can take a while).&lt;br /&gt;
&lt;br /&gt;
Typing the command &amp;lt;pre&amp;gt;gradle&amp;lt;/pre&amp;gt; will clean the project, build the code and run a small selection of tests.&lt;br /&gt;
&lt;br /&gt;
Typing the command &amp;lt;pre&amp;gt;gradle slowtest&amp;lt;/pre&amp;gt; will build the code and run the full test suite and produce a report.&lt;br /&gt;
&lt;br /&gt;
=Using Eclipse to build PCGen=&lt;br /&gt;
&lt;br /&gt;
You can build PCGen from within Eclipse. It is configured by default to use the gradle dependencies however you will need the &amp;quot;Gradle Integration for Eclipse&amp;quot; plugin which can be installed free from the Eclipse Marketplace.&lt;br /&gt;
&lt;br /&gt;
Once installed, Eclipse will share the jars as specified in build.gradle. You can also acces gradle tasks from within Eclipse using the &amp;quot;Window &amp;gt; Show View &amp;gt; Other&amp;quot; menu and then selecting &amp;quot;Gradle Tasks&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Running and debugging==&lt;br /&gt;
&lt;br /&gt;
# Open the PCGen project.&lt;br /&gt;
# Open the Run dialog by right-clicking on the PCGen project and selecting Run As &amp;gt; Run Configurations&lt;br /&gt;
# Select the Java Application node.&lt;br /&gt;
# Press the New button for a new configuration. Edit by field, thus:&lt;br /&gt;
Name -&amp;gt; PCGen&lt;br /&gt;
&lt;br /&gt;
Main class -&amp;gt; pcgen.system.Main&lt;br /&gt;
&lt;br /&gt;
VM arguments (Arguments tab) -&amp;gt; -Xmx1024M&lt;br /&gt;
# Press Apply to save the configuration.&lt;br /&gt;
# Press Run to start PCGen.&lt;br /&gt;
&lt;br /&gt;
You can also run a single test by right clicking on the test and selecting Debug &amp;gt; JUnit Test. This is a great way to track through a bug too.&lt;br /&gt;
&lt;br /&gt;
=Using IDEA to build PCGen=&lt;br /&gt;
&lt;br /&gt;
You can build PCGen from within IDEA. You will need to do a little bit of setup first though:&lt;br /&gt;
# Go to the Window &amp;gt; Tool Windows &amp;gt; Ant Build. Press the [+] button to add a build file.&lt;br /&gt;
# Navigate to and select the build.xml Ant script in the root of the PCGen project tree. Press Ok.&lt;br /&gt;
&lt;br /&gt;
You can now select any Ant target you wish. Particularly helpful are the build and fetch-data targets.&lt;br /&gt;
&lt;br /&gt;
==Running and debugging==&lt;br /&gt;
&lt;br /&gt;
NB - IDEA will build the software sufficient for running and debugging within the IDE automatically just by following these step. This is not the same as the build from the Building section, above, which builds the software suitable for command-line use.&lt;br /&gt;
&lt;br /&gt;
# Open the PCGen.ipr project file.&lt;br /&gt;
# Get the Run/Debug Configurations dialog with Run &amp;gt; Edit Configurations from the menu bar.&lt;br /&gt;
# Select the Application tab.&lt;br /&gt;
# Press the [+] button for a new configuration. Edit by field, thus:&lt;br /&gt;
Name -&amp;gt; PCGen&lt;br /&gt;
&lt;br /&gt;
Main class -&amp;gt; pcgen.system.Main&lt;br /&gt;
# Uncheck Display settings before running/debugging.&lt;br /&gt;
# Press Ok.&lt;br /&gt;
&lt;br /&gt;
You can now run PCGen with the green right-pointing triangle on the toolbar and debug with the green right-facing beetle on a blue diamond. Or just use the Run menu.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Removing_Libraries&amp;diff=3682</id>
		<title>Removing Libraries</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Removing_Libraries&amp;diff=3682"/>
		<updated>2014-07-05T06:20:44Z</updated>

		<summary type="html">&lt;p&gt;James: Update for the new gradle process&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
From time to time we remove legacy 3rd party libraries.  This page lists what you need to do in order to cleanly remove one.&lt;br /&gt;
&lt;br /&gt;
=Steps/Things to Check=&lt;br /&gt;
&lt;br /&gt;
# Edit the build.gradle file to remove the library&lt;br /&gt;
# Run through a full build/test cycle&lt;br /&gt;
# Commit the updated build.gradle file&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release&amp;diff=3681</id>
		<title>Release</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release&amp;diff=3681"/>
		<updated>2014-07-05T06:17:32Z</updated>

		<summary type="html">&lt;p&gt;James: /* Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
=Introduction=&lt;br /&gt;
Welcome to the Wiki section for the Release team!&lt;br /&gt;
&lt;br /&gt;
=Mission Statement=&lt;br /&gt;
'''To put out timely quality releases for the PCGen Project'''&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* [[Roadmap]]&lt;br /&gt;
* [[Release Instructions]]&lt;br /&gt;
* [[Post Release Test]]&lt;br /&gt;
* [[Merging]]&lt;br /&gt;
* [[Press_Release_Templates]]&lt;br /&gt;
* [[Continuous Integration]]&lt;br /&gt;
* Old [[Autobuild Config]]&lt;br /&gt;
* [[Production Cycle Standards]]&lt;br /&gt;
&lt;br /&gt;
=Active Team Members=&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Silverback|Silverback]]===&lt;br /&gt;
* [[LegacyKing|Andrew Maitland]]&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Second|2nd]]===&lt;br /&gt;
* [[James Dempsey]]&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Chimp|Chimp]]===&lt;br /&gt;
* [[Eddy Anthony]] - Mac Installer&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Gibbon|Gibbon]]===&lt;br /&gt;
* [[Eric C Smith]] - Mac Installer, OOC Dataset Releases&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Tamarin|Tamarin]]===&lt;br /&gt;
* [[Tir Gwaith]] - prettylst&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Lemur|Lemur]]===&lt;br /&gt;
* [[Tod Milam]] - Mac Installer&lt;br /&gt;
* Brad Stiles - CDs&lt;br /&gt;
* Robert Ward - CDs&lt;br /&gt;
&lt;br /&gt;
===Unix/Linux Installer===&lt;br /&gt;
&lt;br /&gt;
=Inactive Team Members=&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Lemur|Lemur]]===&lt;br /&gt;
* Edwin C Holley - Windows Installer&lt;br /&gt;
&lt;br /&gt;
===Gencon===&lt;br /&gt;
* Theryon Stormrune&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Maven_Release_Process&amp;diff=3680</id>
		<title>Maven Release Process</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Maven_Release_Process&amp;diff=3680"/>
		<updated>2014-07-05T06:16:33Z</updated>

		<summary type="html">&lt;p&gt;James: Note that maven use has been retired.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Retirement=&lt;br /&gt;
&lt;br /&gt;
'''The Maven release has now been retired and replaced by Gradle. See [[Release_Instructions]] for how to use the Gradle build to produce a release.'''&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
We are proposing to largely automate the release process. This is because it currently takes something like 3 hours to pull together when everything goes right.&lt;br /&gt;
&lt;br /&gt;
=Automated Process=&lt;br /&gt;
&lt;br /&gt;
Once automation with Maven is complete the process will be something like the following.&lt;br /&gt;
&lt;br /&gt;
# Update the pcgen.properties to reflect the new version. Commit this updated version.&lt;br /&gt;
# Run @@maven scm:prepare-release@@ to tag the source and update the version info in the maven files.&lt;br /&gt;
# Get the next autobuild and regression test it&lt;br /&gt;
# If errors are found, branch from the tag made above and fix the issues.&lt;br /&gt;
# Once satisfied all is ok, upload the generated release notes document&lt;br /&gt;
# Update the notes info for maven&lt;br /&gt;
# Run @@maven pcgen:release@@ on a windows machine - this will generate the zip files and the windows installer, and upload them to a new package in SourceForge It will take a little over an hour to process, depending on connection speed.&lt;br /&gt;
# Test that the files can be downloaded and run correctly.&lt;br /&gt;
# Build and upload the MAC installer&lt;br /&gt;
# Make the announcements&lt;br /&gt;
&lt;br /&gt;
=Changes Required to Support Maven=&lt;br /&gt;
&lt;br /&gt;
To get the process automated is going to require a bit of work however. Here are my suggestions on what needs to be done.&lt;br /&gt;
&lt;br /&gt;
* Standardise our SVN layout - '''Done'''&lt;br /&gt;
* Rename Trunk to trunk - '''Not required'''&lt;br /&gt;
* Rename Tags to tags - '''Done'''&lt;br /&gt;
* Rename Branches to branches - '''Done'''&lt;br /&gt;
* Simplify the top layer so that we can tag and branch just the pcgen folder - '''N/A'''&lt;br /&gt;
* Move the Installer directory up into the pcgen directory - '''Done'''&lt;br /&gt;
* Move the Standards folder into the pcgen/code folder - '''Done'''&lt;br /&gt;
* Convert the current NSIS script into an XSL script to generate the NSIS script. This is the approach used by maven and should allow us to automate the inclusion of new alpha sources. - '''Done'''&lt;br /&gt;
* Code the pcgen:release target to run the necessary steps for a release. - '''Done apart from signing files and creating SF release'''&lt;br /&gt;
* Get all monkeys into the habit of recording noteworthy changes in the changes.xml used to generate the release notes. - '''Ongoing'''&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=MAVEN&amp;diff=3679</id>
		<title>MAVEN</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=MAVEN&amp;diff=3679"/>
		<updated>2014-07-05T06:14:04Z</updated>

		<summary type="html">&lt;p&gt;James: Maven build retired in favor of gradle.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The maven build has now been replaced by Gradle.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_Instructions&amp;diff=3678</id>
		<title>Release Instructions</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_Instructions&amp;diff=3678"/>
		<updated>2014-07-05T06:11:59Z</updated>

		<summary type="html">&lt;p&gt;James: Complete Gradle release process&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to follow when making a release of PCGen. If it is your first time, please check the prereqs section at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
The first time you run a release you will have to make sure you have the following tools available:&lt;br /&gt;
===Release Notes===&lt;br /&gt;
* Text editor&lt;br /&gt;
* Web browser&lt;br /&gt;
* Perl interpreter&lt;br /&gt;
* Perl modules: readonly (installed on Windows via ActivePerl's Perl Package Manager)&lt;br /&gt;
&lt;br /&gt;
===Release===&lt;br /&gt;
* Java SDK 1.6 (the one that includes the javac compiler)&lt;br /&gt;
* Gradle 1.x&lt;br /&gt;
* SVN&lt;br /&gt;
* Perl interpreter&lt;br /&gt;
* [http://nsis.sourceforge.net/Download NSIS]&lt;br /&gt;
&lt;br /&gt;
===Outstanding Issues===&lt;br /&gt;
You need to check JIRA for any outstanding issues to ensure the release meets our QA std.&lt;br /&gt;
&lt;br /&gt;
* Alpha releases require no Blockers, allow Critical only with Code lead exception&lt;br /&gt;
* Beta releases require no Blockers or Criticals&lt;br /&gt;
* RCs/final releases require no Blockers, Criticals, or Majors&lt;br /&gt;
&lt;br /&gt;
==Create Release Notes==&lt;br /&gt;
&lt;br /&gt;
# Update your local copy of pcgen from SVN&lt;br /&gt;
# Copy the previous set of release notes to pcgen-release-notes-nnn.html where nnn is the version number.&lt;br /&gt;
# Do a global replace of the old version number to the new version number, both as n.nn.n and nnnn&lt;br /&gt;
# Open Jira and for each project open the release notes for the version.&lt;br /&gt;
# Copy the html to the changelog section, changing h2 tags to h3.&lt;br /&gt;
# Update the What's New section with any high profile changes.&lt;br /&gt;
# Update the Thanks section with the list of people who committed during the cycle.&lt;br /&gt;
# Commit the new release notes and notify pcgen_bod so they can review it.&lt;br /&gt;
# Notify pcgen dev and experimental lists of upcoming release, asking for autobuilds to be tested. Best to give 24 hours notice.&lt;br /&gt;
&lt;br /&gt;
==The Build==&lt;br /&gt;
# Using a clean directory with no changes to the pcgen files&lt;br /&gt;
# '''svn update''' the PCGen repository (5 mins)&lt;br /&gt;
# Release manager edits src/java/pcgen/gui/prop/PCGenProp.properties to set the release date, version number, contributors, etc. and commit the result (5 mins)&lt;br /&gt;
# If switching to or from RC mode, edit gradle.properties and adjust the version number to be in the correct format but with the last number 1 less than the target. e.g. 6.4.0RC0 or 6.4.-1 &lt;br /&gt;
# Execute '''gradle prepareRelease slowtest''' in the pcgen directory and verify there are no failing Junit test. Also check if there are any &amp;quot;Unknown publisher&amp;quot; messages. If so you need to add new entries for the listed publishers to the gendatalist.pl script. (20 mins)&lt;br /&gt;
# Check Jira for any closed requests missing from the release notes. Steps 4 and 6 of 'Create Release Notes' section above can be used to assist here. (10 mins)&lt;br /&gt;
# Update the readme.md file with the what's new section of the release notes.&lt;br /&gt;
# Execute '''gradle fullZip''' or '''gradle buildNsis''' to generate a testing zip or exe. (3 mins)&lt;br /&gt;
# Smoke test the newly built pcgen full zip or exe.  (30 mins)&lt;br /&gt;
# Create a folder for the release under the [https://sourceforge.net/projects/pcgen/files/ File Manager]&lt;br /&gt;
# Upload the release notes using the File Manager to the release folder&lt;br /&gt;
# Run '''gradle pcgenRelease''' (which updates the gradlefiles and tags the SVN repository). (2 mins)&lt;br /&gt;
# Upload the release files to SourceForge. The quickest way is uploading via the web, the same way you uploaded the release notes etc. (10 mins)&lt;br /&gt;
# Update Readme.MD with the SHA256 checksums from target/SHA256-digests.txt. Upload the revised file and check-in. (5 mins)&lt;br /&gt;
# Notify PCGen_bod of the new release. (5 mins)&lt;br /&gt;
# PR Monkeys create a news item for the new release&lt;br /&gt;
# PR Monkeys send announcement to all pcgen mailing list for the new release&lt;br /&gt;
&lt;br /&gt;
==Update JIRA==&lt;br /&gt;
&lt;br /&gt;
For each of the projects, mark the version you are working on as released and create the next version if it doesn't already exist. When marking a version as released, please make sure the released date is set to today.&lt;br /&gt;
 &lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/CODE/versions Code Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/DATA/versions Data Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/DOCS/versions Documentation Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/NEWSOURCE/versions New Source Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/NEWTAG/versions New Tag Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/OS/versions Output Sheets Versions]&lt;br /&gt;
&lt;br /&gt;
==Mac Installer==&lt;br /&gt;
&lt;br /&gt;
See [http://pcgen.svn.sourceforge.net/viewvc/pcgen/Trunk/pcgen/installers/mac-installer/instructions.html Instructions]&lt;br /&gt;
&lt;br /&gt;
==Signing Files with PGP==&lt;br /&gt;
'''Historical only''' We used to use the [[http://www.gnupg.org/ GnuPG for Windows]] to generate the signatures. You will need the private key, either your own, or the PCGen one (contact the PCGen BOD). Once GnuPG is installed and knows about the key you wish to use, it is just a matter fo right clicking on the files to be signed (multi-select is fine) and selecting GPGee &amp;gt; Sign and then making sure the PCGen key is selected, hitting OK and entering the passphrase for the key. This creates an .asc signature file for each selected file.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Yes, even the best installs of all the program amount to nothing if there is a hitch. These are basic notes from the current issues cropping up and resolutions. These notes are not prettified yet. The idea being we will get a full set of troubleshooting tips and tricks here in the near future.&lt;br /&gt;
&lt;br /&gt;
Check your versions. &lt;br /&gt;
JDK1.5 is required with JAVA_HOME variable (see below)&lt;br /&gt;
SVN must be a true .exe install, TortoiseSVN will not meet this requirement&lt;br /&gt;
SVN exe can be found here [[http://subversion.tigris.org/files/documents/15/46531/Setup-Subversion-1.6.5.msi SVN]]&lt;br /&gt;
&lt;br /&gt;
My Computer &amp;gt; System &amp;gt; Advanced Settings:&lt;br /&gt;
For JAVA_HOME make sure it's a set System Variable and make sure it's using the correct path to your current installation base folder&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Dev_Meeting_Log_20140627&amp;diff=3660</id>
		<title>Dev Meeting Log 20140627</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Dev_Meeting_Log_20140627&amp;diff=3660"/>
		<updated>2014-06-28T01:45:33Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Developers Present:'''&lt;br /&gt;
* Tom Parker (Arch SB)&lt;br /&gt;
* James Dempsey (Code SB)&lt;br /&gt;
* Connor Petty (Code UI specialist)&lt;br /&gt;
* Andrew Maitland (Content Observer)&lt;br /&gt;
&lt;br /&gt;
'''Discussion Summary:'''&lt;br /&gt;
* Tom explained the Current Arch Demo's and ideas he had and how he wanted to implement the changes slowly (FACT/FACTSET/EQVar Demo/Freemarker Patch Demo)&lt;br /&gt;
* James and Tom discussed Eclipse pushing Java 7 code into the programming, and will officially change to Java 7 6.5+&lt;br /&gt;
* Connor explained the UI Facade and other layers to Tom&lt;br /&gt;
&lt;br /&gt;
'''RAW LOG'''&lt;br /&gt;
* [17:00] &amp;lt;Tom[Arch]&amp;gt; I think we'll wait a moment as James should be joining&lt;br /&gt;
* [17:01] &amp;lt;Tom[Arch]&amp;gt; Connor have you looked at either the FACT proposal or looked at the EqVarDemo branch?&lt;br /&gt;
* [17:01] &amp;lt;cpmeister&amp;gt; I have not looked at the fact proposal yet, but I did look at the EqVarDemo branch.&lt;br /&gt;
* [17:03] &amp;lt;@AndrewAAM&amp;gt; http://wiki.pcgen.org/FACT_Token&lt;br /&gt;
* [17:03] &amp;lt;@AndrewAAM&amp;gt; http://wiki.pcgen.org/FACTSET_Token&lt;br /&gt;
* [17:03] &amp;lt;cpmeister&amp;gt; I can't say I know enough about what the EqVarDemo was trying to accomplish to give much of an opinion about it though.&lt;br /&gt;
* [17:04] &amp;lt;@AndrewAAM&amp;gt; EQVar takes the formula system and allows you to use it in containers that don't interact with outside containers&lt;br /&gt;
* [17:04] &amp;lt;Tom[Arch]&amp;gt; variables with namespaces, in effect&lt;br /&gt;
* [17:04] &amp;lt;@AndrewAAM&amp;gt; That's the dirty summary, Tom can explain it better.&lt;br /&gt;
* [17:04] &amp;lt;Tom[Arch]&amp;gt; where each piece of equipment ends up being a separate container/namespace&lt;br /&gt;
* [17:05] &amp;lt;Tom[Arch]&amp;gt; I think we'll start and we can catch James up&lt;br /&gt;
* [17:05] &amp;lt;cpmeister&amp;gt; fine with me&lt;br /&gt;
* [17:06] &amp;lt;Tom[Arch]&amp;gt; So as context, we currently have the facades, which you (Connor) just moved to pcgen.facade, which interact with the UI and the core.  There is some additional separation needed from the core, but that's the theory anyway&lt;br /&gt;
* [17:06] &amp;lt;Tom[Arch]&amp;gt; Right now, we also have facades that have fixed methods, things like getLegs or whatever&lt;br /&gt;
* [17:07] &amp;lt;Tom[Arch]&amp;gt; those are on the RaceFacade, et al&lt;br /&gt;
* [17:07] *** James[Code_SB] has joined #pcgen&lt;br /&gt;
* [17:07] &amp;lt;cpmeister&amp;gt; Hi James&lt;br /&gt;
* [17:07] &amp;lt;Tom[Arch]&amp;gt; The challenge going forward is that the core is getting more and more generic&lt;br /&gt;
* [17:07] &amp;lt;Tom[Arch]&amp;gt; Hi James&lt;br /&gt;
* [17:07] &amp;lt;@AndrewAAM&amp;gt; (Hi James - Sent you the previous)&lt;br /&gt;
* [17:08] &amp;lt;James[Code_SB]&amp;gt; Morning&lt;br /&gt;
* [17:08] &amp;lt;Tom[Arch]&amp;gt; So - for example - the Deity's symbol will be something the core knows nothing about&lt;br /&gt;
* [17:08] &amp;lt;Tom[Arch]&amp;gt; Right now it has a StringKey.HOLY_ITEM, but even that will go away&lt;br /&gt;
* [17:08] &amp;lt;James[Code_SB]&amp;gt; Thanks for that&lt;br /&gt;
* [17:08] &amp;lt;Tom[Arch]&amp;gt; as will the individual load token&lt;br /&gt;
* [17:08] &amp;lt;Tom[Arch]&amp;gt; FACT will entirely hold the content&lt;br /&gt;
* [17:09] &amp;lt;Tom[Arch]&amp;gt; So all the Core will know is that a Deity has a characterisitc called &amp;quot;Symbol&amp;quot; that is &amp;quot;Star&amp;quot; or whatever&lt;br /&gt;
* [17:09] &amp;lt;Tom[Arch]&amp;gt; So eventually the facades need to be able to translate to the UI the appropriate items&lt;br /&gt;
* [17:09] &amp;lt;Tom[Arch]&amp;gt; and I'd suggest that be in a way that keeps the facades reusable across game modes (so they think generically as well)&lt;br /&gt;
* [17:09] &amp;lt;Tom[Arch]&amp;gt; Then only at the final UI (in whatever layer it is - we'll get to that later) knows it needs the &amp;quot;Symbol&amp;quot; Fact&lt;br /&gt;
* [17:10] &amp;lt;Tom[Arch]&amp;gt; too high level or good enough?&lt;br /&gt;
* [17:10] &amp;lt;Tom[Arch]&amp;gt; We can do a walkthrough if you would like&lt;br /&gt;
* [17:10] &amp;lt;cpmeister&amp;gt; I'm understanding it so far.&lt;br /&gt;
* [17:11] &amp;lt;James[Code_SB]&amp;gt; That makes sense to me&lt;br /&gt;
* [17:11] &amp;lt;Tom[Arch]&amp;gt; So that handles things that are about an object.  Symbol, Title, whatever.  Things that don't change about an object&lt;br /&gt;
* [17:11] &amp;lt;Tom[Arch]&amp;gt; Doesn't cover PC characteristics like Hands&lt;br /&gt;
* [17:11] &amp;lt;Tom[Arch]&amp;gt; and obviously doesn't cover lists.... though there is a close cousin for that , FACTLIST&lt;br /&gt;
* [17:11] &amp;lt;Tom[Arch]&amp;gt; ERrr FACTSET&lt;br /&gt;
* [17:11] &amp;lt;Tom[Arch]&amp;gt; sorry&lt;br /&gt;
* [17:12] &amp;lt;Tom[Arch]&amp;gt; Similar theory, but you get a Set of items back rather than one&lt;br /&gt;
* [17:12] &amp;lt;Tom[Arch]&amp;gt; So things like components on a spell&lt;br /&gt;
* [17:13] &amp;lt;Tom[Arch]&amp;gt; or descriptors on a spell&lt;br /&gt;
* [17:13] &amp;lt;Tom[Arch]&amp;gt; would be FACTSET&lt;br /&gt;
* [17:13] &amp;lt;Tom[Arch]&amp;gt; (note they can be objects not just strings in both FACT and FACTSET)&lt;br /&gt;
* [17:13] &amp;lt;Tom[Arch]&amp;gt; There will be a &amp;quot;database&amp;quot; of sorts where you can go &amp;quot;ask&amp;quot; &amp;quot;What is a Symbol&amp;quot; and it will tell you String.class&lt;br /&gt;
* [17:14] &amp;lt;Tom[Arch]&amp;gt; likely relevant for you (Connor) in terms of formatting&lt;br /&gt;
* [17:14] &amp;lt;cpmeister&amp;gt; indeed&lt;br /&gt;
* [17:15] &amp;lt;Tom[Arch]&amp;gt; I'm working on building a demo for FACT so folks can look at the code.  I'm about half done&lt;br /&gt;
* [17:15] &amp;lt;Tom[Arch]&amp;gt; That will facilitate seeing how it works in practice&lt;br /&gt;
* [17:15] &amp;lt;Tom[Arch]&amp;gt; By the way, I'm expecting those to be 6.5&lt;br /&gt;
* [17:15] &amp;lt;Tom[Arch]&amp;gt; So after we branch, I'd like to get them in relatively quick&lt;br /&gt;
* [17:16] &amp;lt;Tom[Arch]&amp;gt; That being said, the transition gets tricky, and is part of why we are here&lt;br /&gt;
* [17:16] &amp;lt;Tom[Arch]&amp;gt; let's use Deity's Symbol for a moment&lt;br /&gt;
* [17:16] &amp;lt;Tom[Arch]&amp;gt; Right now, it's triggered by the SYMBOL token, and the UI eventually pulls (through the facade) StringKey.HOLY_ITEM&lt;br /&gt;
* [17:16] &amp;lt;Tom[Arch]&amp;gt; (as to why the token and StringKey are mismatched - not sure)&lt;br /&gt;
* [17:17] &amp;lt;Tom[Arch]&amp;gt; If we swap to FACT, we end up being in the position of needing to swap the UI&lt;br /&gt;
* [17:17] &amp;lt;Tom[Arch]&amp;gt; but that leaves us in the risk mode of having to swap all the data at once OR having some mechanism for saying &amp;quot;old or  new&amp;quot;&lt;br /&gt;
* [17:18] &amp;lt;Tom[Arch]&amp;gt; given that swap all at once is effectively ripping out the token for all users, I think we need to at least consider having a control mechanism for pulling from both places&lt;br /&gt;
* [17:18] &amp;lt;Tom[Arch]&amp;gt; that make sense to everyone?&lt;br /&gt;
* [17:19] &amp;lt;cpmeister&amp;gt; So far yes, do the facts in any way interact with variables?&lt;br /&gt;
* [17:20] &amp;lt;Tom[Arch]&amp;gt; immediately, no.  Longer term, yes, but probably transparent to you&lt;br /&gt;
* [17:20] &amp;lt;Tom[Arch]&amp;gt; Here would be one example:&lt;br /&gt;
* [17:21] &amp;lt;Tom[Arch]&amp;gt; MODIFY:SomeVar|SOLVE|value()+if(&amp;quot;Star&amp;quot;==fact(deity(),&amp;quot;Symbol&amp;quot;),1,0)&lt;br /&gt;
* [17:21] &amp;lt;Tom[Arch]&amp;gt; Please note that is COMPLETELY contrived&lt;br /&gt;
* [17:21] &amp;lt;Tom[Arch]&amp;gt; and I'm not sure we'd really do much that way&lt;br /&gt;
* [17:21] &amp;lt;Tom[Arch]&amp;gt; but the point is that there will likely be some ability in a formula to test a fact&lt;br /&gt;
* [17:23] &amp;lt;Tom[Arch]&amp;gt; good?&lt;br /&gt;
* [17:23] &amp;lt;cpmeister&amp;gt; good&lt;br /&gt;
* [17:23] &amp;lt;Tom[Arch]&amp;gt; ok&lt;br /&gt;
* [17:23] &amp;lt;Tom[Arch]&amp;gt; So roughly the same challenge exists for Variables (either EqVars or global vars in the new variable system)&lt;br /&gt;
* [17:24] &amp;lt;Tom[Arch]&amp;gt; Today we do CRITRANGE as a token, but that too can go away in favor of an EqMod&lt;br /&gt;
* [17:24] &amp;lt;Tom[Arch]&amp;gt; so we end up with a variable CritRange that needs to be swapped into the UI (though this is likely an item just for Preview, thus you are insulated from it)&lt;br /&gt;
* [17:24] &amp;lt;Tom[Arch]&amp;gt; But on a &amp;quot;global&amp;quot; basis, the issue would happen with LEGS for example&lt;br /&gt;
* [17:25] &amp;lt;Tom[Arch]&amp;gt; going from fetching from the LegsFacet to having a variable &amp;quot;Legs&amp;quot;&lt;br /&gt;
* [17:25] &amp;lt;Tom[Arch]&amp;gt; so we should also be trying to insulate from the facets as their structure/existence will change&lt;br /&gt;
* [17:26] &amp;lt;Tom[Arch]&amp;gt; The next trick is a Var isn't only a Number.class&lt;br /&gt;
* [17:26] &amp;lt;James[Code_SB]&amp;gt; critrange is definitely in the info for equipment and may be a column too so it is a good example&lt;br /&gt;
* [17:26] &amp;lt;Tom[Arch]&amp;gt; ok&lt;br /&gt;
* [17:26] &amp;lt;Tom[Arch]&amp;gt; we'll have to do the conversion very slowly to ensure both that&lt;br /&gt;
* [17:27] &amp;lt;Tom[Arch]&amp;gt; a) We get a flag somewhere in the UI controls (per game mode)&lt;br /&gt;
* [17:27] &amp;lt;Tom[Arch]&amp;gt; b) We can ensure we get the appropriate info to the data team as to what the calculation was in the code&lt;br /&gt;
* [17:27] &amp;lt;Tom[Arch]&amp;gt; I've already stressed with Andrew this is going to have to be slow and steady, one at a time&lt;br /&gt;
* [17:27] * @AndrewAAM waves&lt;br /&gt;
* [17:27] &amp;lt;Tom[Arch]&amp;gt; If we try to rush this will be an epic train wreck&lt;br /&gt;
* [17:28] &amp;lt;Tom[Arch]&amp;gt; ok, back to not only a number&lt;br /&gt;
* [17:28] &amp;lt;Tom[Arch]&amp;gt; same rules as Fact, there is a database that can tell you what it is, so Legs would return Number.class&lt;br /&gt;
* [17:29] &amp;lt;Tom[Arch]&amp;gt; Note we are using Number.class not Double or Float or Integer, as we do &amp;quot;arbitrary precision&amp;quot; arithmetic&lt;br /&gt;
* [17:29] &amp;lt;Tom[Arch]&amp;gt; where &amp;quot;arbitrary&amp;quot; here means &amp;quot;Integer if we can&amp;quot;&lt;br /&gt;
* [17:29] &amp;lt;Tom[Arch]&amp;gt; we dont' drop into BigDecimal or anything like that&lt;br /&gt;
* [17:29] &amp;lt;Tom[Arch]&amp;gt; that way 2-1 is always 1 not .999999999&lt;br /&gt;
* [17:30] &amp;lt;Tom[Arch]&amp;gt; So we can also do things like &amp;quot;Point&amp;quot; as a type.  In the case of the EqVarDemo it's actually a custom class GridPoint&lt;br /&gt;
* [17:30] &amp;lt;Tom[Arch]&amp;gt; it is used to store what is today FACE&lt;br /&gt;
* [17:30] &amp;lt;Tom[Arch]&amp;gt; and that is actually &amp;quot;hard coded&amp;quot; in the token as a demo of both global variables in the new system as well as being able to modify a non-Number in the variable system&lt;br /&gt;
* [17:31] &amp;lt;Tom[Arch]&amp;gt; There isn't any reason why a variable couldn't be a String as well if there is a character-wide item that we need as a single fact (*cough* Region *cough*)&lt;br /&gt;
* [17:31] &amp;lt;Tom[Arch]&amp;gt; I shouldn't say fact&lt;br /&gt;
* [17:31] &amp;lt;Tom[Arch]&amp;gt; too confusing&lt;br /&gt;
* [17:31] &amp;lt;Tom[Arch]&amp;gt; Character wide characteristic&lt;br /&gt;
* [17:32] &amp;lt;Tom[Arch]&amp;gt; any questions?&lt;br /&gt;
* [17:33] &amp;lt;Tom[Arch]&amp;gt; seem fairly straightforward to deal with?&lt;br /&gt;
* [17:33] &amp;lt;James[Code_SB]&amp;gt; I wouldn't go quite that far :)&lt;br /&gt;
* [17:33] &amp;lt;Tom[Arch]&amp;gt; LOL&lt;br /&gt;
* [17:34] &amp;lt;James[Code_SB]&amp;gt; I think you've noted some interesting challenges for the UI - this is really driving the move away from a d20 focussed UI, much as the output system is going the same way&lt;br /&gt;
* [17:34] *** cpmeister has quit IRC: Changing host&lt;br /&gt;
* [17:34] *** cpmeister has joined #pcgen&lt;br /&gt;
* [17:34] &amp;lt;Tom[Arch]&amp;gt; it is&lt;br /&gt;
* [17:35] &amp;lt;Tom[Arch]&amp;gt; but at the end of the day the UI still has a tie to the game mode&lt;br /&gt;
* [17:35] &amp;lt;Tom[Arch]&amp;gt; so we may end up with panes being named and defined in the game mode or some such&lt;br /&gt;
* [17:35] &amp;lt;James[Code_SB]&amp;gt; and it changes the 'perspective' of PCGen quite a lot - a good thing but a change in mind set&lt;br /&gt;
* [17:35] &amp;lt;James[Code_SB]&amp;gt; indeed&lt;br /&gt;
* [17:35] &amp;lt;Tom[Arch]&amp;gt; My big point here is hoping we make the facades generic and only have to work with the UI&lt;br /&gt;
* [17:35] &amp;lt;James[Code_SB]&amp;gt; They are to a minor extent now, but I know the data team would like to have a lot more control&lt;br /&gt;
* [17:35] &amp;lt;James[Code_SB]&amp;gt; right&lt;br /&gt;
* [17:35] &amp;lt;Tom[Arch]&amp;gt; and at that, I think it will only be a portion of the UI&lt;br /&gt;
* [17:36] &amp;lt;Tom[Arch]&amp;gt; but that's for Connor to explain more.  (Hopefully we get to the UI layers today as well as I'd like to understand that)&lt;br /&gt;
* [17:36] &amp;lt;James[Code_SB]&amp;gt; whereas now, the facades are where a  lot of messy game knowledge lives&lt;br /&gt;
* [17:36] &amp;lt;Tom[Arch]&amp;gt; yea, some of that we can clean up with this, some is harder&lt;br /&gt;
* [17:37] &amp;lt;cpmeister&amp;gt; I think if we want to keep the facades intact in any reasonable way there might need to be different facade implementations for each game mode&lt;br /&gt;
* [17:37] &amp;lt;Tom[Arch]&amp;gt; that's part of why I asked for a selection deep dive on user experience&lt;br /&gt;
* [17:37] &amp;lt;Tom[Arch]&amp;gt; What would bind them to a game mode?&lt;br /&gt;
* [17:38] &amp;lt;cpmeister&amp;gt; I imagine the end goal is for facts to become completely arbitrary but only consistent within game modes&lt;br /&gt;
* [17:38] &amp;lt;Tom[Arch]&amp;gt; correct&lt;br /&gt;
* [17:39] &amp;lt;cpmeister&amp;gt; So the facades implementations that depend on facts cannot be relied upon to work for all game modes&lt;br /&gt;
* [17:39] &amp;lt;Tom[Arch]&amp;gt; It depends on the design&lt;br /&gt;
* [17:39] &amp;lt;Tom[Arch]&amp;gt; Let's use Symbol as the example&lt;br /&gt;
* [17:40] &amp;lt;Tom[Arch]&amp;gt; If you make DeityFacade have a getSymbol() then yes, you're stuck to the game mode&lt;br /&gt;
* [17:40] &amp;lt;Tom[Arch]&amp;gt; I'm not sure that's how I would do it&lt;br /&gt;
* [17:40] &amp;lt;Tom[Arch]&amp;gt; if you have public T getFact(String s, Class&amp;lt;T&amp;gt; cl)&lt;br /&gt;
* [17:40] &amp;lt;Tom[Arch]&amp;gt; there is no tie to the game mode&lt;br /&gt;
* [17:40] &amp;lt;Tom[Arch]&amp;gt; and the only tie is the place where the info is presented/what knows it is displaying a String (or whatever)&lt;br /&gt;
* [17:41] &amp;lt;Tom[Arch]&amp;gt; it localizes the game mode knowledge&lt;br /&gt;
* [17:41] &amp;lt;cpmeister&amp;gt; But there IS a tie to a fact name. :)&lt;br /&gt;
* [17:41] &amp;lt;Tom[Arch]&amp;gt; eventually there HAS to be&lt;br /&gt;
* [17:41] &amp;lt;Tom[Arch]&amp;gt; of course&lt;br /&gt;
* [17:41] &amp;lt;Tom[Arch]&amp;gt; but I would put that in the code that constructs the UI&lt;br /&gt;
* [17:41] &amp;lt;Tom[Arch]&amp;gt; since by its nature it has to be game mode specific already&lt;br /&gt;
* [17:42] &amp;lt;Tom[Arch]&amp;gt; because you have to have a field to show it and set the field location et al&lt;br /&gt;
* [17:42] &amp;lt;Tom[Arch]&amp;gt; might as well set the fact name there too&lt;br /&gt;
* [17:43] &amp;lt;Tom[Arch]&amp;gt; Maybe this is a good point for you to explain the layers of the UI&lt;br /&gt;
* [17:43] &amp;lt;Tom[Arch]&amp;gt; that way we all have that context&lt;br /&gt;
* [17:43] &amp;lt;cpmeister&amp;gt; What purpose would the facade layer serve if the facades cannot be tied to the facts?&lt;br /&gt;
* [17:44] &amp;lt;cpmeister&amp;gt; (I'll get to the UI layers in a moment)&lt;br /&gt;
* [17:44] &amp;lt;Tom[Arch]&amp;gt; in the case of facts, very little&lt;br /&gt;
* [17:44] &amp;lt;Tom[Arch]&amp;gt; in the case of vars, lists and other things, insulating you from facades&lt;br /&gt;
* [17:44] &amp;lt;Tom[Arch]&amp;gt; Have you looked at the output demo I posted to JIRA?&lt;br /&gt;
* [17:45] &amp;lt;cpmeister&amp;gt; Unfortunately no, I've been preoccupied with real life the past few weeks&lt;br /&gt;
* [17:46] &amp;lt;Tom[Arch]&amp;gt; no problem.  That may be an interesting thing to look at&lt;br /&gt;
* [17:46] &amp;lt;cpmeister&amp;gt; Could you send me a link?&lt;br /&gt;
* [17:46] &amp;lt;Tom[Arch]&amp;gt; http://jira.pcgen.org/browse/CODE-2619&lt;br /&gt;
* [17:46] &amp;lt;Tom[Arch]&amp;gt; it's a very generic facade (bordering on a shim) between the core and FreeMarker&lt;br /&gt;
* [17:47] &amp;lt;Tom[Arch]&amp;gt; I would view the UI facade acting in a similar way&lt;br /&gt;
* [17:47] &amp;lt;Tom[Arch]&amp;gt; and the patch is no longer Java7 specific (thanks for pointing that out James, I completely missed that I used a J7 feature)&lt;br /&gt;
* [17:48] &amp;lt;James[Code_SB]&amp;gt; Eclipse just quietly does it for you I've noticed recently&lt;br /&gt;
* [17:48] &amp;lt;James[Code_SB]&amp;gt; and it is rather nice&lt;br /&gt;
* [17:48] &amp;lt;Tom[Arch]&amp;gt; very convenient, we just eventually need to decide to drop J6 officially rather than do it accidentally&lt;br /&gt;
* [17:49] &amp;lt;Tom[Arch]&amp;gt; but that's quite a tangent&lt;br /&gt;
* [17:49] &amp;lt;Tom[Arch]&amp;gt; Perhaps time for UI layers? ... and you can look at the Output system later Connor.  This was as much to be informative vs trying to settle everything in one shot&lt;br /&gt;
* [17:49] &amp;lt;James[Code_SB]&amp;gt; Yeah I'd like 6.4 to be the last Java 6 compatible release - it is getting too hard to maintain compatibility now&lt;br /&gt;
* [17:50] &amp;lt;cpmeister&amp;gt; sure thing Tom&lt;br /&gt;
* [17:50] &amp;lt;cpmeister&amp;gt; Basically the UI is separated into a views and models&lt;br /&gt;
* [17:51] &amp;lt;cpmeister&amp;gt; The views are the swing UI components that render to the screen and the models are the data that populates the components&lt;br /&gt;
* [17:52] &amp;lt;cpmeister&amp;gt; I've maintained a strict separation between these two layers such that only the models handle CharacterFacade instances&lt;br /&gt;
* [17:53] &amp;lt;cpmeister&amp;gt; Everytime a character is created and shown to the screen the UI models are created and listeners attached to the character&lt;br /&gt;
* [17:54] &amp;lt;cpmeister&amp;gt; Each character has its own set of models and each model is explicitly installed and uninstalled from the views&lt;br /&gt;
* [17:56] &amp;lt;cpmeister&amp;gt; (sorry, just a sec)&lt;br /&gt;
* [17:59] &amp;lt;cpmeister&amp;gt; One advantage of explicitly installing and uninstalling models is that switching between character can be made very fast.&lt;br /&gt;
* [18:00] &amp;lt;cpmeister&amp;gt; The UI currently switches models in tabs an arbitrary order to make tab switching appear faster&lt;br /&gt;
* [18:01] &amp;lt;Tom[Arch]&amp;gt; below character model, how do things work for single objects like Deity or Race&lt;br /&gt;
* [18:01] &amp;lt;Tom[Arch]&amp;gt; and how does it work for info on those things?&lt;br /&gt;
* [18:02] &amp;lt;cpmeister&amp;gt; Could you clarify?&lt;br /&gt;
* [18:02] &amp;lt;Tom[Arch]&amp;gt; Let's stay at Deity for a moment&lt;br /&gt;
* [18:03] &amp;lt;Tom[Arch]&amp;gt; So CharacterFacade can give you...an ItemFacade or some such&lt;br /&gt;
* [18:03] &amp;lt;Tom[Arch]&amp;gt; that is the model?&lt;br /&gt;
* [18:03] &amp;lt;Tom[Arch]&amp;gt; ItemFacade&amp;lt;DeityFacade&amp;gt; specifically I think?&lt;br /&gt;
* [18:03] &amp;lt;Tom[Arch]&amp;gt; (assuming I have the first class right)&lt;br /&gt;
* [18:03] &amp;lt;James[Code_SB]&amp;gt; Two targets to consider here - the deity the character has selected and the list of all deities&lt;br /&gt;
* [18:03] &amp;lt;Tom[Arch]&amp;gt; yes, I'm on the PC info at the moment&lt;br /&gt;
* [18:04] &amp;lt;Tom[Arch]&amp;gt; the latter being game mode info, but yes, good point that there are two deity related items&lt;br /&gt;
* [18:05] &amp;lt;James[Code_SB]&amp;gt; public ReferenceFacade&amp;lt;DeityFacade&amp;gt; getDeityRef()&lt;br /&gt;
* [18:05] &amp;lt;Tom[Arch]&amp;gt; so ReferenceFacade not ItemFacade&lt;br /&gt;
* [18:05] &amp;lt;James[Code_SB]&amp;gt; yep&lt;br /&gt;
* [18:05] &amp;lt;Tom[Arch]&amp;gt; k ty&lt;br /&gt;
* [18:05] &amp;lt;Tom[Arch]&amp;gt; but that is effectively a model?&lt;br /&gt;
* [18:05] &amp;lt;James[Code_SB]&amp;gt; which allows the UI to be notified when it changes and not have to poll&lt;br /&gt;
* [18:05] &amp;lt;Tom[Arch]&amp;gt; which is loaded into some view (field) somewhere presumably&lt;br /&gt;
* [18:06] &amp;lt;Tom[Arch]&amp;gt; right, so the CharacterFacade owns it as writeable, and shares a readable version to the view&lt;br /&gt;
* [18:06] &amp;lt;James[Code_SB]&amp;gt; yes&lt;br /&gt;
* [18:06] &amp;lt;cpmeister&amp;gt; The models mearly serve as the adapter classes for the facades.&lt;br /&gt;
* [18:07] &amp;lt;James[Code_SB]&amp;gt; Not sure I follow Connor&lt;br /&gt;
* [18:07] &amp;lt;cpmeister&amp;gt; Most all of the model logic is delegated to the facade layer&lt;br /&gt;
* [18:07] &amp;lt;Tom[Arch]&amp;gt; not sure I'm following&lt;br /&gt;
* [18:07] &amp;lt;Tom[Arch]&amp;gt; is the ReferenceFacade a model in this case?&lt;br /&gt;
* [18:07] &amp;lt;cpmeister&amp;gt; :/&lt;br /&gt;
* [18:07] &amp;lt;cpmeister&amp;gt; referencefacade is part of the facade layer&lt;br /&gt;
* [18:08] &amp;lt;cpmeister&amp;gt; The models attach listeners to the reference facades and propagate events to the views&lt;br /&gt;
* [18:08] &amp;lt;Tom[Arch]&amp;gt; so in showing the actively selected deity by a PC what is the model&lt;br /&gt;
* [18:09] &amp;lt;Tom[Arch]&amp;gt; looking at CharacterComboBoxModel&lt;br /&gt;
* [18:09] &amp;lt;Tom[Arch]&amp;gt; (found one)&lt;br /&gt;
* [18:09] &amp;lt;cpmeister&amp;gt; the model would listen to the ReferenceFacade&amp;lt;DeityFacade&amp;gt; and change the contents of the UI's diety field when an event occurs&lt;br /&gt;
* [18:10] *** ckwalsh has quit IRC: Read error: Connection reset by peer&lt;br /&gt;
* [18:11] &amp;lt;cpmeister&amp;gt; Since the views are event based, the only task the models have is to implement a swing model propogate events through the swing layer&lt;br /&gt;
* [18:11] &amp;lt;cpmeister&amp;gt; *and propogate&lt;br /&gt;
* [18:11] &amp;lt;Tom[Arch]&amp;gt; So because the view in this case is a picklist, we need to have a model that combines both the game mode info (all Deities) with the PC info (the ReferenceFacade we were talking about), so that is why the *facades shouldn't be models themselves&lt;br /&gt;
* [18:11] &amp;lt;cpmeister&amp;gt; correct&lt;br /&gt;
* [18:12] &amp;lt;Tom[Arch]&amp;gt; the referencefacade is the underlying container for the PC, which the model listens to et al to be event based and the view draws stuff&lt;br /&gt;
* [18:12] &amp;lt;cpmeister&amp;gt; bingo&lt;br /&gt;
* [18:12] &amp;lt;Tom[Arch]&amp;gt; model or facade owns sorting when you have a list?&lt;br /&gt;
* [18:13] &amp;lt;cpmeister&amp;gt; the views own the sorting&lt;br /&gt;
* [18:13] &amp;lt;cpmeister&amp;gt; sometimes we use a sorted list facade instead&lt;br /&gt;
* [18:13] &amp;lt;cpmeister&amp;gt; it depends on the situation&lt;br /&gt;
* [18:14] &amp;lt;cpmeister&amp;gt; when displaying a strict list of items, the sorting would occur in a delgating list facade.&lt;br /&gt;
* [18:14] &amp;lt;Tom[Arch]&amp;gt; when you say view owns the sorting, does the view actually tell the model what to do  and the model actually has the data?&lt;br /&gt;
* [18:15] &amp;lt;Tom[Arch]&amp;gt; or does the model then tell the facade to sort as well?&lt;br /&gt;
* [18:15] &amp;lt;Tom[Arch]&amp;gt; or does the view have a separate list from the model?&lt;br /&gt;
* [18:15] &amp;lt;cpmeister&amp;gt; For tables, swing models are internally wrapped in another swing model so that sorting can be handled transparently to the original model&lt;br /&gt;
* [18:16] &amp;lt;Tom[Arch]&amp;gt; so the facades and the model are both basically unaware of display&lt;br /&gt;
* [18:16] &amp;lt;cpmeister&amp;gt; for tables yes&lt;br /&gt;
* [18:16] &amp;lt;Tom[Arch]&amp;gt; meaning sorting of the display in this case&lt;br /&gt;
* [18:16] &amp;lt;Tom[Arch]&amp;gt; for non-dynamic stuff like a picklist you would use the sorted facade?&lt;br /&gt;
* [18:16] &amp;lt;cpmeister&amp;gt; yes&lt;br /&gt;
* [18:16] &amp;lt;Tom[Arch]&amp;gt; ok&lt;br /&gt;
* [18:17] &amp;lt;cpmeister&amp;gt; unless we display the picklist with a table, in which case no&lt;br /&gt;
* [18:17] &amp;lt;cpmeister&amp;gt; though we could sort the data before handing it to the table but that becomes useless redundancy&lt;br /&gt;
* [18:17] &amp;lt;Tom[Arch]&amp;gt; right, you'll display race different ways in two places since you have the picklist on the general screen which is controlled by a sorted list, but once in the table on the Race tab, the Race tab needs to dominate&lt;br /&gt;
* [18:17] &amp;lt;Tom[Arch]&amp;gt; that's actually good because it keeps the picklist from having to fight with the Race Tab&lt;br /&gt;
* [18:18] &amp;lt;cpmeister&amp;gt; making sense?&lt;br /&gt;
* [18:18] &amp;lt;Tom[Arch]&amp;gt; yes&lt;br /&gt;
* [18:19] &amp;lt;Tom[Arch]&amp;gt; so on the sorting discussion we had it's really tables where we can't (shouldn't) help&lt;br /&gt;
* [18:19] &amp;lt;cpmeister&amp;gt; yes&lt;br /&gt;
* [18:19] &amp;lt;Tom[Arch]&amp;gt; but the static lists are potentially reusable (give or take whether it makes sense to really share)&lt;br /&gt;
* [18:20] &amp;lt;cpmeister&amp;gt; for the most part yes, but if the static list needs to be displayed outside of a table it will likely be wrapped in a sorting list facade by the model&lt;br /&gt;
* [18:20] &amp;lt;Tom[Arch]&amp;gt; for now that's sensible - defensive programming and all that&lt;br /&gt;
* [18:21] &amp;lt;Tom[Arch]&amp;gt; need a lot more polishing in many places to break that assumption&lt;br /&gt;
* [18:21] &amp;lt;cpmeister&amp;gt; any other questions? I need to take off soon.&lt;br /&gt;
* [18:22] &amp;lt;Tom[Arch]&amp;gt; I need to run as well, already 6 min past when I should have left :/&lt;br /&gt;
* [18:22] &amp;lt;Tom[Arch]&amp;gt; I think I'm good for now&lt;br /&gt;
* [18:22] &amp;lt;Tom[Arch]&amp;gt; thanks for the discussion&lt;br /&gt;
* [18:22] &amp;lt;cpmeister&amp;gt; no problem :)&lt;br /&gt;
* [18:23] &amp;lt;James[Code_SB]&amp;gt; Thanks have a good evening guys&lt;br /&gt;
* [18:23] &amp;lt;Tom[Arch]&amp;gt; thanks all&lt;br /&gt;
* [18:23] &amp;lt;cpmeister&amp;gt; have a nice day everyone!&lt;br /&gt;
&lt;br /&gt;
'''END OF LOG'''&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=FACT_Token&amp;diff=3652</id>
		<title>FACT Token</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=FACT_Token&amp;diff=3652"/>
		<updated>2014-06-21T22:17:45Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Purpose=&lt;br /&gt;
&lt;br /&gt;
This proposal covers a means for the data to declare named constants for rules objects (e.g deity) that have values provided by the data and that are fixed at data load time. The proposal covers a number of tokens and is the first in a set of proposals to disconnect the code from the specific underlying game mode. &lt;br /&gt;
&lt;br /&gt;
The core of the proposal is a &amp;quot;FACT&amp;quot; token that allows the data team to specify specific items (with normal LST file support like .CLEAR making it usable in .COPY and .MOD lines)&lt;br /&gt;
&lt;br /&gt;
=Status=&lt;br /&gt;
&lt;br /&gt;
This is a draft proposal for architecture/code review.  Syntax is not final and is subject to revision and limitations due to existing syntax which may not be apparent in this proposal.&lt;br /&gt;
&lt;br /&gt;
=Scope=&lt;br /&gt;
&lt;br /&gt;
This proposal is intended to cover factual information about a single object applied to a PC. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;About the _object_&amp;quot; is key.&lt;br /&gt;
&lt;br /&gt;
This means it is not intended to cover the number of LEGS a PC has (that is a fact ABOUT the _PC_ that the objects can alter, we are ONLY covering facts about the _object itself_).  It is intended to cover things like the Symbol of a Deity (a &amp;quot;fact&amp;quot; about that Deity that doesn't alter the PC)&lt;br /&gt;
&lt;br /&gt;
In order to maintain the semantic definition of &amp;quot;fact&amp;quot;, items here will be unmodifiable at runtime.  If the intent is to modify an object, that is semantically a variable, and is outside the scope of this proposal.&lt;br /&gt;
&lt;br /&gt;
Note for clarity: This modification statement is &amp;quot;unmodifiable at runtime&amp;quot;, which means the lock occurs when LST load completes.  They CAN be overwritten in a .MOD.&lt;br /&gt;
&lt;br /&gt;
The distinction between &amp;quot;fact&amp;quot; and &amp;quot;variable&amp;quot; is significant.  This is *intended* to cover a *limited* set of information, and support features *based upon* those limitations.  Data is exchanging limitations for power, as seen below.&lt;br /&gt;
&lt;br /&gt;
There will be future capabilities that are more flexible (and can be changed at runtime) but which will support a different (more limited) subset of features.  That is out of scope of this proposal, however.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Background=&lt;br /&gt;
&lt;br /&gt;
Currently when new items are added to objects, it ends up requiring code intervention. &lt;br /&gt;
&lt;br /&gt;
This has a number of unfortunate side effects:&lt;br /&gt;
* This gets stuck in a priority queue along with a lot of other work for the code team&lt;br /&gt;
* It binds the code tightly to the game mode (who says a PC has legs?)&lt;br /&gt;
* It often creates yet another PRExxx token to handle that item (PREDEITYALIGN, etc)&lt;br /&gt;
* It sometimes comes back as a request for a Primitive for use in CHOOSE&lt;br /&gt;
&lt;br /&gt;
In order to get away from this tight binding, we need a more generic way of dealing with information in the data. &lt;br /&gt;
&lt;br /&gt;
In addition to the work already done in the token/loader system and in the core, the final puzzle piece that enables this capability was the insertion of Freemarker as the output/template system.&lt;br /&gt;
&lt;br /&gt;
Specifically, as we get to 6.5, we will be enabling a different system for output based on Freemarker rather than on the existing output tokens.  (see https://groups.yahoo.com/neo/groups/pcgen_developers/conversations/messages/4165 )&lt;br /&gt;
&lt;br /&gt;
This will enable more data control over what is output without relying on core knowledge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Proposal=&lt;br /&gt;
&lt;br /&gt;
==Base Token (FACT)==&lt;br /&gt;
&lt;br /&gt;
 FACT:x|y&lt;br /&gt;
 x is an identifier &lt;br /&gt;
 y is the factual value&lt;br /&gt;
&lt;br /&gt;
An identifier (x above) must have been defined in a FACTDEF line in a DATACONTROL LST file.&lt;br /&gt;
&lt;br /&gt;
FACT by default overwrites.&lt;br /&gt;
&lt;br /&gt;
It will be slowly, but consciously applied until it is eventually a global capability.&lt;br /&gt;
&lt;br /&gt;
It is NOT like ASPECT, it does NOT support PRExxx (if the item is changing, then semantically it is NOT a fact - see &amp;quot;Background&amp;quot; above)&lt;br /&gt;
&lt;br /&gt;
e.g. a Deity might have:&lt;br /&gt;
&lt;br /&gt;
 FACT:SYMBOL|Star&lt;br /&gt;
&lt;br /&gt;
.CLEAR will be supported as a &amp;quot;y&amp;quot; value, and it will clear just the fact for the single identifier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PCC (Campaign) LST token (DATACONTROL)==&lt;br /&gt;
&lt;br /&gt;
In order to make useful work of a FACT, we require a few things.  One of these is a set of controls for how the FACT is used.  This requires a Campaign LST file token in order to store those controls:&lt;br /&gt;
&lt;br /&gt;
 DATACONTROL:x&lt;br /&gt;
&lt;br /&gt;
x is a file (as per other files in the Campaign LST file)&lt;br /&gt;
&lt;br /&gt;
==Data Control LST Contents==&lt;br /&gt;
&lt;br /&gt;
===First Token (FACTDEF)===&lt;br /&gt;
&lt;br /&gt;
The Data Control LST file controls how facts (and in the future other things) are handled by the code. Specifically, we can have a line define legal facts:&lt;br /&gt;
&lt;br /&gt;
 FACTDEF:x|y|z &amp;lt;&amp;gt; ...tokens...&lt;br /&gt;
 x is a file type (e.g. DEITY for Deity LST files)&lt;br /&gt;
 y is the identifier type (STRING, etc.)&lt;br /&gt;
 z is the identifier (then usable as x in the FACT LST token)&lt;br /&gt;
&lt;br /&gt;
This token MUST appear as the first token on the line in the file.&lt;br /&gt;
&lt;br /&gt;
A Second FACTDEF with matching X, z but different y will produce an error, since you have two conflicting items with the same identifier.&lt;br /&gt;
&lt;br /&gt;
Duplicate FACTDEF with matching x, y, z are legal (thus allowing it to be present in multiple sources), but other tokens on the line are CUMULATIVE (dupe entries even in different files ACT LIKE A MOD)&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;y&amp;quot; Items will be hardcoded.  In addition to &amp;quot;STRING&amp;quot;, the same items that are valid as the [http://pcgen.org/autobuilds/pcgen-docs/listfilepages/globalfilestagpages/globalfilesother.html#QUALIFY &amp;quot;x&amp;quot; value of QUALIFY] (the existing Global token) would also be legal here.&lt;br /&gt;
&lt;br /&gt;
===VISIBLE===&lt;br /&gt;
&lt;br /&gt;
For any given FACTDEF, we can control how that FACT is used.  This allows us to make it visible to the end user, or display in output.&lt;br /&gt;
&lt;br /&gt;
 VISIBLE:x&lt;br /&gt;
&lt;br /&gt;
x is:&lt;br /&gt;
 YES&lt;br /&gt;
 NO (default is NO)&lt;br /&gt;
 DISPLAY&lt;br /&gt;
 EXPORT&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 FACTDEF:DEITY|STRING|Symbol &amp;lt;&amp;gt; VISIBLE:EXPORT&lt;br /&gt;
&lt;br /&gt;
EXPORT or YES would enable the output in Freemarker:&lt;br /&gt;
&lt;br /&gt;
 ${deity.symbol}&lt;br /&gt;
&lt;br /&gt;
(which would produce an error if VISIBLE:NO or VISIBLE:DISPLAY)&lt;br /&gt;
&lt;br /&gt;
EXPORT or YES or will trigger display in the UI, specifically in the items about the object, in Gui2InfoDisplay (code will know the meaning of this)&lt;br /&gt;
&lt;br /&gt;
In case of .MOD (see FACTDEF for multiple definitions acting as a .MOD) this overwrites&lt;br /&gt;
&lt;br /&gt;
===SELECTABLE===&lt;br /&gt;
&lt;br /&gt;
For any given FACTDEF, we can control how that FACT is used.  This allows us to make it usable in CHOOSE or other locations where a Primitive is legal:&lt;br /&gt;
&lt;br /&gt;
 SELECTABLE:&lt;br /&gt;
&lt;br /&gt;
x is:&lt;br /&gt;
 YES&lt;br /&gt;
 NO (default is NO)&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 FACTDEF:DEITY|ALIGNMENT|Align &amp;lt;&amp;gt; VISIBLE:YES &amp;lt;&amp;gt; SELECTABLE:YES&lt;br /&gt;
&lt;br /&gt;
SELECTABLE:YES enables use in a CHOOSE:&lt;br /&gt;
&lt;br /&gt;
 CHOOSE:DEITY|ALIGN=LG&lt;br /&gt;
&lt;br /&gt;
Given the above FACTDEF, this would allow a choice of any Deity with the 'ALIGN' FACT set to 'LG'  (this emulates the ALIGN= item we have in CHOOSE:DEITY today)&lt;br /&gt;
&lt;br /&gt;
(It would produce an error if the FACTDEF for ALIGN was SELECTABLE:NO)&lt;br /&gt;
&lt;br /&gt;
In case of .MOD (see FACTDEF for multiple definitions acting as a .MOD) this overwrites&lt;br /&gt;
&lt;br /&gt;
===REQUIRED===&lt;br /&gt;
&lt;br /&gt;
For any given FACTDEF, we can make that FACT requried for a certain type of object.&lt;br /&gt;
&lt;br /&gt;
 REQUIRED:x&lt;br /&gt;
&lt;br /&gt;
x is:&lt;br /&gt;
 YES&lt;br /&gt;
 NO (default is NO)&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 FACTDEF:DEITY|ALIGNMENT|Align &amp;lt;&amp;gt; VISIBLE:YES &amp;lt;&amp;gt; REQUIRED:YES&lt;br /&gt;
&lt;br /&gt;
This would then trigger an LST load error if a Deity did not have the &amp;quot;ALIGN&amp;quot; Fact assigned.&lt;br /&gt;
&lt;br /&gt;
In case of .MOD (see FACTDEF for multiple definitions acting as a .MOD) this overwrites&lt;br /&gt;
&lt;br /&gt;
As caution to the data team: Use of this forces it across ALL loaded data, NOT JUST DATA FROM THE LOCAL PCC FILE.  That likely means this is used sparingly, and only in base sets, otherwise the additional sets would have to .MOD a lot of stuff...&lt;br /&gt;
&lt;br /&gt;
===DISPLAYNAME===&lt;br /&gt;
&lt;br /&gt;
For any given FACTDEF, we can control the name displayed for that type of item in the UI&lt;br /&gt;
&lt;br /&gt;
 DISPLAYNAME:x&lt;br /&gt;
&lt;br /&gt;
x is a String (used to describe this fact in the UI)&lt;br /&gt;
&lt;br /&gt;
Intent is that this is used to describe the object and is the string that will be displayed in the UI&lt;br /&gt;
&lt;br /&gt;
In case of .MOD (see FACTDEF for multiple definitions acting as a .MOD) this overwrites&lt;br /&gt;
&lt;br /&gt;
===EXPLANATION===&lt;br /&gt;
&lt;br /&gt;
For any given FACTDEF, we can explain the purpose it serves in the data&lt;br /&gt;
&lt;br /&gt;
 EXPLANATION:x&lt;br /&gt;
&lt;br /&gt;
x is a String&lt;br /&gt;
&lt;br /&gt;
Intent is this is used to describe what the object is for purposes of the LST editor or readers of the data&lt;br /&gt;
&lt;br /&gt;
In case of .MOD (see FACTDEF for multiple definitions acting as a .MOD) this overwrites&lt;br /&gt;
&lt;br /&gt;
==Global PREFACT==&lt;br /&gt;
&lt;br /&gt;
Of course, being able to define a FACT also demands something like:&lt;br /&gt;
&lt;br /&gt;
 PREFACT:w,x,y=z&lt;br /&gt;
 w is a number&lt;br /&gt;
 x is the type (e.g. DEITY) - matches the types defined for FACTDEF&lt;br /&gt;
 y is the identifier (e.g. SYMBOL)&lt;br /&gt;
 z is the required value&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
 PREFACT:1,DEITY,SYMBOL=Star&lt;br /&gt;
&lt;br /&gt;
=Code Team Awareness=&lt;br /&gt;
&lt;br /&gt;
==Generic behavior==&lt;br /&gt;
&lt;br /&gt;
This is designed to provide generic behavior to get us &amp;quot;out of the business&amp;quot; of dealing with minor token requests. There are actually dozens of &amp;quot;facts&amp;quot; about Equipment that have been requested for MSRD and this proposal would replace MANY of the existing NEWTAG proposals, and do it with less code (and without risk of copy/paste error)&lt;br /&gt;
&lt;br /&gt;
==Caching==&lt;br /&gt;
&lt;br /&gt;
One of the weaknesses we have in our existing Primitive system is multiple construction and caching.  Let's take something like this in the data:&lt;br /&gt;
&lt;br /&gt;
 CHOOSE:DEITY|ALIGN=LG&lt;br /&gt;
&lt;br /&gt;
If this appears twice, then the unfortunate part is that we create two Deity ALIGN Primitives.  This is wasteful, albeit minor.&lt;br /&gt;
&lt;br /&gt;
The challenge is that we also want to ensure that we don't have to redo work.  So if we had that CHOOSE twice, we would want to cache that information.  With multiple primitives that is not possible.  With a centralized PrimitiveFactory (or whatever) it becomes practical to build the Primitive once, and then that Primitive can itself cache results.&lt;br /&gt;
&lt;br /&gt;
However, a cache is only practical if the underlying information cannot change.  (If it can change, it's both not a fact, and not cacheable)&lt;br /&gt;
&lt;br /&gt;
This provides a generic method of dealing with facts that ensures those facts *do not change*, thus any infrastructure we build can be cacheable (and we can automatically build that infrastructure)&lt;br /&gt;
&lt;br /&gt;
=Challenges=&lt;br /&gt;
&lt;br /&gt;
==Capitalization==&lt;br /&gt;
&lt;br /&gt;
Frankly this is a bear.  Currently we import LST files in case-insensitive form (technically all caps), but Freemarker output is case sensitive.  So the conversion of Symbol (or however it appears in the FACTDEF) to .symbol in the output is a convention we have to agree upon:&lt;br /&gt;
* Freemarker is always in lower case for a FACT:&lt;br /&gt;
* We enforce an identifier to appear in all caps (not strictly required, so perhaps this is a data standard)&lt;br /&gt;
&lt;br /&gt;
==Localization==&lt;br /&gt;
&lt;br /&gt;
Currently Gui2InfoFactory uses internationalized strings to identify each item (e.g. Symbol).  In order to &amp;quot;unhardcode&amp;quot; Gui2InfoFactory, we need to put that into the FACTDEF line as well, but that raises the &amp;quot;localization in data&amp;quot; debate.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_Instructions&amp;diff=3638</id>
		<title>Release Instructions</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_Instructions&amp;diff=3638"/>
		<updated>2014-06-17T12:20:59Z</updated>

		<summary type="html">&lt;p&gt;James: Initial gradle scirpt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to follow when making a release of PCGen. If it is your first time, please check the prereqs section at the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
The first time you run a release you will have to make sure you have the following tools available:&lt;br /&gt;
===Release Notes===&lt;br /&gt;
* Text editor&lt;br /&gt;
* Web browser&lt;br /&gt;
* Perl interpreter&lt;br /&gt;
* Perl modules: readonly (installed on Windows via ActivePerl's Perl Package Manager)&lt;br /&gt;
&lt;br /&gt;
===Release===&lt;br /&gt;
* Java SDK 1.6 (the one that includes the javac compiler)&lt;br /&gt;
* Gradle 1.x&lt;br /&gt;
* Perl interpreter&lt;br /&gt;
* SVN&lt;br /&gt;
* [http://nsis.sourceforge.net/Download NSIS]&lt;br /&gt;
&lt;br /&gt;
===Outstanding Issues===&lt;br /&gt;
You need to check JIRA for any outstanding issues to ensure the release meets our QA std.&lt;br /&gt;
&lt;br /&gt;
* Alpha releases require no Blockers, allow Critical only with Code lead exception&lt;br /&gt;
* Beta releases require no Blockers or Criticals&lt;br /&gt;
* RCs/final releases require no Blockers, Criticals, or Majors&lt;br /&gt;
&lt;br /&gt;
==Create Release Notes==&lt;br /&gt;
&lt;br /&gt;
# Update your local copy of pcgen from SVN&lt;br /&gt;
# Copy the previous set of release notes to pcgen-release-notes-nnn.html where nnn is the version number.&lt;br /&gt;
# Do a global replace of the old version number to the new version number, both as n.nn.n and nnnn&lt;br /&gt;
# Open Jira and for each project open the release notes for the version.&lt;br /&gt;
# Copy the html to the changelog section, changing h2 tags to h3.&lt;br /&gt;
# Update the What's New section with any high profile changes.&lt;br /&gt;
# Commit the new release notes and notify pcgen_bod so they can review it.&lt;br /&gt;
# Notify pcgen dev and experimental lists of upcoming release, asking for autobuilds to be tested. Best to give 24 hours notice.&lt;br /&gt;
&lt;br /&gt;
==The Build==&lt;br /&gt;
# Using a clean directory with no changes to the pcgen files&lt;br /&gt;
# '''svn update''' the PCGen repository (5 mins)&lt;br /&gt;
# Release manager edits src/java/pcgen/gui/prop/PCGenProp.properties to set the release date, version number, contributors, etc. and commit the result (5 mins)&lt;br /&gt;
# Execute '''gradle clean build slowtest''' in the pcgen directory and verify there are no failing Junit test (20 mins)&lt;br /&gt;
# Check Jira for any closed requests missing from the release notes. Steps 4 and 6 of 'Create Release Notes' section above can be used to assist here. (10 mins)&lt;br /&gt;
# Update the readme.md file with the what's new section of the release notes.&lt;br /&gt;
# Execute '''gradle genDataList''' and check if there are any &amp;quot;Unknown publisher&amp;quot; messages. If so you need to add new entries for the listed publishers to the gendatalist.pl script.(1 min1)&lt;br /&gt;
# Execute '''gradle fullZip''' or '''gradle buildNsis''' to generate a testing zip or exe. (3 mins)&lt;br /&gt;
# Smoke test the newly built pcgen full zip or exe.  (30 mins)&lt;br /&gt;
# Create a folder for the release under the [https://sourceforge.net/projects/pcgen/files/ File Manager]&lt;br /&gt;
# Upload the release notes using the File Manager to the release folder&lt;br /&gt;
# '''needs updating&amp;gt;&amp;gt;''' Run '''gradle release''' (which updates the gradlefiles and tags the SVN repository). Tag format is '''release-5.17.x''' while the version format is '''5.17.x''' (2 mins)&lt;br /&gt;
# Run '''gradle checksum''' to generate the release files. (5 mins)&lt;br /&gt;
# Upload the release files to SourceForge. The quickest way is uploading via the web, the same way you uploaded the release notes etc. (10 mins)&lt;br /&gt;
# Update Readme.MD with the SHA256 checksums from target/SHA256-digests.txt. Upload the revised file and check-in. (5 mins)&lt;br /&gt;
# Notify PCGen_bod of the new release. (5 mins)&lt;br /&gt;
# PR Monkeys create a news item for the new release&lt;br /&gt;
# PR Monkeys send announcement to all pcgen mailing list for the new release&lt;br /&gt;
&lt;br /&gt;
==Update JIRA==&lt;br /&gt;
&lt;br /&gt;
For each of the projects, mark the version you are working on as released and create the next version if it doesn't already exist. When marking a version as released, please make sure the released date is set to today.&lt;br /&gt;
 &lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/CODE/versions Code Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/DATA/versions Data Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/DOCS/versions Documentation Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/NEWSOURCE/versions New Source Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/NEWTAG/versions New Tag Versions]&lt;br /&gt;
* [http://jira.pcgen.org/plugins/servlet/project-config/OS/versions Output Sheets Versions]&lt;br /&gt;
&lt;br /&gt;
==Mac Installer==&lt;br /&gt;
&lt;br /&gt;
See [http://pcgen.svn.sourceforge.net/viewvc/pcgen/Trunk/pcgen/installers/mac-installer/instructions.html Instructions]&lt;br /&gt;
&lt;br /&gt;
==Signing Files with PGP==&lt;br /&gt;
'''Historical only''' We used to use the [[http://www.gnupg.org/ GnuPG for Windows]] to generate the signatures. You will need the private key, either your own, or the PCGen one (contact the PCGen BOD). Once GnuPG is installed and knows about the key you wish to use, it is just a matter fo right clicking on the files to be signed (multi-select is fine) and selecting GPGee &amp;gt; Sign and then making sure the PCGen key is selected, hitting OK and entering the passphrase for the key. This creates an .asc signature file for each selected file.&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
Yes, even the best installs of all the program amount to nothing if there is a hitch. These are basic notes from the current issues cropping up and resolutions. These notes are not prettified yet. The idea being we will get a full set of troubleshooting tips and tricks here in the near future.&lt;br /&gt;
&lt;br /&gt;
Check your versions. &lt;br /&gt;
JDK1.5 is required with JAVA_HOME variable (see below)&lt;br /&gt;
SVN must be a true .exe install, TortoiseSVN will not meet this requirement&lt;br /&gt;
SVN exe can be found here [[http://subversion.tigris.org/files/documents/15/46531/Setup-Subversion-1.6.5.msi SVN]]&lt;br /&gt;
&lt;br /&gt;
My Computer &amp;gt; System &amp;gt; Advanced Settings:&lt;br /&gt;
For JAVA_HOME make sure it's a set System Variable and make sure it's using the correct path to your current installation base folder&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3530</id>
		<title>Template Engine</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3530"/>
		<updated>2014-02-22T04:26:50Z</updated>

		<summary type="html">&lt;p&gt;James: Add doco for equipsetloop directive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
== Template Engine Sub Project ==&lt;br /&gt;
&lt;br /&gt;
The aim of the project is to examine the Freemarker library with a view to using it to replace our export engine. In particular it would cover functionality logic functions like looping and if tests. This would leave our code to deal with the important things like TO HIT values etc.&lt;br /&gt;
&lt;br /&gt;
We would do this in three phases:&lt;br /&gt;
# Add support for Freemarker templates for output&lt;br /&gt;
# Once sufficient sheets have been converted/rewritten, deprecate support for old sheet types&lt;br /&gt;
# Finally after a few releases, remove support for the old sheet types.&lt;br /&gt;
&lt;br /&gt;
There are a few reasons for exploring this change&lt;br /&gt;
* Add a richer set of logic commands to enable more customisable output&lt;br /&gt;
* Simpler more consistent logic commands and more widely understood syntax&lt;br /&gt;
* Remove one of the more complex and difficult to maintain sections of the PCGen code base.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Currently working on phase 1.&lt;br /&gt;
&lt;br /&gt;
FreeMarker support has been added to PCGen and is available in the [http://pcgen.org/autobuilds/ trunk autobuilds]. It will first be available in the 6.03.00 alpha release scheduled for February 2014.&lt;br /&gt;
&lt;br /&gt;
Progress is being tracked in [http://jira.pcgen.org/browse/CODE-2418 CODE-2418 FreeMarker Output Generation - Phase 1]&lt;br /&gt;
&lt;br /&gt;
== FreeMarker Template How-To ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to FreeMarker ===&lt;br /&gt;
&lt;br /&gt;
[http://freemarker.org/ FreeMarker] is a template engine that has now been incorporated into PCGen's export system as an alternative to our venerable export syntax. The FreeMarker engine brings some important benefits:&lt;br /&gt;
* Industry standard syntax&lt;br /&gt;
* Support for macros to output parameterised blocks&lt;br /&gt;
* Improved flow-control and logic instructions&lt;br /&gt;
* Support for including other files, e.g. macro libraries or common blocks&lt;br /&gt;
* Calculations and state within the output template&lt;br /&gt;
* Built-in syntax support in [http://freemarker.org/editors.html many text editors]&lt;br /&gt;
&lt;br /&gt;
Here's a simple example FreeMarker PCGen template&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on ${.now?date} at ${.now?time} using template ${.template_name} --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; - ${.now?date}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: &amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: ${pcvar(&amp;quot;CL=Fighter&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: ${pcvar(&amp;quot;CL=Rogue&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;@loop from=0 to=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1 ; class , class_has_next &amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt; &amp;lt;#t&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&amp;lt;#t&amp;gt;&lt;br /&gt;
&amp;lt;/@loop&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which produces the output&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on 29/10/2013 at 9:44:47 PM using template csheet_test-html.ftl --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for Ronald 'Surefingers' Millbridge - 29/10/2013&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: Ronald 'Surefingers' Millbridge &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: James &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: 0 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: 11 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rog 11,Wiz 2&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FreeMarker Documentation ===&lt;br /&gt;
&lt;br /&gt;
FreeMarker has quite thorough documentation. The main references output sheet authors will use are:&lt;br /&gt;
# [http://freemarker.org/docs/dgui.html Template Author's Guide]&lt;br /&gt;
# [http://freemarker.org/docs/ref.html Reference Guide]&lt;br /&gt;
# [http://freemarker.org/ Main FreeMarker page]&lt;br /&gt;
&lt;br /&gt;
In addition, see testsuite/base-xml.ftl for a fully worked example of xml output.&lt;br /&gt;
&lt;br /&gt;
=== Creating a Sheet ===&lt;br /&gt;
&lt;br /&gt;
FreeMarker sheets are detected by PCGen by their file name suffix. A template ending in .ftl will be processed by FreeMarker rather than by PCGen's legacy output engine. The extension of the file to be produced should be immediately before that and preceded by a . or -. So a template to produce html output might be named csheet-first.html.ftl or chseet-compact-html.ftl and PCGen would pick up that it was a template to be processed by FreeMarker template that would produce output of a html file.&lt;br /&gt;
&lt;br /&gt;
=== PCGen's Custom Functions ===&lt;br /&gt;
&lt;br /&gt;
To provide output of PCGen characters we need to be able to access the character data and the output tags. The following tags are provided for that purpose.&lt;br /&gt;
&lt;br /&gt;
==== pcstring ====&lt;br /&gt;
&lt;br /&gt;
This tag evaluates a PCGen export token for the current character and returns the value as a string. It may be called as a directive (with a single parameter named 'tag') or as a function (with a single unnamed parameter). &lt;br /&gt;
&lt;br /&gt;
''Examples''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
${pcstring('CLASSABB.${class}')}&lt;br /&gt;
&amp;lt;#if (pcstring('SPELLLISTCLASS.${class}')?length &amp;gt; 0)&amp;gt;present&amp;lt;/#if&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== pcvar ====&lt;br /&gt;
&lt;br /&gt;
This tag allows character variable values to be exported to a FreeMarker template. It evaluates a variable for the current character and returns the value as a number. &lt;br /&gt;
&lt;br /&gt;
''Examples''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#assign numClasses=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')/&amp;gt;&lt;br /&gt;
${pcvar('count(&amp;quot;ABILITIES&amp;quot;,&amp;quot;CATEGORY=FEAT&amp;quot;,&amp;quot;TYPE=Metamagic&amp;quot;,&amp;quot;VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY&amp;quot;)')}&lt;br /&gt;
${pcvar(&amp;quot;CL=Fighter&amp;quot;)}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== pcboolean ====&lt;br /&gt;
&lt;br /&gt;
pcboolean allows character boolean values to be exported to a FreeMarker template. It evaluates an export token for the current character and returns the value as a boolean. &lt;br /&gt;
&lt;br /&gt;
''Examples''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#if pcboolean('WEAPON.${weap}.ISTYPE.Double')&amp;gt;&lt;br /&gt;
&amp;lt;#if (pcboolean('HASVAR:Manifester.OR.HASVAR:PsychicWarriorManifester')) &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loop ====&lt;br /&gt;
&lt;br /&gt;
The loop tag provides a way to repeat content a certain number of times. Unlike the inbuilt list directive it can loop zero times.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
* from (optional) - The starting value, defaults to 0.&lt;br /&gt;
* to - The ending value (inclusive). If this is less than from then the contents will not be output.&lt;br /&gt;
* step (optional) - The amount to increment b each loop, defaults to 1.&lt;br /&gt;
&lt;br /&gt;
In addition up to two loopvars may be specified. The first will be populated with the current index value of the loop and the second will be a boolean indicating if there are more iterations of the loop to go. We recommend that the second variable, if present, is named after the first variable with _has_next added. e.g. class, class_has_next . This is in order to match the list directive, which provides a similarly named variable automatically.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@loop from=0 to=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1 ; class , class_has_next &amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&lt;br /&gt;
&amp;lt;/@loop&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
might produce&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Rog 11, Wiz 5&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== equipsetloop ====&lt;br /&gt;
&lt;br /&gt;
The equipsetloop tag provides a way to repeat content for each of a character's equipment sets. &lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@equipsetloop&amp;gt;&lt;br /&gt;
  &amp;lt;b&amp;gt;Equipment Set : &amp;lt;/b&amp;gt; ${pcstring(&amp;quot;EQSET.NAME&amp;quot;)}. Equipment:&lt;br /&gt;
  &amp;lt;@loop from=0 to=pcvar('COUNT[EQUIPMENT.MERGELOC]')-1 ; equip , equip_has_next &amp;gt;&lt;br /&gt;
    ${pcstring(&amp;quot;EQ.MERGELOC.${equip}.NAME&amp;quot;)}&amp;lt;#if equip_has_next&amp;gt;, &amp;lt;/#if&amp;gt;&lt;br /&gt;
  &amp;lt;/@loop&amp;gt;&amp;lt;#lt&amp;gt;&amp;lt;#-- Equipment --&amp;gt;&lt;br /&gt;
  &amp;lt;/equipmentset&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/@equipsetloop&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
might produce&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Equipment Set : &amp;lt;/b&amp;gt; Travelling Gear. Equipment: Backpack, Longsword, Traveller's Outfit&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Equipment Set : &amp;lt;/b&amp;gt; Council. Equipment: Coin purse, Noble's Outfit, Rapier&amp;lt;br/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Phase 1 ==&lt;br /&gt;
&lt;br /&gt;
The aim of phase 1 is to utilise the already built output system and add the ability to &lt;br /&gt;
# Detect Freemarker templates and use the Freemarker engine to process them&lt;br /&gt;
# Add custom directives that can be called from a template (output sheet) to allow the existing output tags to be used.&lt;br /&gt;
&lt;br /&gt;
This gives us a simple change-over and use of our existing well tested output tags.&lt;br /&gt;
&lt;br /&gt;
We need to ensure that freemarker templates can be used in html, and PDF output styles.&lt;br /&gt;
&lt;br /&gt;
See [http://freemarker.org/docs/dgui_misc_userdefdir.html User Defined Directives] and [http://freemarker.org/docs/pgui_config_sharedvariables.html Shared Variables] for information on creating custom directives/tags.&lt;br /&gt;
&lt;br /&gt;
=== 1b Assisted Looping ===&lt;br /&gt;
&lt;br /&gt;
Freemarker's inbuilt looping mechanism is object oriented. It expects to receive a list and process through it. In contrast, PCGen currently only outputs strings and numbers. The technique described at [http://stackoverflow.com/questions/15461721/freemarker-template-for-loop-statement For loop] can be used, which results in a structure like the following to loop through a list:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#assign max=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1&amp;gt;&lt;br /&gt;
&amp;lt;#if (max&amp;gt;=0)&amp;gt;&lt;br /&gt;
&amp;lt;#list 0..max as class&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&lt;br /&gt;
&amp;lt;/#if&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note The if test is to allow the loop to be skipped if the list is empty.&lt;br /&gt;
&lt;br /&gt;
Now this is a bit verbose so I have instead created a custom 'loop' directive to allow looping a number of times. This also deals with the empty loop scenario. See [[#loop|loop]]&lt;br /&gt;
&lt;br /&gt;
=== 1c Object Output ===&lt;br /&gt;
&lt;br /&gt;
To more closely align with FreeMarker's object oriented approach, we should examine the potential for exporting objects for output. So for example, exporting a list of spell objects that can then be looped over and each object queried as needed. A base for this output interface could be the Facade work done for the user interface.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#list pc.knownspells as spell&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;${spell.name} School: ${spell.school} &amp;lt;#if spell.subschool??&amp;gt; [${spell.school}] &amp;lt;/#if&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Explanation_of_the_Code_Base&amp;diff=3517</id>
		<title>Explanation of the Code Base</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Explanation_of_the_Code_Base&amp;diff=3517"/>
		<updated>2013-12-30T22:46:54Z</updated>

		<summary type="html">&lt;p&gt;James: Update for the new UI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=High level overview of PCGen Code Base=&lt;br /&gt;
&lt;br /&gt;
''src/java/pcgen'' is where the code tree begins. The directories match the package names — so ''pcgen.core'' would be ''src/java/pcgen/core'' (or ''src\java\pcgen\core'' if you are on Windows).&lt;br /&gt;
&lt;br /&gt;
=Packages=&lt;br /&gt;
&lt;br /&gt;
==pcgen.base.*==&lt;br /&gt;
&lt;br /&gt;
These classes are 'base' library elements.  None of these should be objects that are dependent upon pcgen.cdom or pcgen.core classes.  The intent is that pcgen.base elements are usable in any project, not specifically PCGen.  No item which is deeply tied to the concept of a Role-Playing Game or building a Player Character should be present in this package.&lt;br /&gt;
&lt;br /&gt;
==pcgen.cdom.*==&lt;br /&gt;
&lt;br /&gt;
The pcgen.cdom package contains the core contents of the CDOM structure.  There are a number of key subpackages of pcgen.cdom:&lt;br /&gt;
&lt;br /&gt;
# pcgen.cdom.base: This is the &amp;quot;base&amp;quot; package, which has many key components that the entire PCGen code base is dependent upon.  It should be expected that the members of this package have few dependencies outside of pcgen.base* and pcgen.cdom.base*, as this is &amp;quot;low&amp;quot; in the package hierarchy.&lt;br /&gt;
# pcgen.cdom.choiceset: This package contains [[CDOM Primitive Choice Set Concept Document|Primitive Choice Sets]]&lt;br /&gt;
# pcgen.cdom.content: This package contains the non-CDOM Object content objects that would make up a Player Character.  Long term, these objects would be &amp;quot;granted&amp;quot; by CDOM Objects, and thus would appear directly in the CDOM Graph that defines the Player Character (in 5.16, there is very little that distinguishes content from a helper)&lt;br /&gt;
# pcgen.cdom.enumeration: This package contains type safe enumerations (such as enums)&lt;br /&gt;
# pcgen.cdom.formula: This package contains items related to formula calculations performed by PCGen.&lt;br /&gt;
# pcgen.cdom.helper: This package is for &amp;quot;helper&amp;quot; objects of the CDOM Objects found within pcgen.cdom.inst.  Generally a &amp;quot;helper&amp;quot; would be contained within the CDOM Object.&lt;br /&gt;
# pcgen.cdom.inst: This package is for instances of CDOM Objects.  Long term, this will contain many of the objects currently in pcgen.core&lt;br /&gt;
# pcgen.cdom.list: This package contains list objects, such as Class Spell List objects.  These list objects serve as identifiers for collections of CDOM Objects that are used at runtime.&lt;br /&gt;
# pcgen.cdom.reference: This package contains [[CDOM References Concept Document|CDOM References]]&lt;br /&gt;
# pcgen.cdom.modifier: This package contains modifiers, a specialized form of content that is designed to alter the behavior of content that is part of a Player Character (The override from a Hit Die Lock is a good example of a modifier)&lt;br /&gt;
# pcgen.cdom.util: These are utility packages for classes contained within the pcgen.cdom* packages.&lt;br /&gt;
&lt;br /&gt;
==pcgen.rules.*==&lt;br /&gt;
&lt;br /&gt;
This package contains the classes related to the &amp;quot;Rules Data Store&amp;quot;.  The classes here are responsible for loading (and writing) the rules files (PCC, LST), and when combined with the token plugins, this package converts the persistent objects into the instances, lists, content, helpers, references, and other objects of the pcgen.cdom* package.&lt;br /&gt;
&lt;br /&gt;
==pcgen.core==&lt;br /&gt;
&lt;br /&gt;
This is where the business logic goes. This is the main engine that makes things work. The most important class in here is PObject, many classes are subclassed from this (like PCClass, Race, Feat, Spell, etc.). Another important class is PlayerCharacter which is where the player characters are constructed and manipulated. Globals contains the lists of objects loaded when a user loads their desired sources. Constants holds most of the code constants so you do not need to remember their values.&lt;br /&gt;
&lt;br /&gt;
==pcgen.gui==&lt;br /&gt;
&lt;br /&gt;
This was the old GUI logic. It has now been removed and the UI is in the pcgen.gui2 classes.&lt;br /&gt;
&lt;br /&gt;
==pcgen.gui2==&lt;br /&gt;
&lt;br /&gt;
This is the NewGUI logic, starting from PCGen 6.0. The main window is pcgen.gui2.PCGenFrame, the tabs are in pcgen.gui2.tabs. All interaction between the tabs and the PCGen core is done via facades. This provides a nice separation of controller and view logic from the model code. The facade implementation can be found in the pcgen.gui2.facade package. Other major packages are pcgen.gui2.converter for the LST Converter and pcgen.gui2.sources for the source selection dialog.&lt;br /&gt;
&lt;br /&gt;
==pcgen.io==&lt;br /&gt;
&lt;br /&gt;
This is where the disk writing stuff occurs, like creating/parsing pcg files, and exporting character sheets.&lt;br /&gt;
&lt;br /&gt;
==pcgen.persistence==&lt;br /&gt;
&lt;br /&gt;
This is where the lst files are read in. The class that controls the loading of data is SourceFileLoader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==pcgen.system==&lt;br /&gt;
&lt;br /&gt;
This is where the new startup system introduced as part of the new user interface lives. The main class is pcgen.system.main.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==pcgen.util==&lt;br /&gt;
&lt;br /&gt;
This is where generally useful classes that are don't fit any of the other categories go.&lt;br /&gt;
&lt;br /&gt;
==plugin==&lt;br /&gt;
&lt;br /&gt;
This is where the pluggable features go. This includes tools such as Character Sheet, Dicebag, Random Name Generator, Encounter Generator, Network Management, Experience Tracker, Initiative Tracker, GM Notes, Overland Travel and the Character Tracker. It also includes processors for the variety of Lst Tokens and Output Tokens. There is also an [[Arch. Discuss of Plugin System|Architectural Discussion of the PCGen Persistence Plugin System]] to help provide additional explanation of how the Lst Tokens work.&lt;br /&gt;
&lt;br /&gt;
See the Javadocs for further details of the PCGen code base.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3516</id>
		<title>Template Engine</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3516"/>
		<updated>2013-12-24T04:27:44Z</updated>

		<summary type="html">&lt;p&gt;James: tidy-up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
== Template Engine Sub Project ==&lt;br /&gt;
&lt;br /&gt;
The aim of the project is to examine the Freemarker library with a view to using it to replace our export engine. In particular it would cover functionality logic functions like looping and if tests. This would leave our code to deal with the important things like TO HIT values etc.&lt;br /&gt;
&lt;br /&gt;
We would do this in three phases:&lt;br /&gt;
# Add support for Freemarker templates for output&lt;br /&gt;
# Once sufficient sheets have been converted/rewritten, deprecate support for old sheet types&lt;br /&gt;
# Finally after a few releases, remove support for the old sheet types.&lt;br /&gt;
&lt;br /&gt;
There are a few reasons for exploring this change&lt;br /&gt;
* Add a richer set of logic commands to enable more customisable output&lt;br /&gt;
* Simpler more consistent logic commands and more widely understood syntax&lt;br /&gt;
* Remove one of the more complex and difficult to maintain sections of the PCGen code base.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Currently working on phase 1.&lt;br /&gt;
&lt;br /&gt;
FreeMarker support has been added to PCGen and is available in the [http://pcgen.org/autobuilds/ trunk autobuilds]. It will first be available in the 6.03.00 alpha release scheduled for February 2014.&lt;br /&gt;
&lt;br /&gt;
Progress is being tracked in [http://jira.pcgen.org/browse/CODE-2418 CODE-2418 FreeMarker Output Generation - Phase 1]&lt;br /&gt;
&lt;br /&gt;
== FreeMarker Template How-To ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to FreeMarker ===&lt;br /&gt;
&lt;br /&gt;
[http://freemarker.org/ FreeMarker] is a template engine that has now been incorporated into PCGen's export system as an alternative to our venerable export syntax. The FreeMarker engine brings some important benefits:&lt;br /&gt;
* Industry standard syntax&lt;br /&gt;
* Support for macros to output parameterised blocks&lt;br /&gt;
* Improved flow-control and logic instructions&lt;br /&gt;
* Support for including other files, e.g. macro libraries or common blocks&lt;br /&gt;
* Calculations and state within the output template&lt;br /&gt;
* Built-in syntax support in [http://freemarker.org/editors.html many text editors]&lt;br /&gt;
&lt;br /&gt;
Here's a simple example FreeMarker PCGen template&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on ${.now?date} at ${.now?time} using template ${.template_name} --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; - ${.now?date}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: &amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: ${pcvar(&amp;quot;CL=Fighter&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: ${pcvar(&amp;quot;CL=Rogue&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;@loop from=0 to=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1 ; class , class_has_next &amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt; &amp;lt;#t&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&amp;lt;#t&amp;gt;&lt;br /&gt;
&amp;lt;/@loop&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which produces the output&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on 29/10/2013 at 9:44:47 PM using template csheet_test-html.ftl --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for Ronald 'Surefingers' Millbridge - 29/10/2013&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: Ronald 'Surefingers' Millbridge &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: James &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: 0 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: 11 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rog 11,Wiz 2&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FreeMarker Documentation ===&lt;br /&gt;
&lt;br /&gt;
FreeMarker has quite thorough documentation. The main references output sheet authors will use are:&lt;br /&gt;
# [http://freemarker.org/docs/dgui.html Template Author's Guide]&lt;br /&gt;
# [http://freemarker.org/docs/ref.html Reference Guide]&lt;br /&gt;
# [http://freemarker.org/ Main FreeMarker page]&lt;br /&gt;
&lt;br /&gt;
In addition, see testsuite/base-xml.ftl for a fully worked example of xml output.&lt;br /&gt;
&lt;br /&gt;
=== Creating a Sheet ===&lt;br /&gt;
&lt;br /&gt;
FreeMarker sheets are detected by PCGen by their file name suffix. A template ending in .ftl will be processed by FreeMarker rather than by PCGen's legacy output engine. The extension of the file to be produced should be immediately before that and preceded by a . or -. So a template to produce html output might be named csheet-first.html.ftl or chseet-compact-html.ftl and PCGen would pick up that it was a template to be processed by FreeMarker template that would produce output of a html file.&lt;br /&gt;
&lt;br /&gt;
=== PCGen's Custom Functions ===&lt;br /&gt;
&lt;br /&gt;
To provide output of PCGen characters we need to be able to access the character data and the output tags. The following tags are provided for that purpose.&lt;br /&gt;
&lt;br /&gt;
==== pcstring ====&lt;br /&gt;
&lt;br /&gt;
This tag evaluates a PCGen export token for the current character and returns the value as a string. It may be called as a directive (with a single parameter named 'tag') or as a function (with a single unnamed parameter). &lt;br /&gt;
&lt;br /&gt;
''Examples''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
${pcstring('CLASSABB.${class}')}&lt;br /&gt;
&amp;lt;#if (pcstring('SPELLLISTCLASS.${class}')?length &amp;gt; 0)&amp;gt;present&amp;lt;/#if&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== pcvar ====&lt;br /&gt;
&lt;br /&gt;
This tag allows character variable values to be exported to a FreeMarker template. It evaluates a variable for the current character and returns the value as a number. &lt;br /&gt;
&lt;br /&gt;
''Examples''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#assign numClasses=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')/&amp;gt;&lt;br /&gt;
${pcvar('count(&amp;quot;ABILITIES&amp;quot;,&amp;quot;CATEGORY=FEAT&amp;quot;,&amp;quot;TYPE=Metamagic&amp;quot;,&amp;quot;VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY&amp;quot;)')}&lt;br /&gt;
${pcvar(&amp;quot;CL=Fighter&amp;quot;)}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== pcboolean ====&lt;br /&gt;
&lt;br /&gt;
pcboolean allows character boolean values to be exported to a FreeMarker template. It evaluates an export token for the current character and returns the value as a boolean. &lt;br /&gt;
&lt;br /&gt;
''Examples''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#if pcboolean('WEAPON.${weap}.ISTYPE.Double')&amp;gt;&lt;br /&gt;
&amp;lt;#if (pcboolean('HASVAR:Manifester.OR.HASVAR:PsychicWarriorManifester')) &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loop ====&lt;br /&gt;
&lt;br /&gt;
The loop tag provides a way to repeat content a certain number of times. Unlike the inbuilt list directive it can loop zero times.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
* from (optional) - The starting value, defaults to 0.&lt;br /&gt;
* to - The ending value (inclusive). If this is less than from then the contents will not be output.&lt;br /&gt;
* step (optional) - The amount to increment b each loop, defaults to 1.&lt;br /&gt;
&lt;br /&gt;
In addition up to two loopvars may be specified. The first will be populated with the current index value of the loop and the second will be a boolean indicating if there are more iterations of the loop to go. We recommend that the second variable, if present, is named after the first variable with _has_next added. e.g. class, class_has_next . This is in order to match the list directive, which provides a similarly named variable automatically.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@loop from=0 to=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1 ; class , class_has_next &amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&lt;br /&gt;
&amp;lt;/@loop&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
might produce&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Rog 11, Wiz 5&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Phase 1 ==&lt;br /&gt;
&lt;br /&gt;
The aim of phase 1 is to utilise the already built output system and add the ability to &lt;br /&gt;
# Detect Freemarker templates and use the Freemarker engine to process them&lt;br /&gt;
# Add custom directives that can be called from a template (output sheet) to allow the existing output tags to be used.&lt;br /&gt;
&lt;br /&gt;
This gives us a simple change-over and use of our existing well tested output tags.&lt;br /&gt;
&lt;br /&gt;
We need to ensure that freemarker templates can be used in html, and PDF output styles.&lt;br /&gt;
&lt;br /&gt;
See [http://freemarker.org/docs/dgui_misc_userdefdir.html User Defined Directives] and [http://freemarker.org/docs/pgui_config_sharedvariables.html Shared Variables] for information on creating custom directives/tags.&lt;br /&gt;
&lt;br /&gt;
=== 1b Assisted Looping ===&lt;br /&gt;
&lt;br /&gt;
Freemarker's inbuilt looping mechanism is object oriented. It expects to receive a list and process through it. In contrast, PCGen currently only outputs strings and numbers. The technique described at [http://stackoverflow.com/questions/15461721/freemarker-template-for-loop-statement For loop] can be used, which results in a structure like the following to loop through a list:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#assign max=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1&amp;gt;&lt;br /&gt;
&amp;lt;#if (max&amp;gt;=0)&amp;gt;&lt;br /&gt;
&amp;lt;#list 0..max as class&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&lt;br /&gt;
&amp;lt;/#if&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note The if test is to allow the loop to be skipped if the list is empty.&lt;br /&gt;
&lt;br /&gt;
Now this is a bit verbose so I have instead created a custom 'loop' directive to allow looping a number of times. This also deals with the empty loop scenario. See [[#loop|loop]]&lt;br /&gt;
&lt;br /&gt;
=== 1c Object Output ===&lt;br /&gt;
&lt;br /&gt;
To more closely align with FreeMarker's object oriented approach, we should examine the potential for exporting objects for output. So for example, exporting a list of spell objects that can then be looped over and each object queried as needed. A base for this output interface could be the Facade work done for the user interface.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#list pc.knownspells as spell&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;${spell.name} School: ${spell.school} &amp;lt;#if spell.subschool??&amp;gt; [${spell.school}] &amp;lt;/#if&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3515</id>
		<title>Template Engine</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3515"/>
		<updated>2013-12-24T04:22:31Z</updated>

		<summary type="html">&lt;p&gt;James: Add usage documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Template Engine Sub Project ==&lt;br /&gt;
&lt;br /&gt;
The aim of the project is to examine the Freemarker library with a view to using it to replace our export engine. In particular it would cover functionality logic functions like looping and if tests. This would leave our code to deal with the important things like TO HIT values etc.&lt;br /&gt;
&lt;br /&gt;
We would do this in three phases:&lt;br /&gt;
# Add support for Freemarker templates for output&lt;br /&gt;
# Once sufficient sheets have been converted/rewritten, deprecate support for old sheet types&lt;br /&gt;
# Finally after a few releases, remove support for the old sheet types.&lt;br /&gt;
&lt;br /&gt;
There are a few reasons for exploring this change&lt;br /&gt;
* Add a richer set of logic commands to enable more customisable output&lt;br /&gt;
* Simpler more consistent logic commands and more widely understood syntax&lt;br /&gt;
* Remove one of the more complex and difficult to maintain sections of the PCGen code base.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Currently working on phase 1.&lt;br /&gt;
&lt;br /&gt;
FreeMarker support has been added to PCGen and is available in the [http://pcgen.org/autobuilds/ trunk autobuilds]. It will first be available in the 6.03.00 alpha release scheduled for February 2014.&lt;br /&gt;
&lt;br /&gt;
Progress is being tracked in [http://jira.pcgen.org/browse/CODE-2418 CODE-2418 FreeMarker Output Generation - Phase 1]&lt;br /&gt;
&lt;br /&gt;
== FreeMarker Template How-To ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to FreeMarker ===&lt;br /&gt;
&lt;br /&gt;
[http://freemarker.org/ FreeMarker] is a template engine that has now been incorporated into PCGen's export system as an alternative to our venerable export syntax. The FreeMarker engine brings some important benefits:&lt;br /&gt;
* Industry standard syntax&lt;br /&gt;
* Support for macros to output parameterised blocks&lt;br /&gt;
* Improved flow-control and logic instructions&lt;br /&gt;
* Support for including other files, e.g. macro libraries or common blocks&lt;br /&gt;
* Calculations and state within the output template&lt;br /&gt;
* Built in syntax support to [http://freemarker.org/editors.html many text editors]&lt;br /&gt;
&lt;br /&gt;
Here's a simple example FreeMarker PCGen template&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on ${.now?date} at ${.now?time} using template ${.template_name} --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; - ${.now?date}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: &amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: ${pcvar(&amp;quot;CL=Fighter&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: ${pcvar(&amp;quot;CL=Rogue&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;@loop from=0 to=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1 ; class , class_has_next &amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt; &amp;lt;#t&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&amp;lt;#t&amp;gt;&lt;br /&gt;
&amp;lt;/@loop&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which produces the output&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on 29/10/2013 at 9:44:47 PM using template csheet_test-html.ftl --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for Ronald 'Surefingers' Millbridge - 29/10/2013&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: Ronald 'Surefingers' Millbridge &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: James &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: 0 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: 11 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rog 11,Wiz 2&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FreeMarker Documentation ===&lt;br /&gt;
&lt;br /&gt;
FreeMarker has quite thorough documentation. The main references output sheet authors will use are:&lt;br /&gt;
# [http://freemarker.org/docs/dgui.html Template Author's Guide]&lt;br /&gt;
# [http://freemarker.org/docs/ref.html Reference Guide]&lt;br /&gt;
# [http://freemarker.org/ Main FreeMarker page]&lt;br /&gt;
&lt;br /&gt;
In addition, see testsuite/base-xml.ftl for afully worked example of xml output.&lt;br /&gt;
&lt;br /&gt;
=== Creating a Sheet ===&lt;br /&gt;
&lt;br /&gt;
FreeMarker sheets are detected by PCGen by their file name suffix. A template ending in .ftl will be processed by FreeMarker rather than by PCGen's legacy output engine. The extension of the file to be produced should be immediately before that. So a template to produce html output might be named csheet-first.html.ftl or chseet-compact-html.ftl and PCGen would pick up that it was a template to be processed by FreeMarker template that would produce output of a html file.&lt;br /&gt;
&lt;br /&gt;
=== PCGen's Custom Functions ===&lt;br /&gt;
&lt;br /&gt;
To provide output of PCGen characters we need to be able to access the character data and the output tags. &lt;br /&gt;
&lt;br /&gt;
==== pcstring ====&lt;br /&gt;
&lt;br /&gt;
This tag evaluates a PCGen export token for the current character and returns the value as a string. It may be called as a directive (with a single parameter named 'tag') or as a function (with a single unnamed parameter). &lt;br /&gt;
&lt;br /&gt;
''Examples''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
${pcstring('CLASSABB.${class}')}&lt;br /&gt;
&amp;lt;#if (pcstring('SPELLLISTCLASS.${class}')?length &amp;gt; 0)&amp;gt;present&amp;lt;/#if&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== pcvar ====&lt;br /&gt;
&lt;br /&gt;
This tag allows character variable values to be exported to a FreeMarker template. It evaluates a variable for the current character and returns the value as a number. &lt;br /&gt;
&lt;br /&gt;
''Examples''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#assign numClasses=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')/&amp;gt;&lt;br /&gt;
${pcvar('count(&amp;quot;ABILITIES&amp;quot;,&amp;quot;CATEGORY=FEAT&amp;quot;,&amp;quot;TYPE=Metamagic&amp;quot;,&amp;quot;VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY&amp;quot;)')}&lt;br /&gt;
${pcvar(&amp;quot;CL=Fighter&amp;quot;)}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== pcboolean ====&lt;br /&gt;
&lt;br /&gt;
pcboolean allows character boolean values to be exported to a FreeMarker template. It evaluates an export token for the current character and returns the value as a boolean. &lt;br /&gt;
&lt;br /&gt;
''Examples''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#if pcboolean('WEAPON.${weap}.ISTYPE.Double')&amp;gt;&lt;br /&gt;
&amp;lt;#if (pcboolean('HASVAR:Manifester.OR.HASVAR:PsychicWarriorManifester')) &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== loop ====&lt;br /&gt;
&lt;br /&gt;
The loop tag provides a way to repeat content a certain number of times. Unlike the inbuilt list directive it can loop zero times.&lt;br /&gt;
&lt;br /&gt;
'''Parameters'''&lt;br /&gt;
&lt;br /&gt;
* from (optional) - The starting value, defaults to 0.&lt;br /&gt;
* to - The ending value (inclusive). If this is less than from then the contents will not be output.&lt;br /&gt;
* step (optional) - The amount to increment b each loop, defaults to 1.&lt;br /&gt;
&lt;br /&gt;
In addition up to two loopvars may be specified. The first will be populated with the current index value of the loop and the second will be a boolean indicating if there are more iterations of the loop to go. We recommend that the second variable, if present, is named after the first variable with _has_next added. e.g. class, class_has_next . This is in order to match the list directive, which provides a similarly named variable automatically.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@loop from=0 to=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1 ; class , class_has_next &amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&lt;br /&gt;
&amp;lt;/@loop&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
might produce&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
Rog 11, Wiz 5&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Phase 1 ==&lt;br /&gt;
&lt;br /&gt;
The aim of phase 1 is to utilise the already built output system and add the ability to &lt;br /&gt;
# Detect Freemarker templates and use the Freemarker engine to process them&lt;br /&gt;
# Add custom directives that can be called from a template (output sheet) to allow the existing output tags to be used.&lt;br /&gt;
&lt;br /&gt;
This gives us a simple change-over and use of our existing well tested output tags.&lt;br /&gt;
&lt;br /&gt;
We need to ensure that freemarker templates can be used in html, and PDF output styles.&lt;br /&gt;
&lt;br /&gt;
See [http://freemarker.org/docs/dgui_misc_userdefdir.html User Defined Directives] and [http://freemarker.org/docs/pgui_config_sharedvariables.html Shared Variables] for information on creating custom directives/tags.&lt;br /&gt;
&lt;br /&gt;
=== 1b Assisted Looping ===&lt;br /&gt;
&lt;br /&gt;
Freemarker's inbuilt looping mechanism is object oriented. It expects to receive a list and process through it. In contrast, PCGen currently only outputs strings and numbers. The technique described at [http://stackoverflow.com/questions/15461721/freemarker-template-for-loop-statement For loop] can be used, which results in a structure like the following to loop through a list:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#assign max=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1&amp;gt;&lt;br /&gt;
&amp;lt;#if (max&amp;gt;=0)&amp;gt;&lt;br /&gt;
&amp;lt;#list 0..max as class&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&lt;br /&gt;
&amp;lt;/#if&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note The if test is to allow the loop to be skipped if the list is empty.&lt;br /&gt;
&lt;br /&gt;
Now this is a bit verbose so I have instead created a custom 'loop' directive to allow looping a number of times. This also deals with the empty loop scenario. See [[#loop|loop]]&lt;br /&gt;
&lt;br /&gt;
=== 1c Object Output ===&lt;br /&gt;
&lt;br /&gt;
To more closely align with FreeMarker's object oriented approach, we should examine the potential for exporting objects for output. So for example, exporting a list of spell objects that can then be looped over and each object queried as needed. A base for this output interface could be the Facade work done for the user interface.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#list pc.knownspells as spell&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;${spell.name} School: ${spell.school} &amp;lt;#if spell.subschool??&amp;gt; [${spell.school}] &amp;lt;/#if&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3514</id>
		<title>Template Engine</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3514"/>
		<updated>2013-12-24T03:31:26Z</updated>

		<summary type="html">&lt;p&gt;James: Add initial freemarker documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Template Engine Sub Project ==&lt;br /&gt;
&lt;br /&gt;
The aim of the project is to examine the Freemarker library with a view to using it to replace our export engine. In particular it would cover functionality logic functions like looping and if tests. This would leave our code to deal with the important things like TO HIT values etc.&lt;br /&gt;
&lt;br /&gt;
We would do this in three phases:&lt;br /&gt;
# Add support for Freemarker templates for output&lt;br /&gt;
# Once sufficient sheets have been converted/rewritten, deprecate support for old sheet types&lt;br /&gt;
# Finally after a few releases, remove support for the old sheet types.&lt;br /&gt;
&lt;br /&gt;
There are a few reasons for exploring this change&lt;br /&gt;
* Add a richer set of logic commands to enable more customisable output&lt;br /&gt;
* Simpler more consistent logic commands and more widely understood syntax&lt;br /&gt;
* Remove one of the more complex and difficult to maintain sections of the PCGen code base.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Currently working on phase 1.&lt;br /&gt;
&lt;br /&gt;
FreeMarker support has been added to PCGen and is available in the [http://pcgen.org/autobuilds/ trunk autobuilds]. It will first be available in the 6.03.00 alpha release scheduled for February 2014.&lt;br /&gt;
&lt;br /&gt;
Progress is being tracked in [http://jira.pcgen.org/browse/CODE-2418 CODE-2418 FreeMarker Output Generation - Phase 1]&lt;br /&gt;
&lt;br /&gt;
== FreeMarker Template How-To ==&lt;br /&gt;
&lt;br /&gt;
=== Introduction to FreeMarker ===&lt;br /&gt;
&lt;br /&gt;
[http://freemarker.org/ FreeMarker] is a template engine that has now been incorporated into PCGen's export system as an alternative to our venerable export syntax. The FreeMarker engine brings some important benefits:&lt;br /&gt;
* Industry standard syntax&lt;br /&gt;
* Support for macros to output parameterised blocks&lt;br /&gt;
* Improved flow-control and logic instructions&lt;br /&gt;
* Support for including other files, e.g. macro libraries or common blocks&lt;br /&gt;
* Calculations and state within the output template&lt;br /&gt;
* Built in syntax support to [http://freemarker.org/editors.html many text editors]&lt;br /&gt;
&lt;br /&gt;
Here's a simple example FreeMarker PCGen template&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on ${.now?date} at ${.now?time} using template ${.template_name} --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; - ${.now?date}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: &amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: ${pcvar(&amp;quot;CL=Fighter&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: ${pcvar(&amp;quot;CL=Rogue&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;@loop from=0 to=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1 ; class , class_has_next &amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt; &amp;lt;#t&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&amp;lt;#t&amp;gt;&lt;br /&gt;
&amp;lt;/@loop&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which produces the output&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on 29/10/2013 at 9:44:47 PM using template csheet_test-html.ftl --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for Ronald 'Surefingers' Millbridge - 29/10/2013&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: Ronald 'Surefingers' Millbridge &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: James &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: 0 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: 11 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rog 11,Wiz 2&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FreeMarker Documentation ===&lt;br /&gt;
&lt;br /&gt;
FreeMarker has quite thorough documentation. The main references output sheet authors will use are:&lt;br /&gt;
# [http://freemarker.org/docs/dgui.html Template Author's Guide]&lt;br /&gt;
# [http://freemarker.org/docs/ref.html Reference Guide]&lt;br /&gt;
# [http://freemarker.org/ Main FreeMarker page]&lt;br /&gt;
&lt;br /&gt;
In addition, see testsuite/base-xml.ftl for afully worked example of xml output.&lt;br /&gt;
&lt;br /&gt;
=== Creating a Sheet ===&lt;br /&gt;
&lt;br /&gt;
FreeMarker sheets are detected by PCGen by their file name suffix. A template ending in .ftl will be processed by FreeMarker rather than by PCGen's legacy output engine. The extension of the file to be produced should be immediately before that. So a template to produce html output might be named csheet-first.html.ftl or chseet-compact-html.ftl and PCGen would pick up that it was a template to be processed by FreeMarker template that would produce output of a html file.&lt;br /&gt;
&lt;br /&gt;
=== PCGen's Custom Functions ===&lt;br /&gt;
&lt;br /&gt;
To provide output of PCGen characters we need to be able to access the character data and the output tags. &lt;br /&gt;
&lt;br /&gt;
==== pcstring ====&lt;br /&gt;
&lt;br /&gt;
This tag evaluates a PCGen export token for the current character and returns the value as a string. e.g. &amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt; or ${pcstring('PLAYERNAME')} &lt;br /&gt;
&lt;br /&gt;
==== pcvar ====&lt;br /&gt;
&lt;br /&gt;
This tag allows character variable values to be exported to a FreeMarker template. It evaluates a variable for the current character and returns the value as a number. e.g. ${pcvar(&amp;quot;CL=Fighter&amp;quot;)} &lt;br /&gt;
&lt;br /&gt;
==== pcboolean ====&lt;br /&gt;
&lt;br /&gt;
pcboolean allows character boolean values to be exported to a FreeMarker template. It evaluates an export token for the current character and returns the value as a boolean. e.g. ${pcboolean(&amp;quot;WEAPON.0.ISTYPE.Double&amp;quot;)} &lt;br /&gt;
&lt;br /&gt;
==== loop ====&lt;br /&gt;
&lt;br /&gt;
The loop tag provides a way to loop a certain number of times. Unlike the inbuilt list directive it can loop zero times.&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
&lt;br /&gt;
* from (optional) - The starting value, defaults to 0.&lt;br /&gt;
* to - The ending value (inclusive). If this is less than from then the contents will not be output.&lt;br /&gt;
* step (optional) - The amount to increment b each loop, defaults to 1.&lt;br /&gt;
&lt;br /&gt;
In addition up to two loopvars may be specified. The first will be populated with the current index value of the loop and the second will be a boolean indicating if there are more iterations of the loop to go.&lt;br /&gt;
&lt;br /&gt;
Nested content is output once for each loop&lt;br /&gt;
&lt;br /&gt;
== Phase 1 ==&lt;br /&gt;
&lt;br /&gt;
The aim would be to utilise the already built output system and add the ability to &lt;br /&gt;
# Detect Freemarker templates and use the Freemarker engine to process them&lt;br /&gt;
# Add custom directives that can be called from a template (output sheet) to allow the existing output tags to be used.&lt;br /&gt;
&lt;br /&gt;
This would give us a simple change-over and use our existing well tested output code base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of outputting an export tag&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;SPELLMEM.0.1.1.1.NAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of accessing a character variable value:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
${pcvar(&amp;quot;CL=Fighter&amp;quot;)}&lt;br /&gt;
${pcvar(&amp;quot;CL=Rogue&amp;quot;)}&lt;br /&gt;
${pcvar(&amp;quot;count(\&amp;quot;ABILITIES\&amp;quot;,\&amp;quot;CATEGORY=FEAT\&amp;quot;,\&amp;quot;TYPE=Metamagic\&amp;quot;,\&amp;quot;VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY\&amp;quot;)&amp;quot;)}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We would need to ensure that freemarker templates can be used in html, and PDF output styles.&lt;br /&gt;
&lt;br /&gt;
See [http://freemarker.org/docs/dgui_misc_userdefdir.html User Defined Directives] and [http://freemarker.org/docs/pgui_config_sharedvariables.html Shared Variables] for information on creating custom directives/tags.&lt;br /&gt;
&lt;br /&gt;
For example, the sheet&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on ${.now?date} at ${.now?time} using template ${.template_name} --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; - ${.now?date}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: &amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: ${pcvar(&amp;quot;CL=Fighter&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: ${pcvar(&amp;quot;CL=Rogue&amp;quot;)} &amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produced the output&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on 29/10/2013 at 9:44:47 PM using template csheet_test-html.ftl --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for Ronald 'Surefingers' Millbridge - 29/10/2013&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: Ronald 'Surefingers' Millbridge &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: James &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: 0 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: 11 &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Rog 11,Wiz 2&amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1b Assisted Looping ===&lt;br /&gt;
&lt;br /&gt;
Freemarker's inbuilt looping mechanism is object oriented. It expects to receive a list and process through it. In contrast, PCGen currently only outputs strings and numbers. The technique described at [http://stackoverflow.com/questions/15461721/freemarker-template-for-loop-statement For loop] can be used, which results in a structure like the following to loop through a list:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#assign max=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1&amp;gt;&lt;br /&gt;
&amp;lt;#if (max&amp;gt;=0)&amp;gt;&lt;br /&gt;
&amp;lt;#list 0..max as class&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&lt;br /&gt;
&amp;lt;/#if&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note The if test is to allow the loop yo be skipped if the list is empty.&lt;br /&gt;
&lt;br /&gt;
Now this is a bit verbose so I have instead created a custom directive to allow looping a number of times. This also deals with the empty loop scenario.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@loop from=0 to=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1 ; class , class_has_next &amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&lt;br /&gt;
&amp;lt;/@loop&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== 1c Object Output ===&lt;br /&gt;
&lt;br /&gt;
To more closely align with FreeMarker's object oriented approach, we should examine the potential for exporting objects for output. So for example, exporting a list of spell objects that can then be looped over and each object queried as needed. A base for this output interface could be the Facade work done for the user interface.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#list pc.knownspells as spell&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;${spell.name} School: ${spell.school} &amp;lt;#if spell.subschool??&amp;gt; [${spell.school}] &amp;lt;/#if&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3511</id>
		<title>Release 6.2.x</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3511"/>
		<updated>2013-12-21T02:03:57Z</updated>

		<summary type="html">&lt;p&gt;James: /* Release dates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Release dates=&lt;br /&gt;
&lt;br /&gt;
We are aiming to release 6.2.0 in Nov-Dec 2013. The schedule for the run up to release is:&lt;br /&gt;
&lt;br /&gt;
* 6.01.08 (Alpha) - 26 October, 2013&lt;br /&gt;
* 6.01.09 (Beta) - 11 November, 2013 - Note: Feature set frozen at this point, changes up until prod are almost entirely bug fixes.&lt;br /&gt;
* 6.01.10 (Beta) - 25 November, 2013&lt;br /&gt;
* 6.02.00 RC1 - 5 December, 2013&lt;br /&gt;
* 6.02.00 RC2 - 13 December, 2013&lt;br /&gt;
* 6.02.00 (Prod) - 21 December, 2013&lt;br /&gt;
&lt;br /&gt;
=Team Goals=&lt;br /&gt;
&lt;br /&gt;
==[[Architecture]]==&lt;br /&gt;
&lt;br /&gt;
* Further implementation of [[CDOM]] (Character Document Object Model), led by [[Tom Parker]]&lt;br /&gt;
* Continuation of [[Architecture Changes 5.17]], led by [[Tom Parker]]&lt;br /&gt;
&lt;br /&gt;
==[[Code]]==&lt;br /&gt;
* Consolidation of the new user interface, lead by [[James Dempsey]]&lt;br /&gt;
&lt;br /&gt;
==[[Data]]==&lt;br /&gt;
* There are no specific plans for new data sets although as always there will be some sets included as part of this release.  Since we can now roll out data sets in between official releases this will simply be an ongoing process.  You can check a number of places to see if a favourite data set is being actively worked on at:&lt;br /&gt;
&lt;br /&gt;
* [http://jira.pcgen.org/browse/NEWSOURCE New Data Source Development for 6.2]&lt;br /&gt;
* [http://jira.pcgen.org/secure/IssueNavigator.jspa?reset=true&amp;amp;jqlQuery=project+%3D+DATA+AND+issuetype+%3D+%22New+Feature%22+ORDER+BY+fixVersion%2C+Status%2C+priority+DESC Data Feature Requests for 6.2]&lt;br /&gt;
&lt;br /&gt;
==[[Output Sheets]]==&lt;br /&gt;
* Various minor updates to the existing sheets and their structure.&lt;br /&gt;
&lt;br /&gt;
==[[Documentation]]==&lt;br /&gt;
* Various minor enhancements&lt;br /&gt;
&lt;br /&gt;
==[[Publisher Liaison]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Data License]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Advertising]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3510</id>
		<title>Template Engine</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3510"/>
		<updated>2013-12-18T12:54:06Z</updated>

		<summary type="html">&lt;p&gt;James: Add new loop directive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Template Engine Sub Project ==&lt;br /&gt;
&lt;br /&gt;
The aim of the project is to examine the Freemarker library with a view to using it to replace our export engine. In particular it would cover functionality logic functions like looping and if tests. This would leave our code to deal with the important things like TO HIT values etc.&lt;br /&gt;
&lt;br /&gt;
We would do this in three phases:&lt;br /&gt;
# Add support for Freemarker templates for output&lt;br /&gt;
# Once sufficient sheets have been converted/rewritten, deprecate support for old sheet types&lt;br /&gt;
# Finally after a few releases, remove support for the old sheet types.&lt;br /&gt;
&lt;br /&gt;
There are a few reasons for exploring this change&lt;br /&gt;
* Add a richer set of logic commands to enable more customisable output&lt;br /&gt;
* Simpler more consistent logic commands and more widely understood syntax&lt;br /&gt;
* Remove one of the more complex and difficult to maintain sections of the PCGen code base.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Currently working on phase 1.&lt;br /&gt;
&lt;br /&gt;
A first run at implementing FreeMarker support in PCGen has been made and can be viewed/tested at [https://github.com/jdempsey-au/pcgen/commits/freemarker_output freemarker_output Git branch] &lt;br /&gt;
&lt;br /&gt;
This code will be merged into the PCGen trunk after the 6.2.0 release is out. FreeMarker output will be a feature of the 6.4 release.&lt;br /&gt;
&lt;br /&gt;
Note 1b and 1c remain to be done.&lt;br /&gt;
&lt;br /&gt;
== Phase 1 ==&lt;br /&gt;
&lt;br /&gt;
The aim would be to utilise the already built output system and add the ability to &lt;br /&gt;
# Detect Freemarker templates and use the Freemarker engine to process them&lt;br /&gt;
# Add custom directives that can be called from a template (output sheet) to allow the existing output tags to be used.&lt;br /&gt;
&lt;br /&gt;
This would give us a simple change-over and use our existing well tested output code base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of outputting an export tag&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;SPELLMEM.0.1.1.1.NAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of accessing a character variable value:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
${pcvar(&amp;quot;CL=Fighter&amp;quot;)}&lt;br /&gt;
${pcvar(&amp;quot;CL=Rogue&amp;quot;)}&lt;br /&gt;
${pcvar(&amp;quot;count(\&amp;quot;ABILITIES\&amp;quot;,\&amp;quot;CATEGORY=FEAT\&amp;quot;,\&amp;quot;TYPE=Metamagic\&amp;quot;,\&amp;quot;VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY\&amp;quot;)&amp;quot;)}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We would need to ensure that freemarker templates can be used in html, and PDF output styles.&lt;br /&gt;
&lt;br /&gt;
See [http://freemarker.org/docs/dgui_misc_userdefdir.html User Defined Directives] and [http://freemarker.org/docs/pgui_config_sharedvariables.html Shared Variables] for information on creating custom directives/tags.&lt;br /&gt;
&lt;br /&gt;
For example, the sheet&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on ${.now?date} at ${.now?time} using template ${.template_name} --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; - ${.now?date}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: &amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: ${pcvar(&amp;quot;CL=Fighter&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: ${pcvar(&amp;quot;CL=Rogue&amp;quot;)} &amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produced the output&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on 29/10/2013 at 9:44:47 PM using template csheet_test-html.ftl --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for Ronald 'Surefingers' Millbridge - 29/10/2013&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: Ronald 'Surefingers' Millbridge &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: James &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: 0 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: 11 &amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1b Assisted Looping ===&lt;br /&gt;
&lt;br /&gt;
Freemarker's inbuilt looping mechanism is object oriented. It expects to receive a list and process through it. In contrast, PCGen currently only outputs strings and numbers. The technique described at [http://stackoverflow.com/questions/15461721/freemarker-template-for-loop-statement For loop] can be used, which results in a structure like the following to loop through a list:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#assign max=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1&amp;gt;&lt;br /&gt;
&amp;lt;#if (max&amp;gt;=0)&amp;gt;&lt;br /&gt;
&amp;lt;#list 0..max as class&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&lt;br /&gt;
&amp;lt;/#if&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note The if test is to allow the loop yo be skipped if the list is empty.&lt;br /&gt;
&lt;br /&gt;
Now this is a bit verbose so I have instead created a custom directive to allow looping a number of times. This also deals with the empty loop scenario.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@loop from=0 to=pcvar('countdistinct(&amp;quot;CLASSES&amp;quot;)')-1 ; class , class_has_next &amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASSABB.${class}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;@pcstring tag=&amp;quot;CLASS.${class}.LEVEL&amp;quot;/&amp;gt;&amp;lt;#if class_has_next&amp;gt;,&amp;lt;/#if&amp;gt;&lt;br /&gt;
&amp;lt;/@loop&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== 1c Object Output ===&lt;br /&gt;
&lt;br /&gt;
To more closely align with FreeMarker's object oriented approach, we should examine the potential for exporting objects for output. So for example, exporting a list of spell objects that can then be looped over and each object queried as needed. A base for this output interface could be the Facade work done for the user interface.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#list pc.knownspells as spell&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;${spell.name} School: ${spell.school} &amp;lt;#if spell.subschool??&amp;gt; [${spell.school}] &amp;lt;/#if&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3502</id>
		<title>Release 6.2.x</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3502"/>
		<updated>2013-12-07T12:18:23Z</updated>

		<summary type="html">&lt;p&gt;James: Update schedule to reflect extra RC&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Release dates=&lt;br /&gt;
&lt;br /&gt;
We are aiming to release 6.2.0 in Nov-Dec 2013. The schedule for the run up to release is:&lt;br /&gt;
&lt;br /&gt;
* 6.01.08 (Alpha) - 26 October, 2013&lt;br /&gt;
* 6.01.09 (Beta) - 11 November, 2013 - Note: Feature set frozen at this point, changes up until prod are almost entirely bug fixes.&lt;br /&gt;
* 6.01.10 (Beta) - 25 November, 2013&lt;br /&gt;
* 6.02.00 RC1 - 5 December, 2013&lt;br /&gt;
* 6.02.00 RC2 - 10 December, 2013&lt;br /&gt;
* 6.02.00 (Prod) - 17 December, 2013&lt;br /&gt;
&lt;br /&gt;
=Team Goals=&lt;br /&gt;
&lt;br /&gt;
==[[Architecture]]==&lt;br /&gt;
&lt;br /&gt;
* Further implementation of [[CDOM]] (Character Document Object Model), led by [[Tom Parker]]&lt;br /&gt;
* Continuation of [[Architecture Changes 5.17]], led by [[Tom Parker]]&lt;br /&gt;
&lt;br /&gt;
==[[Code]]==&lt;br /&gt;
* Consolidation of the new user interface, lead by [[James Dempsey]]&lt;br /&gt;
&lt;br /&gt;
==[[Data]]==&lt;br /&gt;
* There are no specific plans for new data sets although as always there will be some sets included as part of this release.  Since we can now roll out data sets in between official releases this will simply be an ongoing process.  You can check a number of places to see if a favourite data set is being actively worked on at:&lt;br /&gt;
&lt;br /&gt;
* [http://jira.pcgen.org/browse/NEWSOURCE New Data Source Development for 6.2]&lt;br /&gt;
* [http://jira.pcgen.org/secure/IssueNavigator.jspa?reset=true&amp;amp;jqlQuery=project+%3D+DATA+AND+issuetype+%3D+%22New+Feature%22+ORDER+BY+fixVersion%2C+Status%2C+priority+DESC Data Feature Requests for 6.2]&lt;br /&gt;
&lt;br /&gt;
==[[Output Sheets]]==&lt;br /&gt;
* Various minor updates to the existing sheets and their structure.&lt;br /&gt;
&lt;br /&gt;
==[[Documentation]]==&lt;br /&gt;
* Various minor enhancements&lt;br /&gt;
&lt;br /&gt;
==[[Publisher Liaison]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Data License]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Advertising]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3499</id>
		<title>Template Engine</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3499"/>
		<updated>2013-11-26T20:46:42Z</updated>

		<summary type="html">&lt;p&gt;James: Add some more detail on where things are up to, add section 1c&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Template Engine Sub Project ==&lt;br /&gt;
&lt;br /&gt;
The aim of the project is to examine the Freemarker library with a view to using it to replace our export engine. In particular it would cover functionality logic functions like looping and if tests. This would leave our code to deal with the important things like TO HIT values etc.&lt;br /&gt;
&lt;br /&gt;
We would do this in three phases:&lt;br /&gt;
# Add support for Freemarker templates for output&lt;br /&gt;
# Once sufficient sheets have been converted/rewritten, deprecate support for old sheet types&lt;br /&gt;
# Finally after a few releases, remove support for the old sheet types.&lt;br /&gt;
&lt;br /&gt;
There are a few reasons for exploring this change&lt;br /&gt;
* Add a richer set of logic commands to enable more customisable output&lt;br /&gt;
* Simpler more consistent logic commands and more widely understood syntax&lt;br /&gt;
* Remove one of the more complex and difficult to maintain sections of the PCGen code base.&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Currently working on phase 1.&lt;br /&gt;
&lt;br /&gt;
A first run at implementing FreeMarker support in PCGen has been made and can be viewed/tested at [https://github.com/jdempsey-au/pcgen/commits/freemarker_output freemarker_output Git branch] &lt;br /&gt;
&lt;br /&gt;
This code will be merged into the PCGen trunk after the 6.2.0 release is out. FreeMarker output will be a feature of the 6.4 release.&lt;br /&gt;
&lt;br /&gt;
Note 1b and 1c remain to be done.&lt;br /&gt;
&lt;br /&gt;
== Phase 1 ==&lt;br /&gt;
&lt;br /&gt;
The aim would be to utilise the already built output system and add the ability to &lt;br /&gt;
# Detect Freemarker templates and use the Freemarker engine to process them&lt;br /&gt;
# Add custom directives that can be called from a template (output sheet) to allow the existing output tags to be used.&lt;br /&gt;
&lt;br /&gt;
This would give us a simple change-over and use our existing well tested output code base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of outputting an export tag&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;SPELLMEM.0.1.1.1.NAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of accessing a character variable value:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
${pcvar(&amp;quot;CL=Fighter&amp;quot;)}&lt;br /&gt;
${pcvar(&amp;quot;CL=Rogue&amp;quot;)}&lt;br /&gt;
${pcvar(&amp;quot;count(\&amp;quot;ABILITIES\&amp;quot;,\&amp;quot;CATEGORY=FEAT\&amp;quot;,\&amp;quot;TYPE=Metamagic\&amp;quot;,\&amp;quot;VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY\&amp;quot;)&amp;quot;)}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We would need to ensure that freemarker templates can be used in html, and PDF output styles.&lt;br /&gt;
&lt;br /&gt;
See [http://freemarker.org/docs/dgui_misc_userdefdir.html User Defined Directives] and [http://freemarker.org/docs/pgui_config_sharedvariables.html Shared Variables] for information on creating custom directives/tags.&lt;br /&gt;
&lt;br /&gt;
For example, the sheet&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on ${.now?date} at ${.now?time} using template ${.template_name} --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; - ${.now?date}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: &amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: ${pcvar(&amp;quot;CL=Fighter&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: ${pcvar(&amp;quot;CL=Rogue&amp;quot;)} &amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produced the output&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on 29/10/2013 at 9:44:47 PM using template csheet_test-html.ftl --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for Ronald 'Surefingers' Millbridge - 29/10/2013&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: Ronald 'Surefingers' Millbridge &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: James &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: 0 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: 11 &amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1b Assisted Looping ===&lt;br /&gt;
&lt;br /&gt;
Freemarker's inbuilt looping mechanism is object oriented. It expects to receive a list and process through it. In contrast, PCGen currently only outputs strings and numbers. The technique described at [http://stackoverflow.com/questions/15461721/freemarker-template-for-loop-statement For loop] can be used, but a macro should be created to make this easier and more concise. The macro will also need to deal with the empty loop scenario.&lt;br /&gt;
&lt;br /&gt;
=== 1c Object Output ===&lt;br /&gt;
&lt;br /&gt;
To more closely align with FreeMarker's object oriented approach, we should examine the potential for exporting objects for output. So for example, exporting a list of spell objects that can then be looped over and each object queried as needed. A base for this output interface could be the Facade work done for the user interface.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;#list pc.knownspells as spell&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;${spell.name} School: ${spell.school} &amp;lt;#if spell.subschool??&amp;gt; [${spell.school}] &amp;lt;/#if&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/#list&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3496</id>
		<title>Release 6.2.x</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3496"/>
		<updated>2013-11-11T09:05:11Z</updated>

		<summary type="html">&lt;p&gt;James: /* Release dates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Release dates=&lt;br /&gt;
&lt;br /&gt;
We are aiming to release 6.2.0 in Nov-Dec 2013. The schedule for the run up to release is:&lt;br /&gt;
&lt;br /&gt;
* 6.01.08 (Alpha) - 26 October, 2013&lt;br /&gt;
* 6.01.09 (Beta) - 11 November, 2013 - Note: Feature set frozen at this point, changes up until prod are almost entirely bug fixes.&lt;br /&gt;
* 6.01.10 (Beta) - 25 November, 2013&lt;br /&gt;
* 6.02.00 RC1 - 2 December, 2013&lt;br /&gt;
* 6.02.00 (Prod) - 8 December, 2013&lt;br /&gt;
&lt;br /&gt;
=Team Goals=&lt;br /&gt;
&lt;br /&gt;
==[[Architecture]]==&lt;br /&gt;
&lt;br /&gt;
* Further implementation of [[CDOM]] (Character Document Object Model), led by [[Tom Parker]]&lt;br /&gt;
* Continuation of [[Architecture Changes 5.17]], led by [[Tom Parker]]&lt;br /&gt;
&lt;br /&gt;
==[[Code]]==&lt;br /&gt;
* Consolidation of the new user interface, lead by [[James Dempsey]]&lt;br /&gt;
&lt;br /&gt;
==[[Data]]==&lt;br /&gt;
* There are no specific plans for new data sets although as always there will be some sets included as part of this release.  Since we can now roll out data sets in between official releases this will simply be an ongoing process.  You can check a number of places to see if a favourite data set is being actively worked on at:&lt;br /&gt;
&lt;br /&gt;
* [http://jira.pcgen.org/browse/NEWSOURCE New Data Source Development for 6.2]&lt;br /&gt;
* [http://jira.pcgen.org/secure/IssueNavigator.jspa?reset=true&amp;amp;jqlQuery=project+%3D+DATA+AND+issuetype+%3D+%22New+Feature%22+ORDER+BY+fixVersion%2C+Status%2C+priority+DESC Data Feature Requests for 6.2]&lt;br /&gt;
&lt;br /&gt;
==[[Output Sheets]]==&lt;br /&gt;
* Various minor updates to the existing sheets and their structure.&lt;br /&gt;
&lt;br /&gt;
==[[Documentation]]==&lt;br /&gt;
* Various minor enhancements&lt;br /&gt;
&lt;br /&gt;
==[[Publisher Liaison]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Data License]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Advertising]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=PCGen_Code_Exploration_Almanac&amp;diff=3495</id>
		<title>PCGen Code Exploration Almanac</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=PCGen_Code_Exploration_Almanac&amp;diff=3495"/>
		<updated>2013-11-03T00:29:27Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
This guide is a collection of strategies and ways to tackle tasks in the PCGen code. It doesn’t try to be an architectural guide, for that I would start with [[Explanation_of_the_Code_Base]] , which is a good document to be familiar with.  There is also some good info at [[Architecture]]&lt;br /&gt;
&lt;br /&gt;
=Important Tools=&lt;br /&gt;
&lt;br /&gt;
There are a few commands I use all the time to explore/move around the PCGen code base.&lt;br /&gt;
* '''Open Type''' - Eclipse shift-ctrl-T - This allows you to search for a class by its name. Searches can be by the start of the name, use wildcards and even use camel case (NPE finds NullPointerException)&lt;br /&gt;
* '''Call Hierarchy''' - Eclipse ctrl-alt-H - This shows you where a method is called from. Its  great way of tracing execution paths and seeing what the assumptions of callers are.&lt;br /&gt;
&lt;br /&gt;
=Lst Tokens as an Entry Point=&lt;br /&gt;
Quite often you will know the data that is associated with a problem or request. An important tip to remember is that almost all LST tokens are processed by a class which starts with the same name. e.g. the kit EQUIPBUY token is processed by the class plugin.lsttokens.kit.startpack.EquipBuyToken&lt;br /&gt;
&lt;br /&gt;
All token classes then have a parse and unparsed method (sometimes it is in a parent class). You can look at these to find out how the token is interpreted and where the value is stored. Generally the token value is stored in a map in the rules object with a specific constant as a key (e.g. Objectkey.EQUIP_BUY). You can use this key to trace where the token value is processed, thus quickly getting to the code you want to look at.&lt;br /&gt;
&lt;br /&gt;
So, typically in Eclipse I will&lt;br /&gt;
# Search for a class starting with the token name&lt;br /&gt;
# Read through the parse method to see the key used to store the value (or relevant part of the value).&lt;br /&gt;
# Open the Call hierarchy for the key to identify where the token’s value is processed.&lt;br /&gt;
&lt;br /&gt;
=Creating a New Lst Token=&lt;br /&gt;
Adding a new LST token follows a fairly standard pattern:&lt;br /&gt;
# Create a new token class&lt;br /&gt;
# Add a unit test or two&lt;br /&gt;
# Update the pluginbuild.xml&lt;br /&gt;
# Test it out&lt;br /&gt;
# Update the documentation&lt;br /&gt;
&lt;br /&gt;
Also, if you hit any issues when you are creating a new tag post on the dev list for help and someone will be able to assist.&lt;br /&gt;
&lt;br /&gt;
===Create a new token class===&lt;br /&gt;
Creating the new token class is the biggest step. First you need to decide where to create it. All new lst tokens should be under the plugin.lsttokens package. If it is restricted to a single object (Ability, Skill etc) then it should be created under the specific package e.g. plugin.lsttokens.ability. Once created, ensure you have added the LGPL license header and a basic description of the tag in the class java docs. &lt;br /&gt;
&lt;br /&gt;
Now have a look at other tokens in the same package and pick one as an example, hopefully something that works in a similar way to the new tag you are adding. Have a look first at the class definition. Usually you will have something like &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class FooLst &lt;br /&gt;
  extends AbstractNonEmptyToken&amp;lt;CDOMObject&amp;gt; &lt;br /&gt;
  implements CDOMPrimaryToken&amp;lt;CDOMObject&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we are using the AbstractNonEmptyToken as the parent class, and thus getting all that classes functionality for free. We are also declaring this to be a CDOMPrimaryToken (i.e. a standalone Lst tag) which wil define what methods we need to implement for the new tag to work properly.&lt;br /&gt;
&lt;br /&gt;
Every token will have a parse and an unparse method. What you will generally do is create a new StringKey, ObjectKey etc to record the new item against and then when you parse the tag you can record it against your key as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
context.getObjectContext().put(obj, StringKey.OUTPUT_NAME, value);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then when you unparse it can read that key and write out the value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String oname = context.getObjectContext().getString(obj,&lt;br /&gt;
	StringKey.OUTPUT_NAME);&lt;br /&gt;
if (oname == null)&lt;br /&gt;
{&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
return new String[] { oname };&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unparsing is used by the LST converter (and the future LST editor) to write out the tag with the correct syntax.&lt;br /&gt;
&lt;br /&gt;
===Add a unit test or two===&lt;br /&gt;
Tom has set up some great unit testing structures which will give your tag a full workout for little effort. Again, the best way is to copy and adjust the test for your example tag. You should be aiming to have a quick isolated test in the code/src/utest folder (e.g. OutputNameLstTest) and a parse/unparse test in the code/src/itest folder (e.g. OutputNameIntegrationTest). These will ensure that your new tags are working as you expect.&lt;br /&gt;
&lt;br /&gt;
===Update the pluginbuild.xml===&lt;br /&gt;
The next step is updating the pluginbuild.xml file to add in your new tag. This creates a jar file for that tag which is then read by the PCGen plugin system on load. As a result PCGen will automatically know about your new tag with no further registration required. Again, use your example existing token as a guide. Once done, you should run the ant build and then run the PluginBuildTest unit test to check that the plguinbuild.xml file has been updated correctly - it will let you know if the name is incorrect etc.&lt;br /&gt;
&lt;br /&gt;
===Test it out===&lt;br /&gt;
OK, now you have the tag added to PCGen. You can add it to some data, load the data and check that it is read in correctly. &lt;br /&gt;
&lt;br /&gt;
===Update the documentation===&lt;br /&gt;
The last step is updating the documentation. When you advance your NEWTAG entry in jira to say the tag is implemented it goes to the docs team. Now they will add in the docs when they get time, but if you want to help out, you can base a new docs entry on the syntax description in your NEWTAG issue. The sample tag you used above can also be a good guide for how to enter it. Also don't forget to mark it as new for the version you added it in.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=PCGen_Code_Exploration_Almanac&amp;diff=3494</id>
		<title>PCGen Code Exploration Almanac</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=PCGen_Code_Exploration_Almanac&amp;diff=3494"/>
		<updated>2013-11-03T00:26:17Z</updated>

		<summary type="html">&lt;p&gt;James: Add Creating a New Lst Token section plus tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
This guide is a collection of strategies and ways to tackle tasks in the PCGen code. It doesn’t try to be an architectural guide, for that I would start with [[Explanation_of_the_Code_Base]] , which is a good document to be familiar with.  There is also some good info at [[Architecture]]&lt;br /&gt;
&lt;br /&gt;
=Important Tools=&lt;br /&gt;
&lt;br /&gt;
There are a few commands I use all the time to explore/move around the PCGen code base.&lt;br /&gt;
* '''Open Type''' - Eclipse shift-ctrl-T - This allows you to search for a class by its name. Searches can be by the start of the name, use wildcards and even use camel case (NPE finds NullPointerException)&lt;br /&gt;
* '''Call Hierarchy''' - Eclipse ctrl-alt-H - This shows you where a method is called from. Its  great way of tracing execution paths and seeing what the assumptions of callers are.&lt;br /&gt;
&lt;br /&gt;
=Lst Tokens as an Entry Point=&lt;br /&gt;
Quite often you will know the data that is associated with a problem or request. An important tip to remember is that almost all LST tokens are processed by a class which starts with the same name. e.g. the kit EQUIPBUY token is processed by the class plugin.lsttokens.kit.startpack.EquipBuyToken&lt;br /&gt;
&lt;br /&gt;
All token classes then have a parse and unparsed method (sometimes it is in a parent class). You can look at these to find out how the token is interpreted and where the value is stored. Generally the token value is stored in a map in the rules object with a specific constant as a key (e.g. Objectkey.EQUIP_BUY). You can use this key to trace where the token value is processed, thus quickly getting to the code you want to look at.&lt;br /&gt;
&lt;br /&gt;
So, typically in Eclipse I will&lt;br /&gt;
# Search for a class starting with the token name&lt;br /&gt;
# Read through the parse method to see the key used to store the value (or relevant part of the value).&lt;br /&gt;
# Open the Call hierarchy for the key to identify where the token’s value is processed.&lt;br /&gt;
&lt;br /&gt;
=Creating a New Lst Token=&lt;br /&gt;
Adding a new LST token follows a fairly standard pattern:&lt;br /&gt;
# Create a new token class&lt;br /&gt;
# Add a unit test or two&lt;br /&gt;
# Update the pluginbuild.xml&lt;br /&gt;
# Test it out&lt;br /&gt;
# Update the documentation&lt;br /&gt;
&lt;br /&gt;
===Create a new token class===&lt;br /&gt;
Creating the new token class is the biggest step. First you need to decide where to create it. All new lst tokens should be under the plugin.lsttokens package. If it is restricted to a single object (Ability, Skill etc) then it should be created under the specific package e.g. plugin.lsttokens.ability. Once created, ensure you have added the LGPL license header and a basic description of the tag in the class java docs. &lt;br /&gt;
&lt;br /&gt;
Now have a look at other tokens in the same package and pick one as an example, hopefully something that works in a similar way to the new tag you are adding. Have a look first at the class definition. Usually you will have something like &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class FooLst &lt;br /&gt;
  extends AbstractNonEmptyToken&amp;lt;CDOMObject&amp;gt; &lt;br /&gt;
  implements CDOMPrimaryToken&amp;lt;CDOMObject&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we are using the AbstractNonEmptyToken as the parent class, and thus getting all that classes functionality for free. We are also declaring this to be a CDOMPrimaryToken (i.e. a standalone Lst tag) which wil define what methods we need to implement for the new tag to work properly.&lt;br /&gt;
&lt;br /&gt;
Every token will have a parse and an unparse method. What you will generally do is create a new StringKey, ObjectKey etc to record the new item against and then when you parse the tag you can record it against your key as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
context.getObjectContext().put(obj, StringKey.OUTPUT_NAME, value);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then when you unparse it can read that key and write out the value:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String oname = context.getObjectContext().getString(obj,&lt;br /&gt;
	StringKey.OUTPUT_NAME);&lt;br /&gt;
if (oname == null)&lt;br /&gt;
{&lt;br /&gt;
	return null;&lt;br /&gt;
}&lt;br /&gt;
return new String[] { oname };&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unparsing is used by the LST converter (and the future LST editor) to write out the tag with the correct syntax.&lt;br /&gt;
&lt;br /&gt;
===Add a unit test or two===&lt;br /&gt;
Tom has set up some great unit testing structures which will give your tag a full workout for little effort. Again, the best way is to copy and adjust the test for your example tag. You should be aiming to have a quick isolated test in the code/src/utest folder (e.g. OutputNameLstTest) and a parse/unparse test in the code/src/itest folder (e.g. OutputNameIntegrationTest). These will ensure that your new tags are wokring as you expect.&lt;br /&gt;
&lt;br /&gt;
===Update the pluginbuild.xml===&lt;br /&gt;
The next step is updating the pluginbuild.xml file to add in your new tag. This creates a jar file for that tag which is then read by the PCGen plugin system on load. As a result PCGen will automatically know about your new tag with no further registration required. Again, use your example existing token as a guide. Once done, you should run the ant build and then run the PluginBuildTest unit test to check that the plguinbuild.xml file has been updated correctly - it will let you know if the name is incorrect etc.&lt;br /&gt;
&lt;br /&gt;
===Test it out===&lt;br /&gt;
OK, now you have the tag added to PCGen. You can add it to some data, load the data and check that it is read in correctly. &lt;br /&gt;
&lt;br /&gt;
===Update the documentation===&lt;br /&gt;
The last step is updating the documentation. When you advance your NEWTAG entry in jira to say the tag is implemented it goes to the doco team. Now they will add i the doco when they get time, but if you want to help out, you can base a new doco entry on the syntax description in your NEWTAG issue. The sample tag you used above can also be a good guide fr how to enter it. Also don;t forget to mark it as new for the version you added it in.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3492</id>
		<title>Template Engine</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3492"/>
		<updated>2013-10-29T11:19:41Z</updated>

		<summary type="html">&lt;p&gt;James: Show initial implementation results&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Template Engine Sub Project ==&lt;br /&gt;
&lt;br /&gt;
The aim of the project is to examine the Freemarker library with a view to using it to replace our export engine. In particular it would cover functionality logic functions like looping and if tests. This would leave our code to deal with the important things like TO HIT values etc.&lt;br /&gt;
&lt;br /&gt;
We would do this in three phases:&lt;br /&gt;
# Add support for Freemarker templates for output&lt;br /&gt;
# Once sufficient sheets have been converted/rewritten, deprecate support for olod sheet types&lt;br /&gt;
# Finally after a few releases, remove support for the old sheet types.&lt;br /&gt;
&lt;br /&gt;
There are a few reasons for exploring this change&lt;br /&gt;
* Add a richer set of logic commands to enable more customisable output&lt;br /&gt;
* Simpler more consistent logic commands and more widely understood syntax&lt;br /&gt;
* Remove one of the more complex and difficult to maintain sections of the PCGen code base.&lt;br /&gt;
&lt;br /&gt;
== Phase 1 ==&lt;br /&gt;
&lt;br /&gt;
The aim would be to utilise the already built output system and add the ability to &lt;br /&gt;
# Detect Freemarker templates and use the Freemarker engine to process them&lt;br /&gt;
# Add custom directives that can be called from a template (output sheet) to allow the&lt;br /&gt;
existing output tags to be used.&lt;br /&gt;
&lt;br /&gt;
This would give us a simple change-over and use our existing well tested output code base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example of outputting an export tag&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;SPELLMEM.0.1.1.1.NAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of accessing a character variable value:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
${pcvar(&amp;quot;CL=Fighter&amp;quot;)}&lt;br /&gt;
${pcvar(&amp;quot;CL=Rogue&amp;quot;)}&lt;br /&gt;
${pcvar(&amp;quot;count(\&amp;quot;ABILITIES\&amp;quot;,\&amp;quot;CATEGORY=FEAT\&amp;quot;,\&amp;quot;TYPE=Metamagic\&amp;quot;,\&amp;quot;VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY\&amp;quot;)&amp;quot;)}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We would need to ensure that freemarker templates can be used in html, and PDF output styles.&lt;br /&gt;
&lt;br /&gt;
See [http://freemarker.org/docs/dgui_misc_userdefdir.html User Defined Directives] and [http://freemarker.org/docs/pgui_config_sharedvariables.html Shared Variables] for information on creating custom directives/tags.&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/jdempsey-au/pcgen/commits/freemarker_output freemarker_output Git branch] for the first cut code.&lt;br /&gt;
&lt;br /&gt;
For example, the sheet&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on ${.now?date} at ${.now?time} using template ${.template_name} --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; - ${.now?date}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: &amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: &amp;lt;@pcstring tag=&amp;quot;PLAYERNAME&amp;quot;/&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: ${pcvar(&amp;quot;CL=Fighter&amp;quot;)} &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: ${pcvar(&amp;quot;CL=Rogue&amp;quot;)} &amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produced the output&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Produced on 29/10/2013 at 9:44:47 PM using template csheet_test-html.ftl --&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Freemarker Sheet for Ronald 'Surefingers' Millbridge - 29/10/2013&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Character Name: Ronald 'Surefingers' Millbridge &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Player Name: James &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Fighter: 0 &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Rogue: 11 &amp;lt;/p&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
&lt;br /&gt;
Freemarker's inbuilt looping mechanism is object oriented. It expects to receive a list and process through it. In contrast, PCGen currently only outputs strings and numbers. The technique described at [http://stackoverflow.com/questions/15461721/freemarker-template-for-loop-statement For loop] can be used, but a macro should be created to make this easier and more concise. The macro will also need to deal with the empty loop scenario.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3489</id>
		<title>Release 6.2.x</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3489"/>
		<updated>2013-10-25T22:29:13Z</updated>

		<summary type="html">&lt;p&gt;James: /* Release dates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Release dates=&lt;br /&gt;
&lt;br /&gt;
We are aiming to release 6.2.0 in Nov-Dec 2013. The schedule for the run up to release is:&lt;br /&gt;
&lt;br /&gt;
* 6.01.08 (Alpha) - 26 October, 2013&lt;br /&gt;
* 6.01.09 (Beta) - 10 November, 2013 - Note: Feature set frozen at this point, changes up until prod are almost entirely bug fixes.&lt;br /&gt;
* 6.01.10 (Beta) - 24 November, 2013&lt;br /&gt;
* 6.02.00 RC1 - 1 December, 2013&lt;br /&gt;
* 6.02.00 (Prod) - 8 December, 2013&lt;br /&gt;
&lt;br /&gt;
=Team Goals=&lt;br /&gt;
&lt;br /&gt;
==[[Architecture]]==&lt;br /&gt;
&lt;br /&gt;
* Further implementation of [[CDOM]] (Character Document Object Model), led by [[Tom Parker]]&lt;br /&gt;
* Continuation of [[Architecture Changes 5.17]], led by [[Tom Parker]]&lt;br /&gt;
&lt;br /&gt;
==[[Code]]==&lt;br /&gt;
* Consolidation of the new user interface, lead by [[James Dempsey]]&lt;br /&gt;
&lt;br /&gt;
==[[Data]]==&lt;br /&gt;
* There are no specific plans for new data sets although as always there will be some sets included as part of this release.  Since we can now roll out data sets in between official releases this will simply be an ongoing process.  You can check a number of places to see if a favourite data set is being actively worked on at:&lt;br /&gt;
&lt;br /&gt;
* [http://jira.pcgen.org/browse/NEWSOURCE New Data Source Development for 6.2]&lt;br /&gt;
* [http://jira.pcgen.org/secure/IssueNavigator.jspa?reset=true&amp;amp;jqlQuery=project+%3D+DATA+AND+issuetype+%3D+%22New+Feature%22+ORDER+BY+fixVersion%2C+Status%2C+priority+DESC Data Feature Requests for 6.2]&lt;br /&gt;
&lt;br /&gt;
==[[Output Sheets]]==&lt;br /&gt;
* Various minor updates to the existing sheets and their structure.&lt;br /&gt;
&lt;br /&gt;
==[[Documentation]]==&lt;br /&gt;
* Various minor enhancements&lt;br /&gt;
&lt;br /&gt;
==[[Publisher Liaison]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Data License]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Advertising]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3488</id>
		<title>Release 6.2.x</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3488"/>
		<updated>2013-10-25T21:53:52Z</updated>

		<summary type="html">&lt;p&gt;James: Add 6.2 release schedule&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Release dates=&lt;br /&gt;
&lt;br /&gt;
We are aiming to release 6.2.0 in Nov-Dec 2013. The schedule for the run up to release is:&lt;br /&gt;
&lt;br /&gt;
* 6.01.08 (Alpha) - 26 October, 2013&lt;br /&gt;
* 6.01.09 (Beta) - 10 November, 2013 - Note: Feature set frozen at this point, changes up until prod are almost entirely bug fixes.&lt;br /&gt;
* 6.01.10 (Beta) - 24 November, 2013&lt;br /&gt;
* 6.02.01 RC1 - 1 December, 2013&lt;br /&gt;
* 6.02.01 (Prod) - 8 December, 2013&lt;br /&gt;
&lt;br /&gt;
=Team Goals=&lt;br /&gt;
&lt;br /&gt;
==[[Architecture]]==&lt;br /&gt;
&lt;br /&gt;
* Further implementation of [[CDOM]] (Character Document Object Model), led by [[Tom Parker]]&lt;br /&gt;
* Continuation of [[Architecture Changes 5.17]], led by [[Tom Parker]]&lt;br /&gt;
&lt;br /&gt;
==[[Code]]==&lt;br /&gt;
* Consolidation of the new user interface, lead by [[James Dempsey]]&lt;br /&gt;
&lt;br /&gt;
==[[Data]]==&lt;br /&gt;
* There are no specific plans for new data sets although as always there will be some sets included as part of this release.  Since we can now roll out data sets in between official releases this will simply be an ongoing process.  You can check a number of places to see if a favourite data set is being actively worked on at:&lt;br /&gt;
&lt;br /&gt;
* [http://jira.pcgen.org/browse/NEWSOURCE New Data Source Development for 6.2]&lt;br /&gt;
* [http://jira.pcgen.org/secure/IssueNavigator.jspa?reset=true&amp;amp;jqlQuery=project+%3D+DATA+AND+issuetype+%3D+%22New+Feature%22+ORDER+BY+fixVersion%2C+Status%2C+priority+DESC Data Feature Requests for 6.2]&lt;br /&gt;
&lt;br /&gt;
==[[Output Sheets]]==&lt;br /&gt;
* Various minor updates to the existing sheets and their structure.&lt;br /&gt;
&lt;br /&gt;
==[[Documentation]]==&lt;br /&gt;
* Various minor enhancements&lt;br /&gt;
&lt;br /&gt;
==[[Publisher Liaison]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Data License]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Advertising]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3487</id>
		<title>Template Engine</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Template_Engine&amp;diff=3487"/>
		<updated>2013-10-23T23:00:24Z</updated>

		<summary type="html">&lt;p&gt;James: /* Phase 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Template Engine Sub Project ==&lt;br /&gt;
&lt;br /&gt;
The aim of the project is to examine the Freemarker library with a view to using it to replace our export engine. In particular it would cover functionality logic functions like looping and if tests. This would leave our code to deal with the important things like TO HIT values etc.&lt;br /&gt;
&lt;br /&gt;
We would do this in three phases:&lt;br /&gt;
# Add support for Freemarker templates for output&lt;br /&gt;
# Once sufficient sheets have been converted/rewritten, deprecate support for olod sheet types&lt;br /&gt;
# Finally after a few releases, remove support for the old sheet types.&lt;br /&gt;
&lt;br /&gt;
There are a few reasons for exploring this change&lt;br /&gt;
* Add a richer set of logic commands to enable more customisable output&lt;br /&gt;
* Simpler more consistent logic commands and more widely understood syntax&lt;br /&gt;
* Remove one of the more complex and difficult to maintain sections of the PCGen code base.&lt;br /&gt;
&lt;br /&gt;
== Phase 1 ==&lt;br /&gt;
&lt;br /&gt;
The aim would be to utilise the already built output system and add the ability to &lt;br /&gt;
# Detect Freemarker templates and use the Freemarker engine to process them&lt;br /&gt;
# Add custom directives that can be called from a template (output sheet) to allow the&lt;br /&gt;
existing output tags to be used.&lt;br /&gt;
&lt;br /&gt;
This would give us a simple change-over and use our existing well tested output code base.&lt;br /&gt;
&lt;br /&gt;
So for example we might have&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;NAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcstring tag=&amp;quot;SPELLMEM.0.1.1.1.NAME&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcvar tag=&amp;quot;CL=Fighter&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;@pcvar tag=&amp;quot;count(\&amp;quot;ABILITIES\&amp;quot;,\&amp;quot;CATEGORY=FEAT\&amp;quot;,\&amp;quot;TYPE=Metamagic\&amp;quot;,\&amp;quot;VISIBILITY=DEFAULT[or]VISIBILITY=OUTPUT_ONLY\&amp;quot;)&amp;quot;/&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We would need to ensure that freemarker templates can be used in html, and PDF output styles.&lt;br /&gt;
&lt;br /&gt;
See [http://freemarker.org/docs/dgui_misc_userdefdir.html User Defined Directives] and [http://freemarker.org/docs/pgui_config_sharedvariables.html Shared Variables] for information on creating custom directives/tags.&lt;br /&gt;
&lt;br /&gt;
=== Looping ===&lt;br /&gt;
&lt;br /&gt;
Freemarker's inbuilt looping mechanism is object oriented. It expects to receive a list and process through it. In contrast, PCGen currently only outputs strings and numbers. The technique described at [http://stackoverflow.com/questions/15461721/freemarker-template-for-loop-statement For loop] can be used, but a macro should be created to make this easier and more concise. The macro will also need to deal with the empty loop scenario.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Building_PCGen&amp;diff=3486</id>
		<title>Building PCGen</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Building_PCGen&amp;diff=3486"/>
		<updated>2013-10-20T04:59:48Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
=Building PCGen from the command line=&lt;br /&gt;
&lt;br /&gt;
This process uses the [[ANT]] tool, you need the following software packages:&lt;br /&gt;
&lt;br /&gt;
* Java Development Kit (aka Java SDK or JDK). You should use the latest version (update) of the JDK 6.0 available for download from [http://www.oracle.com/technetwork/java/javase/downloads/index.html here]. At the time of writing this was Java SE 6 Update 29. Java 7 will also work for the new UI, but no 1.7 specific features should be used in the code. Other JDKs might work, but no one has tried.&lt;br /&gt;
* Ant 1.7.0 (or later) from [http://jakarta.apache.org/ant/ here]. Ant is an all-Java replacement for make, and is fully cross-platform. Note: You will also need to download the jakarta-ant optional.jar file if using certain versions of Ant. See [[ANT]] section for further details&lt;br /&gt;
* If you wish to run the test suite you will need JUnit 3.6 from [http://www.junit.org/ here].&lt;br /&gt;
* You will also need the latest version of the PCGen source code available from SVN. See [[Subversion Setup]] for details.&lt;br /&gt;
&lt;br /&gt;
Open a command window and change to the root directory/folder where you installed the PCGen source code. There should be a file called build.xml there.&lt;br /&gt;
&lt;br /&gt;
Type ant clean at the command prompt. This will make sure you have a clean start. Then run ant. This will build the pcgen.jar file. The jar file will be in ./bin. You can run pcgendev.bat or pcgendev.sh to run it or manually copy the jar file to the PCGen root directory.&lt;br /&gt;
&lt;br /&gt;
'''NOTE'''&lt;br /&gt;
* If you get a &amp;quot;Could not create task of type: javacc&amp;quot; you need to ensure you have the jakarta-ant optional.jar file in the $ANT_HOME/lib directory. (You only need this for older versions of Ant).&lt;br /&gt;
* If you get a &amp;quot;Could not create task of type: junit&amp;quot; you need to copy the junit.jar file from the pcgen/libs directory to the $ANT_HOME/lib directory. (You only need this for older versions of Ant).&lt;br /&gt;
&lt;br /&gt;
To generate the JavaDocs use ant docs, and for deployments you can use ant deploy, and finally ant all does all of the above (clean, build, docs, deploy), and ant complete does everything including a full testing cycle (which can take a while).&lt;br /&gt;
&lt;br /&gt;
Typing the command &amp;lt;pre&amp;gt;ant&amp;lt;/pre&amp;gt; will build the code and run a small selection of tests.&lt;br /&gt;
&lt;br /&gt;
Typing the command &amp;lt;pre&amp;gt;ant dotest&amp;lt;/pre&amp;gt; will build the code and run the full test suite.&lt;br /&gt;
&lt;br /&gt;
Typing the command &amp;lt;pre&amp;gt;ant reporttest&amp;lt;/pre&amp;gt; after running the tests will generate a test report.  The xml result files are generated while running the tests, they can be found in ./code/build/test-results/xml/ after making the reporttest target, a browsable set of html reports can be found in ./code/build/rpt/test-results/&lt;br /&gt;
&lt;br /&gt;
=Using Eclipse to build PCGen=&lt;br /&gt;
&lt;br /&gt;
You can build PCGen from within Eclipse. You will need to do a little bit of setup first though:&lt;br /&gt;
# Go to Window &amp;gt; Preferences, then Ant &amp;gt; Runtime then select Ant Home Entries under the Classpath tab.&lt;br /&gt;
# Click Add Jars. Select the junit.jar under pcgen/lib.&lt;br /&gt;
Now you should be able to select the build.xml, right click and hit Run &amp;gt; Ant Build and it should work.&lt;br /&gt;
&lt;br /&gt;
==Running and debugging==&lt;br /&gt;
&lt;br /&gt;
# Open the PCGen project.&lt;br /&gt;
# Open the Run dialog by right-clicking on the PCGen project and selecting Run As &amp;gt; Run Configurations&lt;br /&gt;
# Select the Java Application node.&lt;br /&gt;
# Press the New button for a new configuration. Edit by field, thus:&lt;br /&gt;
Name -&amp;gt; PCGen&lt;br /&gt;
&lt;br /&gt;
Main class -&amp;gt; pcgen.system.Main&lt;br /&gt;
&lt;br /&gt;
VM arguments (Arguments tab) -&amp;gt; -Xmx1024M&lt;br /&gt;
# Press Apply to save the configuration.&lt;br /&gt;
# Press Run to start PCGen.&lt;br /&gt;
&lt;br /&gt;
You can also run a single test by right clicking on the test and selecting Debug &amp;gt; JUnit Test. This is a great way to track through a bug too.&lt;br /&gt;
&lt;br /&gt;
=Using IDEA to build PCGen=&lt;br /&gt;
&lt;br /&gt;
You can build PCGen from within IDEA. You will need to do a little bit of setup first though:&lt;br /&gt;
# Go to the Window &amp;gt; Tool Windows &amp;gt; Ant Build. Press the [+] button to add a build file.&lt;br /&gt;
# Navigate to and select the build.xml Ant script in the root of the PCGen project tree. Press Ok.&lt;br /&gt;
&lt;br /&gt;
You can now select any Ant target you wish. Particularly helpful are the build and fetch-data targets.&lt;br /&gt;
&lt;br /&gt;
==Running and debugging==&lt;br /&gt;
&lt;br /&gt;
NB - IDEA will build the software sufficient for running and debugging within the IDE automatically just by following these step. This is not the same as the build from the Building section, above, which builds the software suitable for command-line use.&lt;br /&gt;
&lt;br /&gt;
# Open the PCGen.ipr project file.&lt;br /&gt;
# Get the Run/Debug Configurations dialog with Run &amp;gt; Edit Configurations from the menu bar.&lt;br /&gt;
# Select the Application tab.&lt;br /&gt;
# Press the [+] button for a new configuration. Edit by field, thus:&lt;br /&gt;
Name -&amp;gt; PCGen&lt;br /&gt;
&lt;br /&gt;
Main class -&amp;gt; pcgen.system.Main&lt;br /&gt;
# Uncheck Display settings before running/debugging.&lt;br /&gt;
# Press Ok.&lt;br /&gt;
&lt;br /&gt;
You can now run PCGen with the green right-pointing triangle on the toolbar and debug with the green right-facing beetle on a blue diamond. Or just use the Run menu.&lt;br /&gt;
&lt;br /&gt;
=Using Maven to build PCGen=&lt;br /&gt;
&lt;br /&gt;
See [[MAVEN]]&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=PCGen_Code_Exploration_Almanac&amp;diff=3485</id>
		<title>PCGen Code Exploration Almanac</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=PCGen_Code_Exploration_Almanac&amp;diff=3485"/>
		<updated>2013-10-18T12:17:26Z</updated>

		<summary type="html">&lt;p&gt;James: Initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
This guide is a collection of strategies and ways to tackle tasks in the PCGen code. It doesn’t try to be an architectural guide, for that I would start with [[Explanation_of_the_Code_Base]] , which is a good document to be familiar with.  There is also some good info at [[Architecture]]&lt;br /&gt;
&lt;br /&gt;
=Lst Tokens as an Entry Point=&lt;br /&gt;
Quite often you will know the data that is associated with a problem or request. An important tip to remember is that almost all LST tokens are processed by a class which starts with the same name. e.g. the kit EQUIPBUY token is processed by the class plugin.lsttokens.kit.startpack.EquipBuyToken&lt;br /&gt;
&lt;br /&gt;
All token classes then have a parse and unparsed method (sometimes it is in a parent class). You can look at these to find out how the token is interpreted and where the value is stored. Generally the token value is stored in a map in the rules object with a specific constant as a key (e.g. Objectkey.EQUIP_BUY). You can use this key to trace where the token value is processed, thus quickly getting to the code you want to look at.&lt;br /&gt;
&lt;br /&gt;
So, typically in Eclipse I will&lt;br /&gt;
# Search for a class starting with the token name&lt;br /&gt;
# Read through the parse method to see the key used to store the value (or relevant part of the value).&lt;br /&gt;
# Open the Call hierarchy for the key to identify where the token’s value is processed.&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Code&amp;diff=3484</id>
		<title>Code</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Code&amp;diff=3484"/>
		<updated>2013-10-18T12:11:41Z</updated>

		<summary type="html">&lt;p&gt;James: /* Coding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Welcome to the Wiki section for the Code Monkey team!&lt;br /&gt;
&lt;br /&gt;
=Mission Statement=&lt;br /&gt;
'''TBA'''&lt;br /&gt;
&lt;br /&gt;
=Resources=&lt;br /&gt;
* [[Developers Meeting]]&lt;br /&gt;
* [[Dev Meeting Log 20120309]]&lt;br /&gt;
* [[Dev Meeting Log 20120429]]&lt;br /&gt;
* [[Dev Meeting Log 20121103]]&lt;br /&gt;
&lt;br /&gt;
==For New Starters==&lt;br /&gt;
* [[Joining the Code Team]] General steps to take to prepare yourself&lt;br /&gt;
* [[Code Monkey Introduction]]&lt;br /&gt;
&lt;br /&gt;
==Developer Environment==&lt;br /&gt;
* [[Basic Developer Setup]]&lt;br /&gt;
* [[Subversion Setup]]&lt;br /&gt;
* [[Merging]] with SVN&lt;br /&gt;
* [[Building PCGen]], also see [[ANT]] and [[MAVEN]]&lt;br /&gt;
* [[Continuous Integration]]&lt;br /&gt;
&lt;br /&gt;
==Coding==&lt;br /&gt;
* [[Coding Standards]]&lt;br /&gt;
* [[Deprecating a Token]]&lt;br /&gt;
* [[Explanation of the Code Base]]&lt;br /&gt;
* [[PCGen Code Exploration Almanac]]&lt;br /&gt;
* [[Graph Theory]]&lt;br /&gt;
* [[Logging in the Code Base]]&lt;br /&gt;
* [[Unit Testing]]&lt;br /&gt;
* [[Removing Libraries]]&lt;br /&gt;
* [[Unnecessary Code Detector]]&lt;br /&gt;
&lt;br /&gt;
=Completed Sub Projects=&lt;br /&gt;
* [[Ability Object TODO List]]&lt;br /&gt;
* [[LST_Editor_Verification]]&lt;br /&gt;
&lt;br /&gt;
=Open Sub Projects=&lt;br /&gt;
* [[Internationalization]]&lt;br /&gt;
* [[CDOM]]&lt;br /&gt;
* [[UI Overhaul]]&lt;br /&gt;
* [[LST_Editor]]&lt;br /&gt;
* [[Major Code Projects]]&lt;br /&gt;
* [[Template Engine]]&lt;br /&gt;
&lt;br /&gt;
=Active Team Members=&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Silverback|Silverback]]===&lt;br /&gt;
* [[James Dempsey]]&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Second|2nd]]===&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Chimp|Chimp]]===&lt;br /&gt;
* [[Tom Parker]]&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Gibbon|Gibbon]]===&lt;br /&gt;
* Jayme Cox&lt;br /&gt;
* [[Stefan Radermacher]]&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Tamarin|Tamarin]]===&lt;br /&gt;
* [[Andrew Wilson]]&lt;br /&gt;
* [[Martijn Verburg]]&lt;br /&gt;
* [[Connor Petty]]&lt;br /&gt;
&lt;br /&gt;
===[[Explanation of Teams#Lemur|Lemur]]===&lt;br /&gt;
* [[Eddy Anthony]]&lt;br /&gt;
* Per Christian Henden&lt;br /&gt;
* Thomas Cooper &lt;br /&gt;
* [[Tod Milam]] - Mac Developer&lt;br /&gt;
* [[Kim Winz]]&lt;br /&gt;
&lt;br /&gt;
===[[X-Terminator Mark II]]===&lt;br /&gt;
* [[Greg Bingleman]] - [http://www.codemonkeypublishing.com Code Monkey Publishing]&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
* Brad Stiles, SVN advice&lt;br /&gt;
* Jason Buchanan, Advice on old code&lt;br /&gt;
* [[Jonas Karlson]], Advice on old code&lt;br /&gt;
&lt;br /&gt;
=Passive Team Members=&lt;br /&gt;
&lt;br /&gt;
* B. K. Oxley (Provides IntelliJ licenses)&lt;br /&gt;
&lt;br /&gt;
=Inactive Team Members=&lt;br /&gt;
&lt;br /&gt;
===[[Explanation_of_Teams#2nd|2nd]]===&lt;br /&gt;
* Devon Jones&lt;br /&gt;
&lt;br /&gt;
===[[Explanation_of_Teams#Chimp|Chimp]]===&lt;br /&gt;
* Aaron Divinsky&lt;br /&gt;
&lt;br /&gt;
===[[Explanation_of_Teams#Tamarin|Tamarin]]===&lt;br /&gt;
* Andriy Sen&lt;br /&gt;
* [[Kevin Fernandes]]&lt;br /&gt;
* [[Koen Van Daele]]&lt;br /&gt;
* [[Joe Frazier, Jr.]]&lt;br /&gt;
* Per Christian Henden&lt;br /&gt;
&lt;br /&gt;
===[[Explanation_of_Teams#Lemur|Lemur]]===&lt;br /&gt;
* Bill Neumann&lt;br /&gt;
* Dan Parks&lt;br /&gt;
* [[Eduard Martinescu]]&lt;br /&gt;
* Eric Jarman&lt;br /&gt;
* Jasper Spaans&lt;br /&gt;
* Julio Esslinger Viegas&lt;br /&gt;
* Peter Barker&lt;br /&gt;
* [[Rick Ryker]]&lt;br /&gt;
* Thomas Clegg&lt;br /&gt;
* Tony Lavalle&lt;br /&gt;
* Hades Lucifer [7/20/10]&lt;br /&gt;
* Josh Johnston [7/20/10]&lt;br /&gt;
* MotorViper    [7/20/10]&lt;br /&gt;
* [[Steven West]] [7/20/10]&lt;br /&gt;
* [[Alec Ross]] [7/20/10]&lt;br /&gt;
* [[Tir Gwaith]] [7/20/10]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Other===&lt;br /&gt;
* [[Andargor]], Suggestions&lt;br /&gt;
* [[Bryan McRoberts]], Advice on old code&lt;br /&gt;
* Kurt Wimmer, Suggestions&lt;br /&gt;
* Walter Duncan, Held the old pcgen_autobuild user&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Roadmap&amp;diff=3433</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Roadmap&amp;diff=3433"/>
		<updated>2013-08-06T11:59:27Z</updated>

		<summary type="html">&lt;p&gt;James: /* Releases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
This page contains the PCGen Roadmap&lt;br /&gt;
&lt;br /&gt;
=Releases=&lt;br /&gt;
* [[Release 5.6.x]] - There is no further active development on this branch&lt;br /&gt;
* [[Release 5.8.x]] - 5.8.1 was last production release of this branch, there is no further active development&lt;br /&gt;
* [[Release 5.10.x]] - 5.10.2 was the last production release of this branch, there is no further active development&lt;br /&gt;
* [[Release 5.12.x]] - 5.12.1 was the last production release of this branch, there is no further active development&lt;br /&gt;
* [[Release 5.14.x]] - 5.14.1 was the last production release of this branch, there is no further active development&lt;br /&gt;
* [[Release 5.16.x]] - 5.16.4 was the last production release of this branch, there is no further active development&lt;br /&gt;
* [[Release 6.0.x]] - Release 6.0.1 is the current production release&lt;br /&gt;
* [[Release 6.2.x]] - Release 6.2.0 will contain various feature enhancements to PCGen&lt;br /&gt;
* [[Release 6.4.x]] - Release 6.4.0 will contain various feature enhancements to PCGen&lt;br /&gt;
&lt;br /&gt;
=Planning=&lt;br /&gt;
* [[Proposed FREQ Roadmap]]&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_6.4.x&amp;diff=3432</id>
		<title>Release 6.4.x</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_6.4.x&amp;diff=3432"/>
		<updated>2013-08-06T11:57:28Z</updated>

		<summary type="html">&lt;p&gt;James: Created page with &amp;quot;{| align=&amp;quot;right&amp;quot;   | __TOC__   |}  =Release dates=  TBA  =Team Goals=  ==Architecture==  TBA  ==Code== * LST Editor overhaul * Freemarker implementation for output...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Release dates=&lt;br /&gt;
&lt;br /&gt;
TBA&lt;br /&gt;
&lt;br /&gt;
=Team Goals=&lt;br /&gt;
&lt;br /&gt;
==[[Architecture]]==&lt;br /&gt;
&lt;br /&gt;
TBA&lt;br /&gt;
&lt;br /&gt;
==[[Code]]==&lt;br /&gt;
* [[LST Editor]] overhaul&lt;br /&gt;
* Freemarker implementation for output sheets&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[Data]]==&lt;br /&gt;
TBA&lt;br /&gt;
&lt;br /&gt;
==[[Output Sheets]]==&lt;br /&gt;
TBA&lt;br /&gt;
&lt;br /&gt;
==[[Documentation]]==&lt;br /&gt;
TBA&lt;br /&gt;
&lt;br /&gt;
==[[Publisher Liaison]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Data License]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Advertising]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3431</id>
		<title>Release 6.2.x</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Release_6.2.x&amp;diff=3431"/>
		<updated>2013-08-06T11:55:44Z</updated>

		<summary type="html">&lt;p&gt;James: Starting Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Release dates=&lt;br /&gt;
&lt;br /&gt;
We are aiming to release 6.2.0 in Nov-Dec 2013.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Team Goals=&lt;br /&gt;
&lt;br /&gt;
==[[Architecture]]==&lt;br /&gt;
&lt;br /&gt;
* Further implementation of [[CDOM]] (Character Document Object Model), led by [[Tom Parker]]&lt;br /&gt;
* Continuation of [[Architecture Changes 5.17]], led by [[Tom Parker]]&lt;br /&gt;
&lt;br /&gt;
==[[Code]]==&lt;br /&gt;
* Consolidation of the new user interface, lead by [[James Dempsey]]&lt;br /&gt;
&lt;br /&gt;
==[[Data]]==&lt;br /&gt;
* There are no specific plans for new data sets although as always there will be some sets included as part of this release.  Since we can now roll out data sets in between official releases this will simply be an ongoing process.  You can check a number of places to see if a favourite data set is being actively worked on at:&lt;br /&gt;
&lt;br /&gt;
* [http://jira.pcgen.org/browse/NEWSOURCE New Data Source Development for 6.2]&lt;br /&gt;
* [http://jira.pcgen.org/secure/IssueNavigator.jspa?reset=true&amp;amp;jqlQuery=project+%3D+DATA+AND+issuetype+%3D+%22New+Feature%22+ORDER+BY+fixVersion%2C+Status%2C+priority+DESC Data Feature Requests for 6.2]&lt;br /&gt;
&lt;br /&gt;
==[[Output Sheets]]==&lt;br /&gt;
* Various minor updates to the existing sheets and their structure.&lt;br /&gt;
&lt;br /&gt;
==[[Documentation]]==&lt;br /&gt;
* Various minor enhancements&lt;br /&gt;
&lt;br /&gt;
==[[Publisher Liaison]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Data License]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;br /&gt;
&lt;br /&gt;
==[[Advertising]]==&lt;br /&gt;
* No major projects, continuation of existing work&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Basic_Developer_Setup&amp;diff=3422</id>
		<title>Basic Developer Setup</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Basic_Developer_Setup&amp;diff=3422"/>
		<updated>2013-07-23T21:21:08Z</updated>

		<summary type="html">&lt;p&gt;James: /* Setting up with Eclipse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
# Get a JAVA IDE of your choice (most people use Eclipse; some prefer IDEA). There are already project files in Subversion for several IDEs. (Although /bin/vi works just fine for some of us crusty old-timers, and Emacs for those sorts who are the GNU elite.)&lt;br /&gt;
# Get a Subversion client and set it up (most people use Eclipse integration; ditto for IDEA - see below for instructions for these though), see the [[Subversion Setup]] for details (you can view this via the web access to SVN).&lt;br /&gt;
# [[James Dempsey]] is the official Help New Code Monkeys guy, feel free to bug him lots! (But try the lists first, please.)&lt;br /&gt;
&lt;br /&gt;
=Participating in PCGen=&lt;br /&gt;
&lt;br /&gt;
# Play nice. Use common sense. We're all here because we enjoy it and want to participate in this project. Challenging ideas is ok (all of us will not always agree on a specific point), but don't attack people (no flames!)&lt;br /&gt;
# Make sure to run the unit tests (given that I can't get PCGen to build in ant without running them, this probably won't be hard!) and only check in when they all pass. Having said that, I suspect we've all broken the code at least once, so *don't stress* about it if it happens. Just participate in fixing it or get help from someone who can (if you really have no idea what's broken).&lt;br /&gt;
# If you're changing LST Token syntax (from our data files) then you need to get permission from the Data monkeys. You will find them on the PCGen_experimental Yahoo! group and you can also read their [[LST Syntax FREQ]] Usually, items in the issue tracking system as feature requests are already vetted by the _experimental folks, but if it's pretty old or very complicated, a double check doesn't hurt.&lt;br /&gt;
# Try to change as little of the formatting in the code as possible. Others may look at your check-in (to ensure it isn't interacting with other items we are working on that aren't checked in yet), and if the check-in is mostly formatting change, one loses the content. If there are formatting changes to be made, they should be done in a separate check-in. It is preferable to ask permission on significant formatting changes, since they make merging very difficult, and if one of us has a large project we are working on, it can become really hard to keep up and make sure we are actually doing useful work rather than formatting changes.&lt;br /&gt;
# Given the formatting comment above as more important, there are [[Coding Standards]] (for braces and the like).&lt;br /&gt;
# No major feature changes in a beta cycle - that's what the Alphas are for. Betas fix bugs for releases.&lt;br /&gt;
# You won't always know everything that is happening... but knowing where not to be is useful. Generally, in cases where someone is the major owner of an in-process change, it is best to check with that individual if you intend to propose/make major changes in code they are actively changing. When large check-ins are involved as components develop, parallel changes can be hard to deal with.&lt;br /&gt;
&lt;br /&gt;
=Setting up with Eclipse=&lt;br /&gt;
&lt;br /&gt;
# Install the subclipse extension found [http://subclipse.tigris.org/ here] or follow the instructions [http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA here]&lt;br /&gt;
# Switch to the SVN Exploring Perspective (e.g. via the menu item Window &amp;gt; Open Perspective &amp;gt; Other... )&lt;br /&gt;
# Create a new Repository Location for ''svn://svn.code.sf.net/p/pcgen/code/'' or ''svn+ssh://userid@svn.code.sf.net/p/pcgen/code/'' if you have commit access See [[Subversion_Setup]] for full details.&lt;br /&gt;
# Drill down to Trunk/pcgen and right click and select Checkout...&lt;br /&gt;
# Fill in the project details and wait while it downloads all of the source.&lt;br /&gt;
# Build the application '''using ant''' as this will create the '''code/build/src''' folder. (See Eclipse section in [[Building PCGen]])&lt;br /&gt;
# Refresh the project (right click on the project and select Refresh)&lt;br /&gt;
# Now your project should have no red ink and you can create a Run entry for the class pcgen.gui.pcGenGUI (Again see Eclipse Running section in [[Building PCGen]])&lt;br /&gt;
&lt;br /&gt;
Any questions, don't hesitate to ask!&lt;br /&gt;
&lt;br /&gt;
=Setting up with Netbeans (without the maven plugin)=&lt;br /&gt;
# Install the netbeans subversion plugin&lt;br /&gt;
# Checkout the Trunk/pcgen branch and if it asks to scan for projects select No.&lt;br /&gt;
# Go to menu and create a new java free form project. For the locations select the directory you just checked out and netbeans should fill the rest of the information for you.&lt;br /&gt;
# Compile the project&lt;br /&gt;
# Close netbeans&lt;br /&gt;
# replace the project.xml file in the nbproject dir with this file:[https://pcgen.svn.sourceforge.net/svnroot/pcgen/Trunk/IDE/project.xml project.xml]&lt;br /&gt;
# download the [https://pcgen.svn.sourceforge.net/svnroot/pcgen/Trunk/IDE/license-pcgen.txt license file]&lt;br /&gt;
# Reopen netbeans, go to Tools-&amp;gt;Templates and add the license file to the Licenses category.&lt;br /&gt;
# Now your are ready to go!&lt;br /&gt;
&lt;br /&gt;
=Tools and IDE Plugins=&lt;br /&gt;
&lt;br /&gt;
Outside of Eclipse if you want to do independent testing and code coverage, Emma: http://emma.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
==Eclipse==&lt;br /&gt;
&lt;br /&gt;
* [http://pmd.sourceforge.net/ PMD]&lt;br /&gt;
* [http://findbugs.sourceforge.net/ FindBugs]&lt;br /&gt;
* [http://checkstyle.sourceforge.net/ Checkstyle]&lt;br /&gt;
* [http://sourceforge.net/projects/metrics Metrics]&lt;br /&gt;
* [http://www.eclipse.org/tptp/ Eclipse TPTP] (note: gets memory hungry)&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Meeting_2013_06_22&amp;diff=3412</id>
		<title>Meeting 2013 06 22</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Meeting_2013_06_22&amp;diff=3412"/>
		<updated>2013-06-22T09:32:45Z</updated>

		<summary type="html">&lt;p&gt;James: Created page with &amp;quot;=Board of Directors Meeting on 22nd June, 2013= * Status: Quorum (3 silverbacks) * Duration: 80 minutes  ==Attending:== * Andrew Maitland [Acting Chair, Silver Back for Admin,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Board of Directors Meeting on 22nd June, 2013=&lt;br /&gt;
* Status: Quorum (3 silverbacks)&lt;br /&gt;
* Duration: 80 minutes&lt;br /&gt;
&lt;br /&gt;
==Attending:==&lt;br /&gt;
* Andrew Maitland [Acting Chair, Silver Back for Admin, 2nd for Content/Data]&lt;br /&gt;
* James Dempsey [Silverback for Code]&lt;br /&gt;
* Tom Parker [Silverback for Architecture]&lt;br /&gt;
* Stefan Radermacher [Code Gibbon, Data Chimp]&lt;br /&gt;
&lt;br /&gt;
==SUMMARY:==&lt;br /&gt;
* Next alpha due 1 July 2013; a Final 6.0 Branch will be release after the pending sets are finished.&lt;br /&gt;
* Code: welcome to Mark Schrijver; Mostly break fix work in the past fortnight, plus new features to support data.&lt;br /&gt;
* Content: AEG - Empire released&lt;br /&gt;
* Data Sets being worked on Ultimate Equipment (Paizo), Bestiary 3 (Paizo) which is close to the finish line, Advanced Races Guide (Paizo) is now in License Review.&lt;br /&gt;
* Admin: Anestis and Jamie got the Website live - pcgen.org&lt;br /&gt;
* We have a presence on GitHub now, need to plan move of primary repo there.&lt;br /&gt;
* Proposal to split current data/d20ogl folder into data/gamemode folders (then publisher/setting/book structure under there) - Accepted for trunk&lt;br /&gt;
* Proposal for new LST file naming standard (and rules package support) will be posted to pcgen_experimental list for discussion.&lt;br /&gt;
* Next meting to be at a euro friendly time - to be discussed on BoD list&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RAW LOG:==&lt;br /&gt;
* [8:25] [Chair]Drew: *Bangs Gavel* Welcome all to our Board of Directors meeting, 1524 hours (PDT?), on June 21st, 2013&lt;br /&gt;
* [8:25] [Chair]Drew: Our full agenda of items today is:&lt;br /&gt;
* [8:25] [Chair]Drew: Agenda Items:&lt;br /&gt;
* [8:25] [Chair]Drew: * Team Reports (Code, Arch, Content, Admin, PR)&lt;br /&gt;
* [8:25] [Chair]Drew: ** Code - GIT Report - How is GITHUB working out?&lt;br /&gt;
* [8:25] [Chair]Drew: ** Code - Outside Projects report? (We had a server project, Chris Dolan's Drools Project, etc. Do&lt;br /&gt;
* [8:25] [Chair]Drew: we know where these projects are presently?)&lt;br /&gt;
* [8:25] [Chair]Drew: ** Code - Unit Tests updates and reports? Code Coverage status?&lt;br /&gt;
* [8:25] [Chair]Drew: ** Code - Clean up of Code?&lt;br /&gt;
* [8:25] [Chair]Drew: ** Web (Website is live, how about the Forum?)&lt;br /&gt;
* [8:25] [Chair]Drew: ** Content - Book Updates - B3 and ARG book statuses&lt;br /&gt;
* [8:25] [Chair]Drew: ** Content - Data Directory Restructuring and file naming standardization - Stefan and Andrew proposals&lt;br /&gt;
* [8:25] [Chair]Drew: ** Content - OS Directory set up - With the File Path in place, making sure the OS directory is set&lt;br /&gt;
* [8:25] [Chair]Drew: up correctly is imperative&lt;br /&gt;
* [8:25] [Chair]Drew: * Status of Team Meetings - Are the teams having any meetings?&lt;br /&gt;
* [8:25] [Chair]Drew: * Road Map Update - where are we, and where are we going? Is 6.0 on track, and how are we looking&lt;br /&gt;
* [8:25] [Chair]Drew: for 6.2?&lt;br /&gt;
* [8:25] [Chair]Drew: * Board of Directors - Are they still all present and active? We haven't a Quorum meeting in a long&lt;br /&gt;
* [8:25] [Chair]Drew: time. Are the meeting times still the best for the majority? (Do we have a status on Tom Parker -&lt;br /&gt;
* [8:25] [Chair]Drew: Arch SB, and on Barak - Content SB; Are we seriously letting Karianna step down as Chair? - Finds&lt;br /&gt;
* [8:25] [Chair]Drew: the Ninja Monkeys!)&lt;br /&gt;
* [8:25] [Chair]Drew: * Board of Directors - Are we still on task for our Mission Statement?&lt;br /&gt;
* [8:25] [Chair]Drew: * Open forum - Other discussions&lt;br /&gt;
* [8:26] [Chair]Drew: Let's begin with Team Reports - James, the floor is yours. :)&lt;br /&gt;
* [8:27] James[Code_SB]: ok, so first the stats&lt;br /&gt;
* [8:27] James[Code_SB]: Features: 9 created and 5 resolved, Bugs: 7 created and 9 resolved, New tags: 2 created and 4 resolved - all since the last meeting&lt;br /&gt;
* [8:28] James[Code_SB]: Stefan has been powering through some nice tidy ups to our export code&lt;br /&gt;
* [8:28] James[Code_SB]: We've also had a new code monkey join the team: mark schrijver&lt;br /&gt;
* [8:29] James[Code_SB]: Welcome Mark!&lt;br /&gt;
* [8:29] James[Code_SB]: He has started looking at allowing file names to be clickable in the debug log (F10)&lt;br /&gt;
* [8:30] James[Code_SB]: I've made a but more progress on the retirement of the old choosers, with the radio button choosers now ported to the new ui&lt;br /&gt;
* [8:30] James[Code_SB]: as well as addressing a number of things that have cropped up&lt;br /&gt;
* [8:31] James[Code_SB]: Lastly I've added a new build to Jenkins which does a data test twice a day - it hasn't given a clean result yet so emails haven't been sent&lt;br /&gt;
* [8:31] James[Code_SB]: Any questions?&lt;br /&gt;
* [8:32] [Arch_SB]thpr: What part of the data is being tested?&lt;br /&gt;
* [8:33] James[Code_SB]: This is a load test to see if any errors are found loading the common data sets&lt;br /&gt;
* [8:33] James[Code_SB]: It also checks for orphaned or missing files&lt;br /&gt;
* [8:33] [Arch_SB]thpr: nice&lt;br /&gt;
* [8:34] [Chair]Drew: Sounds good. - Which tests are still failing?&lt;br /&gt;
* [8:34] James[Code_SB]: Yes it picked up a few issues before the 6.0.1 release and replicates what we often do manually&lt;br /&gt;
* [8:35] James[Code_SB]: Pathfinder: Equipment Shield (Heavy/Wooden) may not have both WEAPON and SHIELD Proficiencies, Equipment Shield (Light/Steel) may not have both WEAPON and SHIELD Proficiencies, Equipment Shield (Light/Wooden) may not have both WEAPON and SHIELD Proficiencies]&lt;br /&gt;
* [8:35] [Chair]Drew: Ah, the new one I raised a JIRA for.&lt;br /&gt;
* [8:35] James[Code_SB]: 3e:&lt;br /&gt;
* [8:35] James[Code_SB]: data/d20ogl/srd/psionics/srd_spells_psionic.lst (385): PObject Contingency not found; .MOD skipped.,&lt;br /&gt;
* [8:35] James[Code_SB]: data/d20ogl/srd/psionics/srd_spells_psionic.lst (440): PObject Fabricate not found; .MOD skipped.,&lt;br /&gt;
* [8:35] James[Code_SB]: data/d20ogl/srd/psionics/srd_spells_psionic.lst (462): PObject Grease not found; .MOD skipped.,&lt;br /&gt;
* [8:35] James[Code_SB]: data/d20ogl/srd/psionics/srd_spells_psionic.lst (490): PObject Invisibility Purge not found; .MOD skipped.,&lt;br /&gt;
* [8:35] James[Code_SB]: data/d20ogl/srd/psionics/srd_spells_psionic.lst (582): PObject Telekinetic Sphere not found; .MOD skipped.,&lt;br /&gt;
* [8:35] James[Code_SB]: data/d20ogl/srd/psionics/srd_spells_psionic.lst (585): PObject Teleportation Circle not found; .MOD skipped.&lt;br /&gt;
* [8:36] [Chair]Drew: Alright, I'll look into those after the meeting then&lt;br /&gt;
* [8:36] James[Code_SB]: and that affects xcrawl also&lt;br /&gt;
* [8:36] Zaister: these probably all need to be &amp;quot;Spell Name (Psionic)&amp;quot;&lt;br /&gt;
* [8:36] James[Code_SB]: Also got one for spycraft&lt;br /&gt;
* [8:36] [Chair]Drew: Yeah. (Can we toss these into a JIRA?)&lt;br /&gt;
* [8:36] James[Code_SB]: sure&lt;br /&gt;
* [8:36] James[Code_SB]: one for the lot?&lt;br /&gt;
* [8:36] [Chair]Drew: Thanks.&lt;br /&gt;
* [8:36] James[Code_SB]: or split by game?&lt;br /&gt;
* [8:37] [Chair]Drew: Yeah, call it load test Errors&lt;br /&gt;
* [8:37] James[Code_SB]: ok&lt;br /&gt;
* [8:37] [Chair]Drew: Tom, you're up for an Arch report - we've missed these :)&lt;br /&gt;
* [8:38] [Arch_SB]thpr: I've been idle for some time. No report to make&lt;br /&gt;
* [8:38] [Chair]Drew: So, any plans?&lt;br /&gt;
* [8:38] [Chair]Drew: Goals?&lt;br /&gt;
* [8:39] [Arch_SB]thpr: get back up to speed on what is going on&lt;br /&gt;
* [8:39] [Arch_SB]thpr: Not sure there is much to say right now&lt;br /&gt;
* [8:39] [Chair]Drew: Cool, well welcome back. You've been missed.&lt;br /&gt;
* [8:39] [Chair]Drew: I guess it's my turn then for Content&lt;br /&gt;
* [8:41] [Chair]Drew: Content has been bustling. (James, Can you set me up a fancy filter to grab the numbers?) We've had a few bug fixes, several feature requests and some good progress with the books - AEG - Empire made it into the release, Bestiary 3 is getting close to the finish line, and Advanced Race Guide is now in License Review.&lt;br /&gt;
* [8:42] [Chair]Drew: We've had a resurgence in update requests to the RSRD materials, but we're hitting the same issue of it's not released via RSRD, so do we update or let it lie.&lt;br /&gt;
* [8:44] James[Code_SB]: Stats: http://jira.pcgen.org/secure/Dashboard.jspa?selectPageId=10270&lt;br /&gt;
* [8:44] [Chair]Drew: Our Pathfinder community is doing a fine job on keeping the data up to speed with their errata requests. We've had several people approach to work on Data sets, so hopefully we'll have some more data monkeys pushing updates here in the next month.&lt;br /&gt;
* [8:44] [Chair]Drew: Thanks James -&lt;br /&gt;
* [8:45] [Chair]Drew: Data Features 7 created, 5 resolved&lt;br /&gt;
* [8:45] [Chair]Drew: Data Bugs: 22 created, 21 Resolved&lt;br /&gt;
* [8:45] [Chair]Drew: Newsource - 2? Resolved (Empire and what else?)&lt;br /&gt;
* [8:45] jujutsunerd left the room (quit: Read error: Connection reset by peer).&lt;br /&gt;
* [8:46] [Chair]Drew: Off list, I've been hit up by 7 individuals for Character Help or Data set help&lt;br /&gt;
* [8:46] [Chair]Drew: the 'help@pcgen.org' has been very helpful in making our users happy.&lt;br /&gt;
* [8:46] James[Code_SB]: [Dreamscarred Press] Psionics Expanded - Pawns and Powers&lt;br /&gt;
* [8:47] [Chair]Drew: Thanks James&lt;br /&gt;
* [8:47] [Chair]Drew: Any questions for the Content side?&lt;br /&gt;
* [8:47] James[Code_SB]: If anyone wants to pitch in with Ultimate Equipment, they would be welcome&lt;br /&gt;
* [8:48] [Chair]Drew: I had a user volunteer, so you might be getting help in that direction&lt;br /&gt;
* [8:48] [Chair]Drew: ;)&lt;br /&gt;
* [8:48] James[Code_SB]: Excellent&lt;br /&gt;
* [8:48] [Chair]Drew: Admin Report:&lt;br /&gt;
* [8:49] [Chair]Drew: Anestis and Jamie got the Website live - pcgen.org, the web team is now working on a forum solution next.&lt;br /&gt;
* [8:50] [Chair]Drew: JIRA has an update out Major Development upgrade. James was waiting a bit to allow any fresh bugs get ironed out before we push it in&lt;br /&gt;
* [8:51] James[Code_SB]: See http://www.atlassian.com/software/jira/whats-new for what we will be getting&lt;br /&gt;
* [8:51] [Chair]Drew: Release - We're good for the next Alpha whenever James wishes to push it. 6.0 we're in a holding pattern for UE, B3.&lt;br /&gt;
* [8:52] [Chair]Drew: Questions?&lt;br /&gt;
* [8:53] James[Code_SB]: Next alpha is scheduled for 1 July - I've moved to a 3 week timeframe&lt;br /&gt;
* [8:54] James[Code_SB]: Just to add to that since the last meeting we've put out the 6.1.3 alpha&lt;br /&gt;
* [8:55] [Chair]Drew: Anyone got any thing for PR?&lt;br /&gt;
* [8:55] Zaister: did we hear back from Jason Bulmahn regarding Minotaur Games books?&lt;br /&gt;
* [8:56] James[Code_SB]: Also, could we get the latest couple of release up at http://pcgen.org/blog/ please&lt;br /&gt;
* [8:58] [Chair]Drew: @Stefan - Yes, IIRC we've got permission&lt;br /&gt;
* [8:58] Zaister: ah good&lt;br /&gt;
* [8:58] Zaister: I was cc'ed on the mail to Jason, but I never saw a reply, so I asked&lt;br /&gt;
* [9:01] [Chair]Drew: @James - I'll see about updating those&lt;br /&gt;
* [9:03] [Chair]Drew: Moving forward - CODE questions - GIT Report - How is GITHUB Working out? I saw a reply from Henk on this as well.&lt;br /&gt;
* [9:04] James[Code_SB]: Yep, we currently have a presence on github but have not moved to it as the primary source location&lt;br /&gt;
* [9:05] James[Code_SB]: We've had a few errors on sourceforge SVN lately, so to me that increases the incentive to move across&lt;br /&gt;
* [9:05] James[Code_SB]: However we still need the move planned out properly before starting&lt;br /&gt;
* [9:07] James[Code_SB]: That's all for that report&lt;br /&gt;
* [9:09] [Chair]Drew: my only with GIT is it's lack of sequential numbering for commits&lt;br /&gt;
* [9:09] [Chair]Drew: so if you have an issue, it's not readily apparent&lt;br /&gt;
* [9:10] James[Code_SB]: Yep, that's inherent with the DVCS design&lt;br /&gt;
* [9:10] [Chair]Drew: it does have a bit of a learning curve if you have experience with SVN, but for the push and pull it works nicely. I think we should all give it a test run with our GITHUB before making any move.&lt;br /&gt;
* [9:11] [Arch_SB]thpr: I think it just makes it more important to ensure that every commit has a JIRA associated with it rather than leaving it blank. That's probably a more important tracker than sequential #s&lt;br /&gt;
* [9:11] [Chair]Drew: True&lt;br /&gt;
* [9:11] [Chair]Drew: I've been giving it a bit of a play, and I didn't see the nice issue interface we're used to in SVN... am I missing something?&lt;br /&gt;
* [9:12] Zaister: do not confuse subversion in general with what you know from TortoiseSVN&lt;br /&gt;
* [9:12] [Chair]Drew: I likes my friendly GUIs&lt;br /&gt;
* [9:12] James[Code_SB]: No, you just put in the issue key into the comment, which is what the svn interface does anyway&lt;br /&gt;
* [9:13] [Chair]Drew: cool, so one less step then.&lt;br /&gt;
* [9:13] James[Code_SB]: Yep&lt;br /&gt;
* [9:13] Zaister: how specific is JIRA with that comment requirement?&lt;br /&gt;
* [9:14] James[Code_SB]: pretty lenient - it can be anywhere and just surrounded by whitespace and/or common punctuation&lt;br /&gt;
* [9:14] Zaister: ah ok&lt;br /&gt;
* [9:14] [Chair]Drew: Next Code question - Outside Projects - Drools, Android Port, Server Support - do we know how these developers/projects are going?&lt;br /&gt;
* [9:14] Zaister: nice&lt;br /&gt;
* [9:15] [Arch_SB]thpr: I think it's fair to call a few of those more like experiments than projects&lt;br /&gt;
* [9:15] [Chair]Drew: Project/Experiments ;)&lt;br /&gt;
* [9:16] [Arch_SB]thpr: The issue is less around semantics than around expectations. I don't think there is an expectation that Drools or the Android Port are on a path to become &amp;quot;real&amp;quot;&lt;br /&gt;
* [9:16] [Arch_SB]thpr: They are each, as programmers would put it, a &amp;quot;proof of concept&amp;quot;&lt;br /&gt;
* [9:17] [Chair]Drew: Gotcha, I had high hopes for the Server one.&lt;br /&gt;
* [9:17] [Arch_SB]thpr: I guess my point being they are interesting to mention that folks are trying them, but not necessarily something we should be trying to project manage&lt;br /&gt;
* [9:18] James[Code_SB]: @thpr yes agreed&lt;br /&gt;
* [9:18] [Arch_SB]thpr: I have to admit I'm not familiar with the server one or who was working that, so can't speak to it's reality&lt;br /&gt;
* [9:18] [Chair]Drew: I was looking to make sure they have support if they want it, but not manage.&lt;br /&gt;
* [9:19] [Chair]Drew: I'm drawing a blank on the name, I'd have to look in the log.&lt;br /&gt;
* [9:19] [Arch_SB]thpr: Chris isn't shy on _devel, so I don't have much worry he'll speak up if there is something he thinks would be useful&lt;br /&gt;
* [9:21] [Arch_SB]thpr: as an aside, I will need to bolt in ~15min&lt;br /&gt;
* [9:21] AndrewAAM: Javy_dreamer&lt;br /&gt;
* [9:22] James[Code_SB]: Yes I'll need to leave in a similar time frame&lt;br /&gt;
* [9:23] [Chair]Drew2: Okay, pressing forward then -&lt;br /&gt;
* [9:23] James[Code_SB]: We can skip the unit tests and cleanup reports - not sure why they are there - they are just things we do as normal&lt;br /&gt;
* [9:24] [Chair]Drew2: You and Stefan discussed the Data Re-organization?&lt;br /&gt;
* [9:24] [Chair]Drew2 is now known as [Chair]Drew&lt;br /&gt;
* [9:24] Zaister: no&lt;br /&gt;
* [9:24] James[Code_SB]: no&lt;br /&gt;
* [9:24] Zaister: just code stuff&lt;br /&gt;
* [9:25] [Chair]Drew: Okay, the quick gist of it - Pathfinder is becoming a bit 'huge' and we have 35e and Pathfinder mode stuff mixed together.&lt;br /&gt;
* [9:26] [Chair]Drew: The main thrust is to split the directory from d20ogl and make it gamemode folder specific&lt;br /&gt;
* [9:26] [Chair]Drew: data/gamemode/publisher/setting/book&lt;br /&gt;
* [9:26] [Chair]Drew: Stefan had a more radical idea for Pathfinder which he'll push into a proposal&lt;br /&gt;
* [9:26] Zaister: and in the meantime rename the files to use the new, mostly Paizo-official abbreviation in uppercase&lt;br /&gt;
* [9:27] Zaister: so pfapg_classes_base.lst -&amp;gt; APG_classes_base.lst&lt;br /&gt;
* [9:27] James[Code_SB]: the game mode approach does seem sensible&lt;br /&gt;
* [9:27] Zaister: I'll want to create some standards for file naming&lt;br /&gt;
* [9:27] James[Code_SB]: I'm not normally a fan of upper case abbreviations in file names though&lt;br /&gt;
* [9:27] Zaister: we have some unwritten ones which are not always followed&lt;br /&gt;
* [9:28] James[Code_SB]: If we do create standards, lets see if they can be enforced in the data test&lt;br /&gt;
* [9:28] Zaister: James[Code_SB]: this is to set off the book from the rest of the name&lt;br /&gt;
* [9:28] Zaister: another idea was to use double underscore, but I actually like the uppercase better, since these Abbreviations are usually uppercase anyway&lt;br /&gt;
* [9:28] [Chair]Drew: only the book abbr would use UPPER CASE&lt;br /&gt;
* [9:29] Zaister: for Pathfinder RPG books these are CR, APG, ARG, UC, UCA, UM, UE, B1, B2, B3&lt;br /&gt;
* [9:29] [Arch_SB]thpr: if the book is the directory name why is the book repeated in the file name?&lt;br /&gt;
* [9:29] Zaister: for convenience when editing these files, mostly&lt;br /&gt;
* [9:30] [Chair]Drew: a very good question - file names is what you see in the main editing programs.&lt;br /&gt;
* [9:30] [Chair]Drew: If you're in two files with 'abilities' it's nice to know which one you're in&lt;br /&gt;
* [9:30] James[Code_SB]: Yes the abbreviation in the file name is essential when you are comparing two files&lt;br /&gt;
* [9:30] Zaister: also useful if you do file operations at command line level&lt;br /&gt;
* [9:30] Zaister: otherwise you have a hundred different files all called feats.lst&lt;br /&gt;
* [9:30] [Arch_SB]thpr: expected some form of that answer, but wanted to ask anyway...&lt;br /&gt;
* [9:30] James[Code_SB]: That has been very helpful with UE when pulling data in from say ultimate combat and core rules&lt;br /&gt;
* [9:31] Zaister: my other idea is to try organize the data in a logical way instead of physically by book, if possible&lt;br /&gt;
* [9:32] Zaister: some books contained various rule &amp;quot;packages&amp;quot; a user might not always want all of&lt;br /&gt;
* [9:32] Zaister: and some rules are spread over multiple books&lt;br /&gt;
* [9:32] Zaister: you can see that in that we have all kind of stuff in the CR dataset that has noting to do with that book&lt;br /&gt;
* [9:33] Zaister: but I'm not yet sure how this would look&lt;br /&gt;
* [9:33] Zaister: and it would be a set of alternative PCC files, the book PCCS would not go away probably&lt;br /&gt;
* [9:34] [Chair]Drew: I actually think supporting both ideas is a winner. But most people will likely stick with the books.&lt;br /&gt;
* [9:34] [Chair]Drew: So, no objections, and Stefan, let's see a proposal on how the new idea would work. :)&lt;br /&gt;
* [9:34] Zaister: It's just an idea I've been thinking about :)&lt;br /&gt;
* [9:34] Zaister: yeah that will take a few days though :)&lt;br /&gt;
* [9:34] James[Code_SB]: Yes it would be interesting to see the proposal&lt;br /&gt;
* [9:35] [Arch_SB]thpr: agree, would be best to see it wrapped up in one description&lt;br /&gt;
* [9:35] Zaister: sure&lt;br /&gt;
* [9:35] [Chair]Drew: Unless people see a major issue, I'll slowly begin the data structure changes - starting with the less used ones.&lt;br /&gt;
* [9:36] [Arch_SB]thpr: umm, before we read the proposal?&lt;br /&gt;
* [9:36] Zaister: I'll draw up a naming standard for the pathfinder stuff over the weekend&lt;br /&gt;
* [9:36] [Chair]Drew: Stefan's proposal is separate from the Data Structure&lt;br /&gt;
* [9:36] [Chair]Drew: We're talking the Directory Structure by GameMode&lt;br /&gt;
* [9:36] [Arch_SB]thpr: So you're talking about the data/gamemode/blah stuff&lt;br /&gt;
* [9:36] [Chair]Drew: Yes&lt;br /&gt;
* [9:36] [Arch_SB]thpr: ok, I'm good with that&lt;br /&gt;
* [9:37] Zaister: including file renaming&lt;br /&gt;
* [9:37] Zaister: but not the &amp;quot;logical orgnaization of PCCs&amp;quot;&lt;br /&gt;
* [9:37] James[Code_SB]: Before we do that we'll need to warn the homebrewers as it will break their stuff&lt;br /&gt;
* [9:37] [Chair]Drew: Stefan's proposal is a new system and won't be enacted until we have a solid proposal&lt;br /&gt;
* [9:37] Zaister: definitely&lt;br /&gt;
* [9:37] James[Code_SB]: This should be in the 6.2 release only too , not try to squeeze it into 6.0.2&lt;br /&gt;
* [9:37] Zaister: yes&lt;br /&gt;
* [9:37] [Chair]Drew: Oh, dear lord only DEV&lt;br /&gt;
* [9:38] James[Code_SB]: That's for the folder reorg too&lt;br /&gt;
* [9:38] [Chair]Drew: Agreed&lt;br /&gt;
* [9:38] James[Code_SB]: Cool, it is good to have these things stated not assumed :)&lt;br /&gt;
* [9:38] [Chair]Drew: I'm only backporting bug fixes at this point&lt;br /&gt;
* [9:38] James[Code_SB]: and B3, ARG and UE ?&lt;br /&gt;
* [9:39] [Chair]Drew: Playing the 6.0 trunk tango is getting old... Yes, B3, ARG and UE are all slated for 6.0&lt;br /&gt;
* [9:39] James[Code_SB]: Oh agreed on the backporting&lt;br /&gt;
* [9:39] [Chair]Drew: after that, I'm happy to close 6.0 completely and focus on trunk&lt;br /&gt;
* [9:39] Zaister: sounds good&lt;br /&gt;
* [9:39] [Arch_SB]thpr: Anything else we need to touch on before I log?&lt;br /&gt;
* [9:40] James[Code_SB]: Which is why I'd like to have a new trunk release out later this year - get us away from needing to update the old stuff too often&lt;br /&gt;
* [9:40] Zaister: of course code support for those sets, if any, need to be backported too&lt;br /&gt;
* [9:40] [Chair]Drew: Nothing in those sets is trunk specific&lt;br /&gt;
* [9:40] Zaister: ok&lt;br /&gt;
* [9:40] James[Code_SB]: I've ported back most of what can be done&lt;br /&gt;
* [9:40] [Chair]Drew: the alternative NATURALWEAPON will be trunk only&lt;br /&gt;
* [9:40] James[Code_SB]: Absolutely&lt;br /&gt;
* [9:41] [Chair]Drew: I think we touched on the roadmap, any comments about Kar?&lt;br /&gt;
* [9:41] Zaister: what's up with him?&lt;br /&gt;
* [9:41] James[Code_SB]: Look, we need to get a meeting in a time suitable for the Europeans to discuss that one I think&lt;br /&gt;
* [9:42] James[Code_SB]: Lets hash out a time on the BoD group&lt;br /&gt;
* [9:42] [Chair]Drew: Fair enough.&lt;br /&gt;
* [9:43] [Chair]Drew: OKay folks, I think we're pushing two hours, so I'm happy to call this meeting and deal with the remainder on the BoD list.&lt;br /&gt;
* [9:43] [Chair]Drew: Any objections?&lt;br /&gt;
* [9:43] James[Code_SB]: Sounds good&lt;br /&gt;
* [9:43] [Arch_SB]thpr: agree, sounds good&lt;br /&gt;
* [9:43] [Chair]Drew: *Bangs Gavel* Meeting Adjourned&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Meeting_Logs&amp;diff=3411</id>
		<title>Meeting Logs</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Meeting_Logs&amp;diff=3411"/>
		<updated>2013-06-22T09:06:15Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
This is a new section to hold the Meeting Logs.&lt;br /&gt;
&lt;br /&gt;
=2013=&lt;br /&gt;
* [[Meeting_2013_06_22]]&lt;br /&gt;
* [[Meeting_2013_05_28]]&lt;br /&gt;
* [[Meeting_2013_05_10]]&lt;br /&gt;
* [[Meeting_2013_03_05]]&lt;br /&gt;
* [[Meeting_2013_02_01]]&lt;br /&gt;
* [[Meeting_2013_01_22]]&lt;br /&gt;
* [[Meeting_2013_01_04]]&lt;br /&gt;
&lt;br /&gt;
=2012=&lt;br /&gt;
* [[Meeting_2012_12_11]]&lt;br /&gt;
* [[Meeting_2012_11_23]]&lt;br /&gt;
* [[Meeting_2012_11_09]]&lt;br /&gt;
* [[Meeting_2012_10_30]]&lt;br /&gt;
* [[Meeting_2012_10_12]]&lt;br /&gt;
* [[Meeting_2012_09_28]]&lt;br /&gt;
* [[Meeting_2012_09_18]]&lt;br /&gt;
* [[Meeting_2012_08_31]]&lt;br /&gt;
* [[Meeting_2012_08_17]]&lt;br /&gt;
* [[Meeting_2012_08_07]]&lt;br /&gt;
* [[Meeting_2012_06_26]]&lt;br /&gt;
* [[Meeting_2012_06_08]]&lt;br /&gt;
* [[Meeting_2012_05_25]]&lt;br /&gt;
* [[Meeting_2012_March_16]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2010=&lt;br /&gt;
&lt;br /&gt;
* [[Meeting_2010_08_02]]&lt;br /&gt;
* [[Meeting_2010_07_19]]&lt;br /&gt;
* [[Meeting_2010_July_5]]&lt;br /&gt;
* [[Meeting_2010_June_7]]&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Joining_the_Code_Team&amp;diff=3356</id>
		<title>Joining the Code Team</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Joining_the_Code_Team&amp;diff=3356"/>
		<updated>2013-04-15T08:44:55Z</updated>

		<summary type="html">&lt;p&gt;James: /* Your first change */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
A list of what to do to join the code team&lt;br /&gt;
&lt;br /&gt;
=General steps=&lt;br /&gt;
&lt;br /&gt;
# Get a [http://groups.yahoo.com Yahoo Groups] id.&lt;br /&gt;
# Be sure to subscribe to the [http://groups.yahoo.com/group/pcgen_developers/ Developer's mailing list]&lt;br /&gt;
# Introduce yourself on the list&lt;br /&gt;
# Find the [http://games.groups.yahoo.com/group/pcgen/ pcgen] project on Yahoo! Groups and join.&lt;br /&gt;
# Get as many IM IDs as possible (most people use Pidgin, Meebo or Gaim) and get online with them.&lt;br /&gt;
# Also join the IRC channel #pcgen on ~DALnet &amp;amp; ~Freenode, we have our meetings and group discussions there in real time.&lt;br /&gt;
# Get the latest official version of PCGen from SF and run it.&lt;br /&gt;
# Get an id at [http://sourceforge.net sourceforge].&lt;br /&gt;
# Find the [http://sourceforge.net/projects/pcgen pcgen] project.&lt;br /&gt;
&lt;br /&gt;
=Your first change=&lt;br /&gt;
# Get your [[Basic Developer Setup|development environment set up]]&lt;br /&gt;
# Select an issue that interests you, either from our issues flagged as bitsize in the [http://jira.pcgen.org/secure/IssueNavigator.jspa?reset=true&amp;amp;mode=hide&amp;amp;jqlQuery=component+%3D+Bitesize+AND+project+%3D+CODE+AND+resolution+%3D+Unresolved+ORDER+BY+updated+DESC Code] and [http://jira.pcgen.org/secure/IssueNavigator.jspa?reset=true&amp;amp;mode=hide&amp;amp;jqlQuery=component+%3D+Bitesize+AND+project+%3D+NEWTAG+AND+resolution+%3D+Unresolved+ORDER+BY+updated+DESC New Tag] projects, or one you have encountered.&lt;br /&gt;
# Build a fix that fixes the bug or implements the new feature&lt;br /&gt;
# Test the fix, preferably by writing a unit test&lt;br /&gt;
# Send the fix as a patch to the developers list asking for a review.&lt;br /&gt;
# Your patch will be reviewed and friendly feedback provided by one of the team.&lt;br /&gt;
&lt;br /&gt;
=Joining the team=&lt;br /&gt;
&lt;br /&gt;
# Once our patch is accepted, the Code Silverback will add you the project on Sourceforge.&lt;br /&gt;
# Your first check-in will be your fix&lt;br /&gt;
# Your second should be adding your name to the team listing!&lt;br /&gt;
# Put your details in this wiki under the [[Code]] team!&lt;br /&gt;
&lt;br /&gt;
Any questions, don't hesitate to ask!&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Meeting_2013_01_22&amp;diff=3328</id>
		<title>Meeting 2013 01 22</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Meeting_2013_01_22&amp;diff=3328"/>
		<updated>2013-01-24T12:19:54Z</updated>

		<summary type="html">&lt;p&gt;James: Created page with &amp;quot;{| align=&amp;quot;right&amp;quot;   | __TOC__   |}  [http://wiki.pcgen.org/Meeting_Logs PCGen BoD Meeting Minutes Home]  =Attendance= * Chair - James (Code SB) * Content - Eric (Docs) * Admin ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
[http://wiki.pcgen.org/Meeting_Logs PCGen BoD Meeting Minutes Home]&lt;br /&gt;
&lt;br /&gt;
=Attendance=&lt;br /&gt;
* Chair - James (Code SB)&lt;br /&gt;
* Content - Eric (Docs)&lt;br /&gt;
* Admin - Paul (PR)&lt;br /&gt;
* Architecture - Tom (Arch SB)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Summary=&lt;br /&gt;
* We will be releasing a 6.0.1 prod patch after 6.1.1 is out&lt;br /&gt;
* Next release is 6.1.1 - no holdups known&lt;br /&gt;
* We won't make early cutoff for Gencon but will need community support if we want to get a booth&lt;br /&gt;
&lt;br /&gt;
=Log=&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:11] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;ok, so lets start&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:11] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;The Agenda from Kar was&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:11] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;* Are we planning a 6.0.1 release?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:11] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;* Can we settle on a definitive roadmap for 6.1.0?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:11] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;* A report on the data migration to 6.0.x data standards&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:11] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;* PR - Are we going to Gencon - can we get the $200 deposit?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:11] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;So, lets start with releases&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:12] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;The 6.0.1 release is waiting on 6.1.1, which is waiting on the go ahead from data&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:12] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;Does anyone know how that data work is going?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2d7647&amp;quot;&amp;gt;[13:13] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #2d7647;'&amp;gt;[Arch_SB]thpr: &amp;lt;/span&amp;gt;I'm afraid Andrew is the expert on that&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:13] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;Yes I suspected that&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:14] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;So Tom, did you have anything you were aiming to include for the 6.1.1 release?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2d7647&amp;quot;&amp;gt;[13:16] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #2d7647;'&amp;gt;[Arch_SB]thpr: &amp;lt;/span&amp;gt;not specifically, no&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2d7647&amp;quot;&amp;gt;[13:16] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #2d7647;'&amp;gt;[Arch_SB]thpr: &amp;lt;/span&amp;gt;None of the major things I'm working on would be ready and I wouldn't want to hold it up&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:17] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;Sounds good then&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:17] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt; I've already committed some improvements to source selection and am also keen to get a better method of changing a character's sources in place&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:18] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;Yes that is close to the number one first question&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:18] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;It does seem to be a frequent one&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:19] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;I'm also wondering if we should have a new quick source for pathfinder which is all player materials that includes all the sources we have coded such as UC, UM etc and we just keep adding the new stuff to that&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:20] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt; Anyone with anything else to raise for 6.1.1?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#7c4c02&amp;quot;&amp;gt;[13:22] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #7c4c02;'&amp;gt;[DOC2nd]Maredudd: &amp;lt;/span&amp;gt;Nothing from Docs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:23] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;ok, I am guessing the data conversion question is one for Andrew, so we'll leave that&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:24] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;So gencon&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:25] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;That weould be me :)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:25] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;Okay if we want to get registered by tomorrow a booth would be $1400, $700 of which would be due immediately&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:26] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;Waiting would only bump the price by $200 (to $1600)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:26] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;At this point I think getting registered and check/CC sent by tomorrow is a little late.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2d7647&amp;quot;&amp;gt;[13:26] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #2d7647;'&amp;gt;[Arch_SB]thpr: &amp;lt;/span&amp;gt;and we have like $19 in the bank or something?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:27] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;Yes $19.55 after paying for the website hosting last month&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2d7647&amp;quot;&amp;gt;[13:28] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #2d7647;'&amp;gt;[Arch_SB]thpr: &amp;lt;/span&amp;gt;seems to me there's a bit of a budget discussion there that makes getting registered a bit impractical&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:28] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;So unless we get a lot of community interest it doesn't look like a booth on our own is realistic&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2d7647&amp;quot;&amp;gt;[13:29] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #2d7647;'&amp;gt;[Arch_SB]thpr: &amp;lt;/span&amp;gt;That takes seeing what we can get by the final cutoff, but I think for the immediate discussion there is no way to register early&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:30] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;Yes I was planning on doing a Mailing list/FB and Twitter posts to drum up interest.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2d7647&amp;quot;&amp;gt;[13:31] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #2d7647;'&amp;gt;[Arch_SB]thpr: &amp;lt;/span&amp;gt;What's the final cutoff?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:31] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;April 23rd? I believe&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:31] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;April 3rd, final deposit by May 1st&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#2d7647&amp;quot;&amp;gt;[13:32] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #2d7647;'&amp;gt;[Arch_SB]thpr: &amp;lt;/span&amp;gt;ok.  Why don't you catch up with Kar on his status and then we can evaluate what plan would need to be put together to support a booth&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:34] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;I cover the costs of my badge, flyers, and meals so basically the only cost is the both and some minor incidentals&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:35] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;I think that's it for GenCon from me&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:35] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;ok, anything else to report or raise from anyone? Any open questions?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#7c4c02&amp;quot;&amp;gt;[13:36] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #7c4c02;'&amp;gt;[DOC2nd]Maredudd: &amp;lt;/span&amp;gt;I got a question.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:36] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;sure&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#7c4c02&amp;quot;&amp;gt;[13:36] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #7c4c02;'&amp;gt;[DOC2nd]Maredudd: &amp;lt;/span&amp;gt;Are we planning on OOC data sets for 6.0.0?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:37] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;not for 6.0.0, we would use 6.0.1 for that I expect&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:37] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;Particularly as there has been a big data reorg so it would get complex&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#7c4c02&amp;quot;&amp;gt;[13:38] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #7c4c02;'&amp;gt;[DOC2nd]Maredudd: &amp;lt;/span&amp;gt;If they get in by then . . . :-)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#402141&amp;quot;&amp;gt;[13:38] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #402141;'&amp;gt;Swiftbrook: &amp;lt;/span&amp;gt;Just a comment:  I've been using 6.0.0 in Pathfinder heavily for the past month and it's working great.  Nice job folks.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#47182f&amp;quot;&amp;gt;[13:39] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #47182f;'&amp;gt;[PR]Nylanfs: &amp;lt;/span&amp;gt;:)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:39] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;Great to hear - thank-you&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:40] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;ok, any last questions or issues?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#7c4c02&amp;quot;&amp;gt;[13:42] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #7c4c02;'&amp;gt;[DOC2nd]Maredudd: &amp;lt;/span&amp;gt;None here.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:42] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;ok, then meeting closed&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:42] &amp;lt;/font&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;James[Code_SB]: &amp;lt;/span&amp;gt;Thanks for coming along everyone&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Meeting_Logs&amp;diff=3327</id>
		<title>Meeting Logs</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Meeting_Logs&amp;diff=3327"/>
		<updated>2013-01-24T12:05:52Z</updated>

		<summary type="html">&lt;p&gt;James: /* 2013 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
&lt;br /&gt;
This is a new section to hold the Meeting Logs.&lt;br /&gt;
&lt;br /&gt;
=2013=&lt;br /&gt;
* [[Meeting_2013_01_22]]&lt;br /&gt;
* [[Meeting_2013_01_04]]&lt;br /&gt;
&lt;br /&gt;
=2012=&lt;br /&gt;
* [[Meeting_2012_12_11]]&lt;br /&gt;
* [[Meeting_2012_11_23]]&lt;br /&gt;
* [[Meeting_2012_11_09]]&lt;br /&gt;
* [[Meeting_2012_10_30]]&lt;br /&gt;
* [[Meeting_2012_10_12]]&lt;br /&gt;
* [[Meeting_2012_09_28]]&lt;br /&gt;
* [[Meeting_2012_09_18]]&lt;br /&gt;
* [[Meeting_2012_08_31]]&lt;br /&gt;
* [[Meeting_2012_08_17]]&lt;br /&gt;
* [[Meeting_2012_08_07]]&lt;br /&gt;
* [[Meeting_2012_06_26]]&lt;br /&gt;
* [[Meeting_2012_06_08]]&lt;br /&gt;
* [[Meeting_2012_05_25]]&lt;br /&gt;
* [[Meeting_2012_March_16]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=2010=&lt;br /&gt;
&lt;br /&gt;
* [[Meeting_2010_08_02]]&lt;br /&gt;
* [[Meeting_2010_07_19]]&lt;br /&gt;
* [[Meeting_2010_July_5]]&lt;br /&gt;
* [[Meeting_2010_June_7]]&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=File:Win_Installer_Components.png&amp;diff=3284</id>
		<title>File:Win Installer Components.png</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=File:Win_Installer_Components.png&amp;diff=3284"/>
		<updated>2012-12-29T21:54:48Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Meeting_2012_12_11&amp;diff=3242</id>
		<title>Meeting 2012 12 11</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Meeting_2012_12_11&amp;diff=3242"/>
		<updated>2012-12-12T08:06:07Z</updated>

		<summary type="html">&lt;p&gt;James: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Attendance:'''&lt;br /&gt;
* Chair - James (Code SB)&lt;br /&gt;
* Content - Eric (Docs)&lt;br /&gt;
&lt;br /&gt;
'''SUMMARY:'''&lt;br /&gt;
* SF Update completed with some hiccups&lt;br /&gt;
* Next release will be early next year&lt;br /&gt;
* Some confusion about the start time with the reminder in UTC+11 time zone (AEDT)&lt;br /&gt;
&lt;br /&gt;
'''Log'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:15] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Well, might do a quick meeting then&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:17] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Well, what do we talk about?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:18] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Well from the code side not a huge amount&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:18] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;I've had a bit of a break&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:18] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;and am starting back into some dev work&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:19] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Tom has started some tidy up of the facets, as discussed in an earlier dev meeting&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:19] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;On the admin side, the migration to the new SourceForge resources has been completed but wasn't painless.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:20] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Amazingly it was nearly painless for me . . .&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:20] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;However Jira and Jenkins are now pointing to the new SVN repo and the majority of contributors seem to have made it across too.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:20] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Good to hear&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:21] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Have you committed changes yet?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:21] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;For Admin, or rather Release, did you see the JIRA I opened for a users problem with PCGen on Mac OSX 10.8?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:21] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Yes I have. At least I think I have.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:22] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;yeah I did see that one - was a bit odd&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:22] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Any ideas on what might have changed?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:24] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Not yet. I've asked Stefan to look at it but haven't heard anything from him. I'll have some time next week to look at it, but as I have little dev experience I'm not sure what I can do. I'll at least dig around to see if similar issues have arrisen in other JAVA programs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:25] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I will also follow up with looking at my release process and setup.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:25] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Yeah I can't really do much testing either&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:25] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I need to check when I moved to Eclipse Juno.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:25] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;It isn't the new Mac OS security model is it?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:26] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;It didn't look like it.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:26] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I'll startup a dialog with the OP.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:26] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;btw, I moved back to Helios.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:27] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I couldn't get the ANT script for zipping files to work on Juno.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:29] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Very odd - I'll be upgrading over Christmas so I'll give it a go then&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:30] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Cool. I'll be interested in any issues you identify.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:30] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Just to wrap up the admin side, I think we'll wait until after new year now for the next builds - both an RC for a patch to 6.0.0 and the first 6.1 alpha&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:30] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;That is unless there are objections or anything urgent&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:31] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Sounds like a plan.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:33] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;As the only Content team member I can only report that Andrew continues to move data sets out of the alpha folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:34] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;The docs have seen little work since 6.0 came out but will see more work over the holiday.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:35] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Additionally, there are a number of new sources that we have recieved permission for that are looking for Data Monkey to work them.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:36] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Great to hear we have new permissions&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:36] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Yep.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:37] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Thats all I have for Content.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:39] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;k, any questions from anyone else?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:39] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I have a question concerning XML. Is that in the cards for PCGen in the future?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:40] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Do we gain anything by one day moving to XML?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:40] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;As a LST format? Noone is driving it currently so I can't see it happening&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:41] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Thats what I thought. I still pickedup the ownership of the pcgen_xml group.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:42] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Yes good to have it archived if we ever revisit it&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:43] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I do plan on doing something with the docs in that direction but I need to understand better how to approach it before I make a push.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:43] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Yes that's a different beast though :)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:44] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Yep.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:44] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;ok, anything else to raise?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:45] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I'd like to get to the point where doing a conversion to PDF is nearly automatic, and that means moving to at least xhtml.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:45] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Nope.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:45] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Yes that would be nice&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:45] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;ok, meeting closed then&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
	<entry>
		<id>http://159.203.101.162/w/index.php?title=Meeting_2012_12_11&amp;diff=3241</id>
		<title>Meeting 2012 12 11</title>
		<link rel="alternate" type="text/html" href="http://159.203.101.162/w/index.php?title=Meeting_2012_12_11&amp;diff=3241"/>
		<updated>2012-12-12T08:04:59Z</updated>

		<summary type="html">&lt;p&gt;James: Log for today's meeting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Attendance:'''&lt;br /&gt;
* Chair - James (Code SB)&lt;br /&gt;
* Content - Eric (Docs)&lt;br /&gt;
&lt;br /&gt;
'''SUMMARY:'''&lt;br /&gt;
* SF Update completed with some hiccups&lt;br /&gt;
* Next release will be early next year&lt;br /&gt;
&lt;br /&gt;
'''Log'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:15] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Well, might do a quick meeting then&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:17] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Well, what do we talk about?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:18] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Well from the code side not a huge amount&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:18] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;I've had a bit of a break&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:18] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;and am starting back into some dev work&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:19] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Tom has started some tidy up of the facets, as discussed in an earlier dev meeting&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:19] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;On the admin side, the migration to the new SourceForge resources has been completed but wasn't painless.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:20] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Amazingly it was nearly painless for me . . .&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:20] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;However Jira and Jenkins are now pointing to the new SVN repo and the majority of contributors seem to have made it across too.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:20] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Good to hear&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:21] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Have you committed changes yet?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:21] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;For Admin, or rather Release, did you see the JIRA I opened for a users problem with PCGen on Mac OSX 10.8?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:21] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Yes I have. At least I think I have.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:22] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;yeah I did see that one - was a bit odd&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:22] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Any ideas on what might have changed?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:24] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Not yet. I've asked Stefan to look at it but haven't heard anything from him. I'll have some time next week to look at it, but as I have little dev experience I'm not sure what I can do. I'll at least dig around to see if similar issues have arrisen in other JAVA programs.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:25] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I will also follow up with looking at my release process and setup.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:25] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Yeah I can't really do much testing either&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:25] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I need to check when I moved to Eclipse Juno.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:25] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;It isn't the new Mac OS security model is it?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:26] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;It didn't look like it.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:26] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I'll startup a dialog with the OP.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:26] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;btw, I moved back to Helios.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:27] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I couldn't get the ANT script for zipping files to work on Juno.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:29] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Very odd - I'll be upgrading over Christmas so I'll give it a go then&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:30] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Cool. I'll be interested in any issues you identify.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:30] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Just to wrap up the admin side, I think we'll wait until after new year now for the next builds - both an RC for a patch to 6.0.0 and the first 6.1 alpha&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:30] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;That is unless there are objections or anything urgent&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:31] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Sounds like a plan.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:33] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;As the only Content team member I can only report that Andrew continues to move data sets out of the alpha folder.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:34] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;The docs have seen little work since 6.0 came out but will see more work over the holiday.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:35] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Additionally, there are a number of new sources that we have recieved permission for that are looking for Data Monkey to work them.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:36] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Great to hear we have new permissions&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:36] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Yep.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:37] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Thats all I have for Content.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:39] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;k, any questions from anyone else?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:39] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I have a question concerning XML. Is that in the cards for PCGen in the future?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:40] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Do we gain anything by one day moving to XML?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:40] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;As a LST format? Noone is driving it currently so I can't see it happening&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:41] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Thats what I thought. I still pickedup the ownership of the pcgen_xml group.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:42] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Yes good to have it archived if we ever revisit it&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:43] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I do plan on doing something with the docs in that direction but I need to understand better how to approach it before I make a push.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:43] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Yes that's a different beast though :)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:44] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Yep.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:44] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;ok, anything else to raise?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:45] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;I'd like to get to the point where doing a conversion to PDF is nearly automatic, and that means moving to at least xhtml.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#530844&amp;quot;&amp;gt;[13:45] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: normal;color: #530844;'&amp;gt;[Doc]Maredudd: &amp;lt;/span&amp;gt;Nope.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:45] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;Yes that would be nice&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style='font-weight: normal;'&amp;gt;&amp;lt;font color=&amp;quot;#204a87&amp;quot;&amp;gt;[13:45] &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style='font-weight: bold;color: #204a87;'&amp;gt;jamesd[Code_SB]: &amp;lt;/span&amp;gt;ok, meeting closed then&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>James</name></author>
		
	</entry>
</feed>