On Fri, Jan 6, 2017 at 8:38 PM Jacek Furmankiewicz <jace...@gmail.com>
wrote:

>
> We've had really difficult individuals who refused to be bothered with
> going through proper license review.
> Some of them don't work here any more.
>
>
This is a social problem with the people you've hired, or with how they
have been instructed. You can't block copy/paste. You can't block blind
injection of random code from {stuck,stack} {overfail,overflow}.  You can't
stop people from memorizing code at home and then adding said code to your
project. In order to handle licensing issues around code, your people must
be on-board and understand the problem.

Usually, the reason you end up in a bad situation is due to complex
factors, so you can't place the blame or the fault on any single
individual, or on the management. Rather, you have to understand that more
than a single factor often leads to sick work environments where these
things happen. Sometimes, the guy who inserts illegal code into the code
base does it because he is under pressure to deliver. Which means that the
fault is partially him, but also partially management. In that case, firing
the guy will not put out the tire fire you have. Another poor individual
will just takes the same seat and ends in the same situation months down
the line.

If you can't survive a rejection of an audit, you must have procedures
internally to remove the risk of rejection. These are usually a combination
of technical solutions (code search) and human solutions (manual review).
There is no way you can move the risk to 0%, but you can get it close.
Also, consider social solutions (company culture).

My suggestion is to run an internal vendoring tree from which you are
allowed to pull software packages. And then make it a process to add
something to the tree. This will slow down development, short term, but I
have a hunch you will gain from such a procedure long-term. In addition to
solving the audit problem it also solves a number of other problems:

* You can reproduce builds
* You make updating a package a deliberate decision
* You guard against people who are not able to manage a stable API for
backwards compatibility
* You can run internal patches on software if the maintainer of the
software on the outside are not willing to handle the problem you have.

The price you pay are:

* You have to watch for security updates more
* If you diverge too much from the external project, you can't merge their
strain of changes into your world easily
* You must spend time to keep things up-to-date

In your case, I think the benefits outweigh the cost, simply because an
audit is always lurking in the back.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to