<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License. 
-->
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" href="../style/bootstrap-1-3-0-min.css" type="text/css" />
  <link rel="stylesheet" href="../style/style.css" type="text/css" />
        <title>Flex Podling Status Page - Apache Incubator</title>
  
 </head>
 <body>
 <div class="container">
  <div class="row">
<div class="span12">
  <a href="http://www.apache.org/"><img src="http://incubator.apache.org/images/asf_logo_wide_small.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" width="62%"/></a>
</div>
<div class="span4">
<a href="http://incubator.apache.org/"><img src="../images/egg-logo2.png" alt="Apache Incubator" border="0"/></a>
</div>
</div>
  <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  
  <div class="row">
   <div class="span4">
    <form action="http://www.google.com/search" method="get">
     <input value="incubator.apache.org" name="sitesearch" type="hidden"/>
     <input size="20" name="q" id="query" type="text" value="search..."
      onclick="if(this.value == 'search...') {this.value = ''}"/>
     <input name="Search" value="Go" type="submit"/>
    </form>
          <div class="menuheader">General</div>
    <menu compact="compact">
          <li><a href="../index.html">Welcome</a></li> 
          <li><a href="../incubation/Process_Description.html">Incubation Overview</a></li> 
          <li><a href="../incubation/Incubation_Policy.html">Incubation Policy</a></li> 
          <li><a href="../guides/index.html">Incubation Guides</a></li> 
          <li><a href="../incubation/Roles_and_Responsibilities.html">Roles and Responsibilities</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="http://wiki.apache.org/incubator">Incubator Wiki</a></li> 
          <li><a href="../whoweare.html">Who We Are</a></li> 
          <li><a href="../sitemap.html">Site Map</a></li> 
            </menu>
      <div class="menuheader">Status</div>
    <menu compact="compact">
          <li><a href="../projects/index.html">Project List</a></li> 
          <li><a href="../clutch.html">Clutch Report</a></li> 
          <li><a href="../ip-clearance/index.html">IP Clearance</a></li> 
          <li><a href="../history/index.html">Incubator History</a></li> 
            </menu>
      <div class="menuheader">Entry Guides</div>
    <menu compact="compact">
          <li><a href="../guides/proposal.html">Proposal Guide</a></li> 
            </menu>
      <div class="menuheader">Podling Guides</div>
    <menu compact="compact">
          <li><a href="../guides/committer.html">Podling Committers</a></li> 
          <li><a href="../guides/ppmc.html">Podling PMC (PPMC)</a></li> 
          <li><a href="../guides/mentor.html">Podling Mentor</a></li> 
          <li><a href="../guides/releasemanagement.html">Podling Releases</a></li> 
          <li><a href="../guides/branding.html">Podling Branding/Publicity</a></li> 
          <li><a href="../guides/sites.html">Podling Websites</a></li> 
          <li><a href="../guides/graduation.html">Graduation</a></li> 
          <li><a href="../guides/retirement.html">Retirement</a></li> 
            </menu>
      <div class="menuheader">Other Guides</div>
    <menu compact="compact">
          <li><a href="../guides/participation.html">Participation</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="../guides/pmc.html">Incubator PMC (IPMC)</a></li> 
          <li><a href="../guides/chair.html">IPMC Chair</a></li> 
          <li><a href="../guides/lists.html">Mailing Lists</a></li> 
          <li><a href="../guides/website.html">Incubator Website</a></li> 
            </menu>
      <div class="menuheader">ASF</div>
    <menu compact="compact">
          <li><a href="http://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li> 
          <li><a href="http://www.apache.org/dev/">Developer Documentation</a></li> 
          <li><a href="http://www.apache.org/foundation/">Foundation</a></li> 
          <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a></li> 
          <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> 
            </menu>
    <!-- start Ads Server -->
    <iframe src="http://www.apache.org/ads/buttonbar.html"
     style="border-width:0; float: left" frameborder="0" scrolling="no"
     width="135" height="265"></iframe>
    <!-- end Ads Server -->
   </div>
   
   <div class="span12">
            <h2 id='Flex+Project+Incubation+Status'><img src="../images/redarrow.gif" />Flex Project Incubation Status</h2>
<div class="section-content">
<p>This page tracks the project status, incubator-wise. For more general
         project status, look on the project website.</p>
<p><span class="graduated">The Flex project graduated on 2012-12-19</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<p>
      Apache Flex® is a highly productive, open source application framework 
        for building and maintaining expressive web applications that deploy 
        consistently on all major browsers, desktops and devices 
        (including smartphones, tablets and tv)
      </p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News</h2>
<div class="section-content">
<ul>
        <li>2011-12-30 Project enters incubation.</li>
        <li>2012-07-25 Project releases Apache Flex 4.8.0-incubating.</li>
        <li>2012-11-14 Project releases Apache Flex SDK Installer 1.0.9-incubating.</li>
        <li>2012-12-19 Board approves graduation resolution.</li>
      </ul>
</div>
        <h2 id='Project+Website'><img src="../images/redarrow.gif" />Project Website</h2>
<div class="section-content">
<p>The website for Apache Flex is at: <a href="http://incubator.apache.org/flex/">http://incubator.apache.org/flex/</a></p>
<p>The wiki for Apache Flex is at: <a href="https://cwiki.apache.org/confluence/display/FLEX">https://cwiki.apache.org/confluence/display/FLEX</a></p>
<p>The mailing lists <code>flex-dev</code><code>@</code><code>incubator.apache.org</code> and <code>flex-user</code><code>@</code><code>incubator.apache.org</code> have been created and are being
        archived at both Apache and MarkMail.</p>
<table class="colortable" width="100%">
        <tr>
          <th>List</th>
          <th colspan="2">Archives</th>
        </tr>
        <tr>
          <td id="mail-dev"><code>flex-dev</code><code>@</code><code>incubator.apache.org</code></td>
          <td><a href="http://mail-archives.apache.org/mod_mbox/incubator-flex-dev/">Apache</a></td>
          <td><a href="http://markmail.org/search/+list:org.apache.incubator.flex-dev">MarkMail</a></td>
        </tr>
        <tr>
          <td id="mail-user"><code>flex-user</code><code>@</code><code>incubator.apache.org</code></td>
          <td><a href="http://mail-archives.apache.org/mod_mbox/incubator-flex-users/">Apache</a></td>
          <td><a href="http://markmail.org/search/+list:org.apache.incubator.flex-users">MarkMail</a></td>
        </tr>
      </table>
</div>
        <h2 id='Identify+the+project+to+be+incubated'><img src="../images/redarrow.gif" />Identify the project to be incubated</h2>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2012-08-09</td>
              <td>Make sure that the requested project name does not already exist and
                  check www.nameprotect.com to be sure that the name is not already
                trademarked for an existing software product.<br />
              <b>Flex is an existing trademark registered by Adobe.  It was transferred to
              Apache on an "as-is" basis.  There are previously existing uses of Flex in websites
                such as flex.org that remain outside of Apache control.</b></td>
            </tr>
            <tr>
              <td>N/A</td>
              <td>If request from an existing Apache project to adopt an external
                  package, then ask the Apache project for the SVN module and mail
                  address names.</td>
            </tr>
            <tr>
              <td>N/A</td>
              <td>If request from outside Apache to enter an existing Apache project,
                  then post a message to that project for them to decide on acceptance.</td>
            </tr>
            <tr>
              <td>2012-01-03</td>
              <td>If request from anywhere to become a stand-alone PMC, then assess the
                  fit with the ASF, and create the lists and modules under the
                  incubator address/module names if accepted.</td>
            </tr>
          </table>
</div>
        <h2 id='Interim+responsibility'><img src="../images/redarrow.gif" />Interim responsibility</h2>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2012-01-03</td>
              <td>Mentors are:
                <ul>
                  <li>Bertrand Delacretaz (Champion)</li>
                  <li>Greg Reddin</li>
                  <li>Dave Fisher</li>
                  <li>Anne Katherine Petteroe</li>
                </ul>
              </td>
            </tr>
            <tr>
              <td>2012-01-04</td>
              <td>Subscribe all Mentors on the pmc and general lists.</td>
            </tr>
            <tr>
              <td>2012-01-04</td>
              <td>Give all Mentors access to the incubator SVN repository. 
                (to be done by the Incubator PMC chair or an Incubator PMC
                Member wih karma for the authorizations file)</td>
            </tr>
            <tr>
              <td>2012-01-04</td>
              <td>Tell Mentors to track progress in the file 'incubator/projects/flex.html'</td>
            </tr>
          </table>
</div>
        <h2 id='Copyright'><img src="../images/redarrow.gif" />Copyright</h2>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2011-08-22</td>
              <td>Check and make sure that the papers that transfer rights to the ASF
                  been received. It is only necessary to transfer rights for the
                  package, the core code, and any new code produced by the project.
              </td>
            </tr>
            <tr>
              <td>2011-07-20</td>
              <td>Check and make sure that the files that have been donated have been
                  updated to reflect the new ASF copyright.</td>
            </tr>
          </table>
</div>
        <h2 id='Verify+distribution+rights'><img src="../images/redarrow.gif" />Verify distribution rights</h2>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2012-07-20</td>
              <td>Check and make sure that for all code included with the distribution
                  that is not under the Apache license, e have the right to combine
                  with Apache-licensed code and redistribute.
               </td>
            </tr>
            <tr>
              <td>2012-07-20</td>
              <td>Check and make sure that all source code distributed by the project
                  is covered by one or more of the following approved licenses: Apache,
                  BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially
                  the same terms.</td>
            </tr>
          </table>
</div>
        <h2 id='Establish+a+list+of+active+committers'><img src="../images/redarrow.gif" />Establish a list of active committers</h2>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>Name</th>
              <th>Email (@a.o)</th>
            </tr>
            <tr><td>Alex Harui</td><td>aharui</td></tr>
            <tr><td>Carol Frampton</td><td>cframpton</td></tr>
            <tr><td>Christophe Herreman</td><td>cherreman</td></tr>
            <tr><td>Chuck Mastrandrea</td><td>cmastrandrea</td></tr>
            <tr><td>Erik de Bruin</td><td>erikdebruin</td></tr>
            <tr><td>Espen Skogen</td><td>espenskogen</td></tr>
            <tr><td>Gordon Smith</td><td>gordonsmith</td></tr>
            <tr><td>Igor Costa</td><td>igorcosta</td></tr>
            <tr><td>Iwo Banas</td><td>iwo</td></tr>
            <tr><td>Jeff Tapper</td><td>jeff</td></tr>
            <tr><td>Jeffry Houser</td><td>jhouser</td></tr>
            <tr><td>Jeremy Tellier</td><td>jtellier</td></tr>
            <tr><td>Jonathon Campos</td><td>jonbcampos</td></tr>
            <tr><td>Jun Heider</td><td>junheider</td></tr>
            <tr><td>Justin Mclean</td><td>jmclean</td></tr>
            <tr><td>Kevin Korngut</td><td>kkorngut</td></tr>
            <tr><td>Leif Wells</td><td>leifwells</td></tr>
            <tr><td>Martin Heidegger</td><td>mheidegger</td></tr>
            <tr><td>Michael Jordan</td><td>mijordan</td></tr>
            <tr><td>Michael Labriola</td><td>labriola</td></tr>
            <tr><td>Michael Schmalle</td><td>mschmalle</td></tr>
            <tr><td>Michelle Yaiser</td><td>myaiser</td></tr>
            <tr><td>Nicholas Kwaitkowski</td><td>quetwo</td></tr>
            <tr><td>Omar Gonzalez</td><td>s9tpepper</td></tr>
            <tr><td>OmPrakash Muppirala</td><td>bigosmallm</td></tr>
            <tr><td>Peter Elst</td><td>peterelst</td></tr>
            <tr><td>Peter Ent</td><td>pent</td></tr>
            <tr><td>Rui Silva</td><td>rduartes</td></tr>
            <tr><td>Ryan Frishberg</td><td>frishy</td></tr>
            <tr><td>Sebastian Mohr</td><td>masuland</td></tr>
            <tr><td>Scott Delamater</td><td>sdelamater</td></tr>
            <tr><td>Tink</td><td>tink</td></tr>
            <tr><td>Bertrand Delacretaz</td><td>bdelacretaz</td></tr>
            <tr><td>Dave Fisher</td><td>wave</td></tr>
            <tr><td>Greg Reddin</td><td>greddin</td></tr>
          </table>
</div>
        <h2 id='Infrastructure'><img src="../images/redarrow.gif" />Infrastructure</h2>
<div class="section-content">
<table class="colortable" width="100%">
        <tr>
          <td>Bug tracking</td>
          <td />
          <td id="tracker"><a href="https://issues.apache.org/jira/browse/FLEX">https://issues.apache.org/jira/browse/FLEX</a>
            <p>Note that INFRA-4380 remains unresolved</p></td>
        </tr>
        <tr>
          <td>Source code</td>
          <td>SVN</td>
          <td id="svn"><a href="http://svn.apache.org/repos/asf/incubator/flex">http://svn.apache.org/repos/asf/incubator/flex</a></td>
        </tr>
        <tr>
          <td>Champion and mentors</td>
          <td />
          <td>
                <ul>
                  <li>Bertrand Delacretaz (Champion)</li>
                  <li>Greg Reddin</li>
                  <li>Dave Fisher</li>
                  <li>Anne Katherine Petteroe</li>
                </ul>
          </td>
        </tr>
        <tr>
          <td>Committers</td>
          <td />
          <td><table>
            <tr>
              <th>Name</th>
              <th>Email (@a.o)</th>
            </tr>
            <tr><td>Alex Harui</td><td>aharui</td></tr>
            <tr><td>Carol Frampton</td><td>cframpton</td></tr>
            <tr><td>Christophe Herreman</td><td>cherreman</td></tr>
            <tr><td>Chuck Mastrandrea</td><td>cmastrandrea</td></tr>
            <tr><td>Erik de Bruin</td><td>erikdebruin</td></tr>
            <tr><td>Espen Skogen</td><td>espenskogen</td></tr>
            <tr><td>Gordon Smith</td><td>gordonsmith</td></tr>
            <tr><td>Igor Costa</td><td>igorcosta</td></tr>
            <tr><td>Iwo Banas</td><td>iwo</td></tr>
            <tr><td>Jeff Tapper</td><td>jeff</td></tr>
            <tr><td>Jeffry Houser</td><td>jhouser</td></tr>
            <tr><td>Jeremy Tellier</td><td>jtellier</td></tr>
            <tr><td>Jonathon Campos</td><td>jonbcampos</td></tr>
            <tr><td>Jun Heider</td><td>junheider</td></tr>
            <tr><td>Justin Mclean</td><td>jmclean</td></tr>
            <tr><td>Kevin Korngut</td><td>kkorngut</td></tr>
            <tr><td>Leif Wells</td><td>leifwells</td></tr>
            <tr><td>Martin Heidegger</td><td>mheidegger</td></tr>
            <tr><td>Michael Jordan</td><td>mijordan</td></tr>
            <tr><td>Michael Labriola</td><td>labriola</td></tr>
            <tr><td>Michael Schmalle</td><td>mschmalle</td></tr>
            <tr><td>Michelle Yaiser</td><td>myaiser</td></tr>
            <tr><td>Nicholas Kwaitkowski</td><td>quetwo</td></tr>
            <tr><td>Omar Gonzalez</td><td>s9tpepper</td></tr>
            <tr><td>OmPrakash Muppirala</td><td>bigosmallm</td></tr>
            <tr><td>Peter Elst</td><td>peterelst</td></tr>
            <tr><td>Peter Ent</td><td>pent</td></tr>
            <tr><td>Rui Silva</td><td>rduartes</td></tr>
            <tr><td>Ryan Frishberg</td><td>frishy</td></tr>
            <tr><td>Sebastian Mohr</td><td>masuland</td></tr>
            <tr><td>Scott Delamater</td><td>sdelamater</td></tr>
            <tr><td>Tink</td><td>tink</td></tr>
            <tr><td>Bertrand Delacretaz</td><td>bdelacretaz</td></tr>
            <tr><td>Dave Fisher</td><td>wave</td></tr>
            <tr><td>Greg Reddin</td><td>greddin</td></tr>
          </table></td>
        </tr>
      </table>
</div>
        <h2 id='Incubation+status+reports'><img src="../images/redarrow.gif" />Incubation status reports</h2>
<div class="section-content">
<ul>
        <li>December 2012
          <p><code>
Flex

Apache Flex is an application framework for easily building Flash-based
applications for mobile devices, the browser and desktop.

Date of entry to the Incubator:  December 31, 2011

Top three items to resolve before graduation:
   Flex has their graduation resolution on the agenda for the December board meeting.

Is there anything that the Incubator PMC or ASF Board specifically needs
to address?
   Only the graduation resolution.

Are there any legal, infrastructure, cross-project or personal issues that
need to be addressed? (Are there any stumbling blocks that impede the podling?)
   The Flex community really wants to move from SVN to Git/GitHub.  We are eager to see
   Infra fully support read/write Git repos.

   Also, we are still waiting for INFRA-4380 (import the old Flex JIRA data) to
   be resolved.

Check that the project's Incubation Status file up to date.

  http://incubator.apache.org/projects/flex

What has been done (releases, milestones, etc.) since the last report?
   -We approved 6 new committers
   -We released Apache Flex SDK Installer 1.0.9-incubating.
   -Adobe Systems Inc. donated both the Falcon compiler and the FalconJS
    cross-compiler.
   -Christopher Dutz donated Maven support tools for Flex
   -We voted to graduate.
   -We started work on a next-generation of Flex designed to target browsers
    and devices without Flash.

What are the plans and expectations for the next period?

   -Go through the transition to being a TLP
   -Continue with the next-generation Flex work
   -Release several bug-fixes and new locales in the current Flex code base.

Are there any recommendations for how incubation could run more smoothly
for you?
   No.  We thank you for your support.

Signed off by mentor: Dave Fisher (wave), Greg Reddin (greddin), bdelacretaz, adc
            </code></p>
        </li>
        <li>September 2012
          <p><code>
Flex

Apache Flex is an application framework for easily building Flash-based
applications for mobile devices, the browser and desktop.

Summary: A large community is waiting to see if committer activity will increase
and starting to think about graduating.

Date of entry to the Incubator:  December 31, 2011

Top three items to resolve before graduation:

  - Get better at resolving issues the Apache Way
  - Get more initial committers to commit something
  - Make another release with more non-Adobe involvement

Is there anything that the Incubator PMC or ASF Board specifically needs
to address?

  There was discussion about letting Flex graduate with the requirement that
  one or two mentors remain on the PMC.

Are there any legal, infrastructure, cross-project or personal issues that
need to be addressed? (Are there any stumbling blocks that impede the podling?)

  The issue regarding the import of attachments for existing
  JIRA bugs remains open (INFRA-4380).  It is not critical, but it would be
  nice to get this resolved soon.

  The PPMC has voted to move from SVN to Git.  Having Apache approve read/write
  Git repositories would be helpful.

Check that the project's Incubation Status file up to date.

  http://incubator.apache.org/projects/flex

What has been done (releases, milestones, etc.) since the last report?

  - We released Apache Flex 4.8.0 (incubating).

  - OmPrakash Muppirala and Erik de Bruin were added as a committer and 
    PPMC member due to their work on the installer.  Peter Ent and 
    Gordon Smith from Adobe were also added as committers as they are 
    shepherding large donations from Adobe.

  - Adobe completed the trademark donation.

  - Adobe donated the Text Layout Framework, the rest of the Mustella
    test suite and signed off on the Falcon compiler donation.

  - OmPrakash Muppirala has been leading the development of a tool that
    allows IDEs like Adobe Flash Builder to work better with Apache Flex
    releases.  Justin McLean, Stephen Downs, Roland Zwaga, Tomasz Maciag,
    and Erik de Bruin have also contributed to the tool.

  - We have accepted several patches from the community to address issues
    with our test suite.

  - After much discussion, we voted to move from SVN to Git and employ
    something known as the Git Branching Model.

What are the plans and expectations for the next period?

  - We hope to finalize the release of the installer.

  - Adobe will submit the Falcon compiler source

  - We will get the test suite stable on Mac desktops and then on Windows
    and mobile configurations.  This should remove the last excuse for
    committers who are afraid to make changes without a validation suite

  - We hope to complete the transition from SVN to Git.

Are there any recommendations for how incubation could run more smoothly
for you?

  Our mentors continue to be very helpful.

Signed off by mentor: wave, bdelacretaz, bmargulies
            </code></p>
        </li>
        <li>June 2012&gt;
          <p><code>
Flex

Apache Flex is an application framework for easily building Flash-based
applications for mobile devices, the browser and desktop.

Summary: A large community is losing momentum as it waits for Adobe to
complete the source code transition and infrastructure.

Date of entry to the Incubator:  December 31, 2011

Top three items to resolve before graduation:

  - Resolve trademark donation or licensing
  - Complete code and bug database donation
  - Make at least one release

Is there anything that the Incubator PMC or ASF Board specifically needs
to address?

  The ASF legal team will have to agree to a custom Trademark licensing.
  Adobe submitted an initial proposal for the agreement at the end of May.

Are there any legal, infrastructure, cross-project or personal issues that
need to be addressed? (Are there any stumbling blocks that impede the podling?)

  Besides the trademark issue mentioned previously, the import of existing
  JIRA bugs is blocked by an issue with Apache JIRA's import utility (INFRA-4380).
  We just got news that this should now be resolved, the PPMC is testing
  the results of the import before activating it.

Check that the project's Incubation Status file up to date.

  http://incubator.apache.org/projects/flex

What has been done (releases, milestones, etc.) since the last report?

  - Carol Frampton is the release manager for our first release and has
    prepared some initial release candidates.  We are continuing to refine
    the release candidates to respond to various licensing and policy issues.
  - Christophe Herreman was added as a committer and PPMC member due to his 
    offering patches for issues with the release candidates.
  - OmPrakash Muppirala has been leading the development of a tool that
    allows IDEs like Adobe Flash Builder to work better with Apache Flex
    releases.  Justin McLean, Stephen Downs, Roland Zwaga, and Tomasz Maciag
    have also contributed to the tool.

What are the plans and expectations for the next period?

  Adobe expects to complete the transfer of the mustella test suite.
  We hope to get an initial release approved by IPMC.

Are there any recommendations for how incubation could run more smoothly
for you?

  Our mentors continue to be very helpful.

  See May 2012 report for other concerns related to JIRA and svn imports,
  but as mentioned above it looks like the JIRA import problems are fixed 
  now.

Signed off by mentor: greddin, wave
Shepherd: Matt Franklin
            </code></p>
        </li>
        <li>March 2012
          <p><code>
Flex

Apache Flex is an application framework for easily building Flash-based
applications for mobile devices, the browser and desktop.

Summary: A highly energetic community waits for Adobe to complete the
source code transition and infrastructure.

Date of entry to the Incubator:  December 31, 2011

Top three items to resolve before graduation:

  1. Resolve trademark donation or licensing
  2. Complete code and bug database donation
  3. Make at least one release

Is there anything that the Incubator PMC or ASF Board specifically needs
to address?

  The ASF legal team may have to agree to a custom Trademark licensing.
  Adobe is currently evaluating the parameters of a custom Trademark license
  proposed by an ASF Board member.  If approved, a custom agreement will be
  drafted and signed by both parties.

Are there any legal, infrastructure, cross-project or personal issues that
need to be addressed? (Are there any stumbling blocks that impede the podling?)

  Besides the trademark issue mentioned previously, the import of existing
  JIRA bugs is blocked by an issue with Apache JIRA's import utility. It has
  failed to import the data file supplied by Adobe. Infra is supposed to
  open a support ticket with Atlassian.

Check that the project's Incubation Status file up to date.

  http://incubator.apache.org/projects/flex

What has been done (releases, milestones, etc.) since the last report?

  - An initial set of Flex source (base framework code), including history,
    was checked into the trunk area of the podling’s Subversion repository.
  - Other initial committers have donated code to the whiteboard.
  - Updates to the podling's wiki including a getting started area for
    reference to new project members.
  - Justin Mclean was accepted as committer to the podling.

What are the plans and expectations for the next period?

  Adobe expects to complete the transfer of the bug database. Adobe also
  hopes to contribute the compiler and test suite as well. And there is hope
  for an initial release.

Are there any recommendations for how incubation could run more smoothly
for you?

  Incubation has been working well.  Our mentors are great.

Signed off by mentor: wave, bdelacretaz, greddin
            </code></p>
        </li>
        <li>February 2012
          <p><code>
Flex

Apache Flex is an application framework for easily building Flash-based
applications for mobile devices, the browser and desktop.

Summary: A highly energetic community waits for Adobe to transition code
and infrastructure.

Date of entry to the Incubator:  December 31, 2011

Top four items to resolve before graduation:

  1. Resolve trademark donation or licensing
  2. Complete code and bug database donation
  3. Make at least one release
  4. Add new committers

Is there anything that the Incubator PMC or ASF Board specifically needs
to address?

  The ASF legal team will have to work with Adobe on the Trademark
  licensing issue.  Adobe legal is still drafting the proposal before
  presenting to Apache.

Are there any legal, infrastructure, cross-project or personal issues that
need to be addressed? (Are there any stumbling blocks that impede the podling?)

  Besides the trademark issue mentioned previously, the code donation and
  bug database donation are being slowed by infrastructure issues at both
  Adobe and Apache, mainly the lack of ways to easily transfer multi-GB files.

Check that the project's Incubation Status file up to date.

  http://incubator.apache.org/projects/flex

What has been done (releases, milestones, etc.) since the last report?

  - An initial set of Flex source (minus Subversion history) was checked into
    the whiteboard area of the podling’s Subversion repository.
  - Other initial committers have donated code to the whiteboard.
  - A logo contest was held.  Over 50 entries were submitted.
  - The mailing lists were established.  Over 200 people joined in the
    first 30 days and the traffic averaged over 100 emails a day.  It has
    quieted down now that the logo contest has concluded.

What are the plans and expectations for the next period?

  Adobe expects to complete the transfer of the bug database and the initial
  set of code with history.  Adobe also hopes to contribute the compiler and
  test suite as well.  And there is hope for an initial release.

Are there any recommendations for how incubation could run more smoothly for you?

  Incubation has been working well.  Our mentors are great.

Signed off by mentor: bdelacretaz, wave
            </code></p>
        </li>
      </ul>
</div>
        <h2 id='Collaborative+Development'><img src="../images/redarrow.gif" />Collaborative Development</h2>
<div class="section-content">
<ul>
            <li>Have all of the active long-term volunteers been identified and
              acknowledged as committers on the project?<br /><b>Yes</b>
            </li>
            <li>Are there three or more independent committers? (The legal definition
                of independent is long and boring, but basically it means that there
                is no binding relationship between the individuals, such as a shared
                employer, that is capable of overriding their free will as
                individuals, directly or indirectly.)<br /><b>Yes</b></li>
            <li>Are project decisions being made in public by the committers?<br /><b>Yes</b></li>
            <li>Are the decision-making guidelines published and agreed to by all of
                the committers?<br /><b>Yes</b></li>
          </ul>
</div>
        <h2 id='Licensing+awareness'><img src="../images/redarrow.gif" />Licensing awareness</h2>
<div class="section-content">
<ul>
            <li>Are all licensing, trademark, credit issues being taken care of and
                acknowleged by all committers?<br /><b>Yes</b></li>
          </ul>
</div>
        <h2 id='Exit'><img src="../images/redarrow.gif" />Exit</h2>
<div class="section-content">
<p>
          <em>Things to check for before voting the project out.</em>
        </p>
<h3 id='Organizational+acceptance+of+responsibility+for+the+project'>Organizational acceptance of responsibility for the project</h3>
<div class="section-content">
<ul>
            <li>If graduating to a new PMC, has the board voted to accept it? <b>Yes</b></li>
          </ul>
</div>
<h3 id='Incubator+sign-off'>Incubator sign-off</h3>
<div class="section-content">
<ul>
            <li>Has the Incubator decided that the project has accomplished all of
              the above tasks? <b>Yes</b></li>
          </ul>
</div>
</div>
       </div>
   </div>
  
   <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  <div class="row">
   <div class="span16 footer">
     Copyright &#169; 2009-2016 The Apache Software Foundation<br />
     Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
     Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.
     
     
    </div>
  </div>
 </div> 
 </body>
</html>
