Topic: XHTML2 core and Jira cleanup
===================================
Scribe: Diwaker Gupta
DISCLAIMER: What follows is my understanding of the IRC logs. If you feel I
have mis-interpreted something, do help me improve this document. This summary
is by no means complete, please refer to the logs for full details.
Interesting summary at: http://casa.che-che.com/~bot/forrest/
It was a new experience for a lot of people and generally enjoyable for all I
hope. Unfortunately I could not participate actively due to other engagements.
Ross skipped pleasantries and created an internal plugin to start the work on
XHTML2. As a first milestone, the goal was to use Gav's sample XHTML2 and
convert that to HTML using the xhtml2 plugin.
Cheche started the bot and Ferdinand can tell us the funny incident involving
the bot.
Nicola expressed concern that despite having all the pieces of the puzzle
(locationmap, views, xhtml2) we are having a hard time putting things
together. He boldly ventured to suggest that perhaps we should rewrite the
pipeline(s) from scratch. Other devs present shared similar thoughts. The
general feeling was that the move to XHTML2 should be taken as an opportunity
to consolidate our code base -- use locationmap as much as possible, remove
duplicated code, remove unused code, refactor where necessary and so on.
Directory Structure and Configuration
-------------------------------------
Discussion regarding the directory structure surfaced briefly, but there was
no consensus. It is an important issue that needs a little more discussion,
that will perhaps be taken up in another FT (ForrestTuesday) or hopefully
even earlier. This has been discussed earlier on the dev list:
http://www.mail-archive.com/dev@forrest.apache.org/msg00372.html
Ferdinand suggested the following layout:
my-project/
configuration/
forrest.properties
skinconfiguration.xml
sitestructure.xml
tabs.xml
content/
status.xml
** all other content
Some devs expressed concern over the disruption the new layout will bring, and
whether there was really a "need" for a new layout. Eventually the discussion
just died out. IIUC, the bottomline is that we do need a layout change at some
point of time; it just didn't happen today.
Pipeline stages
---------------
Thorsten started a discussion on being able to request any stage of the
pipeline by itself. Cheche also gave some inputs on this. At some point the
discussion digressed to talk about naming (index.tab vs. index.nav.xml) and
other issues (site.xml is data or meta-data; role of editors and content
producers etc). I'm not sure if any concrete conlusion/decision came out of
this discussion.
Later on Ross and Tim got back to this discussion. Ross tossed the idea of
using Cocoon Views (not to be confused with forrest:views) as an alternate
mechanism for achieving the same goals.
Getting started on XHTML2
-------------------------
People got off to a start after a few initial hiccups. There were some issues
with namespace resolution; an initial stylesheet to convert XHTML2 to HTML was
picked up from etherealwake.com for boot strapping (thanks Google!) which
didn't seem to work all that well (lots of problems due to namespaces and the
template not matching anything).
David has been working on a relaxng schema for XHTML2 and validation using
Cocoon. Thorsten hit a bug with 'src' attribute on some Actions in LocationMap
(I really don't understand what this all means, just trying to hash stuff out
of the logs) and Tim committed a partial fix for it; meanwhile Ross continued
work on the pipelines.
Location Resolution (thanks Tim for these notes!)
-------------------------------------------------
As a part of the making deeper use of Locationmaps in the core Sitemaps with a
goal of letting locationmaps do all location resolution and letting sitemaps
stick to the pipeline processing. For those that are familiar with name
resolution servers or the Handles Service, it might be easier to think of the
locationmap as a name resolution module or sort of a handle resolution module
in that it accepts "names" or whatever you desire to call these "hints" and
returns the location.
The thought is that by using file name "looking" hints it disguises what
locationmaps are really doing for us. By using URN-style names, we are truly
disassociating the name/hint form the physical location.
For example, here is a locationmap entry based purely on filename:
and now below is that same entry using a "name" style. One implies a certain physical location
where as the one below is truly a name that needs to be resolved to a physical location.
The format is essentially:
resource-type(dot)transform-type(dot)from-format(dot)to-format
resource-type(dot)type(dot)name
Examples of these two:
transform.xslt.xthml2.html
graphic.png.project-logo
Views: naming and plugins
-------------------------
This came across multiple times in the discussion. There is a *strong* need to
set down (and stick with) a naming convention for views and related concepts.
Further, we also need to streamline views and reduce the number of plugins
involved. Ideally, enabling views should atmost use one or two plugins.
Core functionality
------------------
There was some discussion on what should go into the core and what should be
out of it. This has come up on the dev list as well before. IIRC, moving
forward with this plugin architecture it was envisaged that Forrest Core
should only provide the baseline infrastructure (outputting the internal
format and providing a plugin framework) -- all of the remaining functionality
should be split between input and output plugins.
Continuing this theme, moving forward, without *any* plugins, Forrest should
just output the XHTML2 subset that is our intermediate formats. The output
visible to end users (XHTML, PDF, Text, Voice) *should* go into output
plugins.
Things to do for XHTML2
-----------------------
o locationmaps not working in structurer.xmap
o templates: *.ft not being picked up
o theming/navigation not being done
o templates are in the wrong place
o views should be fully configurable by the project (see patch to
forrest-xcore.conf below. This *should not* be needed)
Diff to make the internal plugin work
-------------------------------------
Index: webapp/WEB-INF/xconf/forrest-core.xconf
===================================================================
--- webapp/WEB-INF/xconf/forrest-core.xconf (revision 279235)
+++ webapp/WEB-INF/xconf/forrest-core.xconf (working copy)
@@ -130,8 +130,10 @@
@forrest.home@/whiteboard/plugins
@forrest.home@/build/plugins
@context.home@/locationmap.xml
- @forrest.home@/build/plugins/org.apache.forrest.plugin.internal.view
- @forrest.home@/build/plugins/org.apache.forrest.plugin.internal.view/resources/views
+ @forrest.home@/build/plugins/org.apache.forrest.plugin.internal.xhtml2
+ @forrest.home@/build/plugins/org.apache.forrest.plugin.internal.xhtml2/resources/views
+
+
.fv
default