<?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 To Do</title>
 </properties>

<body>

<section name="Work to do for the current release">
<p>
This file is intended to collect ideas, problems and work
to do with the current Turbine code.
</p>

<subsection name="Work to do for the current release">
<p>
No current items.
</p>
</subsection>

<subsection name="Stuff that needs to be looked into (current release or next release)">
<p>
  <ul>
    <li>Make sure that pull tools get refreshed correctly under all circumstances (done?)</li>
    <li>Check lifetimes of authorized and session tools if the application is not the standard login-logout application (done?)</li>
    <li>Move AvalonComponentService to the Fortress container (suggested by the avalon-dev list) - or looking for an alternative</li>
    <li>Move doclint and jacoco settings to Turbine parent</li>
  </ul>
</p>
</subsection>

<subsection name="Blue Skying for future Turbine releases">
<p>
  <ul>
    <li>Servlet 3.x asynchronous cycle handling / prototype / proof of concept (Servlet API is 2.5 in Turbine 4.x, but 3.x for Turbine 5.x in 2019)</li>
    <li>OSGI or Java 9 modularization (proposal exists and Java required version is still 6 for Turbine in 2017</li>
  </ul>
</p>
</subsection>

</section>
</body>
</document>
