Hello Rave Team,

First off, congratulations on your current progress and am looking forward
to seeing Rave graduate out of the incubation phase :).

Now on to my questions and thoughts. I came across Rave when looking for
production ready shindig implementations that i could as a basis for my
portal. I came across a few such as WSO2, and JIRA and CQ5. Howevere,  none
really were suitable either because of licensing or inability to be
extended or embedded. I came across Rave and liked the idea of being a
pluggable framework with the intention of being extended or used as a basis
for a framework.

For the past 5 years I have been involved in writing various portal/widget
frameworks for large Swiss banks, one of which was based or websphere
portal and a few which were completely custom. I made allot of mistakes and
am hoping I can have a few questions answered about the direction of Rave
and contribute where I can.

1. Will there be any type of SPI for navigation (pages) and content(layout,
widgets) such as like what is available for webshphere portal?

2. Are there any ideas about providing OSGI bundles of RAVE, shindig,
renderers, security, model, etc.

3. I am not a big fan of extending by overlay.  Although simple, it will
generally be a maintenance nightmare for clients when trying to upgrade
versions as developers tend to just copy a jsp and modify it. This is a
tricky area and admit that it is not easy to find a solution. I am
currently coming up with xml deceleration (format is not important) which
allows pages, to be laid out. Here is a snippit:

    <Widget id="toolbar" abstract="false" skin="default"
container="shindig" type="iframe" url="/toolbar">
        <Modes>view,edit,help,
minimized,maximized</Modes>
        <Publishes-Topics>search.*</Publishes-Topics>
    </Widget>

    <Widget id="google" abstract="false" skin="default" container="shindig"
type="iframe" url="google.com">
        <Modes>view,edit,help,minimized,maximized</Modes>
        <Publishes-Topics></Publishes-Topics>
        <Consumes-Topics>search.*</Consumes-Topics>
    </Widget>

    <Widget id="yahoo" abstract="false" skin="default" container="shindig"
type="iframe" url="yahoo.com">
        <Modes>view,edit,help,minimized,maximized</Modes>
        <Publishes-Topics>Publishes-Topics>
        <Consumes-Topics>search.*</Consumes-Topics>
    </Widget>

    <Layout name="HeaderNavFooter3Row">
        <!-- BORDER -->
        <Container id="border" layout="border" config="{gutters:false}">
            <Area id="header" settings="{region:'north', height:'150px'}" />
            <Area id="navigation" settings="{region:'west', margins:'5 0 0
0', width:'175px'}" />
            <Area id="center" settings="{region:'center', margins:'35 5 5
0', autoScroll:true}">
                <!-- COLUMNS-->
                <Container id="column" layout="column"
config="{anchor:'100%'}">
                    <Area id="col1" settings="{autoScroll:true'}" />
                    <Area id="col2" settings="{autoScroll:true}" />
                    <Area id="col3" settings="{autoScroll:true}" />
                </Container>
            </Area>
            <Area id="footer" config="{region:'south', height:'80px',
margins:'5 0 0 0'}" />
        </Container>
    </Layout>

    <root-node id="root1" theme="default" skin="default" layout="default">
        <Group-Node id="group1" title="node-group1.title">
            <Parameter id="foo">bar</Parameter>
            <Parameter id="foo">bar</Parameter>
            <Page-Node id="home" title="node-group1.home.title"
layout="HeaderNavFooter3Row">
                <Parameter id="foo">bar</Parameter>
                <Parameter id="foo">bar</Parameter>
                <Content>
                    <Add widget="toolbar" to="header"
instance-id="home.toolbar" />
                    <Add widget="google"
to-area="border.center.column.col1" instance-id="home.googleSmall" />
                    <Add widget="yahoo" to-area="border.center.column.col2"
instance-id="home.googleLarge" />
                </Content>
            </Page-Node>
        </Group-Node>
    </root-node>

    <Url-Mapping node="root1.group1" label="urlmapping-root1.group1.title">
        <Url-Mapping node="root1.group1.home"
label="urlmapping-root1.group1.home.title"/>
    </Url-Mapping>

4. Are there any plans for themeing Rave with SASS/Compass like how ExtJs
has done. it would be great if clients could just use a compass/sass
template to extend the default theme or create a new one. currently just
using a custom css is quite cumbersome. I am currently creating one for
myself and would be happy to donate it.

5. There are some strange layout issues related to widget layout and drag
an drop such as the regions/widgets do not take up the full space of the
pageContent container which leavse a right side gutter. Widgets do not
dragNDrop easily, there is a huge pixel buffer to help but it looks bad and
is difficult to get working. There is a strange issue with padding on the
regions css class. My question is are there any plans to use existing css
grid systems such as 960 or 1140? Are there any plans to use an existing JS
grid layouts such as dojo grid?

6. Will there be support for a client-side api to generate navigation,
layout and widgets instead of using the tiles to generate markup? It would
also be very nice to render a widgets outside of the pageContent area. What
about client-side API for switching pages, history, logging, tracing,
metrics, etc?

7. When developing javascript api, please use prototypical inheritance
instead of inner function closures. I would recommend something like
qooxdoos class system which supports thungs such as interfaces, statics,
singletons, interfaces, abstract, interfaces, mixins and inheritance. Write
your api so that it can be extended otherwise developers will  just copy
the whole js file or worse, modify the original. Don't try to protect
javascript developers too much with private methods, just make clear what
is public and what is not. There are always cases where the public api is
not enough so better that they can use it with the consequences than
copying whole rave files which lead to a maintenance/upgrade nightmare.

8. Any ideas for an export format of the portal such as liferay archive or
websphere xmlaccess? How do you plan to move from testing environments to
production?

9. Any plans for url-mapping which map a pretty names (services(en)|
servicios(es)) to a page. e.g. /app/page/view/18 = /services |
/app/page/view/18 = /servicios.

10. Have not looked into this yet but is there support for public pages via
anonymous or guest users? External pages like the login page will not
suffice for portals with allot of public pages.

11. Will you be documenting all steps taken to combat browser/web security
issues (very important when being evaluated for use on the on internet by
large companies)

12. when can we expect java and javascript documentation?

13. I would suggest that Rave hosts its own site (Eating your own dog food)
using rave itself along with samples.

I hope some of all of these things are on your agenda and hope you can get
back to me when you have time. We (my company) are wiling to contribute to
this excellent project if need be.

Cheers,
Jose

Reply via email to