<html>
<head>

<title>Create a New Project (Step 2)</title>
<!-- Changed by: , 05-Apr-2001 -->


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

<span class="PlainText">
 <a name="ProjectAddStep2"></a>
 <p><span class="Header"><b>Create a New Project (Step 2): Choosing your project's license and profile</b></span>
<ul>
  
  <dl> 
    <dt><a href="ProjectAdd.html">Creating a New Project: Index</a></dt>
    <dd> 
      <li><a href="ProjectAddStep1.html">Create a New Project (Step One): &quot;Project Add&quot; fields explained</a> </li>
    </dd>
    <dd> 
      <li><b>You are here: Create a New Project 
        (Step Two): Choosing your project's license and profile</b> </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>
<blockquote> 
  <P><a name="LicenseField"></A><B>License</B><BR>
    Choose the license you wish to apply to the project. Licenses can range from 
    the open source GPL to proprietary. Once your project is approved, you cannot 
    switch from an open-source model to a proprietary one. However, proprietary 
    projects can choose to go open source. To edit this feature of your project, 
    you need to click on &quot;Edit Project&quot; link, once you have finished 
    the process of creating the project. If you wish more information on your 
    licensing options, please see the &quot;<a href="TypicalLicenses.html">Licenses</a>&quot; 
    section.</p>
  <P><a name="ProjectCategoryField"></A><B>Project Category</B><BR>
    Select the category appropriate for your project. Because projects are listed 
    by category in both the Start Page and Project Home pages, the choice of category 
    is critical for giving developers a sense of the kind of work available. A 
    developer who specializes in games, for example, will not necessarily want 
    to view projects in the productivity category. As you can see, there are many 
    possible options, and if you end up preferring another category, you can change 
    your project category at any time. To edit this features of your project, 
    click on &quot;Edit Project&quot; once you have finished creating the project.</p>
  <P><a name="ProjectProfileField"></A><B>Project Profile</B><BR>
    The Project Profile buttons are configured to automatically create mailing 
    lists for your particular project. Perhaps you have a project idea that will 
    require much discussion and input from other developers well before getting 
    to the point of actual source code; this would be a "Discussion project." 
    If your project, on the other hand, involves reworking existing source code, 
    choose "Standard development project." Selecting a content project generates 
    one general mailing list; you would not have access to the issue-tracking 
    system because it would not be necessary. Selecting the standard project profile 
    generates five mailing lists, and gives you access to all of the other resources 
    of the site, including issue tracking. It is important to stress that no matter 
    what profile you choose, you can change it later.</p>
</blockquote>
<p>In <a href="ProjectAddStep3.html">Create a new project (Step Three): Inviting people to join your project</a>, we go through the page fields for inviting people to your project.
<p>

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