Software license agreements often include a source code escrow arrangement that allows the customer to access and use source code for the licensed software if specific events occur. If a customer requires the self-help remedy that source code can provide, then the customer should request and properly administer an appropriate source code escrow arrangement.
Object Code and Source Code
A computer program is usually written in a programming language (e.g. C++ or Java) that can be read, understood and modified by knowledgeable programmers. The resulting version of the computer program is known as “source code”, and is converted (“compiled”) into machine language format, known as “object code” or “machine code”, which can be installed and run on a computer. Object code is not easily read or understood by programmers and is difficult to modify. Consequently, in most circumstances programmers must have access to a computer program’s source code and related materials (e.g. explanatory notes and instructions) in order to modify (e.g. to fix a bug or error) or enhance (e.g. to add new functionality) the program.
Source Code Distribution
Software vendors usually provide customers with copies of licensed software in object code version only. There are numerous reasons for this approach, including: (1) source code is valuable intellectual property, and unauthorized use or disclosure of source code can cause significant loss or irreparable harm to the vendor; and (2) customers that do not have access to source code are more likely to purchase software maintenance and other services from the vendor. This arrangement can be beneficial for customers that use commercial off-the-shelf software, because the software vendor is usually able to cost- effectively maintain the software for the benefit of all customers.
Nevertheless, in some situations (e.g. if licensed software is expensive to acquire and implement, custom developed for the customer, not easily or quickly replaced or essential for the customer’s daily business operations), a customer might not want to rely entirely on the software vendor to provide required software maintenance services. Instead, the customer might require a supplemental, self-help remedy – a right to access and use source code to maintain the licensed software if the vendor is unwilling or unable to do so – provided through a source code escrow arrangement.
Source Code Escrow
Source code escrow refers to a three-way arrangement – between a software vendor, one or more customers and a trusted third party (an “escrow agent”) – that provides the customer with access to the source code and related materials for licensed software if a specified event (known as a “release event”) occurs. The most common release events are the software vendor’s bankruptcy and the software vendor’s breach of its contractual obligation to provide software maintenance services. If a release event occurs, the customer is entitled to access and use the source code and related materials to maintain the licensed software for use by the customer, but not for any other purpose.
The fundamental elements of a source code escrow arrangement include: (1) an obligation on the software vendor to periodically deposit with the escrow agent up-to-date versions of the source code and related materials; (2) a procedure for the customer to periodically verify the vendor’s compliance with the deposit obligations and the quality of the deposited source code and related materials; (3) appropriate, clearly defined and verifiable release events; (4) a license for the customer to use the source code and related materials if they are released from escrow; and (5) a procedure for the prompt resolution of disputes (e.g. a dispute over whether a release event has occurred).
When a customer negotiates a software license agreement, the customer should consider whether the customer requires a source code escrow arrangement. The need for a source code escrow arrangement, and the value it will provide to the customer, will depend on various circumstances, including: (1) the importance of the licensed software to the customer and the likely cost and time required to replace the software; (2) the probability that the software vendor will fail to provide promised software maintenance services; (3) the quality and completeness of deposited source code and related materials; (4) the probability of a dispute over whether a release event has occurred and the customer’s ability to resolve the dispute in a timely manner; and (5) the customer’s technical and financial ability to use the source code materials to maintain the licensed software.
In many situations, a customer might be better off replacing licensed software rather than attempting to use source code to maintain the software if the software vendor fails to do so. Nevertheless, a source code escrow arrangement might benefit the customer by creating an incentive for the software vendor to perform the vendor’s software maintenance obligations.
If a customer requires the self-help remedy that source code can provide, then the customer should request a source code escrow arrangement and properly administer the arrangement by periodically verifying that the software vendor has deposited appropriate source code and related materials for the licensed software.