<!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/sc.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/docs/ProjectOwnerAdmin.html">Project owner administration</a> 
        <ul>
          <li><a href="/nonav/docs/ProjectOwnerEdit.html">Editing and maintaining 
            the Project Home page</a></li>
          <li><a href="/nonav/docs/ProjectOwnerNews.html">Managing project site 
            news</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/docs/ProjectOwnerMailingLists.html">Managing project 
            mailing lists</a></li>
          <li><a href="/nonav/docs/ProjectOwnerDocuments.html">Managing project 
            documentation</a></li>
          <li><a href="/nonav/docs/ProjectOwnerSource.html">Managing project source 
            code</a></li>
          <li><a href="/nonav/docs/ProjectOwnerIssues.html">Tracking and managing 
            project issues</a></li>
          <li><a href="/nonav/docs/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. However, as project owner, you can later change the role given to a member by clicking on the member's underlined name and changing the role already assigned to him/her. If you wish to revoke a role, check the box adjacent to the stipulated role and then "Revoke Member Roles."</p>

   <p>Additionally, as the Project Owner you can create roles specific to your project. To learn how to create project roles see <a href="#addroles">Managing 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 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 the projects only.</p>

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

    <li>Click on<b>Roles</b> and select the <b>Project</b> tab to access the <b>Role List</b> page.</li>

    <li>Click the "Add New Role" link.</li>

    <li>Select the visibility of the role. This determines at what level the project role can be seen. The Project level will make the role only viewable at the project level.</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. 

     <ul>
      <li>The "<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>

      <li>The second item, when selected, 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>The third item, when selected, grants the role to users who create new projects.</li>

      <li>The fourth item, when selected, 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>
     </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 assigment of resources. Assigning resources allows you to limit the areas of the project that can be affected by persons with the permission. The resource section on the Add Permission to Role page lets you determine to which project resources to allocate the role's new permissions.</p>

   <p>Selecting "All available resources .*" 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 "All web pages /www/.*" limits the selected permission for this role specifically to web pages. This means the scope of this permissions 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 "All web pages /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>Add Permissions</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>


