<?xml version="1.0"?>
<!--
 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.
-->

<document>

 <properties>
  <title>Turbine Services</title>
 </properties>

<body>

<section name="Proposals">

<p>
These are the proposals that are up on the table:
</p>

<ul>
<li><a href="proposals/application-service.html">Application Service</a></li>
<li><a href="proposals/browser-bound-app-context.html">Browser Bound Application Context</a></li>
<li><a href="proposals/i18n.html">i18n</a></li>
<li><a href="proposals/naming-service.html">Naming Service</a></li>
<li><a href="proposals/pp.html">PP and Related Classes</a></li>
<li><a href="proposals/reusable-components.html">Reusable Components</a></li>
<li><a href="proposals/security-service.html">Security Service</a></li>
<li><a href="proposals/services-repository.html">Services Repository</a></li>
<li><a href="proposals/unified-templating.html">Unified Templating Service</a></li>
</ul>

</section>

</body>
</document>
