Protégé Contributor's Guide


This documentation is targeted toward Protégé contributors. A Protégé contributor is an individual contributing one or more plug-ins that are bundled with the Protégé installation. It may also be of interest to users who wish to dowload bleeding-edge versions of the Protégé source code.

Due to overwhelming demand from our user community, in February of 2005 we migrated the source code for Core Protégé, Protégé-Frames, and many of the Protégé plug-ins to an Internet accessible version control system called Subversion.

Browsing Protégé source code
Getting Protégé source code
Protégé repository structure
Committing code to the repository



Browsing Protégé source code

If you are just interested in browsing the source code and/or downloading individual files, the best way to do this is through ViewVC (formerly known as ViewCVS). ViewVC is a web-based version control repository browser for both CVS and Subversion repositories.


Getting Protégé source code

Everyone has been granted read access to the Protégé Subverison repository. If you would like to get the most recent version of our code, you need a Subversion client. The Subversion Book has a list of known clients. Here at Stanford, we have either been using the command line tool, TortoiseSVN, or Subclipse. To follow are examples of checking out the "protege-core" module using the command line tool and TortoiseSVN. These examples can be applied to checking out any other module such as "owl", "standard-extensions", "prompt", etc.

From the command line:

svn checkout http://smi-protege.stanford.edu/repos/protege/protege-core/trunk <your-destination-dir>

From TortoiseSVN:

TortoiseSVN is integrated into Windows Explorer. Once you have created a destination folder for the "protege-core" module, right click and select "Checkout...":

checkout using tortoisesvn

In the "Checkout" dialog, fill out the repository URL and the name of your destination directory:

checkout using tortoisesvn


Please note: If you checkout the latest version of our source code, we don't guarantee that it will be in a stable, working state. If you need a stable version of the code, please download the ZIP file that we post to our downloads page each time we do an official build.


Protégé repository structure

The Protégé repository contains top-level directories for each Protégé plug-in, and the core application ("protege-core"). Under each top-level directory are three subdirectories called "branches", "tags", and "trunk". Trunk is where main project development occurs, branches contains branched versions of the main development line, and tags is for snapshots of the main development line that may be created and destroyed as needed.

This is the recommended layout in the Subversion Book. To read more about why they recommend this layout, please refer to the section in chapter five entitled "Choosing a Repository Layout".


Committing code to the repository

Each developer that contributes bundled plug-in(s) has a top-level directory in the repository for your plug-in(s). A bundled plug-in is a plug-in that is written and maintained outside of Stanford but is included in the Protégé installation for the convenience of our end users.

We are using Apache's "Basic HTTP Authentication" scheme to verify that you are who you say you are when you try to commit code to the repository. You will be asked for your username and password when you commit to the repository. Usernames and passwords are assigned to you by the Protégé team. We don't have the capability at this time to allow contributors to log in to our server and choose your username and password. We also enforce per-directory level permissions on the repository so you will only be able to check code into the directory where your plug-in resides.

How do I know where to commit the latest version of my contribution?
Underneath the trunk directory is a directory with a name that corresponds to the directory name into which your plug-in is installed. For example:

  jambalaya/
    branches/
    tags/
    trunk/
      ca.uvic.cs.chisel.jambalaya/		
Each time we do a build, our automatic build process will grab the contents of this directory. **Do not** put anything in this directory other than the files needed to install your plug-in. For example:

  algernon/
    branches/
    tags/
    trunk/
      org.algernon/
        about_algernon.html
        algernon.jar
        plugin.properties
        doc/
          index.html
What if I want to change the name of the directory where my plug-in is installed?
You must notify us if you change the name of the directory into which your plug-in is installed. Our automatic build scripts were written to use the names that currently exist in the repository. If you change the directory name, our build process will break.

Is it possible to put the source code for my plug-in in your repository?
Absolutely. For an example of a contributor that is already doing this, please see the protege-script-console plug-in.

What should I do if I have a question or a problem?
Send email to the repository administrators (please be as specific as possible).