I usually deliver IT-solutions under permissive open source licenses. This has several benefits, both for me and the client:
- It ensures that I can reuse code between my projects saving time and money for both me and my clients.
- It taps into an existing legal framework, to avoid hazzle and uncertainties about rights. This does not mean that it has to be public.
- It protects my client against vendor lock-in.
- If it is public, you can freely use the infrastructure for open source projects, ie. github, travis-ci, code assurance tools etc.
- It gives greater transparency, as the client can easily look at the code, or have 3rd party quality assurance, even during development stages.
- It is a competitive advantage when you clearly explain the benefits above, and the dangers of vendor lock-in, or non-transparency in code quality.
The agreement is that the actual open source license is applied, at the moment that the final payment is transferred. This is in order to have some rights in case the client does not pay.