My effort to explain why giving away your code is not dangerous evoked a lot of response. I think the analogy there partly worked but also fell in the classic analogy trap. An analogy can be used to highlight only certain aspects, but you are using one thing to explain another. So, I think this post can follow up on that, provide some clarifications and maybe highlight some aspects which did not get enough attention.
The biggest mistake I think I did was to use the phrase giving away your code. It was my poor attempt at using some exaggeration, but what I really did mean by that was to open source it. Open source:
- does not mean that you lose ownership of the code. In fact various licenses available ensure that you, the code author, retains the ownership and gets credibility every time it is used.
- open source projects, at least most of them, start to scratch your own itch. You are not writing code to give it away to others, but for your self or your work.
- does not imply that there is no monetary transaction, though that is a popular trend.
- is not about charity, because you still own the code, unless you do not want to.
My attempt was not to make proclamation but to highlight certain things in open source which usually get opposed because of misconception. I know you would be raring to go after me, but please bear with me for some time. What gets paid for is the solution that is built with code. Code is not the solution in itself. It can hardly work as an off-the-shelf solution even for other programmers. Every situation is unique in itself. There are so many other factors that contribute to it – like the process, the people, the business constraints, the competition, that we cannot build a new solution just by borrowing pieces from other solutions. Which means that it is not easy for someone to duplicate your solution by using your code. What code can only do is help someone solve their technical problems.
Am I giving away my value as a programmer by making my code open source? I think my value is in building good solutions, it is not limited to writing good code. By opening it up for others the code evolves faster and gets applied in more scenarios than I alone can do with it. I want to open source my code not because it is not important, but because it is very important. And it can get better and more applicable by sharing.
Now, there might be dangers in open sourcing code that I have not experienced. I can never be old enough to experience everything. But in my cases pros have always weighed more than the cons. But I can say for sure that open source has tremendous benefits, both for the end users and the programmers.