dims 01/06/07 10:38:29 Modified: xdocs Tag: cocoon_20_branch docs-book.xml index.xml site-book.xml Log: Sync xdocs from 2.1 HEAD with 2.0 Revision Changes Path No revision No revision 1.3.2.1 +1 -1 xml-cocoon2/xdocs/docs-book.xml Index: docs-book.xml =================================================================== RCS file: /home/cvs/xml-cocoon2/xdocs/docs-book.xml,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -r1.3 -r1.3.2.1 --- docs-book.xml 2001/06/01 15:49:17 1.3 +++ docs-book.xml 2001/06/07 17:38:20 1.3.2.1 @@ -28,6 +28,6 @@ <separator/> <external label="Code Repository" href="http://xml.apache.org/websrc/index.cgi/xml-cocoon2/"/> <external label="Dev Snapshots" href="http://xml.apache.org/from-cvs/xml-cocoon/"/> - <external label="Mail Archive" href="http://marc.theaimsgroup.com/?l=xml-cocoon-users&r=1amp;w=2"/> + <external label="Mail Archive" href="http://marc.theaimsgroup.com/?l=xml-cocoon-users"/> <external label="Bug Database" href="http://nagoya.apache.org/bugzilla/index.html"/> </book> 1.1.1.1.2.1 +299 -0 xml-cocoon2/xdocs/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/xml-cocoon2/xdocs/index.xml,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -u -r1.1.1.1 -r1.1.1.1.2.1 --- index.xml 2001/05/09 20:50:22 1.1.1.1 +++ index.xml 2001/06/07 17:38:21 1.1.1.1.2.1 @@ -32,5 +32,304 @@ </p> </s1> + <s1 title="A new look"> + <p>The Cocoon Project will evidence its new course with a new logo that was + designed by Cocoon's creator Stefano Mazzocchi. Here it is:</p> + + <figure src="images/cocoon2.gif" alt="The new Cocoon Logo"/> + </s1> + + <s1 title="Introduction"> + <p>The Cocoon Project has gone a long way since its creation on + January 1999. It started as a simple servlet for static XSL styling and became + more and more powerful as new features were added. Unfortunately, design + decisions made early in the project influenced its evolution. Today, some of + those constraints that shaped the project were modified as XML standards have evolved and + solidified. For this reason, those design decisions need to be reconsidered + under this new light.</p> + + <p>While Cocoon started as a small step in the direction of a new + web publishing idea based on better design patterns and reviewed estimations + of management issues, the technology used was not mature enough for tools to + emerge. Today, most web engineers consider XML as the key for an improved web + model and web site managers see XML as a way to reduce costs and ease + production.</p> + + <p>In an era where services rather than software will be key for + economic success, a better and less expensive model for web publishing will + be a winner, especially if based on open standards.</p> + </s1> + + <s1 title="Passive APIs vs. Active APIs"> + <p>Web serving environments must be fast and scalable to be + useful. Cocoon1 was born as a "proof of concept" rather than + production software and had significant design restrictions, based mainly on + the availability of freely redistributable tools. Other issues were lack of + detailed knowledge on the APIs available as well as underestimation of the + project success, being created as a way to learn XSL rather than a full + publishing system capable of taking care of all XML web publishing needs.</p> + + <p>For the above reasons, Cocoon 1 was based on the DOM level 1 + API which is a <em>passive</em> API and was intended mainly for client side + operation. This is mainly due to the fact that most DOM + implementations require the document to reside in memory. While this is + practical for small documents and thus good for the "proof of + concept" stage, it is now considered a main design constraint for Cocoon + scalability.</p> + + <p>Since the goal of Cocoon 2 is the ability to process + simultaneously multiple 100Mb documents in JVM with a few Mbs of heap size, + careful memory use and tuning of internal components is a key issue. To reach + this goal, an improved API model was needed. This is now identified in the SAX + API which is, unlike DOM, event based (so <em>active</em>, in the sense that its + design is based on the <em>inversion of control</em> principle).</p> + + <p>The event model allows document generators to trigger events that get handled + by the various processing stages and finally get + serialized onto the response stream. This has a significant impact on both + performance (effective and user perceived) and memory needs:</p> + + <dl> + <dt>Incremental operation</dt> + <dd> + The response is created during document production. + Client's perceived performance is dramatically + improved since clients can start receiving data as soon as it is created, + not after all processing stages have been performed. In those cases where + incremental operation is not possible (for example, element sorting), + internal buffers store the events until the operation can be performed. + However, even in these cases performance can be increased with the use of + tuned memory structures. + </dd> + <dt>Lowered memory consumption</dt> + <dd> + Since most of the + server processing required in Cocoon is incremental, an incremental model + allows XML production events to be transformed directly into output events + and character written on streams, thus avoiding the need to store them in + memory. + </dd> + <dt>Easier scalability</dt> + <dd> + Reduced memory needs allow a greater number of + concurrent operations to take place simultaneously, thus allowing the + publishing system to scale as the load increases. + </dd> + <dt>More optimizable code model</dt> + <dd> + Modern virtual machines are based on the idea of <em>hotspots</em>, + code fragments that are used often and, if optimized, increase the process + execution speed by large amounts. + This new event model allows easier detection of hotspots since it is a + method driven operation, rather than a memory driven one. Hot methods can + be identified earlier and can be better optimized. + </dd> + <dt>Reduced garbage collection</dt> + <dd> + Even the most advanced + and lightweight DOM implementation require at least three to five times + (and sometimes much more than this) more memory than the original document + size. This not only reduces the scalability of the operation, but also + impacts overall performance by increasing the amount of memory garbage that + must be collected, tying up CPU cycles. Even if modern + virtual machines have reduced the overhead of garbage collection, + less garbage will always benefit performance and scalability. + </dd> + </dl> + + <p>The above points alone would be enough for the Cocoon 2 + paradigm shift, even if this event based model impacts not only the general + architecture of the publishing system but also its internal processing + components such as XSLT processing and PDF formatting. These components will + require substantial work and maybe design reconsideration to be able to follow + a pure event-based model. The Cocoon Project will work closely with the other + component projects to be able to influence their operation in this direction.</p> +</s1> + +<s1 title="Reactors Reconsidered"> + <p>Another design choice that should be revised is the reactor + pattern that was introduced to allow components to be connected in more + flexible way. In fact, by contrast to the fixed pipe model used up to Cocoon + 1.3.1, the reactor approach allows components to be dynamically connected, + depending on reaction instructions introduced inside the documents.</p> + + <p>While this at first seemed a very advanced and highly + appealing model, it turned out to be a very dangerous approach. The first + concern is mainly technical: porting the reactor pattern under an event-based + model requires limitations and tradeoffs since the generated events must be + cached until a reaction instruction is encountered.</p> + + <p>But even if the technical difficulties could be solved, a key limitation + remains: there is no single point of management.</p> +</s1> + +<s1 title="Management Considerations"> + <p>The web was created to reduce information management costs by + distributing them back on information owners. While this model is great for + user communities (scientists, students, employees, or people in general) each + of them managing small amount of personal information, it becomes impractical + for highly centralized information systems where <em>distributed management</em> + is simply not practical.</p> + + <p>While in the HTML web model the page format and URL names + where the only necessary contracts between individuals to create a world wide + web, in more structured information systems the number of contracts increases + by a significant factor due to the need of coherence between the + hosted information: common style, common design issues, common languages, + server side logic integration, data validation, etc...</p> + + <p>It is only under this light that XML and its web model reveal + their power: the HTML web model had too little in the way of contracts to be + able to develop a structured and more coherent distributed information system, + a reason that is mainly imposed by the lack of good and algorithmically certain + information indexing and knowledge seeking systems. Lacks that tend to degrade + the quality of the truly distributed web in favor of more structured web sites + (that based their improved site structure on internal contracts).</p> + + <p>The simplification and engineering of web site management is + considered one of the most important Cocoon 2 goals. This is done mainly by + technologically imposing a reduced number of contracts and placing them in a + hierarchical shape, suitable for replacing current high-structure web site + management models.</p> + + <p>The model that Cocoon 2 adopts is the "pyramid model of + web contracts" which is outlined in the picture below</p> + + <figure src="images/pyramid-model.gif" alt="The Cocoon 2 Pyramid Model of Contracts"/> + + <p>and is composed by four different working contexts (the rectangles)</p> + + <dl> + <dt>Management</dt> + <dd> + The people that decide what the site should + contain, how it should behave and how it should appear + </dd> + <dt>Content</dt> + <dd> + The people responsible for writing, owning and managing + the site content. This context may contain several sub-contexts - + one for each language used to express page content. + </dd> + <dt>Logic</dt> + <dd> + The people responsible for integration with dynamic + content generation technologies and database systems. + </dd> + <dt>Style</dt> + <dd> + The people responsible for information + presentation, look & feel, site graphics and its maintenance. + </dd> + </dl> + + <p>and five contracts (the lines)</p> + + <ul> + <li>management - content</li> + <li>management - logic</li> + <li>management - style</li> + <li>content - logic</li> + <li>content - style</li> + </ul> + + <p>Note that there is no <em>logic - style</em> contract. Cocoon 2 aims to + provide both software and guidelines to allow you to remove such a + contract.</p> +</s1> + +<s1 title="Overlapping contexts and Chain Mapping"> + <p>The above model can be applied only if the different contexts + never overlap, otherwise there is no chance of having a single management + point. For example, if the W3C-recommended method to link stylesheets to XML + documents is used, the content and style contexts overlap and it's impossible + to change the styling behavior of the document without changing it. The same + is true for the processing instructions used by the Cocoon 1 reactor to drive + the page processing: each stage specifies the next stage to determine the result, + thus increasing management and debugging complexity. Another overlapping in + context contracts is the need for URL-encoded parameters to drive the page output. + These overlaps break the pyramid model and increase the management costs.</p> + + <p>In Cocoon 2, the reactor pattern will be abandoned in favor of + a pipeline mapping technique. This is based on the fact that the number of + different contracts is limited even for big sites and grows with a rate + that is normally much less than its size.</p> + + <p>Also, for performance reasons, Cocoon 2 will try to compile + everything that is possibly compilable (pages/XSP into generators, stylesheets + into transformers, etc...) so, in this new model, the <em>processing chain</em> + that generates the page contains (in a direct executable form) all the + information/logic that handles the requested resource to generate its + response.</p> + + <p>This means that instead of using event-driven request-time DTD interpretation + (done in all Cocoon 1 processors), these will be either compiled into transformers + directly (XSLT stylesheet compilation) or compiled into generators using + logicsheets and XSP which will remove totally the need for request-time + interpretation solutions like DCP that will be removed.</p> + + <note>Some of these features are already present in latest Cocoon 1.x + releases but the Cocoon 2 architecture will make them central to its new + core.</note> +</s1> + +<s1 title="Sitemap"> + <p>In Cocoon 2 terminology, a <em>sitemap</em> is the collection of pipeline + matching informations that allow the Cocoon engine to associate the requested + URI to the proper response-producing pipeline.</p> + + <p>The sitemap physically represents the central repository for web site + administration, where the URI space and its handling is maintained.</p> + + <p>Please, refer to the Cocoon 2 CVS module for more information on this.</p> + +</s1> + +<s1 title="Pre-compilation, Pre-generation and Caching"> + <p>The cache system in Cocoon 1 will be ported with very little + design changes since it's very flexible and was not polluted by early design + constraints since it appeared in later versions. The issue regarding static + file caching that, no matter what, will always be slower than direct web server + caching, means that Cocoon 2 will be as <em>proxy friendly</em> as possible.</p> + + <p>To be able to put most of the static part of the job back on the web + server (where it belongs), Cocoon 2 will greatly improve its command line + operation, allowing the creation of <em>site makefiles</em> that will + automatically scan the web site and the source documents and will provide a + way to <em>regenerate</em> the static part of a web site (images and tables + included!) based on the same XML model used in the dynamic operation version.</p> + + <p>Cocoon 2 will, in fact, be the integration between Cocoon 1 and Stylebook.</p> + + <p>It will be up to the web server administrator to use static + regeneration capabilities on a time basis, manually or triggered by some + particular event (e.g. database update signal) since Cocoon 2 will only provide + servlet and command line capabilities. The nice integration is based on the + fact that there will be no behavioral difference if the files are dynamically + generated in Cocoon 2 via the servlet operation and cached internally or + pre-generated and served directly by the web server, as long as URI contracts + are kept the same by the system administrator (via URL-rewriting or aliasing)</p> + + <p>Also, it will be possible to avoid on-the-fly page and stylesheet + compilation (which makes debugging harder) with command line pre-compilation + hooks that will work like normal compilers from a developer's point of view.</p> +</s1> + +<s1 title="Development Status"> + <p>Cocoon 2 development has reached "near beta quality" + You might take a look at it on the <em>xml-cocoon2</em> + CVS module. If you are not a CVS expert, this means + typing:</p> + + <source> + cvs -d :pserver:[EMAIL PROTECTED]:/home/cvspublic login + Password: anoncvs + + cvs -d :pserver:[EMAIL PROTECTED]:/home/cvspublic checkout xml-cocoon2 + </source> + + <p>For more information on CVS access, refer to the CVS docs on this web site.</p> +</s1> + </body> </document> 1.3.2.1 +3 -3 xml-cocoon2/xdocs/site-book.xml Index: site-book.xml =================================================================== RCS file: /home/cvs/xml-cocoon2/xdocs/site-book.xml,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -r1.3 -r1.3.2.1 --- site-book.xml 2001/06/01 15:49:18 1.3 +++ site-book.xml 2001/06/07 17:38:22 1.3.2.1 @@ -4,7 +4,7 @@ <external href="../index.html" label="Back"/> <separator/> - <external href="../dist" label="Download"/> + <external href="dist" label="Download"/> <separator/> <page id="index" label="Index" source="index.xml"/> <page id="uc2" label="Concepts" source="uc2.xml"/> @@ -27,7 +27,7 @@ <todo id="todo" label="Todo" source="todo.xml"/> <separator/> <external label="Code Repository" href="http://xml.apache.org/websrc/index.cgi/xml-cocoon2/"/> - <external label="Dev Snapshots" href="http://xml.apache.org/from-cvs/xml-cocoon/"/> - <external label="Mail Archive" href="http://marc.theaimsgroup.com/?l=xml-cocoon-users&r&eq;1amp;w&eq;2"/> + <external label="Dev Snapshots" href="http://xml.apache.org/from-cvs/xml-cocoon2/"/> + <external label="Mail Archive" href="http://marc.theaimsgroup.com/?l=xml-cocoon-users"/> <external label="Bug Database" href="http://nagoya.apache.org/bugzilla/index.html"/> </book> ---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]