### Subversive modules

There are two main plug-ins in the Subversive project: Core and UI. As you can see from the following diagram, there are several ways to extend Subversive:

- contributors may choose to implement their own SVN Client library plug-in and Subversive will use it automatically after it is installed into the Eclipse IDE;
- there is a way to create an automated application using the Core module's API;
- and there are ways to extend Subversive UI in order to cover the tasks you need.

Subversive Core module provides flexible and easy to use API which allows user to interact with all the SVN functionality in an easy to use way. At the same time interface the simplicity does not impact performance in any way and the programmer is able to build a powerful and high-performance application on top of the Subversive Core base. Subversive Core is tested in the headless environment and is a solid ground for creation of an automated application.
Subversive UI module is designed with regards to usability and has a reach functionality. The most notable features are:

- Improved usability of menus and forms (pop-up menu enablement's, controls layout etc.);
- Detailed descriptions on each UI form;
- "On the fly" data validation in dialogs and wizards;
- Strictly respecting Eclipse UI concepts;
- Extensibility.

The term 'extensibility' includes extension points for the following features:

- Synchronize View actions
- Checkout functionality
- Share Project functionality
- Commit action (including dialog and workflow)
- Resource decorations
- History View's multiline comment viewer
- Error reporting
- Crash recovery
- Core module options
- SVN Client library
- Resource ignore rules
- SVN properties support

And that is not all. We do accept community's proposals on how to improve API and extension points, so that the plug-in will truly become adaptable to a different tasks that could be found out there in the world.