Archive

Archive for the ‘The IT outsourcing series’ Category

IT outsourcing contract, what to include – Part 1 of 4

June 5th, 2009

IT outsourcing contract, what to include

This blog is the first of four sub blocks in the IT outsourcing series. The four blocks are about the nitty-gritty details you have to remember before you sign a contract.   I decided to make four blogs as opposed to one very long blog.  I am only focusing on the areas where you can get into trouble. If you’re not an IT company then this is for you but it is technical. Many of the things I’m discussing can be a source of confrontation hence I am also including some suggestions to how that can be avoided.

The issue: Source code Always make sure that you get a full copy of the source code at the end of a project. A full copy includes everything single line of source code writen, every third party component used and every graphic design file created (original Photoshop file is done in Photoshop). No exception! If the supplier cannot / will not give you that then walk away.

The reason: Without the source code you cannot make changes your software in the future. In other words you will be married to you supplier forever. This is because the source code may be compiled (a technical word which basically means that the source code is turned into something which only can be read by computers). Needless to say if the source code only can be read by computers (it is complied) no programmer will be able to make changes in the future unless you use the same supplier. I cannot stress the importance of this enough, without the source code your software is worthless.

Potential confrontation: The main confrontation point is that the supplier may not provide you with the source code before you have paid everything in full. On the other hand the customer may not want to pay everything before getting the source code.

This is a very tricky situation because neither party can really do anything if the other party does not honor their end of the deal.

Example: Let’s say that the amount in question is $10,000 and that the customer does not pay the bill upon receiving the source code. What can a little IT companya in India or the Philippines do about that? Realistically they can do absolutely nothing because a good lawyer costs $250 an hour so it won’t be long before the net profit is eaten up by lawyer fees.

On the same token if the customer pays everything in full and the supplier does not provide the customer with the source code then the customer will have to take supplier to court. Taking a supplier to court in a third world country, on the supplier’s home turf is no easy task. A Court case in a third world country can easily take 2 to 3 years if not longer and the chances are good that the customer will lose.

Suggestions:

  • Find out who you are working with before you start working together. Check references make sure you are working with an honest and decent company. If you are the slightest bit in doubt follow your instinct and walk away.
  • Make an agreement that the supplier gets 80 or 90% of the total project cost, and the remaining 10 or 20% are paid upon delivery of the source code.
  • Make a contract choosing a court in a third country i.e. you can make a contract with court in Singapore. Singapore is a country with little corruption and their judicial system is considered fair. This is of course not practical for a small projects.
  • Deposits source code or money with an independent auditor, lawyer or accountant. The independent party releases the source code or money once the obligations have been fulfilled. This is also known as escrow.

The issue: Third party components Make sure that you get a list of all the third party components used in your software. Software applications are usually made out of several third-party components in addition to the software written by the developers. It is important that you know exactly which third-party components are used in your software.

You may ask why don’t you just continue using the components that comes with the application, who really care? The short answer is that you may not have the right to do so. Some third party components are licensed in such a way that software developers purchase socalled developer licens allowing them to royalty-free distribute the  components as part of the application they develop but the customers, that would be you, are not allowed to use the components for development purpose.

The reason: 1. If you are going to develop the application yourself or if you changes supplier you need to know which component have been used otherwise it can be a puzzle for the new developer to figure out.  2. It may be advantageous for you to purchase the same version of these components, just to make sure that you have them in case you’re going to continue development of the application one day yourself (by the time you develop on the application they may not sell the version used in your application anymore). 3. By knowing which components are used in the application you can make a sound judgment as to the reliability of the component supplier. Remember that the suppliers of these components can go out of business. If they go out of business then you on you own and you may have to modify your application sooner or later.

Note: If possible ask your supplier only to use third-party components from suppliers providing a copy of the component source code. Some third-party component suppliers actually let you buy a copy of the source code for archiving purposes so you are not stranted in case the supplier goes out of business. You may want to do the same thing yourself.

Suggestions:

  • Ask your supplier to provide you with a list of all the third party components they are using. If they cannot do that then make it a part of the agreement that you have to approval all chosen components. (When you do a new project it is not uncommon that the supplier have to source new third-party components specifically for your project)
  • Demand that all scripts (PHP, JavaScript etc.) will not be scrambled.
  • Do not use third party script components that are scrambled.
  • Check that the components used have royalty free distribution, i.e. check that your supplier is allowed to provide you with a copy of the component! If you are using components in your software to which you do not have the necessary licenses then you can get in trouble. You may consider asking your supplier to provide you with a copy of the invoice to ensure that they in fact are allowed to distribute the components they include in your software application. Imagine what will happen if you place an application on download.com from where it gets download 5000 times with that one little problem -you do not have the right to distribute a component or two! Who will be in trouble you or your supplier in northern Bangladesh?

The issue: Scramble scripting languages Get a guarantee from the supplier that they do not scramble any scripts. If your project is developed using PHP then you will automatically have access to the source code because PHP is a scripting language which does not get compiled. Some suppliers may scramble the PHP Code making it virtually impossible (or very difficult) to descramble. Now while you do have a copy of the source code you cannot use it because it is scrambled. The following is a list of some scripting tools /languages:

  • PHP
  • JavaScript
  • ASP (old scripting language, but still in use)
  • VBScript (old scripting language, but still in use)
  • Perl

Note: Your application may use a third-party component i.e. a Java script. Java script may well be scrambled.

The reason: If the source has been scrambled it is virtually impossible to make any changes. Some supplies may use this as a way to keep you as a customer (although be it an unhappy customer).

Suggestions:

  • Write into the contract that no scripting language is allowed to be scrambled.
  • Check your source code when you receive from the supplier, check every single PHP file, Java script file etc. If you do not know how, then pay someone to do it for you.

This concludes part one of this blog. The next blog will be about resolving differences, diplomacy and how to get along when problem arises.

This blog was written by Peter Skouhus. Peter Skouhus is president of 1902 Software Development Corporation, an IT outsourcing company based in Manila, the Philippines.

You can read more about 1902 at http://www.1902software.com in English.

You can read more about 1902 at http://www.1902software.dk in Danish.