What if working as a freelancer needs you to hand out personal copyrighted dlls?
-
In any company I have ever been, if a contractor did a great job but based it upon their own .DLL and refused to give us the source (or worse, tried to charge more money for it when the project was done), the company would refuse to pay the contractor and go out of their way to damage the contractor's reputation (or worse). For all the company knows, you deliberately put some of the work you did for them in your .DLL, and now you are trying to "hold code they paid for hostage". Even if the company trusted you and used your .DLL, that is part of the company's product which they cannot debug. If you are not a vendor of 3rd party components and not selling a complete binaries-only software product, I do not think you can compare yourself to Microsoft or other software vendor. Companies which sell components or turnkey software products have multiple programmers, testing specialists, support staff, a hotline, etc. What happens if you get hit by a truck tomorrow? The company is stuck with a mystery .DLL and a prayer that it will work forever. Yes, the company was foolish for not having you sign a document saying they owned all source code, but as a freelancer, you rely upon a good reputation and the company can seriously damage it with little effort. If I were you, I would: 1. Apologize profusely for the way you have been acting, say you are under stress, have problems at home, whatever it takes. People are used to programmers being...different, they may be understanding. 2. Do whatever it takes to make the customer happy. Do not demand more money. Perhaps make a version of your DLL which only has the parts they need with the source. If you make them happy enough, perhaps they will offer more money or future work, but you will not know if you slam the door on your customer. I am sorry. This may cost you time, but you learned to disclose your plans about using your .DLL earlier. I am sure many customers would be OK with it (especially if it saves them money), as long as you give them a choice. For what it is worth, that's my opinion.
Thank you for your replay Roy. Most of what you say is quite right but I guess along all the replies -it's somewhere there...- the fact that my client did not payed what agreed makes things a bit different. As I said in the beginning this is not a contract, but more of a gentlement's agreement work. The part where I disagree with you totally is where you say "Do whatever it takes to make the customer happy". We are obligated to do what we are payed for and in good faith I always do more. When the client does not pay you what agreed then the agreement fails. It is terrible to act on fear and lose what you have rightfully earned. I do not want to work anymore with that person for that and a lot more reasons. I would only give a portion of the dlls rewritten which would need time and it costs hence I requested a small amount of money for that. I have nothing to apologize from my side. There are allways bad customers who would try to create bad reputation even if all you did was excelent and even if you worked for free...
-
Thank you for your replay Roy. Most of what you say is quite right but I guess along all the replies -it's somewhere there...- the fact that my client did not payed what agreed makes things a bit different. As I said in the beginning this is not a contract, but more of a gentlement's agreement work. The part where I disagree with you totally is where you say "Do whatever it takes to make the customer happy". We are obligated to do what we are payed for and in good faith I always do more. When the client does not pay you what agreed then the agreement fails. It is terrible to act on fear and lose what you have rightfully earned. I do not want to work anymore with that person for that and a lot more reasons. I would only give a portion of the dlls rewritten which would need time and it costs hence I requested a small amount of money for that. I have nothing to apologize from my side. There are allways bad customers who would try to create bad reputation even if all you did was excelent and even if you worked for free...
In my experience, companies which treat people badly get what they deserve. Only the worst employees will work for them and they go out of business. I understand where you are coming from. On two occasions, I refused to work with customers who treated myself or my coworkers badly. Those decisions cost money, but everyone was happier to just have the bad customer gone, so I have no regrets. I think this thread shows you are doing all you can to carefully consider your options, which is good. I think the state of the economy is making me especially reluctant to suggest turning away work. It does not matter who is at fault, if you have to throw empty apologies at a customer to feed your family, then that is what you do. Words cost nothing and some customers just want to hear someone say they are right. You have not been fully paid, but they do not have everything they want either. If you can work out a simple trade to give what they want for a small amount of your time, it might be worth considering. If it is a large amount of your time or you do not trust them to pay you anyway, then you might want to just walk away. I wish you the best.
-
In my experience, companies which treat people badly get what they deserve. Only the worst employees will work for them and they go out of business. I understand where you are coming from. On two occasions, I refused to work with customers who treated myself or my coworkers badly. Those decisions cost money, but everyone was happier to just have the bad customer gone, so I have no regrets. I think this thread shows you are doing all you can to carefully consider your options, which is good. I think the state of the economy is making me especially reluctant to suggest turning away work. It does not matter who is at fault, if you have to throw empty apologies at a customer to feed your family, then that is what you do. Words cost nothing and some customers just want to hear someone say they are right. You have not been fully paid, but they do not have everything they want either. If you can work out a simple trade to give what they want for a small amount of your time, it might be worth considering. If it is a large amount of your time or you do not trust them to pay you anyway, then you might want to just walk away. I wish you the best.
No matter how bad the economy is, it should never be a leverage for the bad employer. And this is the case more and more often nowadays. Like you said, eventhough I am very frustrated and annoyed with all, I created the thread in order to see all opinions, there were some useless, some preocupied and some good as yours, even though I can not persuade my self to agree with you totaly..:) It is a very sad true that sometimes it is needed to just play along for the sake of living. I have too much pride for that to play along this time. Pride costs, I know. I would mostly give away the source along with a compromising letter for the sake of my reputation. I know from experience how awfull it can for future emploers to hear bad things for you "eventhough the coding was excellent", just because you didn't do the clown and did not lower your head in all cases. I do not trust them to work again and being with them for some time I have realized they wont exist for more, unless they become professionals, which I don't see it happen in their lifetime...But I can not forsee the future and that is always a possibility in which our paths may come across again. I think your opinion was quite enlightening and had clean and stable arguments. Add the fact that my wife holds the same opinion...I see myself bending towards it. Thank you for your response.
-
Let's say you are working as a freelancer and along with the executables you hand out, in the end of your cooperation the source is asked by the client. Within the source though lie some dlls of your personal framework and the client insists on you giving it also. My response was to pay extra for all, about the 2/5s of the overall price, as most companies selling components do to hand out the source code. In any way I would not hand out the source to my framework, rather rewrite using only necessary classes and methods. What's your opinion?
Do you really think your "personal code" is all that valuable? If it is, package it and sell it, if not, plaster a public domain license on it, give it to the client and stop worrying about.
-
Do you really think your "personal code" is all that valuable? If it is, package it and sell it, if not, plaster a public domain license on it, give it to the client and stop worrying about.
...
-
I see that you're just trying to justify your actions... when you use mscorelib.dll, you know up-front that you don't have access to the source. Did you tell them up-front? That's what I explained earlier to you.
Albert Holguin wrote:
I see that you're just trying to justify your actions... when you use mscorelib.dll, you know up-front that you don't have access to the source. Did you tell them up-front? That's what I explained earlier to you.
People compile using third-party libraries all the time. If you're using an open-source compiler - i.e. GCC - and runtime library then fine. But are you suggesting that if you're using Visual Studio to compile something, you have to mention up-front in your contract that you can't provide the source code for the individual Microsoft runtime DLLs? What if you write a web application for a web server which was linked against a DLL whose source you don't have access to? How can you know, before you even start the project, exactly what parts of the execution hierarchy you will and will not have the source code for? Or do you write some kind of generic catch-all clause in your contract? Or perhaps you'd liaise with the stakeholders and say "we're going to use IIS to host the program. We don't have the source code for IIS"? I don't know. It seems like one of those sliding scale things. If the library in question holds some essential business logic central to the application, then perhaps it should be discussed earlier, at least if there is a contract and it asserts that the source code is required. On the other hand, if the library is totally incidental to and separable from the program logic - like the Qt library or RICHEDxx.DLL, then that's a different story. Recently I was bitten by the same problem - working for several months with no contract; just a useless verbal agreement. It didn't work out very well for either of us...
-
Albert Holguin wrote:
I see that you're just trying to justify your actions... when you use mscorelib.dll, you know up-front that you don't have access to the source. Did you tell them up-front? That's what I explained earlier to you.
People compile using third-party libraries all the time. If you're using an open-source compiler - i.e. GCC - and runtime library then fine. But are you suggesting that if you're using Visual Studio to compile something, you have to mention up-front in your contract that you can't provide the source code for the individual Microsoft runtime DLLs? What if you write a web application for a web server which was linked against a DLL whose source you don't have access to? How can you know, before you even start the project, exactly what parts of the execution hierarchy you will and will not have the source code for? Or do you write some kind of generic catch-all clause in your contract? Or perhaps you'd liaise with the stakeholders and say "we're going to use IIS to host the program. We don't have the source code for IIS"? I don't know. It seems like one of those sliding scale things. If the library in question holds some essential business logic central to the application, then perhaps it should be discussed earlier, at least if there is a contract and it asserts that the source code is required. On the other hand, if the library is totally incidental to and separable from the program logic - like the Qt library or RICHEDxx.DLL, then that's a different story. Recently I was bitten by the same problem - working for several months with no contract; just a useless verbal agreement. It didn't work out very well for either of us...
destynova wrote:
But are you suggesting that if you're using Visual Studio to compile something, you have to mention up-front in your contract that you can't provide the source code for the individual Microsoft runtime DLLs?
The runtime DLLs are provided with Windows (or by Microsoft under their terms), they're not something you have to provide.
destynova wrote:
How can you know, before you even start the project
That's your job as a professional developer. If you can't tell that to some accuracy up-front, you shouldn't sell yourself as an experienced developer. What I'm saying is, it doesn't sound like the OP was up-front with their use of a personal library with their customer. Whenever you use someone else's code in your project, you always know the terms up-front. To turn around after all is said and done and say... "no, I can't give you that code, it's part of my personal library", is just dishonest. As a contracting developer, you shouldn't use code you're not willing to turn over.
-
Do you really think your "personal code" is all that valuable? If it is, package it and sell it, if not, plaster a public domain license on it, give it to the client and stop worrying about.
:laugh: Although it might sound a bit brash... this statement is actually pretty accurate. It's not the code that's valuable, it's whether you know what to do with it to make something useful.
-
destynova wrote:
But are you suggesting that if you're using Visual Studio to compile something, you have to mention up-front in your contract that you can't provide the source code for the individual Microsoft runtime DLLs?
The runtime DLLs are provided with Windows (or by Microsoft under their terms), they're not something you have to provide.
destynova wrote:
How can you know, before you even start the project
That's your job as a professional developer. If you can't tell that to some accuracy up-front, you shouldn't sell yourself as an experienced developer. What I'm saying is, it doesn't sound like the OP was up-front with their use of a personal library with their customer. Whenever you use someone else's code in your project, you always know the terms up-front. To turn around after all is said and done and say... "no, I can't give you that code, it's part of my personal library", is just dishonest. As a contracting developer, you shouldn't use code you're not willing to turn over.
Albert Holguin wrote:
The runtime DLLs are provided with Windows (or by Microsoft under their terms), they're not something you have to provide.
Yes, but they don't provide the source code. But as I said, it depends on how central the library is to the task your program solves. You could argue that the runtime libraries providing GUI/networking/etc functionality are to some extent irrelevant and replaceable. On the other hand, of course, the entire business logic of the program could be encapsulated in the library, and the "main" program might just be a wrapper which calls a single function in the library DLL - in which case that library's source code would be entirely necessary to do any maintenance. So it depends on what the OP's library did, and how central that was to the program in general. Without knowing that, it seems presumptious to make assumptions about whether it was right or wrong to withhold the source code (if the other party had fulfilled their end regarding payment, of course).
-
Albert Holguin wrote:
The runtime DLLs are provided with Windows (or by Microsoft under their terms), they're not something you have to provide.
Yes, but they don't provide the source code. But as I said, it depends on how central the library is to the task your program solves. You could argue that the runtime libraries providing GUI/networking/etc functionality are to some extent irrelevant and replaceable. On the other hand, of course, the entire business logic of the program could be encapsulated in the library, and the "main" program might just be a wrapper which calls a single function in the library DLL - in which case that library's source code would be entirely necessary to do any maintenance. So it depends on what the OP's library did, and how central that was to the program in general. Without knowing that, it seems presumptious to make assumptions about whether it was right or wrong to withhold the source code (if the other party had fulfilled their end regarding payment, of course).
destynova wrote:
Yes, but they don't provide the source code.
Not for the windows DLLs... but for a lot of open source libraries, you do get the source code. Heck, even for MFC you get the source (even if it might be cryptic). Again, comparing yourself to a large company is really not a fair comparison at all, specially to a customer who paid for development. In any case, as a project manager (and engineer/developer), I could tell you that wouldn't fly in my company. Having a contractor say he used his own library and can't provide the code for certain sections would be unacceptable.