views:

92

answers:

2

Sometimes you get a real productivity boost from using 3rd party components and/or libraries, where instead of reinventing the wheel you can just get it done quickly and more cost-efficiently.

But what about when you're working on a project for your customer (as in freelancing or when running a custom development software shop)? I mean specifically commercial components that make you purchase a license to use them in your applications. I don't mean licenses like SQL Server. I mean stuff like Ext, ComponentArt, PDF libraries, etc - ones that help you get a feature implemented and/or provide user interface enhacements.

Furthermore, let's focus on packages which allow you to deploy redistributables without a separate license and your client doesn't have to pay for them. In other words - development licenses are not free, but runtime licenses are. However, if the client will ever want to modify the application they will have a few choices:

a) hire you again

b) hire someone else who has a license

c) buy a license themselves

Because of the whole licensing issue, I find it difficult to use any commercial 3rd party components in applications other than those created for myself. How should I go about it?

Do I add the library/component suite cost to the cost of the project? What if the project is small but still could benefit from the components? The license might cost 50% of the whole application...

Do I just tell them of the implications (so far I chose this route) and make them make a decision? They might not be tech savvy, may not understand how that works exactly.

Do I just use the components without telling the client about them? That doesn't sound very ethical to me.

A: 

Usually when you have a license you can put the redistributables in the application and your client doesn't have to pay for them. However, if they will ever want to modify the application they will have a few choices:

Depends on the type of the component. Some have separate licenses for development and production, in which case the customer has to pay in order to be able to use it. And these kind of licenses are not cheap.

Igor Brejc
I read a horror story about what turned into a "pay us this much to develop, and then we'll negotiate the cost of the production license" idea. In a case like this, make sure the production license cost is down in writing before you start development.
David Thornley
A: 

Obviously, you document whatever restrictions there may be on later modifications.

However, if you can't explain the issues understandably to your client, you'll have to make the decision on your own. It's part of being a professional - you understand the issues better than the client does, and so you can recommend what will serve the client best. (You should also have an idea as to how much later modification the site will need, and if it can be done without touching the stuff with the license.)

In most cases, the client is going to want to get the desired functionality with minimum cost, and so that should be your baseline case. You can offer higher-priced options if you like, but you need to put it in some sort of business terms. If nothing else, warn them that the lower-cost option may cause some problems (of no more than the cost of the license) if somebody else has to change it later.

You could use an analogy of having a special tool for car repairs or the like.

David Thornley