Overview
Today, there is a variety of version control (VC), software configuration management (SCM), and application lifecycle management (ALM) tools available. Each system has unique features and addresses unique clients. Therefore, each solution provides a unique SDK for integration with other tools in the lifecycle, such as IDEs. To take advantage of all the features that are provided by the vendor, the usage of the SDK is obligatory.
On the other hand, some tool vendors are only using a small subset of the features. For example, a text editor with ALM integration might only need to check out files from a specific repository, edit the file, and check it back in. The problem begins if the developer of this editor needs to provide integrations with various VC / SCM / ALM tools. Since each solution has its own SDK, all SDKs from all solutions to be supported needs to be integrated into the application.
There is already a partial solution for this problem: Microsoft’s SCC Interface (Microsoft SCCI). The drawback is that the interface is closed source and all of its components (libraries, documentation) are only available to Microsoft Visual Studio Partners. In order to get the libraries and documentation, the signature of a non-disclosure agreement (NDA) is required. Tools based on the SCC interface are not allowed to publish their source code.
Another problem is SCC’s limitation to version control features. The API is not supporting other artifacts of the software development lifecycle, such as change requests, requirements, etc.