<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
<style type="text/css">
/* <![CDATA[ */ @import "/branding/css/tigris.css"; /* ]]> */
</style>
  <script src="/branding/scripts/tigris.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="/branding/css/print.css" media="print" />

  <title>Add project members and assigning roles</title>
 </head>

 <body class="docs" onload="self.focus()">
  <div class="docs" id="projectownermembers">
   <h2>Add project members and assigning roles</h2>

   <div id="toc">
    <ul>
     <li><strong><a href="/nonav/servlets/HelpTOC">Help index</a></strong></li>
    </ul>

    <ul>
      <li> <a href="/nonav/scdocs/ProjectOwnerAdmin.html">Project owner administration</a> 
        <ul>
          <li><a href="/nonav/scdocs/ProjectOwnerEdit.html">Editing and maintaining 
            the Project Home page</a></li>
          <li><a href="/nonav/scdocs/ProjectOwnerNews.html">Managing project site 
            announcements</a></li>
          <li>Adding project members and approving roles 
             <ul>
              <li><a href="#viewingmembers">Viewing project members</a></li>
              <li><a href="#invitingmembers">Inviting new members</a></li>
              <li><a href="#addingmembers">Adding new members</a></li>
              <li><a href="#memberroles">Member roles</a></li>
              <li><a href="#addroles">Adding new roles</a></li>
              <li><a href="#memberrequests">Member requests</a></li>
              <li><a href="#membertasks">Member issues and tasks</a></li>
            </ul>
          </li>
          <li><a href="/nonav/scdocs/ProjectOwnerMailingLists.html">Managing project 
            mailing lists</a></li>
          <li><a href="/nonav/scdocs/ProjectOwnerDocuments.html">Managing project 
            documentation</a></li>
          <li><a href="/nonav/scdocs/ProjectOwnerSource.html">Managing project source 
            code</a></li>
          <li><a href="/nonav/scdocs/ProjectOwnerIssues.html">Tracking and managing 
            project issues</a></li>
          <li><a href="/nonav/scdocs/ProjectOwnerCustomStyle.html">Managing custom 
            HTML styling</a></li>
        </ul>
      </li>
    </ul>
   </div>
   <h3>Project members and their roles</h3>

   <p>A project can succeed or fail depending on the character of the community formed by its members. This is true regardless if the project is open- or closed-source. It is the members who contribute their effort and time (for whatever compensation) to realize the project's ideas and goals. Accordingly, because the project members are so important to the eventual success of the project, it is important that the project owner or whomever she designates to be Project Admin, clearly establish the rules and guidelines determining member participation, including their roles, and articulate what they can expect from the project.</p>

   <h3><a id="viewingmembers" name="viewingmembers">Viewing project members</a></h3>

   <p>Project members are often added at the time the project is created. However, you can invite and add new members at any time by going to your Project Home page and clicking on the <i>Membership</i> link. The following discussion first goes through the procedure of inviting someone to be a member of your project, then looks at how to add a new member.</p>

   <h3><a id="invitingmembers" name="invitingmembers">Inviting new members</a></h3>

   <p>Once in the "Membership" page, clicking on the "Invite New Members" link allows you to send an invitation to a prospective member. Click on the link, and a new page opens with fields allowing you to specify the e-mail address or addresses of the persons you wish to invite, and an invitation message. There are two parts to this message. The first, which you compose here, should be in plain text only (HTML is <i>not</i> supported), and should be a greeting and welcoming message. You can, depending on your needs, stipulate here what role you would prefer the invitee to take. There is time later, both for the invitee and for you, as project owner, to change the member's role.</p>

   <p>The second part of the invitation message comprises the project description which you composed at the time the project was created. If you added several e-mail addresses in the "People to Invite" field, each will receive the same message, so the welcoming message should be inclusive enough to accommodate the interests of the several people you've invited.</p>

   <p>You can invite anyone to be a member of your project. They need not, at the time of invitation, already be registered users. However, those you invite who are not registered users are prompted to register on the site as part of viewing your project information.</p>

   <h3><a id="addingmembers" name="addingmembers">Adding new members</a></h3>

   <p>Users you have approved for project membership (whether by your invitation or their request), are listed by user name on the <b>Project Membership</b> page along with boxes indicating their role or roles (project members may hold more than one role). As project owner, you can change those roles by checking the box by the role name and then clicking on "Revoke Checked Roles" button.</p>

   <p>If you wish to add a registered user (without inviting her beforehand), click on the "Add New Member" button. This takes you to the <b>Add Members</b> page, where all registered user groups and users are listed with empty boxes to the left of their usernames. User groups also include a brief description of the group; individual registered users are listed by both user name and real name. Each user name links to the user's profile, so you can learn something about that user before adding the user by checking the "Add" box.</p>

   <p>You can add as many users to your project as you wish. Because every member in a project must have a role, when you add someone to your project you must, at the same time, specify her role. Accordingly, on the <b>Add Members</b> page there is a box listing all available roles. Once you have selected the user(s) you want and the appropriate role(s), click on the <b><i>Grant Roles</i></b> button. Those users will be added to your project with the roles you have stipulated. For more information about member roles, see the help information on <a href="/nonav/docs/ProjectRoles.html">project roles</a>.</p>

   <h3><a id="memberroles" name="memberroles">Member roles</a></h3>

   <p>Project member roles are specified when the member is invited, or added by the Project owner. If you wish to revoke a role, check the box adjacent to the stipulated role and then "Revoke Member Roles." As project owner, you can change the role given to a member by clicking on the <b>Add new member/role</b> link on the <strong>Membership</strong> page. This link takes you to the <b>Add new member/role</b> page.</p>
   
   To grant a new role to project members, select the member you wish to grant the new role by selecting the "Add" check box next to his or her user name. You can select multiple users to grant role, or use the "Mass add" text box to enter several user names at once. Next, select the roles you wish to grant from the <b>Grant these roles to all designated users</b> box and click the <b>Grant roles</b> button. If you wish to return to the <b>Membership</b> page immediately after granting roles, select the <b>Done granting roles</b> check box before clicking <b>Grant roles</b>.

   <p>If no existing role fits the needs of your project, as the Project Owner you can create roles specific to your project. To learn how to create project roles see <a href="#addroles">Adding project roles</a></p>

   <p>You can also change your own role in the project. First, click on the underlined "Request New Project Role" link. Doing so takes you to the "Membership Request" page, where you can see your current role and choose a new role. After you have chosen, click "Submit Request."</p>

   <h3><a id="addroles" name="addroles">Adding project roles</a></h3>

   <p>You have the option to create custom roles and assign the appropriate permissions to them to meet the needs of your project. You should take some time to plan the scope of any new role you create before beginning the creation process. Project roles enable associated user actions within your project only.</p>

   <ol>
    <li>Enter the project for which you wish to add new roles and click the <b>Edit project</b> link.</li>

    <li>Click the <b>Edit project-specific roles</b> link to access the <b>Roles</b> page.</li>

    <li>Click the <b>Add new role</b> link.</li>

    <li>Enter a name and a description of the role. The role name can be up to 99 characters in length and cannot include a period (.).</li>

    <li>Select the level of functionality required for this role. Each functional item controls the level of access for the role. The following options can be selected by click on the check box next to the item: 

     <ul>
      <li><b>Requestable</b>: makes the role requestable by users on the site. If this item is not selected, the role must be assigned by an administrator or a project owner.</li>
      
      <li><b>Ownership role</b>: grants users with this role "ownership" of functions within the project. Owners receive administrative email pertaining to the function of which they have ownership.</li>
      
      
      <li><b>Grant role on subproject creation</b>: grants the role to users who create new subprojects.</li>

      <li><b>Block recursion into private projects</b>: item when checked prevents a user with this role in a project from having the same role in subprojects. For example, when selected a user with the Project Owner role in the "Games" project cannot have the Project Owner role in the "Dominos" subproject.</li>

     </ul>
    </li>

    <li>To assign permissions to the role you can either clone an existing role by selecting a role from the drop down menu or you can assign specific permissions to the role. To assign specific permissions, click the check box under the <b>Add</b> field by the name of the permission you desire.</li>

    <li>
     <p>Click the <b>Create role</b> button. Use this feature with extreme caution! Assigning permissions to roles may have security implications.</p>
    </li>
   </ol>

   <p>Some permissions you associate with roles require the assignment of resources. Assigning resources allows you to limit the areas of the project that can be affected by persons with the permission. Those permission for which you can assign resources have a drop down box in the resource column in the Project permissions table. Use this box to determine which project resources to allocate the role's new permissions.</p>

   <p>Selecting ".*" applies the selected permissions for this role universally to all project resources available to this role, including both web content and source code.</p>

   <p>Choosing the "/www/.*" option within this list limits the selected permission for this role specifically to web pages. This means the scope of this permission does not pertain to any source code level access, but only to web page content. For example, assigning the "Version Control - Commit" permission to a role and designating "/www/.*" as the resource results in users with this role only being able to check out and commit web page content, not project source code.</p>

   <p>After you have selected the permissions to add and determined the site resources to apply these to, click the <b>Create role</b> button.</p>

   <h3><a id="memberrequests" name="memberrequests">Member requests</a></h3>

   <p>A member might request a new role at any time. As project owner, you can approve, reject, or defer the request. To do any of these, check the appropriate box under the "Requests Pending Approval" and "Edit Roles" headings. The change is effective immediately.</p>

   <h3><a id="membertasks" name="membertasks">Member issues and tasks</a></h3>

   <p>This site's issue tracking tool enables you to manage and assign tasks to your project members. An "issue" in broad terms basically refers to project activities to be done. As the project owner, you may assign issues to members, or you can give other members the ability to assign issues by virtue of their role or expertise. To learn more about issue tracking and administration, see the <a href="/nonav/docs/ProjectIssues.html">issue tracking</a> help information.</p>

   <div class="courtesylinks">
    <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
   </div>
  </div>
 </body>
</html>


