Locking vs Lockless Version Management Models


The problem to avoid: changes by users overwriting each other

The problem to avoid: changes from users overwriting each other

Lock-modify-unlock versioning model:

Lock-Modify-Unlock Versioning Model

Disadvantages of Lock-Modify-Unlock versioning model:

  • Locking may cause administrative problems. Sometimes Harry will lock a file and then forget about it. Meanwhile, because Sally is still waiting to edit the file, her hands are tied. And then Harry goes on vacation. Now Sally has to get an administrator to release Harry’s lock. The situation ends up causing a lot of unnecessary delay and wasted time.
  • Locking may cause unnecessary serialization. What if Harry is editing the beginning of a text file, and Sally simply wants to edit the end of the same file? These changes don’t overlap at all. They could easily edit the file simultaneously, and no great harm would come, assuming the changes were properly merged together. There’s no need for them to take turns in this situation.
  • Locking may create a false sense of security. Suppose Harry locks and edits file A, while Sally simultaneously locks and edits file B. But what if A and B depend on one another, and the changes made to each are semantically incompatible? Suddenly A and B don’t work together anymore. The locking system was powerless to prevent the problem—yet it somehow provided a false sense of security. It’s easy for Harry and Sally to imagine that by locking files, each is beginning a safe, insulated task, and thus not bother discussing their incompatible changes early on. Locking often becomes a substitute for real communication.

Copy-Modify-Merge Versioning Model:

Copy-Modify-Merge Versioning Model (1 of 2)

Copy-Modify-Merge Versioning Model (2 of 2)

Source: http://svnbook.red-bean.com/en/1.4/svn.basic.vsn-models.html

People Technique: Take the judge role to resolve conflict / dispute


It is common in workplace that we may need to resolve conflicts among colleagues or team members.  Yet, a commonly hit issue is the possible prejudice by the conflict “resolver” that “blinds” the judgment.  As a result, a biased or appear-to-be-biased image will be projected.  That does not help, or in fact, worsens the result of resolving the conflict.

A side effect may even be the “resolver” getting into the loop and becoming one of the conflicting parties.  This not only makes the “resolver” biased.  Sometimes, it gets the “resolver” emotional.  With that, we lose the chance to calm everyone down and face the actual problems.  Instead, everyone may be “stirred” and becomes even more emotional.

In fact, the embarrassed situation above could largely be avoided if the “resolver” takes the judge role.  By “judge”, it means:

  1. One has to be very careful to listen to each of the conflicting parties.  Being the listener, one should be calm and patient.  Interruption or questioning of arguments or view points should be held until all parties finish.
  2. One has to be objective and unbiased.  The judge must bear such image in order to finish the conflict resolution in absolutely superior position.  Think about what a court judge should behave and the image projected.
  3. One has to identify possible misunderstandings, e.g. bad use of wordings, ambiguous presentations, accidentally omitted ideas…  The judge should also expressly and clearly tell the conflicting parties what he/she identifies as the misunderstandings.  People often calms down if they found they misunderstand something and may wrongly blame others.
  4. One has to really judge what is done correctly and what is not among the parties.  In normal situation, conflicts or disputes result from problems on both parties. (I assume 2 parties here for simplicity.)  People quarrel because every of them thinks the other party is doing something bad or wrong.  So, the judge is not difficult to point out the wrong doings of the parties.  For sure, the reasoning has to be sound and based on facts, pre-defined rules or well accepted customs.
  5. One has to be positive to provide “ways” for the conflicting parties to relieve.  Usually, people relieve if they admit their wrong doings and could find ways to improve.  The judge could play the role to suggest directions for improvements.