Licensing Commercial Source Code? 52
toughguy asks: "I'm the principal in a software startup that develops web apps for a relatively small market. We typically run our software for our customers in hosted environment (kinda like SalesForce.com). We've got some large potential customers who are more sophisticated and would run our application in-house. They'd also like to be able to do more customization using their internal development staff. This customization would require us to give them our source code. This, frankly, gives me the willies. The source code for our application represents millions of dollars of invested time and energy. At this point, we're not interested in open-sourcing the whole thing. I'm interested in knowing how other people have handled similar situations. What protections did you have in place? A good lawyer is a must. A good contract with the customer that makes it clear what they can and can't do with the code. How have you handled similar situations?"
"From a technological stand-point we'd considering watermarking the code in some form for each customer, but this has problems in that if the customer makes significant changes then the watermark may be illegible. We're also considering some sort of Encrypted key scheme that would tie the software to a particular server or something like that. I'd be interested in knowing what other protections you may have used in the past.
If you've been in a similar situation in the past can you share your story with how things worked out. Horror stories are appreciated as well as the 'happily-ever-after' types."
If you've been in a similar situation in the past can you share your story with how things worked out. Horror stories are appreciated as well as the 'happily-ever-after' types."
Plugin Architecture (Score:5, Interesting)
Instead, how about extending your architecture to allow for a plugin & theming framework? Graphical modifications are handled through a theming engine, workflow/process changes are handled through plugins and configuration files.
I understand that this means (potentially) much cost, but it is (potentially) less cost than recovering from a code leak. Think of this "boxed" version as a *new* COTS product for you, as you will be moving from service revenue to product revenue, and then invest R&D and effort into it as such.
Re:Plugin Architecture (Score:2, Funny)
Too true, too true. But how could you forget the obligatory link [thedailywtf.com]?
Re:This is sooo naive (Score:1)
package. I'm waiting
Who would want to steal the source code to the proprietary system that the Metropolis public library system uses?
Windows source code and the HL2 source code are two relatively recent examples of code theft & leakage.
LK
Re:This is sooo naive (Score:1)
LK
Re:Plugin Architecture (Score:2)
Escrow (Score:5, Interesting)
This is quite feasible (Score:5, Informative)
Actually, it does not. You see a good watermark scheme relies extensively on error correcting codes; that is, if they mangle one of your bits you've got enough redundancy to reconstruct your watermark. You don't actually need to hide that many bits in the source to get this watermark in. You should at most require 20 bits; this would give you around a million watermarks. This should give you plenty of scope to hide your watermark.
Compilers ignore whitespace which means you should focus on introducing changes in to the white space. It's also a good idea to change some of the program code aswell. One of the top of the head that might be useful is to expand the ternary operators out in to if statements.
Unfortuantely, all the methods that come to mind seem to depend on the secrecy of the stego method which is bad design. There is probably a way to do this is secure even when the stego algorithm is known. I'd go and hunt through the literature.
Combined with a decent license, this stego can help you protect your copyright.
Simon
Re:This is quite feasible (Score:2)
So, uhh, out of curiosity, what happens when a malicious client who knows something's up does something like, say, strip out all the whitespace, and then runs things through a whitespace prettifier?
This is computationally impossible, full stop (Score:3, Insightful)
I'm rather skeptical. Suppose a security company says that they've got a program which will guard your source code. The security company says "Mangle it however much you want, we can still extract our watermark!". This means that two functionally equivalent pieces of code always have the same watermark, no matter how you define "functionally equivalent".
Horsepuckey. Lets define functionally equivalent in a braindead
Re:This is quite feasible (Score:2)
Hmm - not sure about that.
If somebody knows the algo, couldn't they just re-stego the code with a different key? Now instead of all the ternary operators spelling MICROSOFT it would spell BORLAND. Or, if you know the algo you could read the current watermark, and then mangle the code until it is no longer readable.
All they really need to do is just run the code though a polymorphic
Re:This is quite feasible (Score:1)
Just to be real picky, compilers for some language ignore whitespace. Fortran 77 (which is what the code I'm taking a 5 minute break from working on right now is written in) has some pretty strict rules about whitespace. Python too.
Talk to Larry McVoy (Score:3, Informative)
Bitkeeper.com
He's been doing almost exactly that for years.
Re:Talk to Larry McVoy (Score:1)
Just say NO, in their language... (Score:5, Funny)
We told them "No." But we said it in a way that they understood. It sounded something like...
"We custom-built this system over the last 6 years around a centrally-hosted architecture. If you'd like to give us a $500,000.00 down-payment we'll get started on porting this to a stand-alone solution right away, but please realize that you will need to bear all costs of development, we won't guarantee when it will be finished, and once it's done, you'll have to bear all costs of maintenance and upgrades to software and hardware, and you'll probably need to have at least one full-time employee to oversee it the whole time. Oh, and we'll need to work out all sorts of legal paperwork before we'll be able to deliver anything."
"...or you could just continue to use our existing system, and we'll address whatever problems you think would be solved by 'moving it in-house'."
They chose the latter option. The funny thing was, we could never dig out any real reasons why they wanted to move the thing in-house in the first place.
Re:Just say NO, in their language... (Score:3, Insightful)
Re:Just say NO, in their language... (Score:2, Insightful)
That's quite a broad statement. Do you really refuse to use any externally hosted systems to protect all of your data? That rules out using Google for searches. They save your search criteria, you know.
NEWS FLASH: Using an online service != Divulging all your darkest secrets
Re: (Score:2)
Re:Just say NO, in their language... (Score:1)
I agree that searches and CRM systems are not the same. That was pretty obvious. Your sweeping generalization that "stored searches" are not important while "[CRM] data is important" is unsupportable. I've used a CRM before which I wouldn't have cared if all the data suddenly disappeared, or if all the data were printed on t
Re:Just say NO, in their language... (Score:1)
Exactly, that can be a very powerful driver. I write data analysis software for big pharma, and they generally won't even consider any system that requires that even one bit of data leaves their network. I wouldn't either, if I'd just spent hunderds of millions on research generating those bits. We hardly ever sell anything without an NDA. So, good luck trying with a hosted service there...
Many other organisations just don't
Re:Just say NO, in their language... (Score:2)
Protection probably isn't necessary (Score:1)
Trust your customer (Score:4, Insightful)
The reason your customer is buying your product is because they don't want to (or can't) write the entire thing from scratch. I'm pretty sure that they are also in an entirely different field. They don't want to sell your product. They don't want to create a product and steal your source code. They are in the business of doing something different, and they are probably planning on staying in that business.
Overall, I think you are worrying more than it is worth. Just have some legal agreements put together, and if it is compiled code, make them use a precompiled (.o file) licence manager that contacts your server to make sure that they are on the level. Overall however, I wouldn't worry about it, those guys have a business to run over there, their first thought is not to try and steal it and run their business on your work. The company I work for will let anyone have access to the source code of their system. It's still copyright us, and so they can't stop paying the licence fees and continue to use it. Overall, it's been a big boon, because there are a lot of places out there that won't run their important internal data through a hosted datacenter.
Regarding some outside hacker getting access to your source code. It's a worry, but most businesses aren't going to run some random illegal source code that they found on the internet somewhere, they want support, they don't want a huge legal liabilty from running something some IT guy found off of a Warez site. Also, unless you are never planning on updating your software again, by the time it gets out there, you'll probably have the next release all ready to go.
That's my opinion from someone who has given out commercial source code so customers can modify it to suit their needs.
Re:Trust your customer (Score:4, Informative)
Ok, I'll give you $5 to for a copy of your house keys. You can trust me, after all, I'm paying you therefore I'm your customer and you can trust me :)
Most people can be trusted to do the right thing. It's the one or two people who would exploit an opportunity that you have to watch out for. Maybe they want to take his code, make a bunch of modifications, and then somehow claim that because of all their work they don't own anything to the originating company. After all, if you rewrote 90% of the code, there isn't much left that isn' your's (ya right). Watch, there is some lawyer out there just chomping at the bit to fight a case like that.
To the OP, get a damn good IP lawyer. Ask around in the game industry because they license our their graphics engines all the time and have for a while. They would have experience with this.
Re:Trust your customer (Score:2)
Furthermore, before you ship sourcecode, check that all files have a prominent copyricht notice:
(c)
Unauthorised copying and publication prohibited...
Your lawyer should be able to give you some boilerplate text for that too.
Re:Trust your customer (Score:3, Interesting)
Umm, NO.
Many, many companies out there ask for the source code because their long term plan is to do everything "in house" and cut you, the creator of the source code, completely out... It has happened to me twice in the past five years.
In the big picture, in-house development is going to cost alot more than outsource for projects of larger scale. A customer expecting to walk away with the source code probably has designs on finding ways for all their in-house develo
Re:Trust your customer (Score:2)
Re:Trust your customer (Score:3, Interesting)
Technology is important (Score:2)
This will give your code protection, and let your customer expand on what you've done.
But I imagine you havn't written all this in Java, otherwise you wouldn't be asking the question.
For code that isn't written in a interpreted or VM'd language, I'd suggest lawyers and contracts
Wrong category (Score:1, Flamebait)
Re:Wrong category (Score:2)
Re:Wrong category (Score:1)
What Slashdot will provide is a number of solutions to similar problems that they've
Your problem is a legal problem (Score:2)
A good contract? (Score:3, Insightful)
The simple fact is they have no real reason to want your code to get out. If the product is good and gives them an advantage why would they want their competitors to get something for free that they had to pay for? If you have a good contract they will have everything to loose by not securing your code and nothing to gain.
It is not uncommon for large companies to get the source to a program they buy.
Some thoughts (Score:5, Insightful)
First, let's get the slashdot mentality out of the way.
There. That's a little better.
Two Distinctly Different Problems
Your question has an unstated assumption that might be steering you in the wrong direction. You assumed that you have to release your source code. You might not have to do that...
Application Layers
In the theoretical world, a web application has the following components:
Given these layers, what are you willing to open up? The web server is probably already open source or an off-the-shelf purchased product. Same with the back-end storage system. This leaves the presentation layer and the business rules layer. What are your top-tier customers going to do to your application? Change the way it looks, change the way it behaves, or add missing functionality? You need to know the answers to these questions before you move on...
Licensing Models
You can license the whole mess as one big slab of source code, or maybe a bunch of loadable modules and just open source the "glue". If you open source the glue, the customers can make major changes to your application without having the source code... Look at the PDFLib libraries [pdflib.com]. They are very powerful, cross platform, and completely closed source. Can't you do the same thing? Maybe build all of your business rules into a collection of libraries and make them binary only? Then wrap them with a license key or even a hardware dongle if desired. There are several [safenet-inc.com] software [aspack.com] vendors [aladdin.com] that [ionworx.com] do this for a living. Talk to them.
SAAS
If your core codebase is really "all that", why don't you look at a three-tier model? Your customers can host their own web server and database, and pay for a leased line back to your office for the business rules. There are many variations on this theme.
Other Options
You could open-source your code and copyright it so that only you could release software under the current name. Depending on whether your revenue model makes more money out of service or sales, this might actually be a viable option.
You could offer a turn-key "vendor supplied" package consisting of a pre-loaded server and hard-lock your software to that server. Sort of a Google Appliance for your app model. This way you can retain control of the platform and the customer can have your platform on their site.
This is done all the time... (Score:3, Insightful)
In the end you no licensing the entire source code, most of the core functionality should be locked up in
This is how most Helpdesk support software works (from companies such as Peregine, Clarify, Applix, Remedy, etc) you should probably look to do something along those lines. It will however probably require some changes to your code base to enable such functionality.
You need several interlocking agreements (Score:2)
As you said, you need a good IP lawyer.
Don't do that if you can avoid it (Score:1, Informative)
Solution:
1/ Offered them to come on site to look at the code as much as they wanted. They came, but just looked at a tiny bit
2/ Built API in the code, so they could customize it by writing additional DLLs
3/ Put the code in escrow, so they can get it (with the build system) if we had anything
At the end, it always ended up this way. And, retrospectively, point 2/ was a mista
Some suggestions from a geezer geek (Score:5, Insightful)
1. This is primarily a legal matter. Having said that, there are an infinite number of contracts that can be created. Find out what they really want and why, then decide what would make you feel comfortable with giving that to them. This may represent essentially free money for your company.
2. I suggest that you be both paranoid and trusting.
(As a side note: we once had a corporate-wide contract with HP. Five years after signing it, they were licensing manufacturing rights to the machine to a Japanese company. The contract wording was unfortunately vague on this point and could have been read that HP already had the rights to give our code to the other company. We reluctantly said as much, but noted that that had not been our intention. HP decided that that since it was not what we had *intended* when we made the contract with them, then they owed us some more money. The next week a check for twice the original contract amount was hand-delivered to us. Amazing. This happened 17 years ago and it still represents the classiest thing I have ever seen a company do. But you can't count on HP being on the other side of your contracts.)
3. We had a clause in one of our contracts we called the 'Microsoft clause', that gave us significant auditing rights if the other party developed a product or service that was significantly similar to the code being licensed. If they suddenly annouced a TurboCharged Toaster, 6 months after licensing our Competition Toaster, then we had broad rights to examine the code of the competing product.
4. More than likely, their having your code will actually bind them *more* tightly to you. This is especially true if you have a plug-in archetecture and most of their mods are in the plugins. They may also find that they benefit by their people helping to strengthen your product. I don't know your details, but it could happen.
5. Make sure that the contract covers what happens if they are acquired by someone else -- someone you might not have wanted to do business with directly. Say, for example, Microsoft (this *is*
Good Luck,
Peter
They shouldn't need it. (Score:2)
If you didn
key words : startup (Score:1)
Code ownership (Score:1)
On the contrary, it locks them in MORE (Score:1, Insightful)
Rather than deliver in compiled form, they always deliver in source form and work with the customer so they customer can do the compilation themselves.
This has the effect of getting their guys much more familiar and comfortable with your codebase, lets them do all kinds of handy and cool things, and makes them trust you (if your code isn't shit).
So if they are ever to _stop_ using you, they are faced with black-box u
steps (Score:1)
1. find out- why they want the code? what all changes do they want to make?
2. if they do not want to change the core of the product, then look at alternatives: like releasing an API/dlls
3. if they want to change the core of your product, then you need to get a really good lawyer. determine things like who will own the code and the modified code; how much will they pay you (one time/yearly basis); scale of deployment of code; how many copies can they make; can they sell the code their/your code to others;
Use obfuscation to mangle at least core of product (Score:1)
If your code uses C/C++, then use tool similar to Stunnix C/C++ Obfuscator [stunnix.com]; for Perl, JavaScript and VBScript/AS