[Thu Jan 27 17:51:59 PST 2000]

Problem: suppose there are N+1 groups which want to share a project and do joint work on the project. The Nth+1 group is the open source community but the other N groups are corporations which may wish to cooperate but hold back their details, such as who is doing what.

Solution for a single corporation + the open source community: Construct a two sided firewall repository. The repository has a public and private side, somewhat similar to a public and a private net. What we are going to do is “masquerade” all the private users as anonymous users.

The name remapping is an automatically generated table of names which
maps *@*.domain.com to user1@domain.com, user2@domain.com, etc.
Like so:
----------------------------
  		{ Internal BitKeeper Cloud }
{ multiple repositories,   }
{ all with real names,     }
{ for both internal people }
{ and external people      }
----------------------------
            ||
	    ||
----------------------------
{ Firewall BK Repository   }
{ all internal names are   }
{ externally visible as    }
{ user1@host1, user2@host2 }
{ external names unchanged }
----------------------------
	    ||
	    ||
----------------------------
{ External BitKeeper Cloud }
{ multiple repositories,   }
{ all with real names for  }
{ external people, but fake}
{ names for internal people}
----------------------------
In addition to name remapping, the firewall could be configured to put
the external changes all in an external LOD, and the internal changes
in an internal LOD.
The firewall could also filter the comments for inappropriate messages
such as a string of keywords (obscenities, trade secrets, etc.).

Solution for multiple corporations + the open source community: It’s more or less the same as the other one, except each company has a firewall repository through which changes move.

Effects: We preserve full BitKeeper semantics, support for LOD’s, tracking of external changes, etc. BitKeeper doesn’t care about the comments or user names as long as they are consistently remapped.

We preserve anonymity for the internal developers.  This doesn't mean
that there is no contact between the internal and external developers,
it means that the contact is carried out at the discretion of the
internal corporation.  The corporation can appoint a liaison who is the
contact person for the project.  If an external person has issues, they
can raise them with the liaison and the liaison is able to know from
the history who the real internal person is, and can either find out
what is needed or put the two people in direct contact.
An example of what this prevents is headhunters having access to
your internal list of developers.