<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Nachricht</TITLE>
<META content="MSHTML 6.00.2800.1126" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>Shawn,</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>ok,
that's pretty standard (essentially, customer having bought the product and
not so much using it). I've been working for</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>Vignette for like 2.5 yrs, lately as technical architect, and left them
like mid of last year when I got too</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>much
bored by the fact that I had to rewrite everything from scratch every time... I
e.g. lead developed the</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>Allianz.com cms using Tcl and much pl/sql in an object oriented design. I
used caching... </FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>I can
definitely say that you can replace your "OID" (SHOW ID) stuff easily by
mod_rewrite:</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT size=2>RewriteEngine
on<BR>RewriteRule ^/bla/(.+)/(.*)\.html$ /bla/$1.jsp?ID=$2&%{QUERY_STRING}
[PT]<BR>RewriteRule ^/bla/(.+)/(.*)$ /bla/$1.jsp?ID=$2&%{QUERY_STRING}
[PT]<BR>RewriteRule ^/bla/(.+)/$ /bla/$1.jsp?ID=&%{QUERY_STRING}
[PT]<BR>RewriteRule ^/bla/(.+)$ /bla/$1.jsp?ID=&%{QUERY_STRING}
[PT]</FONT><BR></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>Ok,
that's just a starter for a webapp called, obviously, bla...</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>Tcl
allows for some pretty neat things like</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>a, b
and what? Of course, [ </FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>
set a set</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>
$a b c</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>].</FONT></DIV></SPAN>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>With
Java, that kind of stuff will cause you problems, if, e.g. your database returns
the name of a function</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>that
has to be called to, e.g. display a given object. In my Allianz project, the
database returns</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>an xml
tree of objects, and each object defines by name the display functions that it
wants</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>to
use. Now, you can work around such situations pretty easily in Java, e.g. as I
did it when</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>I
migrated that CMS to JSP - I just call another JSP by name, and my recursive
function calls</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>have
been turned to recursive calls to tags. The current "cursor" to a node is
simply held in</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>the
request.</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>Then,
"exec" calls need to be threated thoroughly. For example, I wrote a small Perl
wrapper</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>in C++
that used perlembed and then Tcl load to use Perl inside a Tcl script. What I'm
saying</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>is,
that as a scripted language, Tcl allows to do all sorts of extremely ugly
things, and these</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>can
cause you bigger headaches than simply caching et al.</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>--</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>A
completely different perspective is the system environment you currently
have. Vignette is pretty</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>good
at using processes here and there (e.g., on the Webserver you've got that
caching plugin,</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>and
the cmd part of the cds to uncache stuff; yet, that process can as well run on
another</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>box,
as long as it has filesystem access). Make sure you really do understand the
system</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>architecture well.</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>--</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>In
fact, you are not sacrificing Workflow, as you are not using it in the first
place, and from</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>my
experience, the workflow like 99 % of the people really want (2 step review) can
be</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>written from scratch just too easily. Add a flag to your content items
indicating the</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>workflow state. A typical workflow hierarchy is:</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>1 edit
state</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>2
submitted state</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>...
review process</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>3
pending state</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>4 live
state</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>5
expiring state</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>6
expired state</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>7
deactivated state</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>8
deleted state</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>3 and
5 help you to not having to check each content item at any time an automation
runs, </FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>to
find out what </FONT></SPAN><SPAN class=656440021-09012003><FONT face=Arial
color=#0000ff size=2>to set online/offline. Of course, that's just one way to do
it; the real "workflow" </FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>happens </FONT></SPAN><SPAN class=656440021-09012003><FONT face=Arial
color=#0000ff size=2>between 2 and 3. Items are on the live site visible only in
states 4 and 5. You can in</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>addition easily add a versioning scheme; that depends strongly on your db
model,</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>yet,
basically, each content item has an id under which it is know externally (and
</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>cached, that ID never changes), and a "real" id that identifies the
currently "working",</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>respectively, "live" version of the object.</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>--</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>Generally, migrating from Tcl to Java is, at least in my view, a complete
rewrite of the code.</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>I
would</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>a)
analyse the existing code/data model</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>b)
analyse the system architecture</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>c)
create a migration plan to replace the system bit by bit.</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>Always
keep in mind, for the end user, it is pretty irrelevant whether the backend
uses</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>Tcl or
Java. I'd probably start with the CDA first, as it's typically the more simple
thing,</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff size=2>and
then migrate the CMA, making necessary adaptions to the data model as
required.</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2>M</FONT></SPAN></DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=656440021-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<DIV></DIV>
<DIV class=OutlookMessageHeader lang=de dir=ltr align=left><FONT face=Tahoma
size=2>-----Ursprüngliche Nachricht-----<BR><B>Von:</B>
owner-opencms-dev@www.opencms.org [mailto:owner-opencms-dev@www.opencms.org]
<B>Im Auftrag von </B>Bernard, Shawn<BR><B>Gesendet:</B> Thursday, January 09,
2003 9:41 PM<BR><B>An:</B> 'opencms-dev@www.opencms.org'<BR><B>Betreff:</B>
RE: [opencms-dev] convert Vignette sites to OpenCMS<BR><BR></FONT></DIV>
<DIV><SPAN class=266253420-09012003><FONT face=Arial color=#ff0000
size=2>Those are excellent points. As far as Vignette functionality, we
are using Tcl and caching. We are NOT using records or workflow (because
Vignette workflow sucks - we'd like our next CMS solution to include a usable
workflow component). We understand that there will definately be a lot
of work porting from Tcl to JSP/Java, and we are willing to take that
hit.</FONT></SPAN></DIV><SPAN class=266253420-09012003>
<DIV><BR><FONT face=Arial color=#ff0000 size=2>We are dedicated to using
JSP/Java in our next CMS, too. We have a number of excellent JSP/Java
people in our department and we want to leverage that knowledgebase.
Going to something like PHP (as much as I like it) does not seem like an
option.</FONT></DIV>
<DIV><FONT face=Arial color=#ff0000 size=2></FONT> </DIV>
<DIV></SPAN><SPAN class=266253420-09012003><FONT face=Arial color=#ff0000
size=2>What Vignette is to us, basically, is all backend stuff. We are
not using their personalization, or other components. We are using it,
basically, as a development environment. When we switch over, we need to
be able to keep the functionality, from a user's perspective, the same.
The datamodel/DB cannot change (except, perhaps, very minor
changes).</FONT></SPAN></DIV>
<DIV><SPAN class=266253420-09012003><FONT face=Arial color=#ff0000
size=2><BR>I've been poking around at OpenCMS and Red Hat CCM (formally
ArsDigita). They both feel a little confining for my tastes, but maybe
that's because I do not have very much experience with either of them.
It seems that, at this point, just using JSP/Java (Tomcat, etc.) and using CVS
for version control, and perhaps oscache for the caching mechanism, seems like
a strong possibility. Of course, we'll have to sacrifice workflow and
other things like that, but maybe that's a bullet that we have to
bite.<BR><BR>Shawn</FONT></SPAN></DIV>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma
size=2>-----Original Message-----<BR><B>From:</B> Matthias Nott
[mailto:matthias.nott@businessobjects.com]<BR><B>Sent:</B> Thursday, January
09, 2003 3:30 PM<BR><B>To:</B>
opencms-dev@www.opencms.org<BR><B>Subject:</B> AW: [opencms-dev] convert
Vignette sites to OpenCMS<BR><BR></FONT></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2>Shawn,</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2>The basic question will be whether or not they are actually using the
Vignette functionality. I know Vignette</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff size=2>up
to V/6 pretty well and</FONT></SPAN><SPAN class=023551920-09012003><FONT
face=Arial color=#0000ff size=2> see the following bits that may be of
interest:</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff size=2>a)
caching (could be replaced e.g. by
opensymphony.org/oscache)</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff size=2>b)
url rewrite (can be replaced by e.g. mod_rewrite)</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff size=2>c)
"records" (you perhaps don't want to use them in the first
place)</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff size=2>d)
which language do they use - vign supports JSP (ok, say, they have a Java
API), but many sites are still Tcl</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff size=2>So
basically there is no general answer to your question, except that _yes_,
there are many open source cms'es</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2>around that can deliver many things very similar, or even superior to
at least what I know (pre-V/7). Some</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff size=2>of
the hottest candidates are opencms (Java), and, in terms of functionality
probably even more advanced, Typo3</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2>(PHP).</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff size=2>A
very simple question you can seriously ask your customers is this: What are
you actually using from</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2>your CMS functionality?</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2>Cheers,</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2>M</FONT></SPAN></DIV>
<DIV><SPAN class=023551920-09012003><FONT face=Arial color=#0000ff
size=2></FONT></SPAN> </DIV>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<DIV></DIV>
<DIV class=OutlookMessageHeader lang=de dir=ltr align=left><FONT
face=Tahoma size=2>-----Ursprüngliche Nachricht-----<BR><B>Von:</B>
owner-opencms-dev@www.opencms.org
[mailto:owner-opencms-dev@www.opencms.org] <B>Im Auftrag von </B>Bernard,
Shawn<BR><B>Gesendet:</B> Thursday, January 09, 2003 8:12 PM<BR><B>An:</B>
'opencms-dev@opencms.com'<BR><B>Betreff:</B> [opencms-dev] convert
Vignette sites to OpenCMS<BR><BR></FONT></DIV>
<P><FONT size=2>We have a bunch of sites running on Vignette, and all of
them have a very complex, unique content management system. Each has
its own unique datamodel and content management application, as well as
content display application.</FONT></P>
<P><FONT size=2>We are considering moving away from Vignette and to an
open source CMS that supports JSP/Java.</FONT> </P>
<P><FONT size=2>Does anyone have any experience porting over complex sites
to OpenCMS? It is absolutely necessary that we keep the current
datamodels of the sites, as well as all the functionality of the sites'
content management applications.</FONT></P>
<P><FONT size=2>Does anyone out there have experience with this? Is
this even possible? Or will I have to adopt the OpenCMS
methodology/model of doing content management?</FONT></P>
<P><FONT size=2>Thanks,</FONT> </P>
<P><FONT size=2>Shawn</FONT>
</P></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>