This is a classic issue, which I’ve usually heard phrased as the reprimand “you’re looking for a technical solution to a social problem”. I’ve sometimes used it with another of my favorite maxims: “just because you can doesn’t mean you should” — by the way, I’m mildly surprised that no one has said that about this blog.
Just moments prior I’d seen a TV news spot of an actress crouching between two cars in a parking garage while being surrounded by paparazzi who were crawling over the cars like squirming maggots trying to get close ups of her distress — I guess because she was an actress, “she was asking for it”. I’ve often thought how nice it would be to have a small EMP device or intense infrared source that would disable or blind any cameras in a 25-foot radius. So much for technical solutions.
We’re moving more and more to technical solutions because they’re “easy” (not really) and to avoid being held responsible for decisions (which nowadays may not be irrational, given our litigious society). What that leads to, however, is our sense of social responsibility being replaced with the attitude that anything not explicitly banned and technologically barricaded is perfectly all right and beyond moral judgement. Hmmph. Crotchety mumble. Get off my lawn.
A little more context, if you didn’t follow the links:
In the invisible [costs] category, consider the culture you’re creating. Most of the time, while certain users shouldn’t be committing changes to certain parts of the repository, that social contract doesn’t need to be technologically enforced. Teams can sometimes spontaneously collaborate with each other; someone may want to help someone else out by committing to an area she doesn’t normally work on. By preventing this sort of thing at the server level, you’re setting up barriers to unexpected collaboration. You’re also creating a bunch of rules that need to be maintained as projects develop, new users are added, and so on. It’s a bunch of extra work to maintain.
Remember that this is a version control system! Even if somebody accidentally commits a change to something she shouldn’t, it’s easy to undo the change. And if a user commits to the wrong place with deliberate malice, it’s a social problem anyway, and that the problem needs to be dealt with outside Subversion.