On 09/21/2010 04:41 PM, Joe Schaefer wrote:
Sounds interesting, but for us we require static exports.
Since you're using flat files that might not be all that
hard for you to implement.

Why? What kind of load do you have? We(brainfood) have survied slashdotting, without resorting to fancy frontends like varnish. It's been written to be nonblocking(no synchronized keywords), use weak/soft references, and not create sessions until absolutely nescessary.

Confluence as a CMS has an interesting future ahead of it
at the ASF.  Right now we have a hard dependency on the
auto-export plugin,  whose support characteristics prevent
us from running the latest versions of confluence.  If
the situation doesn't change over the next few months,
we'll likely just phase out the CMS aspects of confluence
and replace it with something that natively supports
static exports.

We would like to support static exports too, and it might even be possible, with little effort. However, it's just not been nescessary for us, as we've never had a problem with any kind of load whatsoever.

----- Original Message ----
From: Adam Heath<doo...@brainfood.com>
To: Jacques Le Roux<jacques.le.r...@les7arts.com>
Cc: Joe Schaefer<joe_schae...@yahoo.com>; dev@ofbiz.apache.org;
infrastruct...@apache.org
Sent: Tue, September 21, 2010 5:34:10 PM
Subject: Re: ofbiz wiki(confluence)

On 09/21/2010 03:53 PM, Jacques Le Roux wrote:
Thanks Joe,

I quickly tried through Subclipse and got an error.
I guess now  Adam has a better idea of what I was talking about.
I mean maybe  Webslinger could be used, just my 2 cts...

I will attempt to describe  webslinger for those who haven't ever heard of it
before.

The major  features(bullet points) of webslinger-core are:

* Content data stored as  raw files.  This is to allow normal programs, like
grep, find, vim,  dreamweaver, photoshop, git, svn work without modifications.

* Makes use  of commons-vfs, and a custom set of layered filesystems.

* One layered  filesystem is called 'flat'.  Arbitrary attributes
(FileObject.getContent().getAttribute(name)) are stored as path/to/file@, into
separate files.  Again, this allows for easy integration with other  systems.

* Another layered filesystem is called 'wsvfs'.  This is an  overlay/cow type
filesystem, where multiple real filesystems are combined on the  fly, giving
merged directory listings, with support for up-copy and  whiteout.  Any point of
the tree can 'overlay' any other part of the tree,  altho this feature isn't
normally nescessary.

* Automatic extension  resolution.  This allows for pretty urls that don't have
extensions, and  allow the implementation on the server to be changed as
nescessary.   End-users have problems with extensions, so that is hidden.

* Any 'path'  can be configured to do it's own sub-path management. This allows
for nice urls  like /shop/product/$productId/detail and
/shop/cart/add/$productId and  /Login/Path/To/Protected/Page.  These urls then
show up nicely in hit  reports.  They are also easier for end-users to remember.

*  Automatic attribute inheritance.  Extensions are used to find the mime-type
of a file.  Or the mime-type can be set directly on the file.  Then,  any
attribute files set in /WEB-INF/DefaultMimeAttributes/$mime/$type are  inherited
for the resource in question.  This allows mapping all ${page}.cf  to
application/x-server-side-confluence, creating an attribute called 'type'  with
a value of 'confluence-page'.  More on the types in a bit.

*  Every resource has a type, and a handler.  Standard types are jsp, cgi,
binary.  Base types are event(bsf-based), code, template.  Type can  also be
servlet, or, even more advanced(but not ready to be released) is  'vaadin' as a
type.

* Several languages are integrated: template:  freemarker/velocity/text,
bsf+code:  groovy/janino(java)/jython/rhino/bsh/quercus(php).

* Macros called by a  template language can be implemented in *any* webslinger
resource(any type, any  language).  Each integrated template type has proxies
implemented that  allow it to call back into webslinger macros.  velocity->
#Merge("/path/to/file", "/template/to/wrap/it/with"), freemarker->  <@Merge
path="/path/to-file" template0="/template/to/wrap/it/with"/>.  Support  for
macros with content bodies is fully supported as well.

* Support for  one-type 'wrapper' of a text output, and then different page
styles.   Partial-ajax page updates can then skip this, and do smart updates of
regions of  the browser.

The above list is an non-inclusive list of features in  webslinger-core.  It's
really generic, and not tied to any particular  implementation.

The other major thing different about it, is that  webslinger is *itself* a
servlet container, just like catalina or glashfish.  However, what sets it apart
from all others, is that it doesn't run standalone;  instead, it is installed
into a parent container.  It then fakes/wraps  everything, to support it's fancy
stuff.  It supports running standard  servlets, but then get backed by
commons-vfs, with overlay support, etc.   This implementation isn't perfect, and
really needs to be improved  upon.

I've been working on a demo for the ofbiz community to play with.  However, the
existing embedded site in the repository was rather small, so I  wrote an
importer to pull stuff from cwiki, which is what then started this  thread.

ps: the license on all our code is asl 2.0


  Jacques

From: "Joe Schaefer"<joe_schae...@yahoo.com>
  The url is here
https://svn.apache.org/repos/infra/infrastructure/trunk/projects/cms
  and is publicly readable.



  ----- Original Message ----
From: Adam Heath<doo...@brainfood.com>
  To: Jacques Le Roux<jacques.le.r...@les7arts.com>
  Cc: dev@ofbiz.apache.org; infrastruct...@apache.org
  Sent: Tue, September 21, 2010 3:42:35 PM
Subject: Re: ofbiz  wiki(confluence)

On 09/21/2010 02:07 PM,  Jacques Le Roux wrote:
From: "Adam Heath"<doo...@brainfood.com>
  >>  On 09/21/2010 11:53 AM, Jacques Le Roux wrote:
  >>>  From: "Adam Heath"<doo...@brainfood.com>
  >>>>  So, I need some admin help with cwiki.apache.org, or at least
  advice.
I've got a script that uses xmlrpc to  confluence, and fetches all
previous  page(+versions), comments, attachments(+versions), tracks
  >>>>  renames, usernames, and commit messages. I then take all  this
data and
convert it into a  long series of git commits, with the files
layed  out
in a proper webslinger design. The author  of each git commit is the
person who changed  the page, added a comment, or uploaded a new
  attachment.

This webslinger  layout is still in flux, as is my script. The basic
  logic works, however, by fetching all meta data, storing most of  the
bulk of that in a temporary cache folder(only for  the duration of the
script), then sorting each item by  date, and replaying the set of
changes one by  one.

It's optimized by storing  the 'lastFoo' stuff for each
  page/comment/attachment/(title->pageId mapping) as needed, so that  it
can detect newer versions, etc, and not have to do  anything. A
refresh
after a full  download against the OFBIZ space takes 2 minutes, with
  nothing new to fetch.

  The issue I am having is the confluence installed on cwiki is  old.
Newer versions support returning  the
PageHistorySummary.versionComment
  >>>>  thru the rpc; currently, I have to fall back and do a  screen
scrape of
the  viewpreviousversions.action page.

  >>  CONFDEV docs definately list a versionComment field on
  >>  PageHistorySummary, that is not exposed in 3.2.0 installed on  cwiki.

Where should I  ask for help on this, getting this new api
  implemented?

infra  team: infrastruct...@apache.org
  >>>
I put them in copy
  >>
Thanks. I'm putting more information in this  email; I've left
d...@ofbiz on the cc for this email, as  others might be interested in
what I have  discovered.

I also  have suggestions to make the api more lightweight, when
  doing
incremental updates(which my system  supports).

Here are the  suggestions:

I can fetch all  attachments for a page. But the attachment data
  returned doesn't include the current version as a field. I have  to
split the download url(which is sub-optimal; it  includes the current
version as a parameter). It might  be nice to have an
AttachmentSummary
  type record.

What if uploads  an attachment, then a new version of the attachment,
  then changes the page, then deletes the attachment? How could I  fetch
that information? I don't see a way to fetch all  attachments for all
time against a particular history.  This is also a problem for deleted
pages, comments, and  labels(probably others).

  Comments in confluence support editting. Is this history stored,  and
if so, can I get access to it?
  >>
Are labels versioned?
  >>
Children of pages are versioned, only because  pages themselves are
versioned, which includes the  value of the parentId at the time the
page was changed.  However, the frontend doesn't let you see older
  children, when looking at previous versions.
  >>
It'd be nice if when calling getPageHistory, I  could request a subset
of the list, instead of *all*  page versions. If a page has 271
versions, and I have  already fetched them, and the current page has a
  version of 274, then I only really need to fetch 3  PageHistorySummary
records(to get the versionComment  from newer versions of confluence).

  >>  BlogEntrySummary doesn't include version, but BlogEntry does. And  I
can't fetch old versions of blogs.
  >>

  >>>>
As a side note, there is a  severe lack of version comments. This
script  ends up producing 3117 commits. Some of those are page
  >>>>  renames/comments/attachments, which don't have a commit  message.
Most
are page commits.  There are only 70 change messages. It'd be
nice  if
people would comment when they change a  page, but I don't see a
way to
  enforce that.

  >>>

Adam,
  >
There is currently a beginning effort to create a CMS  for apache.org
  >  (infrastructure/trunk/projects/cms) is yours related to this  effort?

No, it's not. Based on how much time  I've spent already(started my
imoprter last friday), and how  familiar I am with ofbiz, it'd
probably take me a 2 months to  get mostly feature compatible with
confluence(that's for a  single person working in his spare time).

  Jacques
PS: Not sure how to access to  infrastructure/trunk/projects/cms/README
with the rights I  have

You mean it's not public?











Reply via email to