<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.8-dev">
<meta name="Forrest-skin-name" content="pelt">
<title>Apache Forrest: Events</title>
<link type="text/css" href="skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
<link type="text/css" href="skin/profile.css" rel="stylesheet">
<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
<link rel="shortcut icon" href="favicon.ico">
</head>
<body onload="init()">
<script type="text/javascript">ndeSetTextSize();</script>
<div id="top">
<!--+
    |breadtrail
    +-->
<div class="breadtrail">
<a href="http://www.apache.org/">apache</a> &gt; <a href="http://forrest.apache.org/">forrest</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</div>
<!--+
    |header
    +-->
<div class="header">
<!--+
    |start group logo
    +-->
<div class="grouplogo">
<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="images/apache-forrest.png" title="The Apache Software Foundation"></a>
</div>
<!--+
    |end group logo
    +-->
<!--+
    |start Project Logo
    +-->
<div class="projectlogo">
<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="images/project-logo.gif" title="Apache Forrest"></a>
</div>
<!--+
    |end Project Logo
    +-->
<!--+
    |start Search
    +-->
<div class="searchbox">
<form action="http://www.google.com/search" method="get" class="roundtopsmall">
<input value="forrest.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
                    <input name="Search" value="Search" type="submit">
</form>
</div>
<!--+
    |end search
    +-->
<!--+
    |start Tabs
    +-->
<ul id="tabs">
<li>
<a class="unselected" href="index.html">Welcome</a>
</li>
<li class="current">
<a class="selected" href="contrib.html">Developers</a>
</li>
<li>
<a class="unselected" href="versions/index.html">Versioned Docs</a>
</li>
<li>
<a class="unselected" href="pluginDocs/index.html">Plugins</a>
</li>
<li>
<a class="unselected" href="tools/index.html">Tools</a>
</li>
</ul>
<!--+
    |end Tabs
    +-->
</div>
</div>
<div id="main">
<div id="publishedStrip">
<!--+
    |start Subtabs
    +-->
<div id="level2tabs"></div>
<!--+
    |end Endtabs
    +-->
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<!--+
    |breadtrail
    +-->
<div class="breadtrail">

             &nbsp;
           </div>
<!--+
    |start Menu, mainarea
    +-->
<!--+
    |start Menu
    +-->
<div id="menu">
<div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Getting involved</div>
<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="contrib.html" title="Everyone is a developer and has something to contribute">Contributing</a>
</div>
<div class="menuitem">
<a href="mail-lists.html" title="Discussion mail lists are the heart of the project: dev, user, svn">Mail lists and discussion</a>
</div>
<div class="menuitem">
<a href="issues.html" title="Issue tracker manages known issues and desired enhancements">Reporting bugs and issues</a>
</div>
<div class="menuitem">
<a href="forrest-friday.html" title="ForrestFriday monthly get-together">ForrestFriday IRC</a>
</div>
<div class="menupage">
<div class="menupagetitle">Events</div>
</div>
<div onclick="SwitchMenu('menu_1.1.6', 'skin/')" id="menu_1.1.6Title" class="menutitle">Project</div>
<div id="menu_1.1.6" class="menuitemgroup">
<div class="menuitem">
<a href="guidelines.html" title="Open development guidelines to encourage participation">Project guidelines</a>
</div>
<div class="menuitem">
<a href="committed.html" title="Notes about contribution">Being committed</a>
</div>
<div class="menuitem">
<a href="roles.html" title="Tasks to keep the project flowing">Project roles</a>
</div>
</div>
</div>
<div onclick="SwitchMenu('menu_1.2', 'skin/')" id="menu_1.2Title" class="menutitle">Resources and Infrastructure</div>
<div id="menu_1.2" class="menuitemgroup">
<div class="menuitem">
<a href="asf-infrastructure.html" title="Explain the ASF infrastructure">Introduction</a>
</div>
<div class="menuitem">
<a href="mail-lists.html" title="Discussion mail lists are the heart of the project: dev, user, svn">Mail lists</a>
</div>
<div class="menuitem">
<a href="issues.html" title="Issue tracker manages known issues and desired enhancements">Issue management</a>
</div>
<div class="menuitem">
<a href="svn.html" title="Access to the Subversion (SVN) version control system">Version control</a>
</div>
<div class="menuitem">
<a href="http://forrest.zones.apache.org/" title="Demonstrations and testbed at forrest.zones.apache.org">Demonstrations</a>
</div>
<div class="menuitem">
<a href="gump.html">Gump integration</a>
</div>
<div onclick="SwitchMenu('menu_1.2.7', 'skin/')" id="menu_1.2.7Title" class="menutitle">Planning notes</div>
<div id="menu_1.2.7" class="menuitemgroup">
<div class="menuitem">
<a href="plan/index.html">Overview</a>
</div>
<div class="menuitem">
<a href="plan/internal-xhtml.html">Internal XHTML</a>
</div>
</div>
<div class="menuitem">
<a href="todo.html">Todo</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Best Practices and Procedures</div>
<div id="menu_1.3" class="menuitemgroup">
<div class="menuitem">
<a href="howto-dev.html" title="Describes tips and procedures for efficiently developing with Forrest.">Development tips</a>
</div>
<div class="menuitem">
<a href="subversion_bestpractices.html" title="Best practice notes for Subversion">Subversion</a>
</div>
<div class="menuitem">
<a href="documentation_bestpractices.html" title="Best practice notes for documentation">Documentation</a>
</div>
<div class="menuitem">
<a href="howto-howto.html" title="Instructions for writing             a new howto-document">Write a How-to</a>
</div>
<div onclick="SwitchMenu('menu_1.3.5', 'skin/')" id="menu_1.3.5Title" class="menutitle">Committer notes</div>
<div id="menu_1.3.5" class="menuitemgroup">
<div class="menuitem">
<a href="zone.html" title="Notes for committers to manage forrest.zones.apache.org">Zone management</a>
</div>
<div class="menuitem">
<a href="procedures/release/How_to_release.html" title="Instructions on preparing and creating a new Forrest release.">How to release</a>
</div>
<div class="menuitem">
<a href="procedures/How_to_publish_docs.html" title="Instructions on publishing the Forrest             Website">Publishing Forrest documentation</a>
</div>
</div>
</div>
<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Proposals</div>
<div id="menu_1.4" class="menuitemgroup">
<div class="menuitem">
<a href="proposal-asf-forrestbot.html">ASF Forrestbot</a>
</div>
</div>
<div id="credit"></div>
<div id="roundbottom">
<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
<!--+
  |alternative credits
  +-->
<div id="credit2">
<a href="http://apachecon.com/2007/EU/"><img border="0" title="ApacheCon Europe 2007" alt="ApacheCon Europe 2007 - logo" src="http://apache.org/ads/ApacheCon/2007-europe-125x125.png" style="width: 125px;height: 125px;"></a><a href="http://people.apache.org/calendar.html#200711"><img border="0" title="ApacheCon US 2007" alt="ApacheCon US 2007 - logo" src="http://apache.org/ads/ApacheCon/2007-usa-125x125.png" style="width: 125px;height: 125px;"></a>
</div>
</div>
<!--+
    |end Menu
    +-->
<!--+
    |start content
    +-->
<div id="content">
<div title="Portable Document Format" class="pdflink">
<a class="dida" href="events.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
        PDF</a>
</div>
<div class="trail">Font size: 
	          &nbsp;<input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button">      
	          &nbsp;<input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
	          &nbsp;<input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
</div>
<h1>Apache Forrest: Events</h1>
<div id="minitoc-area">
<ul class="minitoc">
<li>
<a href="#upcoming">Upcoming events</a>
<ul class="minitoc">
<li>
<a href="#forrest-friday">ForrestFriday monthly get-together</a>
</li>
</ul>
</li>
<li>
<a href="#past">Past events</a>
<ul class="minitoc">
<li>
<a href="#apachecon-us-2006">ApacheCon US 2006 (9-13 October 2006)</a>
<ul class="minitoc">
<li>
<a href="#WE21-austin-2006">ApacheCon Session: WE21: Single Source Publishing with Apache Forrest</a>
</li>
</ul>
</li>
<li>
<a href="#apachecon-eu-2006">ApacheCon EU 2006 (26-30 June)</a>
<ul class="minitoc">
<li>
<a href="#FR19-dublin-2006">ApacheCon Session: FR19: Single Source Publishing with Apache Forrest</a>
</li>
</ul>
</li>
<li>
<a href="#apachecon-us-2005">ApacheCon US 2005 (10-14 December)</a>
<ul class="minitoc">
<li>
<a href="#fs-ac-us-2005">ApacheCon Session: Single Source Publishing with Apache Forrest</a>
</li>
</ul>
</li>
<li>
<a href="#apachecon-eu-2005">ApacheCon Europe 2005 (18-22 July)</a>
<ul class="minitoc">
<li>
<a href="#ht-stuttgart-2005">Apache committers hackathon</a>
</li>
<li>
<a href="#ws-stuttgart-2005">Apache Forrest workshop on Views</a>
</li>
<li>
<a href="#ua-stuttgart-2005">Usability professionals meeting</a>
</li>
<li>
<a href="#rf-stuttgart-2005">ApacheCon Session: Single Source Publishing with Apache Forrest</a>
</li>
<li>
<a href="#gt-stuttgart-2005">Apache Forrest get-together</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
    
<a name="N1000D"></a><a name="upcoming"></a>
<h2 class="underlined_10">Upcoming events</h2>
<div class="section">
<a name="N10013"></a><a name="forrest-friday"></a>
<h3 class="underlined_5">ForrestFriday monthly get-together</h3>
<p>
          On the second Friday of each month we have a 24-hour get-together
          using IRC and other collaborative tools, to work on Forrest
          development and get to know each other. See how to
          <a href="forrest-friday.html">participate</a>.
        </p>
</div>
    
<a name="N10022"></a><a name="past"></a>
<h2 class="underlined_10">Past events</h2>
<div class="section">
<a name="N10028"></a><a name="apachecon-us-2006"></a>
<h3 class="underlined_5">ApacheCon US 2006 (9-13 October 2006)</h3>
<p>
          
<a href="http://www.us.apachecon.com/">ApacheCon US 2006</a> - Please
          make plans to join us for the conference in Austin, Texas, USA on 9-13
          October 2006.
        </p>
<p>
          Apart from all of the general ApacheCon events, there are a number of
          Forrest-specific events. In chronological order ...
        </p>
<a name="N10038"></a><a name="WE21-austin-2006"></a>
<h4>ApacheCon Session: WE21: Single Source Publishing with Apache Forrest</h4>
<p>
            Wednesday 11 October - Official ApacheCon session conducted by
            Ferdinand Soethe.
            <a href="http://www.us.apachecon.com/html/sessions.html">Read
            more</a>.
          </p>
<a name="N10047"></a><a name="apachecon-eu-2006"></a>
<h3 class="underlined_5">ApacheCon EU 2006 (26-30 June)</h3>
<p>
          
<a href="http://apachecon.com/2006/EU/">ApacheCon EU 2006</a> - Please
          make plans to join us for the conference in Dublin, Ireland on 26-30
          June 2006.
        </p>
<p>
          Apart from all of the general ApacheCon events, there are a number of
          Forrest-specific events. In chronological order ...
        </p>
<a name="N10057"></a><a name="FR19-dublin-2006"></a>
<h4>ApacheCon Session: FR19: Single Source Publishing with Apache Forrest</h4>
<p>
            Friday 30 June - Official ApacheCon session conducted by Ferdinand
            Soethe.
            <a href="http://www.eu.apachecon.com/konferenzen/psecom,id,488,track,3,nodeid,,_language,uk.html#session-fr19">Read
            more ...</a>
          
</p>
<div class="note">
<div class="label">Note</div>
<div class="content">
            This session was re-scheduled for Friday 30 June 14:30-15:30.
          </div>
</div>
<a name="N10069"></a><a name="apachecon-us-2005"></a>
<h3 class="underlined_5">ApacheCon US 2005 (10-14 December)</h3>
<p>
          
<a href="http://apachecon.com/2005/US/">ApacheCon US 2005</a> took
          place in San Diego, California, USA on 10-14 December 2005.
        </p>
<p>
          Apart from all of the general ApacheCon events, there is one
          Forrest-specific event.
        </p>
<a name="N10079"></a><a name="fs-ac-us-2005"></a>
<h4>ApacheCon Session: Single Source Publishing with Apache Forrest</h4>
<p>
            Tuesday 13 December at 09:00 to 10:00 - Official ApacheCon session
            conducted by Ferdinand Soethe. See the
            <a href="http://apachecon.com/2005/US/html/sessions.html">ApacheCon
            Schedule</a> Session TU01. The event is only open to ApacheCon
            attendees.
          </p>
<a name="N10088"></a><a name="apachecon-eu-2005"></a>
<h3 class="underlined_5">ApacheCon Europe 2005 (18-22 July)</h3>
<p>
          
<a href="http://apachecon.com/2005/EU/">ApacheCon Europe 2005</a> in
          Stuttgart, Germany on 18-22 July 2005. For the first time there is a
          session related to Apache Forrest.
        </p>
<p>
          Apart from all of the general ApacheCon events, there are a number of
          Forrest-specific events. In chronological order ...
        </p>
<a name="N10098"></a><a name="ht-stuttgart-2005"></a>
<h4>Apache committers hackathon</h4>
<p>
            Monday 18 July and Tuesday 19 July all day - Open to any Apache
            committer. Among the many topics, some of us will informally chat
            about Apache Forrest and maybe fix some bugs. We will probably
            collaborate with the Apache Lenya committers too.
          </p>
<a name="N100A2"></a><a name="ws-stuttgart-2005"></a>
<h4>Apache Forrest workshop on Views</h4>
<p>
            Monday 18 July commencing at 18:30 - We will go out to dinner and
            then meet for a developers workshop specifically about the new Views
            plugin development. Topics will include Views, XHTML2 internal
            format, and general project planning. Discussions will be technical
            and will assume knowledge of Forrest. We will certainly answer
            questions to ensure that people understand the background. However
            the main aim is an intensive project design session. The event is
            open to anybody, you don't need to be attending ApacheCon. Venue and
            Directions: Gather at the foyer of the ApacheCon.
          </p>
<a name="N100AC"></a><a name="ua-stuttgart-2005"></a>
<h4>Usability professionals meeting</h4>
<p>
            Tuesday 19 July commencing at 18:30 - Johannes Schaefer will present
            Apache Forrest to an informal meeting of usability professionals.
            The event is open to other German-speaking people. See
            <a href="http://www.gui-design.de/ak/ak_050719.htm">further
            information</a>.
          </p>
<a name="N100BA"></a><a name="rf-stuttgart-2005"></a>
<h4>ApacheCon Session: Single Source Publishing with Apache Forrest</h4>
<p>
            Wednesday 20 July at 14:30 to 15:30 - Official ApacheCon session
            conducted by Ross Gardler and Ferdinand Soethe. See the
            <a href="http://apachecon.com/2005/EU/html/sessions.html">ApacheCon
            Schedule</a> Session WE16. The event is only open to ApacheCon
            attendees.
          </p>
<a name="N100C8"></a><a name="gt-stuttgart-2005"></a>
<h4>Apache Forrest get-together</h4>
<p>
            Wednesday 20 July commencing at 20:00 - Informal get together to
            discuss any topic related to Apache Forrest. Follows on from the
            session earlier in the day. Please come and meet other Forrest
            developers and users. Describe your own use cases. The event is open
            to anybody, you don't need to be attending ApacheCon. Venue and
            Directions: Gather at the foyer of the ApacheCon at 20:00. The event
            will be held at Stuttgart University of Applied Sciences Many thanks
            to HfT. See
            (<a href="http://www.hft-stuttgart.de/Hochschule/wirueberuns/Lageplan/">HfT
            map</a>) which is just a few steps north-west of the ApacheCon-site:
          </p>
<p>
            
<img alt="map of sites" src="apacheconsites.jpg">
          </p>
</div>
  
</div>
<!--+
    |end content
    +-->
<div class="clearboth">&nbsp;</div>
</div>
<div id="footer">
<!--+
    |start bottomstrip
    +-->
<div class="lastmodified">
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<div class="copyright">
        Copyright &copy;
         2002-2007 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
</div>
<!--+
    |end bottomstrip
    +-->
</div>
</body>
</html>
