One question most clients have when investing in software for their business is who actually owns the code? This isn’t always a straightforward answer to this. Most apps combine different sources of code from custom areas, reusable components and third part libraries. Understanding these differences is key to understanding ownership of software.
In a typical project, you can split up software into 3 areas:
Client-specific code is the custom code you need that defines your business logic and custom needs, written for you as a client.
Agency code is prebuilt parts that have been developed in-house, allowing for faster project creation by not having to reinvent the wheel.
Open Source Libraries are collections of code that are free to use under certain licensing conditions, such as MIT or Apache, which define the conditions and use-cases allowed.
To save time and money in software development, often it is often better to use prebuilt parts of software, which stops developers from having to reinvent the wheel every time they need to use one. It also reduces the chances for bugs that could be introduced making mistakes in complex areas when existing solutions are available to use. Using these mean you can build faster and therefore cheaper.
Whilst owning every part of the software you want sounds like the best solution. After all, if you are paying for it, surely you should get to own it! The drawbacks of this approach can be large and are worth considering. Like many development agencies shape has prebuilt solutions to some complex areas of applications such as user authentication, database structures, CI/CD pipelines and system configurations. Having these things built and understood by the team can rapidly increase development speed, reducing the cost to you.
If complete code ownership is required, these tools cannot be used, and new versions must be created, increasing the time it takes to get your software and the cost to produce it.
If complete code ownership is not the best system, what is? A balanced model is usually suggested, so that clients can own all their unique code, while the agency can license them the reusable internal code to speed up development and keep costs low. This can give the best of both worlds.
The most common reason clients want to own all of their code is so they are not locked into a single agency, otherwise known as vendor lock-in, in case they feel they would be best suited moving to another company. Vendor lock-in can be avoided, with client-owned repositories, having comprehensive documentation created alongside the project and architecture that follows industry standards, making transferring work to another agency or in-house smoother.
When choosing a development agency to create your application, technical skill is an important factor, but having transparency over ownership, documentation and licensing can be just as importatant as you see you bussiness grow.