<?xml version="1.0" encoding="UTF-8"?>

<!--
  - 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.
  -
  - $Id$
  -->

<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.3//EN" "document-v13.dtd">

<!--
  - Version: $Revision$ $Date$
  - Author: Vladimir R. Bossicard (vladimir@apache.org)
  -->
<document>
  <header>
    <title>Dev Todo List</title>
    <version>$Revision$</version>
    <authors>
      <person name="Vladimir R. Bossicard" email="vladimir@apache.org"/>
      <person name="Vadim Gritsenko" email="vgritsenko@apache.org"/>
    </authors>
  </header>

  <body>
    <section>
      <title>Introduction</title>
      <p>
        For a new version of Xindice to be released, these following
        todos must be completed. Do not expect anything if these tasks
        are not done!  So if you want to see a new release before the
        end of the millenium, choose your task!
      </p>
      <p>
        Some plan items duplicating items from the main <link
        href="../todo.html">todo page</link>.
      </p>
    </section>

    <section>
      <title>Xindice 1.2 Release Plan</title>
      <ul>
        <li class="strike">
          <strong>Java</strong> Revisit minimum JDK requirement.
        </li>
        <li class="strike">
          <strong>Database Lock</strong> Place a lock on database files using
          Java 1.4 APIs to prevent separate processes from working on the same
          database.
        </li>
        <li class="strike">
          <strong>WebAdmin</strong> Integrate new WebDAV capable WebAdmin into
          the main codebase, instead of ugly debug tool.
        </li>
        <li class="strike">
          <strong>XML-RPC</strong> Update to XML-RPC release 3.0 or newer.
        </li>
        <li class="strike">
          <strong>Caching</strong> Revisit implementation of documents cache in
          the core Collection class. Clarify caching semantics, implement caching
          for all use cases (compressed, uncompressed, binary objects). Ensure
          dirty data can not be placed in the cache.
        </li>
        <li class="strike">
          <strong>XML-RPC</strong> Extend Xindice XML-RPC API to optimize transmission
          of collection's symbol table between server and the client for reduced
          traffic and improved performance.
        </li>
        <li>
          <strong>Admin Tool</strong> DatabaseRebuild utility implements just one of
          low level database administration tasks. Implement tasks for checking
          database consistency, database recovery, and any other low level tasks
          and combine them all as a single <code>xindiceadmin</code> tool.
        </li>
        <li>
          <strong>Paged</strong> Introduce Paged interface to separate logical Hash
          and Tree structures from the physical storage mechanism. Implement nio
          based Paged as an option in addition to existing raf based Paged.
        </li>
        <li class="strike">
          <strong>FullText</strong> Implement full text indexing and searching.
        </li>
        <li>
          <strong>Entity Catalogue</strong> Xindice should have internal XML entity
          catalogue and utilize it. Catalogue management operations should be made
          available via Collection API.
        </li>
        <li>
          <strong>Meta Data</strong> Review handling of creation, modification
          timestamps. This information should be primarily stored in the Filer's Record,
          and made available to the meta data service. This way a change to the document
          will require only single write to document collection, instead of two writes
          as currently is the case.
        </li>
        <li>
          <strong>Inline Meta Data</strong> Review handling of inline meta data. Currently
          it stores only <code>XML/Binary</code> bit, which can be made part of page header
          which already stores information such as creation and modification timestamp.
          This would also increase overall performance as data won't be copied by inline
          meta service implementation.
        </li>
        <li>
          <strong>Configuration</strong> It would be nice to implement user configurable
          default configuration parameters for all filers and collections, so that
          system or meta collections filers can be created with parameters specified by
          user instead of always using constants built into filer's code.
        </li>
        <li>
          <strong>Packaging</strong> Separate singe Xindice library into independent 
          server and client libraries.
        </li>
        <li>
          ...
        </li>
      </ul>
    </section>

    <section>
      <title>Xindice 1.3 Release Plan</title>
      <ul>
        <li>
          ...
        </li>
      </ul>
    </section>

    <section>
      <title>Documentation</title>
      <ul>
        <li>
          Define the tables of content for the different guides and fill in
          the holes!
        </li>
      </ul>
    </section>
  </body>
</document>
