 -----
 Downloads
 -----
 -----
 May 2009

~~
~~ 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.
~~

Apache Community

 Every volunteer project obtains its strength from the people involved in it. 
 We invite you to participate as much or as little as you choose.
 
 You can:
 
 * Use our project and provide a feedback.
 
 * Provide us with the use-cases.
 
 * Report bugs and submit patches.
 
 * Contribute code, javadocs, documentation.
  
  
 Visit the {{{http://cwiki.apache.org/confluence/display/WINK/Project+Guidelines}Project Guidelines}} for more information.

* Communication

 The Apache Wink project uses {{{./mail-lists.html}mailing lists}} primarily to communicate with its members.\
 IRC is also used for a real-time discussions. 

** IRC

 Log into #apache-wink on Freenode or use a {{{http://webchat.freenode.net/?channels=apache-wink}Web Client}}

* Issue Tracker
 
** Bug Reports

 Found bug? Enter an issue in the {{{./issue-tracking.html}Issue Tracker}}.
 
 Before submitting an issue, please:

    * Verify that the bug does in fact exist.
    
    * Search the issue tracker to verify there is no existing issue reporting the bug you've found.
    
    * Consider tracking down the bug yourself in the Wink's source 
    and submitting a patch along with your bug report. 
    This is a great time saver for the Wink developers
    and helps ensure the bug will be fixed quickly. 

** Feature Request
 
 Enhancement requests for new features are also welcome. 
 The more concrete and rationale the request is, the greater the chance it will incorporated into future releases.
 
* Source Code
 
 The project sources are accessible via the {{{./source-repository.html}SVN}}. 
 

