From Protege Wiki
Protege 5 Developer Documentation
This page is a top-level entry point for all developer documentation related to the Protege Desktop application, versions 5.0 and above.
Accessing the source code
Protege Desktop is open source and the code is freely available on GitHub. Use the following Git command to get a local copy:
git clone https://github.com/protegeproject/protege.git protege
The source code for many Protege Desktop plug-ins has also been made available on GitHub under the Protege Project organization.
Building from source
The instructions for building from source are available on GitHub.
Building with Eclipse and other IDEs
We would welcome contributions from the community for setting up development environments other than Eclipse.
The Protege API gives access to the ontology model and offers various utilities.
The Protege core and the OWL editor kit both provide a large number of reuseable UI components and utilities for generating user interfaces for ontologies.
Developing a plugin
Protege has been written specifically to be modular. It uses the OSGi framework as a plugin infrastructure.
When developing a plugin:
First, you should consider which type of plugin you want to build. The plugin types page provides a list of plugin types that can be implemented in Protege.
Second, take a look and reuse the plugin examples available on GitHub. The GitHub page also has documentation (see the readme file). Clone the project, and then adapt the plugin example that you would like to implement.
You may also look at the Anatomy of a Plugin page, which gives a quick start to writing a plugin for Protege. Although it was created for Protege 4 plugins, most things still apply to Protege 5 plugins. The page starts with a guide to writing the empty (trivial) plugin in five minutes. Then it describes how some additional content can be added to the plugin.
Once you have written a plugin you want people to use it. Some very simple steps allow you to advertise your plugin and enable auto-update.
For people embedding Protege services inside a non-OSGi based applications, here is a short example showing how this can work.
It is surprising how many people have written plugins for Protege that we just don't hear about.
If you wish to publish to the community, please see our notes on code contributions.
If you need additional support, please contact us via the protege-dev mailing list. You need to be subscribed in order to post to the list. In your post, please provide a detailed description of the problem, the steps to reproduce it, and any exception traces or logs that are relevant.