<webpage id="soc-2007-forrest"
      	 xmlns:h="http://www.w3.org/1999/xhtml">
  <config param="rcsdate" value="$Date: 2007/03/31 00:25:01 $"/>
  <head>
    <title>Google SoC 2007 - Project Proposal</title>
    <summary>Project proposal for integrating RDF/XML vocabularies and 
    	microformats into Apache Forrest</summary>
    <keywords>
      SinDoc, Google Summer of Code 2007, SoC 2007, Open Source, Free Software,
      ULB, Apache, Apache Forrest, RDF, Microformats
    </keywords>
  </head>
  <para>
  <ulink url="http://forrest.apache.org/">Apache Forrest</ulink> is an 
  XML-based web publishing framework that generates 
  one or more output formats from multiple input sources.
  </para>
  <para>
  This project consists of developing a set of plugins for Apache Forrest in 
  order to provide support for DOAP, FOAF, GEO, RDF Calendar, hResume and 
  hReview.
  </para>

<section id='why'>
<title>Why Bother?</title>
<para>
To achieve the primary goal of the Web[1]?
</para>
<para>
Many people now talk about web as a platform where we can read and write 
information and they call it Web 2.0. In our so called Web 2.0, every 
resource is identified by a URI[2] and provides a common interface[3] to 
other resources on the web so one can communicate with the other. In other 
words, web sites can talk to any other applications on the Web.
</para>

<para>
By supporting RDF vocabularies and Microformats[4], we'll be giving birth 
to a more powerful web, where machines will play a more important role in 
finding relationships between widely available resources.
</para>
</section>


<section id='how'>
<title>Project Plan</title>
<para>
Here is a project plan, aiming to describe <emphasis role='bold'>how</emphasis>
critical RDF/XML vocabularies and microformats can be integrated into Apache 
Forrest.
</para>

<section id='phase1'>
<title>Phase 1: Explore</title>
<subtitle>It's all about setting priorities</subtitle>
<para>
There are a number of standards on the web that claim to be important but 
are they really worth implementing? Such questions should be answered by 
Apache Forrest community members. Arguments presented should be based on 
concrete examples on the web.
</para>

<section id='approache'>
<title>Approaches</title>
<subtitle>
Our approach to integrating the required formats.
</subtitle>
<para>
Our approache to integration is quite straightforward given the fact that some 
plugins are already developed in the <ulink url="http://svn.apache.org/viewvc/forrest/trunk/whiteboard/">whiteboard</ulink> (as of March 2007). It's 
rather for me to take a deep look at Forrest as part of the Explore phase.
</para>
<para>
In addition, best practices on how to implement potential features will be
discussed within the community.
</para>
</section>
<section>
<title>Planning</title>
<table id="phase1-tl" frame="none" pgwide="1" role="plain">
<title>Phase 1: Schedule</title>
<tgroup cols="3">
<thead>
<row>
  <entry>When</entry>
  <entry>Who</entry>
  <entry>What</entry>
</row>
</thead>
<tbody>
<row>
<entry>30 April</entry>
<entry>Forrest Community</entry>
<entry>
List of formats that will be supported by Forrest and nature of the support (input/output).
<footnote><para>
The scope of a given plugin will also be specified. (e.g. what features 
to implement, suggested by the format). 
</para></footnote>
</entry>
</row>
<row>
<entry>31 April</entry>
<entry>SinDoc</entry>
<entry>
A technical document, resulting from discussions among community members 
that outlines different approaches to implementing features 
<olink targetdoc="soc-2007-forrest" targetptr="phase1">required</olink> by 
each plugin.
</entry>
</row>
</tbody>
</tgroup>
</table>
</section>

<section id='phase2'>
<title>
Phase 2: Implementation
</title>
<subtitle>
Transformation, Integration and User Experience
</subtitle>

<para>
The main focus of Forrest is perhaps <emphasis>Transformation</emphasis>
that is handled by <acronym>XSL</acronym> stylesheets.
</para>

<section id='visual-ui'>
<title>Visual and User Interface</title>
<para>
We need to make sure that pages generated by Forrest are web standards 
compliant. Data should be presented with special care to meet usability and 
requirements. CSS stylesheets are essential. Javascript and Ajax can also 
help in order to have a rich, yet simple user interface.
</para>

<para>
More important than CSS and other technical hacks, is the fact that each page 
Forrest generates should be understood by the reader as an independent 
document within a more complex system which is the site itself.
</para>

<para>
This way, Forrest users won't have a hard time customizing existing skins for 
benefiting from simple and common practices in Web design.
</para>
</section>

<section>
<title>Planning</title>
<table id="phase2-tl" frame="none" pgwide="1" role="plain">
<title>Phase 2: Schedule</title>
<tgroup cols="3">
<thead>
<row>
  <entry>When</entry>
  <entry>Who</entry>
  <entry>What</entry>
</row>
</thead>
<tbody>
<row>
<entry>9 July</entry>
<entry>SinDoc</entry>
<entry>
Develop <ulink url="http://code.google.com/p/baetle/">Baetle</ulink> and SKOS plugins with rich examples.
</entry>
</row>
<row>
<entry>14 July</entry>
<entry>SinDoc</entry>
<entry>
Add support for microformats like hCard, hResume, rel-tag, rel-license.
</entry>
</row>
<row>
<entry>31 July</entry>
<entry>SinDoc</entry>
<entry>
Add <olink targetdoc="soc-2007-forrest" targetptr="phase1">other</olink> plugings like GEO, RDF Calendar, hResume, hReview. Enhance DOAP, Baetle, SKOS and FOAF plugins.
</entry>
</row>
<row>
<entry>10 August</entry>
<entry>SinDoc</entry>
<entry>
<acronym>CSS</acronym> <olink targetdoc="soc-2007-forrest"  targetptr="visual-ui">style</olink> and User Interface.
</entry>
</row>
<row>
<entry>12 August</entry>
<entry>SinDoc</entry>
<entry>
Working out a quick guide, intended for developers to read in order to 
use plugins created.
</entry>
</row>
</tbody>
</tgroup>
</table>
</section>
</section>

<section id='phase3'>
<title>
Phase 3: Testing and Debugging
</title>
<para>
Forrest community members will be invited to test an early version (alpha) 
of the plugins created as a result of earlier phases and provide reviews and suggestions. 
Bugs will be reported and fixed according to their levels of priority. They 
can also report concerns about the visual design, although not browser-sepecific issues.
</para>

<section id='documentation'>
<title>Documentation</title>
<para>
The rather abstract documentation intended for Forrest developers should 
be extended to cover more topics and a broader audience. The result will be 
in form of a structured <emphasis role='bold'>user guide</emphasis> containing step-by-step howtos, FAQs, 
examples, etc.
</para>
</section>

<section id='platform-specific'>
<title>User Interface: Platform-specific Hacks</title>
<para>
In the first place, we'll do our best to avoid any 
platform/browser-specific code (whether CSS or Javascript), however
we're likely to be put into making sure that the output produced by
Forrest is visually the same, regardless of the supported <ulink 
url="http://en.wikipedia.org/wiki/List_of_web_browsers#Graphical">graphical
web browser</ulink> used by the user.
</para>

<para>
In addition, we need to make sure that output documents produced by Forrest
meet accessibility requirements and that people using text-based web browsers
can properly access all the information on the page. In that case, only the
<emphasis role='bold'>presentation</emphasis> is different not the <emphasis 
role='bold'>content</emphasis>.
</para>
</section>
<section id='beta-release'>
<title>Beta Release</title>
<para>
Once all critical bugs are fixed and all requests are taken care of, we 
prepare for a beta release of the plugins. It is important to freeze the 
code until the beta version is released. 
</para>
</section>
<section>
<title>Planning</title>
<table id="phase3-tl" frame="none" pgwide="1" role="plain">
<title>Phase 3: Schedule</title>
<tgroup cols="3">
<thead>
<row>
  <entry>When</entry>
  <entry>Who</entry>
  <entry>What</entry>
</row>
</thead>
<tbody>
<row>
<entry>17 August</entry>
<entry>Forrest Community<footnote><para>SinDoc will be actively fixing
bugs, of course.</para></footnote></entry>
<entry>Degugging</entry>
</row>
<row>
<entry>22 August</entry>
<entry>SinDoc</entry>
<entry>Documentation for users (e.g. User Guide, FAQ, HOWTOs).</entry>
</row>
<row>
<entry>25 August</entry>
<entry>SinDoc</entry>
<entry>Browser-specific UI optimization. Code Freeze</entry>
</row>
<row>
<entry>29 August</entry>
<entry>SinDoc</entry>
<entry>Releasing plugins</entry>
</row>
</tbody>
</tgroup>
</table>
</section>
</section>

<section id='phase5'>
<title>
Phase 5: Maintenance
</title>
<para>
After these phases are complete, we'll accept feature requests and fix bugs. 
I intend to maintain this project until 2010, even after the 
summer of code. There're so many plugins that we can still add to Forrest.
</para>
</section>
</section>

<section>
<title>
Why Me?
</title>
<para>
I[9] extended DocBook Website and developed SilkPage[10] in 2003 to better 
understand web standards and markup languages like DocBook and how to 
implement them. SilkPage is very similar to Apache Forrest as they both:
</para>

<itemizedlist>
<listitem><para>
use Ant for website generation and deployment;
</para></listitem>
<listitem><para>
rely on XSLT to transform XML documents into HTML or PDF;
</para></listitem>
<listitem><para>
provide multiple XSL and CSS themes;
</para></listitem>
<listitem><para>
use an Open Source license;
</para></listitem>
<listitem><para>
urge to promote open standards like CSS, etc.
</para></listitem></itemizedlist>

<para>
SilkPage supports some RDF/XML formats including RSS 1.0 (originally by 
Norman Walsh), FOAF (partial support), DOAP (full support), URFM (full 
support). URFM is an RDF/XML vocabulary that I created for describing 
digital files, releases and packages.
</para>
</section>

<section>
<title>
Why Apache?
</title>
<para>
I've been using software and middleware developed by the Apache Software 
Foundation since late 90s. It's good to know that the first project idea page 
I checked was that of Apache simply because I like its culture and I wished to 
have a good reason to become an Apache committer.
</para>

<para>
When I first saw the 'forrest-rdf' project idea, I was so excited (hard to 
explain) because it was something I'd already done and more importantly, it 
was something I'd chosen to do. Back then, I worked for Dixite[11] and nobody 
had asked me to use RDF/XML standards in SilkPage but when I explained to my 
project manager the advantages of using RDF, he kindly accepted and I worked 
on it with passion.
</para>
</section>

<section>
<title>References</title>
<para>
An up-to-date version of this document is available at:
http://sina.khakbaz.com/2007/soc/forrest
</para>
<h:pre>
[1]  http://www.xml.com/pub/a/2000/12/xml2000/timbl.html
[2]  http://www.w3.org/TR/webarch/
[3]  http://en.wikipedia.org/wiki/Representational_State_Transfer
[4]  http://microformats.org/
[5]  http://forrest.apache.org/docs_0_80/changes.html
[6]  [SVN]/trunk/site-author/status.xml
[7]  [SVN]/trunk/whiteboard/plugins/
[9]  http://sina.khakbaz.com/
[10] http://silkpage.markupware.com/
[11] http://www.dixite.com/
  </h:pre>
</section>
</section>
<sidebar id="gsoc-search">
<title>GSoC 2007</title>
  <!-- Google CSE Search Box Begins  -->
  <h:form id="searchbox_009007427696665646697:qy3le7qanpg" 
	  action="http://sina.khakbaz.com/2007/soc/search/">
    <h:input 	type="hidden" name="cx" 
		value="009007427696665646697:qy3le7qanpg" />
    <h:input	type="hidden" name="cof" value="FORID:9" />
    <h:input 	name="q" type="text" size="23" />
    <h:input 	type="submit" name="sa" value="Search" />
    <h:script 	type="text/javascript" 
    		src="http://google.com/coop/cse/brand?form=searchbox_009007427696665646697%3Aqy3le7qanpg"></h:script>
  </h:form>
  <!-- Google CSE Search Box Ends -->
  <!-- Add to Google Gadget -->
  <h:br/>
  </sidebar>
  <sidebar id="legend">
  <title>Legend</title>
  <para><emphasis role='bold'>When:</emphasis> Estimated Done</para>
  <para><emphasis role='bold'>Who:</emphasis> Roles</para>
  <para><emphasis role='bold'>What:</emphasis> Deliverables</para>
  <para><emphasis role='bold'>SinDoc:</emphasis> Sina Khakbaz Heshmati</para>
  </sidebar>
</webpage>
