

<!--#include virtual="/doctype.html" -->
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <link href="/css/ooo.css" rel="stylesheet" type="text/css">
    

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


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

    
    <script src="https://www.apachecon.com/event-images/snippet.js"></script>
  </head>
  <body>
    <!--#include virtual="/brand.html" -->
    <div id="topbara">
      <!--#include virtual="/topnav.html" -->
      <div id="breadcrumbsa"><a href="/">home</a>&nbsp;&raquo;&nbsp;<a href="/docs/">docs</a></div>
    </div>
    <div id="clear"></div>
      
      
    <div id="content">
      
      

<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>

      
    </div>
    <!--#include virtual="/footer.html" -->
  </body>
</html>
