The EDRN Portal is component based software. As such, rather than a large monolithic web application, it consists of a series of individually maintained, tested, modular, and cohesive software components. These components are individually released with specific version numbers and their package metadata is tracked by the Python Package Index (or "Cheeseshop"). A single "release" of the EDRN Portal therefore comprises a set of software components at specific versions.

Component Overview

The following lists the current components that go into the EDRN Portal:

Component Purpose Repository Cheeseshop
edrn.theme CSS and skin Link Link
edrnsite.funding Content types for funding opportunities Link Link
edrnsite.misccontent Miscellaneous content types Link Link
edrnsite.policy Orchestrating policy: turns a Plone site into the EDRN Portal Link Link
edrnsite.portlets Portlets Link Link Search and results Link Link
eke.biomarker Ingest and display of biomarkers Link Link
eke.committees Ingest and display of EDRN committees Link Link
eke.ecas Ingest and display of datasets Link Link
eke.knowledge Basic Knowledge Environment types Link Link
eke.publications Ingest and display of publications Link Link Biomarker reviews and quality control Link Link Ingest and display of member sites Link Link
eke.specimens Ingest and display of specimens Link Link Ingest and display of protocols and other studies Link Link


In order to release an EDRN Portal software component, you must first have an appropriate development environment set up. The development environment gathers prerequisite software and configuration and makes it possible to test and release software components. If you already have an EDRN Portal development environment, skip this section.

To set up your EDRN Portal development environment, follow these instructions:

  1. Check out the portal configuration from the source repository:
    svn co
  2. Make the checked out directory the current working directory:
  3. Boostrap the environment:
    python2.4 -dc dev.cfg
  4. Enter development mode:
  5. bin/buildout -c dev.cfg

If you encounter any difficulty in these steps, consult the DEV-README.txt file for more information on system requirements and troubleshooting tips.

Releasing a Component

When a component has reached a level of maturity that it may be released, use the following process to do so. In this section, we'll release a fictitious component called "my.component" that's graduating from version 1.0.0 to version 1.0.1. "my.component" lives in a Subversion repository at

  1. Check out the component by running:
    bin/develop co my.component
    bin/buildout -c dev.cfg

    If you have already checked out the component (for example, because you were working on it), then update it to ensure you have the latest revisions from the source repository:

    bin/develop up my.component
  2. Ensure that the component's changelog is up-to-date by editing src/my.component/docs/HISTORY.txt. Commit any changes to the source repository.
  3. Ensure that the component's tests pass by running:
    bin/instance-debug test -s my.component

    If any tests fail, submit appropriate bug reports and do not release.

  4. Ensure that the component's documentation builds by running:

    (if you don't have reStructuredText tools installed, run: easy_install docutils

    bin/buildout -c dev.cfg setup src/my.component src/my.component/doc.txt > /tmp/out.html
    open /tmp/out.html
  5. Repair any warnings either from the command or embedded in the output HTML and commit them to the source repository.

  6. Tag the component's release by running:
    svn cp -m 1.0.1
  7. Check out the tagged version into the "src" directory:
    cd src
    svn co my.component-1.0.1
  8. Remove the Subversion tagging directives from setup.cfg and commit the file:
    cd my.component-1.0.1
    sed -e '/^tag_.*/d' setup.cfg >
    mv setup.cfg
    svn ci -m 1.0.1 setup.cfg
  9. Create the source distribution and the binary "egg" distribution, and register the package with the Cheeseshop:
    cd ../..
    bin/buildout -c dev.cfg setup src/my.component-1.0.1 sdist bdist_egg register
  10. Copy the source and binary distributions to the download location (the download location is identified by the _downloadURL variable in src/my.component-1.0.1/
    scp src/my.component-1.0.1/dist/*
  11. Delete the tagged release from your src directory:
    rm -r src/my.component-1.0.1
  12. Edit src/my.component/ and bump the _version by at least 1. Commit this change.