<!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>