Dev:Guideline for participating in the development process

From wiki.railML.org
Jump to: navigation, search

Guideline for participating in the development process

This guideline is supposed to explain the development of the railML® schema and how you can contribute.

As a developer of railML®-based application you may at some point reach limitations of railML® or even discover bugs. As the schema is being developed in an open source style by the community, we invite you to help improving railML® by reporting your demands and by participating in finding a solution.

The provided development process

Enquiry

Before demanding help by others, please examine this wiki and the railML® schema carefully. Maybe you can solve the problem yourself.

Submit your issue to the forum

If you find a bug or if you have a have demand for a new element or attribute, you shall bring it up in the railML® forum. Maybe you will find a solution yourself when you formulate the question attentively. As an open community, other users, developers and coordinators will try to help you finding a solution for your issue. And sometimes the discussion will show, that something you considered to be a bug is in fact a feature, or that a feature you demanded already exists.

Discussion process

If your issue finds resonance, the subschema coordinator will moderate a discussion as to formulate a development task (or discard the issue). It is not recommended to contact the subschema coordinators before discussing the issue in the forum. However, to contact the coordinators directly, please see http://www.railml.org/en/user/subschemes.html.

Ticket

As the result of the discussion process in the forum, the subschema coordinator will formulate the development task as a ticket in the Trac system (railML® website).

Workaround

The development process described above may take some time. If you need the requested element or attribute beforehand you may make use of the any element and any attribute in order to implement a fast workaround. This procedure is only possible if the relevant parent element contains an any anchor and if there is no other regular railML® element or attribute where the information shall be stored. Please see CO:usingAny for a guide.

Development within the Subversion Repository

The developers will coordinate the development of the new element resp. attribute within the Subversion Repository (railML® website). Although the Subversion Repository (SVN) is not public, we appreciate your contributions. Please, contact the coordinator to participate in this step.

The creating instructions for new elements are summarized here.

Release

After the developers finish implementing the new elements or attributes as part of a new railML® schema version, this schema version will be released. The release usually follows the version cycles of railML®. See Dev:Downloading_and_using_railML® to learn how to obtain the current schema, or download it directly from http://www.railml.org/en/developers/download.html.

Contributing examples

After the enhancement is published, you can improve the usability of railML® by contributing railML® file examples from your expertise background.

Incorporating the extension in the Wiki

After release, the new element or attribute shall be incorporated into this wiki documentation. The wiki should always represent the currant state of the schema. Therefore:

  • Don't document elements in the wiki before them being published (or do so only if the publication date is known).
  • After publication, take care, that changes are incorporated into the wiki asap.
    • New or changed attribute:
      • Add or change the attribute in "attributes" providing its semantics with an "Intro"-Template of the next proposed version
      • Add or change the attribute to "constraints" providing its type
      • If needed, declare another attribute 'deprecated' with the "Depr"-Template.
      • Adjust the XML-Tree with no version hints — look for help here
    • new or changed sub-element
      • Change the "children" with an "Intro"-Template of the next proposed version
      • Provide a new wiki page for the new sub-element — look for help here