This paragraph describes a set of rules that allow multiple implementors to work in tight coordination on a fast moving set of packages. We divide these rules into two classes: those everybody must follow, in order to not do serious damage, and those that can be followed less rigorously and at a more leisurely pace, because they are only intended to help convergence. This "safety" section covers the rules that must be followed.
The primary danger we protect against is losing source information. The source information of package Foo are the source files in it, and what Foo.DF says about those source files. We achieve this protection by locking. The locks and the dependency graph are on the physical whiteboard outside Rick's office. The locking notation is:
intent-to-write lock: red initials by Foo
Observe the following rules:
(I) If you are going to change the source information of Foo, you must:
1 - Acquire an intent-to-write lock on Foo. Go to the whiteboard outside Rick's office. You can take this lock iff there are no red initials by Foo. To take it, write your initials next to Foo in red.
2 - BringOver Foo. Forgetting this step is the biggest cause of grief known to Man. It has been the cause for the few cases of release problems observed in the last year.
3 - Do your editing.
4 - Check that your package MakeDoes.
5 - Check that the "Global Lock" is free, to prevent other people to SModel your package during that time.
6 - SModel & Verify Foo
7 - You may now release your lock on Foo.
(II) If you are going to SModel Foo, but not change source information (e.g., recompile only), you must:
1 - BringOver Foo. Again, don't forget this part.
2 - work on Foo.
4 - SModel & Verify Foo
(III) If you BringOver Foo, but will not SModel Foo (at least not untill after a later BringOver (of all of) Foo), you do not have to worry about locking.
(IV) It is always safe and permitted to do a Delete Keep 2 of anything covered by the whiteboard.