<?xml version="1.0"?>
<!--
   Licensed 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.
 -->
<?xml-stylesheet type="text/xsl" href="../xsl/p2.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://xmlsns.com/foaf/0.1/"
	>
  <Project rdf:about="https://openmeetings.apache.org/">
    <name>Apache OpenMeetings</name>
    <homepage rdf:resource="https://openmeetings.apache.org/"/>
    <asfext:pmc rdf:resource="http://openmeetings.apache.org/" />
    <programming-language>Java</programming-language>
    <category rdf:resource="https://projects.apache.org/category/network-server"/>
    <category rdf:resource="https://projects.apache.org/category/network-client"/>
    <license rdf:resource="https://www.apache.org/licenses"/>
    <bug-database rdf:resource="https://issues.apache.org/jira/browse/OPENMEETINGS"/>
    <download-page rdf:resource="https://openmeetings.apache.org/downloads.html"/>

    <shortdesc xml:lang="en">
      Video conferencing, instant messaging, white board and collaborative document editing application.
    </shortdesc>

    <description xml:lang="en">
      The Apache OpenMeetings provides video conferencing, instant messaging, white board, 
      collaborative document editing and other groupware tools using API functions 
      of the Red5 Streaming Server for Remoting and Streaming.
    </description>

    <repository>
      <GitRepository>
        <browse rdf:resource="https://github.com/apache/openmeetings.git"/>
        <location rdf:resource="https://github.com/apache/openmeetings.git"/>
      </GitRepository>
    </repository>

    <mailing-list rdf:resource="https://openmeetings.apache.org/mailing-lists.html"/>
 
    <maintainer>
      <foaf:Person>
        <foaf:name>OpenMeetings PMC</foaf:name>
        <foaf:mbox rdf:resource="mailto:dev@openmeetings.apache.org"/>
      </foaf:Person>
    </maintainer>
     
    <release>
      <Version>
        <name>Latest WebRTC 6.x.x release</name>
        <created>2021-07-20</created>
        <revision>6.1.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Recommended current 4.0.x release</name>
        <created>2020-09-02</created>
        <revision>4.0.11</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Legacy 3.3.x release</name>
        <created>2017-09-14</created>
        <revision>3.3.2</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Legacy 3.2.x release</name>
        <created>2017-06-26</created>
        <revision>3.2.1</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Legacy 3.1.x release</name>
        <created>2017-01-29</created>
        <revision>3.1.5</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Legacy 2.2.0 release</name>
        <created>2013-12-12</created>
        <revision>2.2.0</revision>
      </Version>
    </release>
  </Project>
</rdf:RDF>

