<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"?>
<rdf:RDF xml:lang="en"
         xmlns="http://usefulinc.com/ns/doap#" 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:asfext="http://projects.apache.org/ns/asfext#"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">
<!--
    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.
-->
  <Project rdf:about="http://flex.apache.org">
    <created>2013-01-06</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache Flex</name>
    <homepage rdf:resource="http://flex.apache.org" />
    <asfext:pmc rdf:resource="http://flex.apache.org/pmc_Flex.rdf" />
    <shortdesc>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).</shortdesc>
    <description>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). It provides a modern, standards-based language and programming model that supports common design patterns suitable for developers from many backgrounds. Flex applications can be deployed to the ubiquitous Adobe® Flash® Player in the browser, Adobe® AIR™ on desktop and mobile or to native Android™, IOS™, QNX®, Windows® or Mac® applications.</description>
    <bug-database rdf:resource="https://issues.apache.org/jira/browse/FLEX" />
    <mailing-list rdf:resource="http://flex.apache.org/community-mailinglists.html" />
    <download-page rdf:resource="http://flex.apache.org/download-source.html" />
    <programming-language>ActionScript</programming-language>
    <category rdf:resource="http://projects.apache.org/category/web-framework" />
    <release>
      <Version>
        <name>Apache Flex SDK 4.15.0</name>
        <created>2016-01-11</created>
        <revision>4.15.0</revision>
      </Version>
    </release>
    <repository>
      <SVNRepository>
        <location rdf:resource="https://git-wip-us.apache.org/repos/asf/flex-sdk.git"/>
        <browse rdf:resource="https://git-wip-us.apache.org/repos/asf/flex-sdk/repo?p=flex-sdk.git;a=summary"/>
      </SVNRepository>
    </repository>
    <maintainer>
      <foaf:Person>
        <foaf:name>Alex Harui</foaf:name>
          <foaf:mbox rdf:resource="mailto:aharui@apache.org"/>
      </foaf:Person>
    </maintainer>
  </Project>
</rdf:RDF>
