This post is for readers new to software development agreements, those who want or need to learn more.
You may want or have been asked to:
- Organise a new contract for a software development services supplier
- Review software development contract documentation presented by a supplier
- Generate or update standard terms and conditions for your own software development business
- Instruct a lawyer to do one of these things
In each case, the information in this post will help you.
After suggesting a definition of “software development agreement” and considering how these agreements might be categorised, I explore their purposes and the principal circumstances in which they should be used.
I also consider the contents of a typical agreement – what should be included and what should be excluded – and highlight some of the more contentious areas, those that tend to cause friction during contract negotiations.
At the end of the post, I give some specific pointers for those readers needing to create a new document or to update or review an existing document.
What is a software development agreement?
A software development agreement is a binding contract, usually between two persons, pursuant to which one person (the developer) agrees to create software code for another person (the customer).
An agreement is a binding contract where its provisions can, in principle, be enforced through court proceedings.
In addition to obliging the developer to create software, the agreement will usually permit the customer to use the software, whether by means of an assignment and/or licence of the intellectual property rights in the software. The customer will usually undertake to pay the developer.
What are the main types of software development agreement?
First and foremost, these agreements may be categorised by reference to the scope of the commitments given by the developer.
Is the developer committing to produce software to an agreed specification in an agreed timeframe (for example, following a waterfall development methodology), or to work towards a developing vision of the software (for example, using agile development methodologies)? Is the developer merely undertaking to expend time and expertise in the course of a development project without committing to any outcomes?
Depending primarily upon the scope of the developer’s commitment, you may need:
- Traditional software development terms and conditions
- Agile software development terms and conditions
- Software consultancy terms and conditions
Bear in mind that the type of contract does not always match the development methodology. For instance, it is not uncommon for software developed using agile methodologies to be subject to a contract under which the developer commits to a final specification of some kind.
If commitments to development work will be staged, a framework development agreement or master services agreement may be more appropriate, under which the parties can agree to specific items of work, without the need to revisit the legal nitty-gritty.
Another way to classify development contracts is by reference to their subject matter, For instance, you might differentiate between:
- Web design agreements
- Mobile app development agreements
- Cloud software development agreements
In practice, the type of software being produced under the agreement usually has less impact on the agreement text than the nature of the developer’s commitment.
A third way to classify these contracts is by reference to the ancillary services to be provided under the contract. You will sometimes see, for instance:
- Software development and maintenance agreements
- Software development and support agreements
- Consultancy and development agreements
I consider the impact of ancillary services further below.
When should you use a software development agreement?
You should use a contract of some kind in almost any situation where you are paying or being paid for the development of software. If you are providing or receiving any non-cash consideration, a contract should also be used. Even where software is being developed entirely free of charge or any other quid pro quo, consider where a contract covering at least the parties’ rights with respect to the software is necessary. You should sign a contract even if you are good friends with the other contracting party. You might not always be friends, and you will have a better chance of remaining friends if you are each clear about your rights and obligations.
Software development methodology makes little difference. Software development on an agile basis needs a contractual framework just as much as software developed on a more rigid basis, although the exact terms of the contract may be different.
The only common software development situation where you might not need to sign a contract is where an appropriate master services agreement or other framework agreement is already in place – and, even then, you will usually want to agree a written order or call-off contract of some description.
At the borders, you might not need a specialist software development agreement if the software being produced is minor and is already covered by a consultancy agreement with appropriate provisions (including a licence or assignment of intellectual property rights). Equally, if a supplier is producing an website or other application using a zero code system (e.g. a website builder such as Shopify) a standard software development agreement will not be appropriate.
Software development terms: what should be included?
Some of the key clauses in a standard development contract, and the questions that they answer, are as follows.
- Term and termination – When will the contract come into force? When will it conclude? Does either party have the right to end the contract early, and if so in what circumstances?
- Development services – What things must the developer actually do and deliver (compiled code, source code, documentation?), and when must the developer do and deliver these things?
- Customer obligations – What must the customer do to enable the developer to provide the services?
- Software testing – What are the developer’s and the customer’s contractual responsibilities as regards testing? What tests should be done and how will passes/fails be defined? What are the contractual consequences of passed or failed tests?
- Intellectual property – Who will own the copyright and any other intellectual property rights in the software? To what extent will the non-owning party be granted a right to use the software? How will third-party and open-source materials included in the software be licensed?
- Source code – Will the parties’ rights with respect to source code differ from their rights with respect to compiled code? If they will, a distinct source code licensing clause may be required.
- Data processing – If the developer is processing personal data on behalf of the customer, a GDPR-compliance data processing clause should be included in the contract.
- Confidentiality and publicity – At least some of the information passing between the parties should be treated as confidential.
- Charges/payments – What will the customer pay to the developer? How and when will payment be made?
A software contract should also include all the usual framework and boilerplate clauses, covering warranties, indemnities, liabilities, notices and so on.
For a more in-depth look at the both the core and peripheral contents of software development agreements, see this checklist.
Whilst the creation of software code is the heart of any software development agreement, such agreements will often cover other services.
For instance, a development agreement may also cover consultancy, design, project management, integration, deployment, monitoring, maintenance and/or support services.
In some cases, ancillary services can be treated as a component part of the development services; in other cases, it may be better to treat them as distinct services. I will tend to do so wherever the ancillary services represent a significant portion of the work required by the developer, if they are subject to separately specified charges, or if any intellectual property rights arising out of the ancillary services require special treatment.
Where an agreement covers both project services and ongoing services, care needs to be taken to ensure that provisions of the agreement created with one aspect of the services in mind do not have unintended consequences with respect to other aspects of the services. For example, you might want support services to be terminable on notice, whilst wanting development services to be non-terminable in the absence of a breach of contract.
What are the contentions issues in development agreements?
The clauses that tend to be most discussed or controversial when an agreement is being negotiated are:
- The deliverables specification and timetable commitments
- Acceptance criteria and processes
- Intellectual property provisions
- The warranties
- Indemnities and limits of liability
Where highly confidential code or data is being shared by the parties, then the confidentiality provisions will also be subject to close scrutiny; and if the sharing of personal data by the customer with the developer carries material GDPR-related risks, the data processing clauses will also attract attention.
The review process
Reviewing a software development agreement, especially an unbalanced or poorly-drafted agreement, can be more challenging than creating a new agreement from scratch.
Whilst a careful reading of the agreement should allow you to identify overt imbalances, it can be difficult to identify more subtle imbalances if you are not familiar with commercial contracts generally and software contracts in particular. To give a basic example, a limitation of liability clause that is formally mutual – i.e. applies to the parties equally – will usually benefit the services provider more than the customer. Nonetheless, customers often ask for these clauses to be mutualised, when their real interests usually lie in circumscribing the scope of the limitations.
Where it is commercially feasible, it often makes sense to instruct a solicitor or other contract professional to review pre-existing contract documents.
I recognise, of course, that this is not always an option. If you need to review a software development agreement but are feeling out of your depth, the following tips may help:
- Read a few other software developer agreements; this will help you understand your agreement and give you some idea of the typical contents and make it easier for you to identify non-standard clauses
- Consult a checklist of the standard contents, or compare your agreement to a good precedent, to see if anything is missing
- Focus on the key issues, including the basic services commitment, the ownership and licensing of intellectual property rights, and the provisions affecting supplier liability
Updating an existing software contract
When updating an existing software development contract, you will be reliant upon the knowledge and skills of the person or persons that worked on it in the past.
If you have good reason to believe that your existing document is flawed, consider whether you would be better starting with a new template.
If you are confident that your existing document is basically sound and suitable, then you can identify at least some of the necessary changes by:
- Checking whether the agreement has been reviewed and updated to account for recent legal revolutions, such as the introduction of the GDPR in the EU in 2018 or the UK’s Brexit process
- Checking any statutory references in the agreement – references to repealed legislation are a clear sign that the document needs work
- Checking any URLs or hyperlinks in the agreement
- Comparing the agreement text to a contract or precedent that you know is up to date
- Reviewing specialist IT legal news websites to identify recent legal developments that may impact the contract
- Reading the entire document to confirm whether it remains consistent with the market position and practices/procedures of the business
How do I create a new software development agreement?
You have determined or been instructed to put in place a software development agreement. Assuming you do not have the budget to instruct a solicitor or other contract professional to prepare the document, you have two main options.
Option 1: you could copy a likely-looking contract from the internet, adapting it for your purposes. The advantages include instant availability, a wide range of options, and zero up-front costs. Disadvantages include zero quality control (how do you know that what you have downloaded is high quality and up-to-date), a risk of poor fit (even a high-quality and up-to-date document might not fit well with the legal and commercial context in which you intend to use it) and of course copyright infringement. If you mitigate the risk of poor fit by copying a respectable competitor’s documentation you increase the risk of a legal claim. Overall, not a great option.
Option 2: find or buy a good quality template or precedent for adaptation. You should look for something from a reputable source, something up to date, and something that closely matches your use case. Be a little wary of templates and precedents that promise ease-of-use above all other qualities: software development agreements can be complex, and there are good reasons why even skilled and experienced lawyers can take many hours to produce an agreement that is tailored for a particular business or deal. The advantages of this option include low costs, ease of access and a good range of options. The disadvantages include the work you will have to do, and the responsibilities you acquire, in taking on the role of lawyer.
See our free software development agreement template.
You can also access our range of premium templates on Website Contracts:
Instructing a lawyer
If you are instructing a solicitor or other lawyer to assist you with a software development agreement, the usual principles apply. Look for someone with professed interest in non-contentious IT law, who has significant demonstrable experience preparing this kind of contract and who will be able to understand your business and your technology.
Critically, you also need someone that communicates well with you. Recommendations from your network are usually best, but do not rely upon recommendations alone. Before instructing a lawyer, meet them or spend time with them on a video call to ensure that they are right for you.
If you would like a quote from my law firm Taylor Ben Artzi, please do get in touch via the law firm website.