<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"?>
<!--
    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.
-->
<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/">

    <Project rdf:about="http://roller.apache.org/">
        <created>2012-04-03</created>
        <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
        <name>Apache Roller</name>
        <homepage rdf:resource="http://roller.apache.org/" />
        <asfext:pmc rdf:resource="http://roller.apache.org" />
        <shortdesc>Apache Roller is a full-featured, multi-user and group blog server suitable for blog sites large and small.</shortdesc>
        <description>Apache Roller is a full-featured, multi-user and group-blog server suitable for blog sites large and small. It runs as a Java web application that should be able to run on most any Java EE server and relational database. Roller's installation guide covers deployment on Tomcat, GlassFish, and JBoss application servers using a MySQL, Derby, or PostgreSQL database. Users however have reported success running Roller on other app servers and databases.

            -    Multi-user blogging: can support tens of thousands of users and blogs

            -    Group blogging with three permission levels (editor, author and limited)

            -    Support for comment moderation and comment spam prevention measures

            -    Bloggers have complete control over blog layout/style via Apache Velocity-driven templates

            -    Built-in search engine indexes weblog entry content

            -    Pluggable cache and rendering system

            -    Support for blog clients that support MetaWeblog API

            -    All blogs have entry and comment feeds in both RSS 2.0 and Atom 1.0 formats</description>
        <bug-database rdf:resource="https://issues.apache.org/jira/browse/ROL" />
        <mailing-list rdf:resource="https://cwiki.apache.org/confluence/display/ROLLER/Roller+Mailing+Lists" />
        <download-page rdf:resource="http://roller.apache.org/downloads.html" />
        <programming-language>Java</programming-language>
        <category rdf:resource="http://projects.apache.org/category/content" />
        <release>
            <Version>
                <name>Current</name>
                <created>2019-07-22</created>
                <revision>5.2.4</revision>
            </Version>
        </release>
        <repository>
            <SVNRepository>
                <location rdf:resource="https://svn.apache.org/repos/asf/roller/"/>
                <browse rdf:resource="https://svn.apache.org/repos/asf/roller/"/>
            </SVNRepository>
        </repository>
        <maintainer>
            <foaf:Person>
                <foaf:name>Apache Roller PMC</foaf:name>
                <foaf:mbox rdf:resource="mailto:dev@roller.apache.org"/>
            </foaf:Person>
        </maintainer>
    </Project>
</rdf:RDF>
