A question came in recently from a prospective customer that basically boiled down to this: "Is Code Collaborator a workgroup or enterprise code review tool?"
The answer is: you can use it either way, so it's both. ("It's a floor wax - it's a dessert topping! It's both! It's new Shimmer!" :-) )
Generally, though, we suggest that customers deploy as few Code Collaborator servers as necessary. The product scales well (some installations have 100s of simultaneous users) and fewer servers means fewer things to install and maintain.
Having a single server also makes it easier to do reporting across your entire organization.
As you add more teams to a server you increase the likelihood that two things will happen:
- Not all teams will want to do code review in the same way. The differences can range from the specific data that are collected to the specific work flow rules that are used.
- Not everyone is allowed to have access to all source code files that have been reviewed. Since Code Collaborator maintains a cache of all files that are reviewed, this becomes a potential security issue.
There are a whole host of features in Code Collaborator designed to help out.
Custom Fields are exactly what their name implies: custom data that you specify at both the review level and the defect level.
Role sets are used to define specific rights (e.g. "can mark defects fixed") and responsibilities (e.g. "must click Finished before a review is considered completed") for each review participant. Each user who is participating in a review is assigned a role for that review. We include a default set of roles with the product, but you can create multiple role sets and use them for different groups in your organization.
Review Templates are used to specify custom fields and a role set. When you create a review, you select the review template that Code Collaborator will use for that review, thereby controlling which custom fields are visible and which participant roles are available. We include a default review template with the product (which works well for many of our customers), so if you never create any additional templates then you won't have to select a template - Code Collaborator will just use the default template.
Groups are used to define subsets of the Code Collaborator users. You can use groups to model your organization's structure (e.g. "Bob works on the GUI team, Sam works on the firmware team") and/or project assignments (e.g. "Bob and Sam work on project XYZ, George works on project 123"). Groups can have sub-groups and each user can belong to more than one group. If you don't like the word "Group" you can specify a different string (e.g. "Project" or "Team" or whatever).
If you enable the Groups feature then each time a user creates a review, they'll have to specify which group to associate with the review (if a user only belongs to one group, then no option is given - that group is used by default).
There are several features for controlling access to the data in a review, but the most important is on the General settings screen in the administrative settings: Restrict Access to Review Content. There are four options.
- Anyone - means just what it says, so essentially no access control
- Group Based - only members of the group that is associated with the review can access its content
- Participants - only the participants in the review can access its content
- Participants and Group Based - to see the content of the review a user must be a participant in that review and a member of the group associated with that review.
So with the features listed above, you can install a single installation and then configure Code Collaborator to meet the needs of multiple development teams, even if they want to collect different data, or enforce different work flow rules. Using the Groups feature makes it easy to report on the reviews created by different teams and if security is an issue the access restrictions solve that problem.
Having said all that, there are situations where this is not enough. If you need a physical barrier, for example on a classified project where a team cannot share any network resources with other parts of the organization, then you'll need a separate Code Collaborator installation. You'll need to assign your licensed seats to the different Code Collaborator installations, but your account manager can help you with that.