|Do you know where your variables are?|
I have a client with tons of Perl code, some solving issues that are not available from CPAN. The developers are aware of CPAN, some of them have even started to use modules but they - as in my experience most developers in companies - hardly use the services the community provides.
I would like to convince management that it is for their advantage to release some of this code to CPAN. I've written this to help me think over my reasons before talking to them and to get your opinion on the issue.
In addition to the code that is not available from CPAN they also have plenty of code that basically provides the same functionality as some of the CPAN modules but were written internally. Some were written even before the relevant modules were available on CPAN, others were written despite the fact that there were similar modules available but either bacouse of some technical problem or because of the NIH syndrom, the CPAN modules were not adopted.
So now, because they have not released those modules to CPAN when
they were new, the company has to maintain a set of internal modules
spending lots of time and money. Most of this work could have been
outsourced to the community by getting some other people involved
in the development or passing the maintainership to some interested people.
Releasing code takes time
I think that many parts of the extra work should be done anyway
if we want to maintain our code with high standards. (Easy packaging,
unit tests, documentation. I am directing them in that direction anyway.)
The support issues should be either rejected and users should be told
to implement their extra requirements as subclasses (but then of course
we need to implement our modules with clean separation and easy subclassing
in our mind) or should be accepted as patches or just seen as
opportunities to get free QA on our code.
Releasing trade secrets
I think the internal code reviews of management should be good enough to avoid such situatuion. This is easier when we are talking about source code that is in the QA department but can be done even if the code is part of the product or service.
Helping the competition
While among other companies, competitiors can also use this code
most of the users will probably companies that are not competitors
So that's it for now, I would be glad to read your opinion on the issue.
UpdateInterestingly above I was focusing on defending the reasons to release code instead of pointing out the benefits. So let me do that now, partially based on some of the existing replys:
What can a company gain by releasing some of their code to CPAN?
In reply to How to convince a client to release Perl code to CPAN? by szabgab