Emerald Hand Wiki

Xelog - Log - Create

Modified: 2007/03/21 11:45 by Ornus - Categorized as: Usage, Xelog

Xelog file is an XML file that adheres to a structure (described by the Xelog schema) and references view XSL file for the browser to use to show the change log.

I recommend using Xelog template (xelogTemplate.xml) I have attached to this article. It provides log file for you to customize for your project.

Edit

Header

Each XML file has a single root node. Before it we need to specify a view for the browser to use:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://www.emeraldhand.com/xelog/views/htmlTable/view.xsl" ?>

1st line is the standard XML declaration. 2nd is a special processing instruction. Browsers recognize it as a reference to the style sheet to transform the XML file with. In this case it references **htmlTable** view on our server.

Edit

Root node

The root node is xelog in http://www.emeraldhand.com/xelog/schema/xelog.xsd namespace.

<xelog xmlns="http://www.emeraldhand.com/xelog/schema/xelog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.emeraldhand.com/xelog/schema/xelog.xsd
http://www.emeraldhand.com/xelog/schema/xelog.xsd">
...
</xelog>

It declares default namespace for all elements and references a schema for this file. Schema reference has two effects:
1. Browser can validate the log file on load and notify user of potential problems with it.
2. Some XML editors support auto-completion if schema is provided. This can help you update the log.

If you're hosting Xelog on your server you might want to change 2nd part of schemaLocation attribute to point to your copy of the schema and guard yourself from possible changes on our server.

Edit

Project node

Xelog file is split into several parts. First section is a project node describing the project. It holds project name, website link and so on. It's followed by version sections to describe changes in each release.


<project>
<name>Your project name</name>
<location>ProjectURL</location>
<currentVersion>CurrentVersion</currentVersion>
<issueUrl href="IssuesManagerUrl?bugIDparameter=%ISSUEID%"/>
</project>

Node nameDescription
nameYour project name.
locationURL to your project's home page. View will usually provide a link to it.
currentVersionCurrent version for the project. Can be any number, letter, or however you designate versions.
issueUrl/@hrefURL template to the issues manager (if you use one). Each change can have an ID. Views will generate a link to your issue manager by replacing %ISSUEID% with the actual ID (number or letter, or combination). This should automatically generate links to the issue related to the specific change.

Edit

Version node

You want to create one version section for each release you make and there can be as many of them as you need.

Here's an example:

<version startdate="2006-07-25" releasedate="2006-07-30" type="release candidate" number="0.1">
<component name="Project component">
<newFeature timestamp="2006-10-13T18:38:13-05:00" impact="5" id="1">
<description>Change short description</description>
<notes>This change affects just one component.
Additional notes on what was changed</notes>
<impactDescription>Notes on how this change affects the user,
how user can benefit from it.</impactDescription>
<author>Author Name</author>
</newFeature>
</component>

<newFeature timestamp="2006-10-13T18:38:14-05:00" impact="5" id="1">
<description>Change short description</description>
<notes>This change affects the whole project (all components).
Additional notes on what was changed</notes>
<impactDescription>Notes on how this change affects the user,
how user can benefit from it.</impactDescription>
<author>Author Name</author>
</newFeature>
</version>

version section is a collection of changes. Each change affects either the whole project (entry is version child) or just part of it (entry is component child).

>
Node nameDescription
versionElement representing specific project version. Holds all changes from the previous version.
version/@startdateDate when work on this version started.
version/@releasedateDate when this version was completed. This attribute can be fully omitted to indicate that the version is still under development.
version/@typeType of the release. I'm still working on ideas for this attribute. It will probably change in the future or I might just allow any string. Current possible values are:

  • closed alpha

  • open alpha

  • closed beta

  • open beta

  • release candidate

version/@numberVersion number. Can by any text. I would advice using numbers separated by dot (.). I.e. 0.1
version/componentIndicates project component. It is used to group all changes specific to a part of the project.
version/component/@nameComponent name.

There are several types of possible change entries and they can be either version child or component child.
>
Entry type (node name)Description
fixBug fix.
newFeatureA separate new feature that was just added.
enhancementAn improvement to some existing feature.
taskSome general task. For example refactoring could constitute to the task, depending on how you look at this. In general there should be very few of them.

All entries have the same structure and are different only by the node name. The following table describes common to all entries attributes and child nodes. Optional nodes are put in square brackets ( [optional] ).
>
Node nameDescription
[@id]ID of the corresponding issue in the issue manager. This is used to generate link to the issue described online.
@timestampDate and time (2006-10-13T18:38:14-05:00) when the change was implemented.
@impactNumber from 0 to 5 indicating anticipated impact this change will have on the user. 0 is no impact and 5 is a breaking change.
[@ref]Can be used for reference. For example enhancement can reference newFeature to indicate which feature was improved. I'm not really sure if this is useful attribute. I might remove it in the future.
[@revision]Revision number. Originally I intended it to store source control revision number when the change was implemented. In reality I have several problems.

  • Often change will be implemented over a series of check-ins. Which do you use here?

  • Next, do you check in the code and then update the change log (and all changes will always be 1 step behind in the source control) or update the change log and then check in (then you don't know revision number for sure).

I'm coming to a conclusion that this attribute in its current state isn't very useful. It's difficult to update and its value is questionable.
descriptionShort change description. Should not be more than one sentence. In reality this is a change title, however when I had title I tended to use 1-2 words and didn't like the result so I switched to description.
[notes]Full description of the change. What was changed, how, and so on.
[impactDescription]This is the text to help the user. It should explain how user experience will be different with the new change and how the user can adjust to it.
authorAuthor name. There can be any number of authors.

Copyright © 2006-2008 Emerald Hand, Inc. All rights reserved.
Powered by ScrewTurn Wiki version 2.0.34. Some of the icons created by FamFamFam.