leosimons    2003/01/29 08:06:17

  Modified:    site/history index.html
  Added:       site/history call-to-vote.html changes.html
                        need-for-avalon.html what-is-a-server.html
               site/history/images server-01.gif server-02.gif
                        server-03.gif server-04.gif
  Log:
  look! ancient history! :D
  
  Revision  Changes    Path
  1.2       +168 -1    jakarta-avalon-site/site/history/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-site/site/history/index.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- index.html        27 Jan 2003 19:51:38 -0000      1.1
  +++ index.html        29 Jan 2003 16:06:16 -0000      1.2
  @@ -1 +1,168 @@
  -<html><head><title>Resource not Found</title><STYLE><!--H1{font-family : 
sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} 
BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : 
white;} B{color : white;background-color : #0086b2;} HR{color : #0086b2;} 
--></STYLE> </head><body><h1>Cocoon 2 - Resource not Found</h1><hr size="1" 
noshade="noshade"/><p><b>type</b> resource-not-found</p><p><b>message</b> 
<u>Page Not Available.</u></p><p><b>description</b> <u>The requested resource 
couldn't be found.</u></p><p><b>sender</b> 
org.apache.cocoon.Main</p><p><b>source</b> Cocoon commandline 
(Main.java)</p><p><b>request-uri</b><pre>history/index.html</pre></p><p><b>missing-file</b><pre>site\history\index.html</pre></p><hr
 size="1" noshade="true"/></body></html>
  \ No newline at end of file
  +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  +<html>
  +<head>
  +<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  +<link rel="stylesheet" href="../skin/tigris.css" type="text/css">
  +<link rel="stylesheet" href="../skin/site.css" type="text/css">
  +<link media="print" rel="stylesheet" href="../skin/print.css" 
type="text/css">
  +<title>History of Avalon</title>
  +</head>
  +<body bgcolor="white" class="composite" marginheight="0" marginwidth="0">
  +<!--================= start Banner ==================-->
  +<div id="banner">
  +<table width="100%" cellpadding="8" cellspacing="0" border="0">
  +<tbody>
  +<tr>
  +<!--================= start Group Logo ==================-->
  +<td align="left">
  +<div class="groupLogo">
  +<a href="http://www.apache.org/";><img border="0" class="logoImage" 
alt="Apache" src="../images/group-logo.gif"></a>
  +</div>
  +</td>
  +<!--================= end Group Logo ==================-->
  +<!--================= start Project Logo ==================--><td 
align="right">
  +<div class="projectLogo">
  +<a href="http://avalon.apache.org/";><img border="0" class="logoImage" 
alt="Apache Avalon" src="../images/project-logo.gif"></a>
  +</div>
  +</td>
  +<!--================= end Project Logo ==================-->
  +</tr>
  +</tbody>
  +</table>
  +</div>
  +<!--================= end Banner ==================-->
  +<!--================= start Main ==================-->
  +<table width="100%" cellpadding="0" cellspacing="0" border="0" 
id="breadcrumbs">
  +<tbody>
  +<!--================= start Status ==================-->
  +<tr class="status">
  +<td>
  +<!--================= start BreadCrumb ==================--><a 
href=""></a><a href=""></a><a href=""></a>
  +<!--================= end BreadCrumb ==================--></td><td id="tabs">
  +<!--================= start Tabs ==================-->
  +<div class="tab">
  +<span class="selectedTab"><a href="../index.html"><font 
color="#000000">Home</font></a></span> | <span class="unselectedTab"><a 
href="http://avalon.apache.org/framework/";>Framework</a></span> | <span 
class="unselectedTab"><a href="../components/index.html">Components</a></span> 
| <span class="unselectedTab"><a 
href="http://avalon.apache.org/phoenix/";>Phoenix</a></span> | <span 
class="unselectedTab"><a href="../seca/index.html">SECA</a></span> | <span 
class="unselectedTab"><a href="http://avalon.apache.org/apps/";>Apps</a></span>
  +</div>
  +<!--================= end Tabs ==================-->
  +</td>
  +</tr>
  +</tbody>
  +</table>
  +<!--================= end Status ==================-->
  +<table id="main" width="100%" cellpadding="8" cellspacing="0" border="0">
  +<tbody>
  +<tr valign="top">
  +<!--================= start Menu ==================-->
  +<td id="leftcol">
  +<div id="navcolumn">
  +<div class="menuBar">
  +<div class="menu">
  +<span class="menuLabel">About</span>
  +        
  +<div class="menuItem">
  +<span class="menuSelected">Introduction</span>
  +</div>
  +        
  +<div class="menuItem">
  +<a href="call-to-vote.html">Call To Vote</a>
  +</div>
  +        
  +<div class="menuItem">
  +<a href="need-for-avalon.html">Need For Avalon</a>
  +</div>
  +        
  +<div class="menuItem">
  +<a href="what-is-a-server.html">What is a Server?</a>
  +</div>
  +    
  +</div>
  +</div>
  +</div>
  +</td>
  +<!--================= end Menu ==================-->
  +<!--================= start Content ==================--><td>
  +<div id="bodycol">
  +<div class="app">
  +<div align="center">
  +<h1>History of Avalon</h1>
  +<h2></h2>
  +</div>
  +<div class="h3">
  +
  + 
  +
  +
  +
  +
  +<div class="h3">
  +<h3>History</h3>
  +</div>
  +
  +
  +
  +<p>
  +    This document tracks the history of the Avalon project. Avalon was 
originally started with 
  +    a realisation that Java is a great platform for developing server 
products and a 
  +    <a href="call-to-vote.html">call to vote</a>. There was a lot of work 
  +    formalizing what exactly a <a href="what-is-a-server.html">server</a> 
consists
  +    of and why this project was <a href="need-for-avalon.html">needed</a>. 
These
  +    discussions led to the initial development of the Java Apache Server 
Framework.
  +</p>
  +
  +
  +<p>
  +    Over time the Java Apache Server Framework project was renamed Avalon. 
This was in 
  +    recognition that the original ideas have evolved over time. Avalon 
became a 
  +    repository of general utility code, a design and testing ground for 
component based 
  +    solutions, a micro kernel and set of generalized server oriented 
services. This combined 
  +    with a move from the Java Apache project to the Jakarta project prompted 
the revision.
  +    At this time the kernel code was repackaged under the name Phoenix, core 
services 
  +    under the name Cornerstone and the general components was packaged under 
name Excalibur.
  +</p>
  +
  +
  +
  +
  +
  +<div id="authors" align="right">by&nbsp;Avalon Documentation 
Team,&nbsp;Peter Donald</div>
  +</div>
  +</div>
  +</div>
  +</td>
  +<!--================= end Content ==================-->
  +</tr>
  +</tbody>
  +</table>
  +<!--================= end Main ==================-->
  +<!--================= start Footer ==================-->
  +<div id="footer">
  +<table summary="footer" cellspacing="0" cellpadding="4" width="100%" 
border="0">
  +<tbody>
  +<tr>
  +<!--================= start Copyright ==================-->
  +<td colspan="2">
  +<div align="center">
  +<div class="copyright">
  +              Copyright &copy; 2002&nbsp;The Apache Software Foundation.. 
All rights reserved.
  +            </div>
  +</div>
  +</td>
  +<!--================= end Copyright ==================-->
  +</tr>
  +<tr>
  +<td align="left">
  +<!--================= start Host ==================-->
  +<!--================= end Host ==================--></td><td align="right">
  +<!--================= start Credits ==================-->
  +<div align="right">
  +<div class="credit"></div>
  +</div>
  +<!--================= end Credits ==================-->
  +</td>
  +</tr>
  +</tbody>
  +</table>
  +</div>
  +<!--================= end Footer ==================-->
  +</body>
  +</html>
  
  
  
  1.1                  jakarta-avalon-site/site/history/call-to-vote.html
  
  Index: call-to-vote.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <link rel="stylesheet" href="../skin/tigris.css" type="text/css">
  <link rel="stylesheet" href="../skin/site.css" type="text/css">
  <link media="print" rel="stylesheet" href="../skin/print.css" type="text/css">
  <title>History</title>
  </head>
  <body bgcolor="white" class="composite" marginheight="0" marginwidth="0">
  <!--================= start Banner ==================-->
  <div id="banner">
  <table width="100%" cellpadding="8" cellspacing="0" border="0">
  <tbody>
  <tr>
  <!--================= start Group Logo ==================-->
  <td align="left">
  <div class="groupLogo">
  <a href="http://www.apache.org/";><img border="0" class="logoImage" 
alt="Apache" src="../images/group-logo.gif"></a>
  </div>
  </td>
  <!--================= end Group Logo ==================-->
  <!--================= start Project Logo ==================--><td 
align="right">
  <div class="projectLogo">
  <a href="http://avalon.apache.org/";><img border="0" class="logoImage" 
alt="Apache Avalon" src="../images/project-logo.gif"></a>
  </div>
  </td>
  <!--================= end Project Logo ==================-->
  </tr>
  </tbody>
  </table>
  </div>
  <!--================= end Banner ==================-->
  <!--================= start Main ==================-->
  <table width="100%" cellpadding="0" cellspacing="0" border="0" 
id="breadcrumbs">
  <tbody>
  <!--================= start Status ==================-->
  <tr class="status">
  <td>
  <!--================= start BreadCrumb ==================--><a href=""></a><a 
href=""></a><a href=""></a>
  <!--================= end BreadCrumb ==================--></td><td id="tabs">
  <!--================= start Tabs ==================-->
  <div class="tab">
  <span class="selectedTab"><a href="../index.html"><font 
color="#000000">Home</font></a></span> | <span class="unselectedTab"><a 
href="http://avalon.apache.org/framework/";>Framework</a></span> | <span 
class="unselectedTab"><a href="../components/index.html">Components</a></span> 
| <span class="unselectedTab"><a 
href="http://avalon.apache.org/phoenix/";>Phoenix</a></span> | <span 
class="unselectedTab"><a href="../seca/index.html">SECA</a></span> | <span 
class="unselectedTab"><a href="http://avalon.apache.org/apps/";>Apps</a></span>
  </div>
  <!--================= end Tabs ==================-->
  </td>
  </tr>
  </tbody>
  </table>
  <!--================= end Status ==================-->
  <table id="main" width="100%" cellpadding="8" cellspacing="0" border="0">
  <tbody>
  <tr valign="top">
  <!--================= start Menu ==================-->
  <td id="leftcol">
  <div id="navcolumn">
  <div class="menuBar">
  <div class="menu">
  <span class="menuLabel">About</span>
          
  <div class="menuItem">
  <a href="index.html">Introduction</a>
  </div>
          
  <div class="menuItem">
  <span class="menuSelected">Call To Vote</span>
  </div>
          
  <div class="menuItem">
  <a href="need-for-avalon.html">Need For Avalon</a>
  </div>
          
  <div class="menuItem">
  <a href="what-is-a-server.html">What is a Server?</a>
  </div>
      
  </div>
  </div>
  </div>
  </td>
  <!--================= end Menu ==================-->
  <!--================= start Content ==================--><td>
  <div id="bodycol">
  <div class="app">
  <div align="center">
  <h1>History</h1>
  <h2></h2>
  </div>
  <div class="h3">
    
    
      
  <div class="h3">
  <h3>Introduction</h3>
  </div>
  
        
  <p>
          I spent some time thinking about some of the issues that were 
discussed on this
          list in the last month, after the first release of Apache JServ 1.0b 
and after the
          development pressure was reduced. 
        </p>
        
  <p>
          It is clear, to me and to others on this list, that Apache JServ 1.0 
just barely
          scratched the potentials of this project in sharing IQ and ideas 
aiming to fill
          those gaps the advent of the Java technology on the server world 
produced. 
        </p>
        
  <p>
          It is also clear, from different perspectives (users, developers, 
software
          engineers, management people), that servers are a big part of the 
present/future
          of everyday work and that Java allows the creation of performance 
oriented, solid and
          rapid-delivered server solutions. Other languages do not perform as 
good when
          all these three "forces" are evaluated together (besides, maybe, 
SmallTalk, but
          this is another issue). 
        </p>
        
  <p>
          Java is trendy, that's true, but we all know that Java is a 
well-designed object
          oriented language. May not be the best, I grant that, but it's the 
only one that came
          to please all those people I listed above. 
        </p>
        
  <p>
          Following this direction, and feeling the lack of professional Java 
server
          solutions on many fields, the Java Apache Project was created to fill 
this gap
          using the power of open source. We don't want to compete with Apache 
or with
          any other server implementation. We are betting on Java for the 
server side, but
          we will never "rewrite" some server implementation in Java, unless 
this can
          lead to significant improvements and doesn't go against other open 
source
          projects. 
        </p>
        
  <p>
          The final goal is a family of 100% pure server solutions for the Java 
Virtual
          Machine. 
        </p>
        
  <p>
          Since server applications share lots of logic/code between them, it 
is obvious
          that a common server framework, along with design rules and abstract
          implementations, would allow faster time-to-market, easier code 
management,
          parallel development, bug fix reflection on all projects and tight 
integration
          between the different server solutions. 
        </p>
        
  <p>
          I do believe that the time taken to design and develop such a 
framework will be
          "invested" by this project and its developers. The creation of this 
project doesn't
          mean other projects can't continue to evolve: the final goal is to 
integrate
          existing server solutions (JServ) into the framework but this is not 
a short term
          goal so this doesn't influence it's evolution/time-to-market for 
future
          releases/features.
        </p>
      
      
  <div class="h3">
  <h3>Request For Vote</h3>
  </div>
  
        
  <p>
          For the reasons above, I propose the creation of a new project to 
handle the
          design of a the Java Apache Server Framework that will be the 
foundation on
          which all server projects hosted by the Java Apache Project will be 
based on. 
        </p>
        
  <p>
          This project goals are: 
        </p>
        
  <ol>
          
  <li>
            Design and documentation of the Java Apache Server Framework.
          </li>
          
  <li>
            Creation and implementation of this framework (interfaces, abstract 
classes,
            and shared modules).
          </li>
          
  <li>
            Centralized management of the evolution/fixing/patching of both the 
shared
            code and the framework design.
          </li>
        
  </ol>
      
      
  <div class="h3">
  <h3>What the Java Apache Server Framework Is</h3>
  </div>
  
        
  <p>
          It's a design methodology that allows design reuse as well as code 
reuse between
          different server projects. These projects gain the advantage of 
software reuse
          and the simplicity of developing/managing only the different logic. 
        </p>
        
  <p>
          This framework will be based on Java technology and would allow: 
        </p>
        
  <ol>
          
  <li>
            Partition of shared logic context into polymorphic modules that are 
used
            through their public interfaces and not through their actual 
implementation (Log
            systems, Object stores, Virtual File Systems, Configuration 
repository,
            Concurrency Strategies, etc..)
          </li>
          
  <li>
            Creation of a common lifecycle for server operations (the Service
            interface)
          </li>
          
  <li>
            Creation of a ServiceManager for service management (maybe both 
internal
            or external the JVM: native wrapping and control via JNI would allow
            better fault tolerance for the JVM through process separation)
          </li>
          
  <li>
            Shared resources can be either centralized or duplicated for each 
service,
            allowing the use of a single JVM for multiple servers and common 
logic
            sharing (i.e. common thread pools, log systems and configuration
            repositories...)
          </li>
          
  <li>
            A central access point for configuration (via HTTP, SMTP, voice, 
RMI,
            SNMP, IIOP, depending on the services implemented)
          </li>
          
  <li>
            Reduced effort in service development since they become plugins for 
this
            framework and reuse big parts of the code base. The design and 
behavior is
            also documented and shared between different services.
          </li>
        
  </ol>
      
    
  
  <div id="authors" align="right">by&nbsp;Stefano Mazzocchi</div>
  </div>
  </div>
  </div>
  </td>
  <!--================= end Content ==================-->
  </tr>
  </tbody>
  </table>
  <!--================= end Main ==================-->
  <!--================= start Footer ==================-->
  <div id="footer">
  <table summary="footer" cellspacing="0" cellpadding="4" width="100%" 
border="0">
  <tbody>
  <tr>
  <!--================= start Copyright ==================-->
  <td colspan="2">
  <div align="center">
  <div class="copyright">
                Copyright &copy; 2002&nbsp;The Apache Software Foundation.. All 
rights reserved.
              </div>
  </div>
  </td>
  <!--================= end Copyright ==================-->
  </tr>
  <tr>
  <td align="left">
  <!--================= start Host ==================-->
  <!--================= end Host ==================--></td><td align="right">
  <!--================= start Credits ==================-->
  <div align="right">
  <div class="credit"></div>
  </div>
  <!--================= end Credits ==================-->
  </td>
  </tr>
  </tbody>
  </table>
  </div>
  <!--================= end Footer ==================-->
  </body>
  </html>
  
  
  
  1.1                  jakarta-avalon-site/site/history/changes.html
  
  Index: changes.html
  ===================================================================
  <html><head><title>Resource not Found</title><STYLE><!--H1{font-family : 
sans-serif,Arial,Tahoma;color : white;background-color : #0086b2;} 
BODY{font-family : sans-serif,Arial,Tahoma;color : black;background-color : 
white;} B{color : white;background-color : #0086b2;} HR{color : #0086b2;} 
--></STYLE> </head><body><h1>Cocoon 2 - Resource not Found</h1><hr size="1" 
noshade="noshade"/><p><b>type</b> resource-not-found</p><p><b>message</b> 
<u>Page Not Available.</u></p><p><b>description</b> <u>The requested resource 
couldn't be found.</u></p><p><b>sender</b> 
org.apache.cocoon.Main</p><p><b>source</b> Cocoon commandline 
(Main.java)</p><p><b>request-uri</b><pre>history/changes.html</pre></p><p><b>missing-file</b><pre>C:\gump\cvs\jakarta-avalon-site\build\site\history\changes.html</pre></p><hr
 size="1" noshade="true"/></body></html>
  
  
  1.1                  jakarta-avalon-site/site/history/need-for-avalon.html
  
  Index: need-for-avalon.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <link rel="stylesheet" href="../skin/tigris.css" type="text/css">
  <link rel="stylesheet" href="../skin/site.css" type="text/css">
  <link media="print" rel="stylesheet" href="../skin/print.css" type="text/css">
  <title>History</title>
  </head>
  <body bgcolor="white" class="composite" marginheight="0" marginwidth="0">
  <!--================= start Banner ==================-->
  <div id="banner">
  <table width="100%" cellpadding="8" cellspacing="0" border="0">
  <tbody>
  <tr>
  <!--================= start Group Logo ==================-->
  <td align="left">
  <div class="groupLogo">
  <a href="http://www.apache.org/";><img border="0" class="logoImage" 
alt="Apache" src="../images/group-logo.gif"></a>
  </div>
  </td>
  <!--================= end Group Logo ==================-->
  <!--================= start Project Logo ==================--><td 
align="right">
  <div class="projectLogo">
  <a href="http://avalon.apache.org/";><img border="0" class="logoImage" 
alt="Apache Avalon" src="../images/project-logo.gif"></a>
  </div>
  </td>
  <!--================= end Project Logo ==================-->
  </tr>
  </tbody>
  </table>
  </div>
  <!--================= end Banner ==================-->
  <!--================= start Main ==================-->
  <table width="100%" cellpadding="0" cellspacing="0" border="0" 
id="breadcrumbs">
  <tbody>
  <!--================= start Status ==================-->
  <tr class="status">
  <td>
  <!--================= start BreadCrumb ==================--><a href=""></a><a 
href=""></a><a href=""></a>
  <!--================= end BreadCrumb ==================--></td><td id="tabs">
  <!--================= start Tabs ==================-->
  <div class="tab">
  <span class="selectedTab"><a href="../index.html"><font 
color="#000000">Home</font></a></span> | <span class="unselectedTab"><a 
href="http://avalon.apache.org/framework/";>Framework</a></span> | <span 
class="unselectedTab"><a href="../components/index.html">Components</a></span> 
| <span class="unselectedTab"><a 
href="http://avalon.apache.org/phoenix/";>Phoenix</a></span> | <span 
class="unselectedTab"><a href="../seca/index.html">SECA</a></span> | <span 
class="unselectedTab"><a href="http://avalon.apache.org/apps/";>Apps</a></span>
  </div>
  <!--================= end Tabs ==================-->
  </td>
  </tr>
  </tbody>
  </table>
  <!--================= end Status ==================-->
  <table id="main" width="100%" cellpadding="8" cellspacing="0" border="0">
  <tbody>
  <tr valign="top">
  <!--================= start Menu ==================-->
  <td id="leftcol">
  <div id="navcolumn">
  <div class="menuBar">
  <div class="menu">
  <span class="menuLabel">About</span>
          
  <div class="menuItem">
  <a href="index.html">Introduction</a>
  </div>
          
  <div class="menuItem">
  <a href="call-to-vote.html">Call To Vote</a>
  </div>
          
  <div class="menuItem">
  <span class="menuSelected">Need For Avalon</span>
  </div>
          
  <div class="menuItem">
  <a href="what-is-a-server.html">What is a Server?</a>
  </div>
      
  </div>
  </div>
  </div>
  </td>
  <!--================= end Menu ==================-->
  <!--================= start Content ==================--><td>
  <div id="bodycol">
  <div class="app">
  <div align="center">
  <h1>History</h1>
  <h2></h2>
  </div>
  <div class="h3">
    
    
      
  <div class="h3">
  <h3>Hardware vs. Software</h3>
  </div>
  
        
  <p>
          One thing that always puzzled me is the different quality meters used
          on hardware and software by users: little flaws in software systems
          are accepted as inevitable, while hardware flaws (even small ones) may
          even create market panic if discovered. It's hard to tell why this is
          so, but today's software quality standards are becoming more and more
          selective, especially when monopolies are broken and users are able to
          judge the differences between products and solutions.
        </p>
      
      
  <div class="h3">
  <h3>Open Source as Quality Management</h3>
  </div>
  
        
  <p>
          The open source development model has emerged as a powerful way to
          control and improve software quality. The most important assumption,
          in this case, is the fact that debugging and code testing are
          parallelizable tasks. For this reason, different individuals are able
          to track down problems right into the source code, independently from
          one another. In open source projects, compared to closed source ones,
          the complexity of the software system grows slower than the ability to
          debug it, due to this parallelizable effort.
        </p>
        
  <p>
          Open source processes are auto-organizative: when a   seed of ideas
          and goals is thrown in the right place at the right time, it catalyzes
          the development process. Usually, when this happens, the user base
          expands, the complexity of the software system grows to meet the
          requirements of this bigger user base, incorporating new ideas,
          solutions and code and creating a positive feedback that keeps the
          process going.
        </p>
      
      
  <div class="h3">
  <h3>Software Engineering and Open Source</h3>
  </div>
  
        
  <p>
          Software engineering doesn't fit well into an auto-organized system
          driven by user requirements. Still, I believe that careful software
          design may allow the development process to <em>know</em> the ability
          of its developers and to provide them guidelines to reduce the work
          and to increase parallel capabilities. Of course, due to the extreme
          flexibility that open source projects show, software engineers should
          carefully design the system to match this flexibility and to avoid any
          restriction that may create friction with users and developers.
        </p>
        
  <p>
          It is evident how the use of modern object oriented programming
          languages like Java helps the development and reduces the debugging
          efforts because most error prone tasks are handled automatically by
          the language itself. Still, the most important object oriented
          solutions (such as Interfaces and abstract classes) are very much
          unused in auto-organized project, where the work is usually done with
          the smallest possible effort to get something working.
        </p>
        
  <p>
          The incredible improvement in time-to-market offered by these
          programming languages that reduce the debugging process to logical
          bugs rather than developer's programming mistakes, is a great feature
          and it's well appreciated, but it may lead, on the longer term, to
          code maintenance problems.
        </p>
        
  <p>
          In all software systems, the maintenance costs greatly exceed the
          first development ones. In open source software systems, the cost is
          measured in terms of <em>time</em> and <em>energy</em> spent by
          developers to meet the new requirements and to expand the complexity
          of the software system. It has been shown (in the Apache JServ
          project) that the wrong use of object oriented features may lead to
          project stall and create friction between developers and users about
          the need for <em>revolutions</em> instead of <em>evolutions</em>
          driven by the need of a complete code redesign.
        </p>
        
  <p>
          The rules "if it works it's good enough" and "if it
          works don't change it" may fit well in those programming contexts
          where developers need to design the code on their own to make it work.
          In object oriented systems, more than ever, working code is not
          automatically good code.
        </p>
      
      
  <div class="h3">
  <h3>Frameworks and Patterns</h3>
  </div>
  
        
  <p>
          The solution I propose is the introduction of coding guidelines to
          place   new requirements to meet the "working" state: by
          introducing the use of software frameworks and design patterns, we are
          able to <em>shape</em> the work of developers without restricting
          their creativity. While object oriented languages don't pose such
          limitations or guidelines, the introduction of carefully designed
          engineering rules, contracts and patterns would create some additional
          requirements to the development process, but will allow better code
          maintenance, a more coherent parallel development process and, in the
          longer run, easier maintenance.
        </p>
      
      
  <div class="h3">
  <h3>Conclusions</h3>
  </div>
  
        
  <p>
          The use of development guidelines and frameworks is proposed as a way
          to reduce internal tensions that produce revolutionary development
          processes rather than evolutionary ones. Even if such ability is yet
          to be demonstrated, it has been shown how object oriented languages
          require different approaches and more careful design stages to be
          successful in the long run.
        </p>
      
    
  
  <div id="authors" align="right">by&nbsp;Stefano Mazzocchi</div>
  </div>
  </div>
  </div>
  </td>
  <!--================= end Content ==================-->
  </tr>
  </tbody>
  </table>
  <!--================= end Main ==================-->
  <!--================= start Footer ==================-->
  <div id="footer">
  <table summary="footer" cellspacing="0" cellpadding="4" width="100%" 
border="0">
  <tbody>
  <tr>
  <!--================= start Copyright ==================-->
  <td colspan="2">
  <div align="center">
  <div class="copyright">
                Copyright &copy; 2002&nbsp;The Apache Software Foundation.. All 
rights reserved.
              </div>
  </div>
  </td>
  <!--================= end Copyright ==================-->
  </tr>
  <tr>
  <td align="left">
  <!--================= start Host ==================-->
  <!--================= end Host ==================--></td><td align="right">
  <!--================= start Credits ==================-->
  <div align="right">
  <div class="credit"></div>
  </div>
  <!--================= end Credits ==================-->
  </td>
  </tr>
  </tbody>
  </table>
  </div>
  <!--================= end Footer ==================-->
  </body>
  </html>
  
  
  
  1.1                  jakarta-avalon-site/site/history/what-is-a-server.html
  
  Index: what-is-a-server.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <link rel="stylesheet" href="../skin/tigris.css" type="text/css">
  <link rel="stylesheet" href="../skin/site.css" type="text/css">
  <link media="print" rel="stylesheet" href="../skin/print.css" type="text/css">
  <title>History</title>
  </head>
  <body bgcolor="white" class="composite" marginheight="0" marginwidth="0">
  <!--================= start Banner ==================-->
  <div id="banner">
  <table width="100%" cellpadding="8" cellspacing="0" border="0">
  <tbody>
  <tr>
  <!--================= start Group Logo ==================-->
  <td align="left">
  <div class="groupLogo">
  <a href="http://www.apache.org/";><img border="0" class="logoImage" 
alt="Apache" src="../images/group-logo.gif"></a>
  </div>
  </td>
  <!--================= end Group Logo ==================-->
  <!--================= start Project Logo ==================--><td 
align="right">
  <div class="projectLogo">
  <a href="http://avalon.apache.org/";><img border="0" class="logoImage" 
alt="Apache Avalon" src="../images/project-logo.gif"></a>
  </div>
  </td>
  <!--================= end Project Logo ==================-->
  </tr>
  </tbody>
  </table>
  </div>
  <!--================= end Banner ==================-->
  <!--================= start Main ==================-->
  <table width="100%" cellpadding="0" cellspacing="0" border="0" 
id="breadcrumbs">
  <tbody>
  <!--================= start Status ==================-->
  <tr class="status">
  <td>
  <!--================= start BreadCrumb ==================--><a href=""></a><a 
href=""></a><a href=""></a>
  <!--================= end BreadCrumb ==================--></td><td id="tabs">
  <!--================= start Tabs ==================-->
  <div class="tab">
  <span class="selectedTab"><a href="../index.html"><font 
color="#000000">Home</font></a></span> | <span class="unselectedTab"><a 
href="http://avalon.apache.org/framework/";>Framework</a></span> | <span 
class="unselectedTab"><a href="../components/index.html">Components</a></span> 
| <span class="unselectedTab"><a 
href="http://avalon.apache.org/phoenix/";>Phoenix</a></span> | <span 
class="unselectedTab"><a href="../seca/index.html">SECA</a></span> | <span 
class="unselectedTab"><a href="http://avalon.apache.org/apps/";>Apps</a></span>
  </div>
  <!--================= end Tabs ==================-->
  </td>
  </tr>
  </tbody>
  </table>
  <!--================= end Status ==================-->
  <table id="main" width="100%" cellpadding="8" cellspacing="0" border="0">
  <tbody>
  <tr valign="top">
  <!--================= start Menu ==================-->
  <td id="leftcol">
  <div id="navcolumn">
  <div class="menuBar">
  <div class="menu">
  <span class="menuLabel">About</span>
          
  <div class="menuItem">
  <a href="index.html">Introduction</a>
  </div>
          
  <div class="menuItem">
  <a href="call-to-vote.html">Call To Vote</a>
  </div>
          
  <div class="menuItem">
  <a href="need-for-avalon.html">Need For Avalon</a>
  </div>
          
  <div class="menuItem">
  <span class="menuSelected">What is a Server?</span>
  </div>
      
  </div>
  </div>
  </div>
  </td>
  <!--================= end Menu ==================-->
  <!--================= start Content ==================--><td>
  <div id="bodycol">
  <div class="app">
  <div align="center">
  <h1>History</h1>
  <h2></h2>
  </div>
  <div class="h3">
    
    
      
  <div class="h3">
  <h3>Introduction: Servers and Services?</h3>
  </div>
  
        
  <p>
          It's somehow difficult to give a proper definition of "server",
          due to the confusion created in the time so far by the different 
meanings
          that term had, facing the different evolution of the technologies.
        </p>
        
  <p>
          The term "server" is commonly used with at least three different
          meanings:
        </p>
        
  <ul>
          
  <li>
            
  <strong>"Server" as computer:</strong> With this meaning the
            server term is intended to be the computer sharing resources.
            <br>
            
  <em>
              Ex. Our corporate "server" is a double Pentium II
              running at 450 MHz with 12 GB of SCSI hard disk running Linux.
            </em>
          
  </li>
          
  <li>
            
  <strong>"Server" as a program:</strong> With this meaning the
            server term is intended to be the application that enables the
            resource sharing, not caring about the network protocols it
            implements.
            <br>
            
  <em>
              Ex. Our Mail server is FlosieTek FTGate release 2.1 which
              implements the SMTP and POP3 protocols.
            </em>
          
  </li>
          
  <li>
            
  <strong>"Server" as a protocol handler:</strong> With this meaning
            the server term is intended to be the application that enables
            the access to shared resources via a specified protocol.
            <br>
            
  <em>
              Ex. Our HTTP server is Apache 1.3.4.
            </em>
          
  </li>
        
  </ul>
        
  <p>
          While we can clearly see the difference between the first definition 
of
          "server" (computer) and the other two (applications), it's hard
          to see the difference between the second definition ("server" as
          a multi-protocol handler) and the third ("server" as a single
          protocol handler).
        </p>
        
  <p>
          Since it's crucial for all developers involved in the Avalon project 
to
          share the same common idea of "server", I would like to define
          a server as a <strong>protocol handler</strong>. We would, then, have 
HTTP servers,
          SMTP servers or POP3 servers, but we cannot use the term MAIL server.
        </p>
        
  <p>
          What we called the mail server is in fact the union of two (or more)
          different "server"s (in our example the union of a SMTP and a
          POP3 server).
        </p>
        
  <p>
          We can clearly see, anyway, that a POP3 and an SMTP server will have 
to
          share most resources and code to build up a complete mailing system, 
like,
          for example, a central repository where messages could be stored. We 
would
          then define the union of the SMTP server, the POP3 server and the 
central
          messages repository (we could call it <strong>Mail Engine</strong>) 
as a Mail
          "service". To clarify things a little bit, maybe a picture would
          help:
        </p>
        
  <div align="center">
  <img class="figure" alt="Server 1" src="images/server-01.gif"></div>
      
      
  <div class="h3">
  <h3>Dividing the code</h3>
  </div>
  
        
  <p>
          We can clearly see, however, how this approach to the problem brings 
to
          a monolithic implementation of the code, not allowing, or making 
really
          difficult, for other persons to add features, for example, 
integrating an
          IMAP server within our Mail Service.
        </p>
        
  <p>
          In fact, if we don't clearly separate the code (and a good developer
          should always keep in mind his server expansion) adding a feature 
like an
          IMAP server into our service could become hell, and, most developers 
will
          try to find other solutions already in the market rather than using 
and
          improving what we have done.
        </p>
        
  <p>
          The solution would be to have a sort of "in-core" modularization of 
our
          server.... To be continued...
        </p>
        
  <div align="center">
  <img class="figure" alt="Server 2" src="images/server-02.gif"></div>
        
  <div align="center">
  <img class="figure" alt="Server 3" src="images/server-03.gif"></div>
      
      
  <div class="h3">
  <h3>The concept of a Block</h3>
  </div>
  
        
  <div align="center">
  <img class="figure" alt="Server 4" src="images/server-04.gif"></div>
      
      
  <div class="h3">
  <h3>The Avalon Framework</h3>
  </div>
  
        
  <div class="frame fixme">
  <div class="label">Fixme (
                 PF
  
                 )</div>
  <div class="content">We need some info in here.</div>
  </div>
      
    
    
  
  <div id="authors" align="right">by&nbsp;Pierpaolo Fumagalli</div>
  </div>
  </div>
  </div>
  </td>
  <!--================= end Content ==================-->
  </tr>
  </tbody>
  </table>
  <!--================= end Main ==================-->
  <!--================= start Footer ==================-->
  <div id="footer">
  <table summary="footer" cellspacing="0" cellpadding="4" width="100%" 
border="0">
  <tbody>
  <tr>
  <!--================= start Copyright ==================-->
  <td colspan="2">
  <div align="center">
  <div class="copyright">
                Copyright &copy; 2002&nbsp;The Apache Software Foundation.. All 
rights reserved.
              </div>
  </div>
  </td>
  <!--================= end Copyright ==================-->
  </tr>
  <tr>
  <td align="left">
  <!--================= start Host ==================-->
  <!--================= end Host ==================--></td><td align="right">
  <!--================= start Credits ==================-->
  <div align="right">
  <div class="credit"></div>
  </div>
  <!--================= end Credits ==================-->
  </td>
  </tr>
  </tbody>
  </table>
  </div>
  <!--================= end Footer ==================-->
  </body>
  </html>
  
  
  
  1.1                  jakarta-avalon-site/site/history/images/server-01.gif
  
        <<Binary file>>
  
  
  1.1                  jakarta-avalon-site/site/history/images/server-02.gif
  
        <<Binary file>>
  
  
  1.1                  jakarta-avalon-site/site/history/images/server-03.gif
  
        <<Binary file>>
  
  
  1.1                  jakarta-avalon-site/site/history/images/server-04.gif
  
        <<Binary file>>
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to