AccessGrid.org

Developer Information

Note: This guide is a work in progress. Please send any comments to ag-info@mcs.anl.gov.

Getting Started

Most of the Access Grid is written in Python, so familiarity with Python is assumed beyond this point.

Communication between developers is very important, whether you're working on changes to the core AG toolkit, or on auxiliary applications. This is a collaborative community, and many of the available development opportunities are well-known; involving other people in discussion of your work could yield improvements in concept, design, or implementation, and you may find collaborators willing to help with coding.

Mostly, we communicate using the following media:

  • ag-dev mailing list
    This list is primarily for developers to discuss ideas and announce new developments.

  • Bugzilla
    This is the website for the Access Grid bug-tracking system. Submit bugs and feature requests here, or find projects to work on. A feature request here is a great way to elaborate a concept and design for a new project.
  • Access Grid Retreats
    The annual Retreat brings together developers and users to present new ideas and software and discuss paths forward.

Code Standards

Mostly we follow the Python coding standards. Additional items that need to be expressed include:

  • Do not submit code with tabs.
    Turn on tab emulation, or replace tabs before submitting code, but avoid this at all costs. Tabs appear at a different size in different editors, and can easily confuse other developers.

  • Submit files in UNIX file format, not Windows/DOS.
    For many reasons, the primary one being consistency.

Setting up the Development Environment

Browsing the Code

To view the code repository using your web browser, click here.

Getting the Code

We use Subversion for version control. Clients are available for all the major platforms, typically in both command-line and GUI variants.

The relevant bit of information you need to access the Access Grid Subversion repository is the SVN url:

	https://svn.ci.uchicago.edu/svn/accessgrid

To check out the most recent code (the development trunk) using a command-line client, the command would be:

	svn co https://svn.ci.uchicago.edu/svn/accessgrid/trunk AccessGrid 

To check out the most recent code, including all of the current dependencies, the command line would be:

        svn co https://svn.ci.uchicago.edu/svn/accessgrid/build/macosx

or

        svn co https://svn.ci.uchicago.edu/svn/accessgrid/build/win32

Setting up the Environment

The easiest way to get all the dependencies in place is to install the Access Grid toolkit on your machine. On top of an installed toolkit, the following steps will create a working development environment.

  • Install ZSI
    The full install of this package includes the required libraries and scripts for generating interface code from WSDL (the scripts are not included in the AG installers, hence the separate install of this package).

    To install ZSI, in the ZSI directory:

    python setup.py install

  • Set up the Python module search path

    • Windows

      set PYTHONPATH=C:\AccessGrid

    • Linux

      export PYTHONPATH=/home/$USER/AccessGrid

    • OSX

      . /Applications/AccessGridToolkit3.app/Contents/Resources/setupenv.sh
      export PYTHONPATH=/Users/$USER/AccessGrid 

  • Bootstrap the environment
    The toolkit includes a script for setting up checkout-out code to actually run. This includes building required packages and generating SOAP interface code, among other things.
    python tools/bootstrap.py

Run Access Grid apps

With the environment set up, you can begin running Access Grid applications from your development environment.

    python bin/VenueClient.py 
python bin/VenueServer.py

Developer Tutorial

A good introduction to working with the Access Grid code is given in the developer tutorial, including numerous examples of standalone code, shared applications, and node services.

Contributing Code

If you have code you'd like to contribute to the project, or an application you'd like to have considered for inclusion in the core toolkit, follow this process:

  • Ensure that the code complies with the Code Standards above
  • Ideally, write succinct test cases to verify the functionality of the code
  • File an enhancement request in Bugzilla, describing the functionality of your code
  • Provide your code in some fashion, either by making it accessible on the web and including a link in the enhancement request (more desirable), or by emailing it ag-dev (less desirable). (Unfortunately, we've had to disallow attaching files to enhancement requests in Bugzilla.)

Your code will undergo review and discussion, with some possible iterations on the approach and implementation details (more benefits to discussing your project more publicly and earlier). When this is complete, the code will be committed to the repository and included in the next release.

If you frequently contribute content, it may be best to apply for an account for the AG subversion repository so you can commit code directly. To find out more about getting a developer account, write to us at ag-info@mcs.anl.gov.

Reference Documentation

Generated documentation for the Access Grid code is available online by software version

Runtime Dependencies

The dependency libraries can change between versions, so the list is given for each version