<html>
<head>

<title>Project Add Page Fields Explained</title>
<!-- Changed by: , 03-Jun-2001 -->


<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>

<span class="PlainText"><a name="ProjectAddFields1"></a> <span class="Header"><b>Project 
Add Page Fields Explained</b></span> 
<ul>
  
  <dl> 
    <dt><a href="ProjectAdd.html">Creating a New Project: Index</a></dt>
    <dd> 
      <li><b>You are here: Create a New Project (Step One): &quot;Project Add&quot; fields explained </b></li>
n    </dd>
    <dd> 
      <li><a href="ProjectAddStep2.html">Create a New Project 
        (Step Two): Choosing your project's license and profile </a></li>
    </dd>
    <dd> 
      <li><a href="ProjectAddStep3.html">Create a new project 
        (Step Three): Inviting people to join your project</a></li>
    </dd>
    <dd> 
      <li><a href="ProjectAddConfirm.html">Project Creation 
        Confirmation</a></li></dd>
  </dl>
</ul>
<p>The fields available on the &quot;Start a Project&quot; page allow you 
  to configure your project. Below, we have explained each of the fields and their 
  function. </p>
<P> 
<P> 
<blockquote><a name="ProjectNameField"></A><B>Project Name</B>
  Enter what you wish to call your project. Choose a name that both describes 
  the project and conforms to the naming conventions. That is, use characters
  a-z (mixed case okay), 0-9, and dash (though not as first or last character);
  no spaces, underscoring, capitalization, or other punctuation. Keep in mind
  that the project name cannot be changed.  An example of a name for a project
  dealing with porting a sophisticated chess game to the telephone might be
  &quot;chessphone.&quot; Unimaginative, to be sure, but descriptive. 
  <p></P>
  <P><a name="SummaryField"></A><B>Summary</B><BR>
    Enter a one-line description of your project, no longer than the field length. 
    The description should be in plain text; HTML and formatted text are not supported. 
    The description will be adjacent to the name of the project and be what registered 
    users see first when they view the list of available projects. It should therefore 
    be descriptive and concise. For instance, in the case of the chess game, you 
    might write: &quot;Porting an advanced chess game to the phone.&quot; Unlike 
    the project name, you can edit this field at any time.</P>
  <P><a name="DescriptionField"></A><B>Description</B><BR>
    This description makes up the bulk of your project's home page. It is where 
    you can present the project in as interesting a light as possible. You can 
    include HTML, formatted text, and so on, but keep in mind that most developers 
    prefer simple and fast over complicated and slow (and confusing). State here 
    your project's mission, background, methodology, tasks available, and other 
    information that a developer might need to begin working on your project. 
    This field can be edited at any time by clicking on the &quot;Edit Project&quot; 
    link once you have finished creating a project, but the information should 
    remain consistent. 
</blockquote>
<p>In <a href="ProjectAddStep2.html">&quot;Create a New Project (Step 2): Choosing your project's 
license and profile&quot;</a>, we examine the licenses and profiles by which you can characterize your project.
<p>

<HR noShade SIZE=1>
<a href="/servlets/HelpTOC">Back to main Help index</a>
</span>
</body>
</html>
