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
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.
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...":

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

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.
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".
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).