Currently developed software systems are large and compilcated. They use various technologies and components. It is very seldom that a system is build from scratch – without existing frameworks and external libraries.
Because of that software delivered by vendor will most probably contain such components. Customer should pay attention to the 3th party component licences. This may have impact in future development.
We need to consider two perspectives:
- Use of external 3th party library.
- Extending external 3th party library.
If ordered software uses external components each of those components is treated as separate entity. Such entity has it’s own licences given by the component’s owner. (case 1)
If the vendor want to extend external component due to some reason, it need’s to be done under component’s licences. Open source licences (like GPL) will force vendor to release source code of the changed component. (case 2)
Sometimes vendor has his own set of components used to speed-up development. It such case the customer needs to ensure that it is possible and legal to extend those components by other vendors. Otherwise customer is tight up to this particular vendor when it comes to future development. More about that in Internal supporting components below.
- GPL – free commercial use. Development team is forced to publish source code to the community.
- MIT/BSD – free commercial use. Modifications to the source can be kept hidded.
- End User License Agreement – licence type used y most software companies. Usually vendor can not monidy the source code.
In every case the licence terms need to be provided with the external component by the vendor.
Incompetent usage of external components may result obligatory source code release by the customer.
Internal supporting components
As mention above vendors can use they own custom components or frameworks. It is happening very often since such supporting components speed-up development process. Cryptography or spell-checking modules can be very easy reused.
For the customer, the fact that some (maybe essencial) components do tight-up him with particular vendor, can be problematic in future, because it’s usually vendor who owns the licence to those. Because of that it can be harder for the customer to change the vendor in the future.
Customer should receive a licence to use and modify supporting components in the system he ordered.
When receiving the software customer should check if all external components have licence which satisfy his needs. Licencing should be one of the point on software delivery agreement.