views:

374

answers:

5

We have a number of AS/Flex components that we've built over time and improved upon. They've been turned into components so they can be reused in different projects and save us time. So you can think of them as part of an in-house framework of sorts.

We're now realizing that it doesn't make sense to release the source code for these components to the various clients as part of the project, because technically this code isn't really owned by the clients.

So my question

  • When a client comes to you, how do you explain to them that you can't give them the full source code for those components. The client doesn't understand the difference, he just expects you to give them all the code for the site that he paid you to do. He doesn't understand that this code has taken you a lot longer to write than what he's paying for his site. But since he doesn't understand, he would get turned off and thinks you're ripping him off or something.

  • How do you handle this situation? What do you tell clients upfront? Do you advertise it on your site from the very beginning? How do you handle their objections so they still hire you?

  • As a side question, how often do you give AS and Flex source code to your clients? In the case when the code doesn't have any in-house components that you reuse in several projects, and in the case when it does have in-house components.

I'd also like to hear from people who've worked at creative agencies since they're most likely have run into that issue already.

+5  A: 

I'm not a business person, but generally these things are specified in the contract. If your contract stipulates that you provide the client with the source code at the end of the project, then at the very least, you should be providing them with swcs of your components so they can recompile the code if necessary. If you don't want to share your code with the client, then that too is something that you'll need to specify up front.

quoo
Yeah, so far we've been going the SWC route, but.. SWCs can be decompiled and looked at.
Bo
The fact they can decompile them doesn't give them the right to do so though. It is ultimately a question of what you were contracted to deliver - if that states source code then you have to provide it, if not (and I think that would be the default) then it's your IP and they don't have the right to it.
Jon Hopkins
BTW, SWFs have a protection mechanism against decompilation (at a part of the Publishing procedure).
M.A. Hanin
+4  A: 

Just explain that you can not provide the source for external libraries that you used on his project to make the bid cheaper for him. He would not expect the source from a 3rd party vendor that you used in his project, just try to explain this is the exact same situation.

Scott Chamberlain
But he does say that the components in question were developed in-house, so therefore the 3rd party argument doesn't count.
tomlog
it does count. The library is from a 3rd party (another project that this client had nothing to do with) and they used a license of that library in this code. A 3rd party does not need to be a entirely different company, just a different project.
Scott Chamberlain
+7  A: 

I'd explain to my client how the world works. I'd use examples, analogies and metaphors.

This isn't a software-development issue, this applies to all products. Some things are sold as black-box, and some things are sold as a clear-box containing black-boxes inside it.

Lets say you wish to buy a house. You pay the engineer and the architect for their work, and you gain the documents they produce. These documents contain information that relies on other pieces of information, which you do not gain. For example, the engineer may use huge steel bars in his plans. The engineer's specifications determine the qualities that each steel bar must have, but they do not specify how the steel bars are created. Buying house plans doesn't buy you the plans for creating the house's building blocks. With softwre it is pretty much the same: you don't get the source code for the .NET framework when you buy a .NET application "with sourcecode included". What you do get is the .NET documentation, specifying how to work with the framework (and not specifying how the framework does what it does).

The amount of examples is actually endless, because - as stated above - this is the way the world works.

Build your own analogies to fit your scenario. Explain to your customer where the infrastructure ends and his owned solution begins.

quoo is right about the need to specify these in the contract. The contract is the legal backbone of the deal. But i'd like to emphasise the fact that pointing at the contract should be a last resort. If you can give your client a reasonable explanation such that lets the client understand why things are the way they are, you won't need to wave the contract (which speficies only the way things are, without the motivation, explanation, etc.).

M.A. Hanin
I like this one: Just because you bought a bottle of Pepsi doesn't mean they're going to give you the recipe.
jonescb
Also very true that the minute you pull the contract out things go downhill fast.
Jon Hopkins
A word of caution: some customers may find explanation of “how world works” a tad patronising. True problem will arise if you attempt explaining your interpretation of the agreement after the fact when the customer might feel entitled to the components source. Making sure that the contract is pre-agreed, clear and well understood by both parties will help avoiding the need for confrontation and any future “pointing at the contract”. Why not give customer the source for some of your generic components, as long as you retain intellectual property rights and this is made clear?
Totophil
If anything, this will likely help to close the deal, because customer won’t be worried about your company ceasing to exist or ditching the support for these components. It's also worth always keeping all paperwork in order.
Totophil
@Totophil, there are many ways to achieve the same goal, you can explain things to your client without patronising. About intellectual property rights: these are very hard to enforce, and by looking at your source code - the client may get a glimpse at your "patents", and translate your intellectual property to his intellectual cash. Ideas are hard to protect when exposed, so hiding them is sometimes the only option. I agree that everything should be made as clear as possible before the agreement is signed.
M.A. Hanin
M.A. Hanin, thanks for responding! Patents are publically available, i.e. there is no need to peek into the code to get a patented idea, and not every country allows software patents though. Patents, trade secrets and copyrights are all different aspects of IP and work differently. Most of software won't be patentable anyway. Whether an IP can be successfully and easily asserted depends on geographical location and the kind of infringement.
Totophil
It takes over 6 years to become a practicing lawyer here in UK, so it’s best just to ask one for advice as applies to specific situation: all that legal training they went through got to be worth something.
Totophil
@Totophil, you are right about Patents and IP, I was just trying to rationalize the concerns for supplying a source code. Also, I agree that consulting a lawyer is mandatory when dealing with IP. +1 for your answer.
M.A. Hanin
+2  A: 

Your contract should make clear that components developed by you are licensed to the client for use as part of the project and only the project(s) you did for them. Of course, you'll need to determine the exact language for yourself and the situation, but if you're repeatedly using these components in your projects, you really ought to have some sort of boilerplate for just this situation.

DaveE
+1 for using the licensing term. That's exactly what our view of these components is.
Bo
We also escrow our source so that folks who are leery of us disappearing have some assurance that they're not completely screwed if we disappear. That's an extra-cost option in contract negotiations.
DaveE
Interesting idea. What do you use to escrow the source?
Bo
DaveE
@DaveE, thanks. Will check tomorrow for an update or whenever you can.
Bo
@Bo - Turns out we use the code escrow service provided by Iron Mountain. ironmountain.com/ipm
DaveE
+3  A: 

Intellectual property issues should be covered upfront as part of the contract. I'm not a lawyer but common practise is to specify:

  • Which components are provided by third parties and refer to their licensing terms
  • Which code will be produced as part of the contract.
  • Whether you license or sell various intellectual property rights.
  • Licensing terms.

Intellectual Property laws` are complex and diverse, they differ from country to country. Depending where you're and where your customer is the licensing terms might need to change. As an example, reverse engineering viewed differently in different jurisdictions.

Apart from third-party components and software bits you don't want to sell, nor give an exclusive license for you'd probably want to be able to exhibit and distribute the works as part of your company portfolio. This latter activity would also need to be covered within the contract.

Having a well written contract prepared up front will save a lot of misunderstanding and unnecessary negotiations. You'd probably need just one template you could use for all your customers. So my advice really is "talk to a lawyer".

Totophil