A properly-written software partnership agreement sets the parties' legal obligations, rights, and responsibilities, as well as assists in clarifying their mutual expectations and enhancing communication from the very beginning of the partnership.
If you are commissioning software development, it is critical to have a decent software development partnership agreement in place to obtain and secure the product or tool you want to build. Similarly, if you are hired to create software, this agreement is critical to receiving payment, avoiding problems, and resolving issues which sometimes occur in relations with clients.
While this article cannot possibly cover all conceivable subtleties of software contracts, it does present an outline of some of the most critical issues that any quality software development agreement should contain.
A Software Development Contract is an agreement between a service buyer and their service provider - for example, a business and a software developer - in which the former specifies their concepts and requirements and the latter agrees to create the software according to the terms and conditions specified in the contract.
Documents of this kind are, for example, required in software development organizations when developers are employed to produce computer software for both commercial and private usage. It is consequently critical to define the scope of the firms' and developers' rights with respect to the software.
Deliver your web app
in weeks not months
The software software partnership agreement specifies:
The main types of services to be provided under a software development contract are design, programming, quality assurance, and - sometimes - workshops. The document may go beyond stating the type of services to be provided, to specifying the expected deliverables (for example, designs, application modules or software features). The specifications may be written in a nontechnical clear and concise language or even be a prototype of the software.
The contract can also define the scope of the project and the procedure for making changes to the technical specification or scope description. Such modifications will likely impact the project timeline and cost and should always be agreed by both parties.
Further, the document can specify the personnel to provide the code, such as specific individuals with the relevant skills and competencies. Alternatively, these individuals are not named but described in broad terms(e.g., 2 python back-end developers, 1 react front-end developer) but the provisions ensure that the service buyer retains the right to approve of any individual to be deployed by the service provider on the project. Finally, the agreement may just state the mechanism of personnel selection and approval, granting the client the right to approve the proposed personnel.
On top of that, the software development contract states the place of service delivery - i.e., fully remote or on-site - and the time of service delivery, including the time window for joint collaboration when in different time zones.
This section sets the success criteria for a project. To avoid misunderstandings and arguments, the criteria for job acceptance should be written in plain language.
Prior to initiating the process of developing custom such software, a software supplier and a customer collaborate to define acceptance criteria for the required application based on its system specs.
In fixed budget contracts, the service provider sometimes receives a Certificate of Acceptance when the project is complete and the generated software meets all predefined requirements. This certificate verifies that the application complies with all documentation requirements and that both the software vendor and the customer agree on the project's successful completion.
In the case of a Time and Material agreement, the client may receive a monthly report and detailing the tasks done and the time spent by the team on those tasks.
In either case, the performance of the software should be tested to determine the extent to which it meets the predefined specifications. This section of the contract states how the performance test will be conducted and the acceptable form of feedback required to be obtained from the test.
This section defines the payment terms of the contract, depending on the type of contract.
In a fixed budget contract, this section defines a lump sum to be paid, whether it is to be paid in total or in installments (e.g. for specific milestones) as well as when the payments are to be executed, for example after project/milestone completion vs. 50% upfront and 50% after.
On the other hand, in a time and material contract, this section states the hourly fee of the vendor. It also states the frequency of payments, which could be weekly, monthly, quarterly or even dependent on the progress of the project.
The contract also states the frequency with which the vendor will report or update the client on progress made and may oblige the vendor to periodically submit worklogs for the client.
This section establishes who owns the intellectual property rights in the produced software and is one of the most critical sections of the contract. It is vitally important to emphasize here that the final product is the customer's property to the maximum possible degree. Thus, the customer acquires exclusive ownership to all the copyrighted deliverables (including the the source code) produced by the vendor, and - when Open Source software is deployed in the solution - the customer has the title to deploy it for the intended purposes. Some Open Source can only be deployed with limitations which may not be acceptable for the customer.
It is critical to ensure that the software development company has no right to use, alter, sell, or rent the developed software in any form. In order to ensure that the software development company does not use or have any right to the produced software, the contract must clearly provide for the transfer of ownership from the software company to your company. Also, if the contract terminates before the project is completed, the contract should transfer ownership of whatever code they have produced so far to your company.
Where open-source tools are used in the production of the software, care must be taken to study the licensing terms, as - for example - some licenses require modifications of the open-source software to be distributed under the same open-source licenses. The contract may specify the kind of licenses that can and cannot be used in developing the software. It may also require the vendor to list the Open Source components deployed in an agreed location for your firm’s review. You are to ensure that the licenses permit the Open Source components to be used in the way they have been used in the software. Where the license requires the consent of the author prior to use of the open-source tools, your firm must seek the consent of the author in accordance with the license.
Additionally, the client needs to keep in mind that the authors of the open-source components in principle hold the original title to such components and licence them based on open-source licences with their specific (and differing) terms and conditions. The client merely has a limited license to the open-source tools and cannot acquire exclusive ownership to such components. By contrast, the ownership of code developed by your service provider can be transferred to you or your firm on whatever bases you agree in the agreement, e.g exclusive, perpetual and otherwise unlimited.
This section safeguards both your firm and the software development business from the disclosure of sensitive information and trade secrets to other parties. Your firm and the software provider can agree on which data is considered sensitive and what consequences will apply if it is disclosed.
If a secrecy section contains a great deal of information, it can be expanded into a separate non-disclosure agreement (NDA) between the parties or attached to the main custom software development contract as an appendix. The confidentiality obligation in the software development contract clause or NDA should outlive the completion of the project.
It is advisable to also ensure that your vendor can not deliver a very similar solution to your competitor. A non-compete clause prevents the service provider from building a similar software solution for your competitor within a specific time period after the completion of the project. This helps your firm to retain a competitive advantage in its industry.
The warranties section covers a variety of product and project-related commitments that both the vendor and the client can agree to fulfill. They are frequently associated with the software's functional performance.
A warranty may be a commitment from the vendor to the customer that the software will perform as expected, in accordance with the specifications, for a specific period of time. If not, the vendor may be obliged to compensate the client. For instance, if any bugs or malfunctions occur in the generated software, the vendor is obligated to repair or replace them.
Other forms of warranties that attract compensation include a warranty as to the ownership of the software and that the software will not infringe on the intellectual property rights of any third party.
Here are some sample warranty clauses exemplifying the above instances:
Another important section in a software development contract is the governing law and dispute resolution section. Ensure that your country (or state) applicable law applies and governs the contracts and - in case of a dispute - that it is your local court that has jurisdiction.
Additionally, establishing dispute resolution processes may benefit both parties in avoiding the significant expenses associated with judicial proceedings. Should a dispute arise, it can be attempted to first resolve it through arbitration or mediation between a software vendor and a client.
The termination clause will usually provide the process and notice period for termination of resources deployed on your project and the termination of the entire contract. It is advisable for termination to be made in writing.
See a snapshot of a termination clause below:
Finally, the contract should state the process for modifying its terms and conditions. Changes to the contract should be required to be made in writing, for records of both parties. Written changes should be introduced in the manner provided for in the final subsequent clauses requires clear of the contract.
When fixed-price is used for payment, the changes in scope and the resulting changes in price and implementation schedule should be included in the Appendix amending the contract id the parties agreed to follow such a procedure in the original contract. Remember to specify the date when the changes are to take effect, e.g. when the rate is to change for price calculation, which may sometimes be weeks or even months after signing the Appendix.
To secure a solid ground for strong partnership between the software development services buyer and seller, it is a good idea to craft and sign a software partnership agreement which clearly sets out the key terms and conditions of collaboration between the parties. It is critical to define the type of services to be delivered as well as the deliverables to be produced.
The contract should also include the cost of the services and the frequency of payments to be made by the buyer. Additionally, the contract should specify and govern the transfer of Intellectual Property rights in the software program delivered. Finally, the contract should explicitly state the prevailing law, jurisdiction, and method of resolving disputes. These key provisions help clarify mutual expectations, avoid conflicts and/or help resolve issues and possible conflicts when they do arise.
Author Tomasz Bąk Product Manager