<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wazi &#187; Comparisons</title>
	<atom:link href="http://olex.openlogic.com/wazi/category/comparisons/feed/" rel="self" type="application/rss+xml" />
	<link>http://olex.openlogic.com/wazi</link>
	<description>Thinking OPEN</description>
	<lastBuildDate>Fri, 19 Mar 2010 03:29:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Comparing Open Source Agile Project Management Tools</title>
		<link>http://olex.openlogic.com/wazi/2009/comparing-open-source-agile-project-management-tools/</link>
		<comments>http://olex.openlogic.com/wazi/2009/comparing-open-source-agile-project-management-tools/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 19:03:14 +0000</pubDate>
		<dc:creator>Brad Swanson</dc:creator>
				<category><![CDATA[Comparisons]]></category>
		<category><![CDATA[agilefant]]></category>
		<category><![CDATA[agilo]]></category>
		<category><![CDATA[explainpmt]]></category>
		<category><![CDATA[icescrum]]></category>
		<category><![CDATA[xplanner]]></category>

		<guid isPermaLink="false">http://olex.openlogic.com/wazi/?p=42778</guid>
		<description><![CDATA[There are a large number of project management tools designed to support Agile methodologies such as Scrum and eXtreme Programming (XP), including several open source options. This article compares the most compelling open source options in terms of feature set, usability, viability, and suitability for large projects and products.]]></description>
			<content:encoded><![CDATA[<p>There are a large number of project management tools designed to support Agile methodologies such as Scrum and eXtreme Programming (XP), including several open source options. This article compares the most compelling open source options on the following criteria:</p>
<ul>
<li>Feature set</li>
<li>Usability</li>
<li>Viability</li>
<li>Suitability for large projects and products</li>
</ul>
<h3>Background</h3>
<p>Agile development methods, including Scrum, XP, Crystal, FDD, and DSDM, have gained widespread adoption and acceptance in recent years. IBM’s Rational Unified Process (RUP) has been tailored to create the Agile Unified Process (AUP). The agile approach has gained traction even in large organizations with complex projects and geographically distributed teams, including IBM. While the <a href="http://agilemanifesto.org/" target="_blank">Agile Manifesto</a> favors “individuals and interactions over process and tools”, a well-crafted tool for managing agile projects has clear advantages, and is essential as agile teams and organizations grow to geographically distributed locations and enterprise scale.</p>
<p>Agile software and open source have enjoyed a tight relationship through the years, with several open source projects being inspired by and integral to the agile movement.</p>
<ul>
<li>Unit testing: XUnit (<a href="https://olex.openlogic.com/packages/junit" target="_blank">JUnit</a>, <a href="https://olex.openlogic.com/packages/nunit" target="_blank">NUnit</a>, etc.), various <a href="https://olex.openlogic.com/packages/mockobjects" target="_blank">Mock Objects</a> frameworks</li>
<li>Acceptance testing: <a href="https://olex.openlogic.com/packages/fit-project" target="_blank">Fit</a> and <a href="https://olex.openlogic.com/packages/fitnesse" target="_blank">FitNesse</a>, <a href="https://olex.openlogic.com/packages/httpunit" target="_blank">HttpUnit</a>, etc.</li>
<li>Integration tools: <a href="https://olex.openlogic.com/packages/cruisecontrol" target="_blank">Cruise Control</a>, <a href="https://olex.openlogic.com/packages/hudson" target="_blank">Hudson</a></li>
<li>Behavior driven development tools…</li>
</ul>
<p>The market for agile project management tools is now mature and saturated, with dozens of offerings from both small and large vendors, and more products hitting the market regularly. Market leading commercial offerings include Rally, VersionOne, Thoughtworks Mingle, and Danube ScrumWorks. A few open source tools have been around for some time, and several have emerged more recently. Compared to the open source offerings, the leading commercial tools offer better features for large organizations and large scale products and projects. They also tend to offer more integrations with third-party applications. Those extras come at a price, of course.</p>
<h3>Contenders</h3>
<p>This article compares only open source agile project management tools, and (with one exception) only considers projects under active development that have demonstrated significant usage (measured by a combination of download volume, discussion activity, and volume of internet references to the tool).</p>
<ul>
<li><a href="https://olex.openlogic.com/packages/agilefant" target="_blank">Agilefant</a></li>
<li><a href="https://olex.openlogic.com/packages/icescrum" target="_blank">IceScrum</a></li>
<li><a href="https://olex.openlogic.com/packages/agilo" target="_blank">Agilo</a></li>
<li><a href="https://olex.openlogic.com/packages/explainpmt" target="_blank">eXPlainPMT</a></li>
<li><a href="https://olex.openlogic.com/packages/xplanner" target="_blank">XPlanner</a>*</li>
</ul>
<p>*It’s true that XPlanner is no longer actively developed, but it gained widespread usage years ago, with over 45,000 downloads of the latest version (0.7b) alone. We included it in this comparison because it provides a good baseline to determine how the tools have matured in the past few years.</p>
<p>Some open tools that didn’t quite make the cut due to lack of apparent usage include Agilito, Scrinch, and FireScrum.</p>
<h3>Comparison Summary</h3>
<p>This section provides a high level comparison of the five contenders. A deeper discussion of each tool follows this section.</p>
<p>Legend:</p>
<p style="padding-left: 30px"><strong>√ </strong>Feature is included</p>
<p style="padding-left: 30px"><span style="color: #ff0000"><strong>X</strong></span> Feature is not included</p>
<p style="padding-left: 30px"><strong>√<sup>1 </sup></strong>Superscript number: see notes below the table for more information</p>
<p style="padding-left: 30px">*      1 star rating: poor</p>
<p style="padding-left: 30px">**    2 star rating: acceptable</p>
<p style="padding-left: 30px">***  3 star rating: good</p>
<p style="padding-left: 30px">***  4 star rating: excellent</p>
<table class="help_table" border="0">
<tbody>
<tr>
<td width="101" valign="top"></td>
<td width="99" valign="top"><strong>Agilefant</strong></td>
<td width="99" valign="top"><strong>IceScrum</strong></td>
<td width="99" valign="top"><strong>Agilo</strong></td>
<td width="99" valign="top"><strong>eXPlainPMT</strong></td>
<td width="99" valign="top"><strong>XPlanner</strong></td>
</tr>
<tr>
<td width="101" valign="top">Version reviewed</td>
<td width="99" valign="top">1.6.2</td>
<td width="99" valign="top">2#13</td>
<td width="99" valign="top">1.0.2 Pro</td>
<td width="99" valign="top">? (online demo)</td>
<td width="99" valign="top">0.7 beta</td>
</tr>
<tr>
<td width="101" valign="top">License</td>
<td width="99" valign="top">MIT</td>
<td width="99" valign="top">GPL</td>
<td width="99" valign="top">Apache License 2.0</td>
<td width="99" valign="top">GPL</td>
<td width="99" valign="top">LGPL</td>
</tr>
<tr>
<td width="101" valign="top">Platform</td>
<td width="99" valign="top">Java 6, Tomcat 5.5, MySQL</td>
<td width="99" valign="top">Java 1.5, Servlet engine, HSQLDB (or other RDBMS)</td>
<td width="99" valign="top">Python,Trac open source ticket system, RDBMS (SQLite, MySQL, PostgreSQL)</td>
<td width="99" valign="top">Ruby, RDMBS (MySQL, PostgreSQL, or SQLite)</td>
<td width="99" valign="top">Java 1.5, Tomcat 5.0 (not 5.5), Servlet 2.3, MySQL (or other RDMBS)</td>
</tr>
<tr>
<td width="101" valign="top">Backlog absolute ranking vs. prioritization</td>
<td width="99" valign="top">Priority, 1-5 scale.</td>
<td width="99" valign="top">Ranking, drag and drop.</td>
<td width="99" valign="top">Ranking, drag and drop.</td>
<td width="99" valign="top">Ranking, not drag and drop.</td>
<td width="99" valign="top">Ranking, not drag and drop.</td>
</tr>
<tr>
<td width="101" valign="top">Story points</td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #000000"><strong>√</strong></span></td>
<td width="99" valign="top"><strong>√<sup>1</sup></strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
</tr>
<tr>
<td width="101" valign="top">Task hours</td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><strong>√</strong></td>
</tr>
<tr>
<td width="101" valign="top">Task board view</td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
</tr>
<tr>
<td width="101" valign="top">Iteration burn down chart</td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√<sup>2</sup></strong></td>
<td width="99" valign="top"><strong>√<sup>3</sup></strong></td>
<td width="99" valign="top"><strong><span style="color: #ff0000">X</span><sup>4</sup></strong></td>
<td width="99" valign="top"><strong>√</strong></td>
</tr>
<tr>
<td width="101" valign="top">Epics (hierarchy of backlog items)</td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong><sup>5</sup></td>
<td width="99" valign="top"><strong>√</strong><sup>6</sup></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
</tr>
<tr>
<td width="101" valign="top">Releases</td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√<sup>7</sup></strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
</tr>
<tr>
<td width="101" valign="top">Roadmap (multiple releases)</td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong><sup>8</sup></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
</tr>
<tr>
<td width="101" valign="top">Multiple products/ projects</td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
</tr>
<tr>
<td width="101" valign="top">Portfolio planning</td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
</tr>
<tr>
<td width="101" valign="top">Acceptance tests</td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
</tr>
<tr>
<td width="101" valign="top">Impediment tracking</td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
</tr>
<tr>
<td width="101" valign="top">Defects as backlog item type</td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√<sup>9</sup></strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><strong>√</strong></td>
</tr>
<tr>
<td width="101" valign="top">Story Themes</td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
</tr>
<tr>
<td width="101" valign="top">Teams of users</td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><strong>√</strong></td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
</tr>
<tr>
<td width="101" valign="top">User roles</td>
<td width="99" valign="top">None</td>
<td width="99" valign="top">PO, SM, Team Member, Stakeholder, plus custom roles.</td>
<td width="99" valign="top">SM, PO, Team Member.</td>
<td width="99" valign="top">None</td>
<td width="99" valign="top">Viewer, Editor, Admin, Super Admin.</td>
</tr>
<tr>
<td width="101" valign="top">Reports</td>
<td width="99" valign="top">*</p>
<p>Timesheets only.</td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top">***</p>
<p>Can save customized reports.</td>
<td width="99" valign="top"><span style="color: #ff0000"><strong>X</strong></span></td>
<td width="99" valign="top">***</p>
<p>Extensive built-in reports, but no custom reporting.</td>
</tr>
<tr>
<td width="101" valign="top">Integration &amp; API(s)</td>
<td width="99" valign="top">None<strong> </strong></td>
<td width="99" valign="top">None<strong> </strong></td>
<td width="99" valign="top">SVN, trac, mylyn</td>
<td width="99" valign="top">None<strong> </strong></td>
<td width="99" valign="top">SOAP, notation for URL linking.</td>
</tr>
<tr>
<td width="101" valign="top">Dev. status</td>
<td width="99" valign="top">Active; V2 due “soon”</td>
<td width="99" valign="top">Active; R3 late 2009</td>
<td width="99" valign="top">Active; last release Feb. 2010</td>
<td width="99" valign="top">? Last commit Nov 2008</td>
<td width="99" valign="top">Dormant; last release May 2006</td>
</tr>
<tr>
<td width="101" valign="top">Support</td>
<td width="99" valign="top">Email, forums.</td>
<td width="99" valign="top">Email</td>
<td width="99" valign="top">Commercial (8 € per month per user).</td>
<td width="99" valign="top">None</td>
<td width="99" valign="top">Forums, but inactive.</td>
</tr>
<tr>
<td width="101" valign="top">Forums</td>
<td width="99" valign="top">**</td>
<td width="99" valign="top">**</td>
<td width="99" valign="top">****</p>
<p>2 topics per day.</td>
<td width="99" valign="top">None</td>
<td width="99" valign="top">*</p>
<p>2 topics per month average, few replies.</td>
</tr>
<tr>
<td width="101" valign="top">Installation guide</td>
<td width="99" valign="top">***</td>
<td width="99" valign="top">*</p>
<p>French only</td>
<td width="99" valign="top">***</td>
<td width="99" valign="top">None</td>
<td width="99" valign="top">**</td>
</tr>
<tr>
<td width="101" valign="top">User docs</td>
<td width="99" valign="top">**</td>
<td width="99" valign="top">**</td>
<td width="99" valign="top">**</td>
<td width="99" valign="top">None</td>
<td width="99" valign="top">*</td>
</tr>
<tr>
<td width="101" valign="top">Usability</td>
<td width="99" valign="top">***</td>
<td width="99" valign="top">**</p>
<p>Not always intuitive.</td>
<td width="99" valign="top">**</p>
<p>Not always intuitive; lots of clicks.</td>
<td width="99" valign="top">***</p>
<p>Intuitive</td>
<td width="99" valign="top">***</td>
</tr>
<tr>
<td width="101" valign="top">Suitability for large projects.</td>
<td width="99" valign="top">***</p>
<p>Portfolio planning with project ranking. Teams.</td>
<td width="99" valign="top">*</p>
<p>Only 1 release and 1 sprint can be active. Can’t have overlapping sprints. Hard to prioritize large backlog in Notes view.</td>
<td width="99" valign="top">**</td>
<td width="99" valign="top">*</p>
<p>Only 1 iteration at a time.</td>
<td width="99" valign="top">*</p>
<p>No releases.</td>
</tr>
<tr>
<td width="101" valign="top">Pros</td>
<td width="99" valign="top">Rich feature set. Timesheet feature.</td>
<td width="99" valign="top">Rich feature set. Good task board view. Planning poker feature.</td>
<td width="99" valign="top">Great whiteboard view.</td>
<td width="99" valign="top">Intuitive.</td>
<td width="99" valign="top">Intuitive. Rich charts and reports built in.</td>
</tr>
<tr>
<td width="101" valign="top">Cons</td>
<td width="99" valign="top">No task board view.</td>
<td width="99" valign="top">Not always intuitive. Not suitable for large projects.</td>
<td width="99" valign="top">Some common actions require lots of clicks.</td>
<td width="99" valign="top">No support or forums. Status uncertain. No hours for tasks. No sprint burndown.</td>
<td width="99" valign="top">Inactive and Not supported. Not suitable for large projects. Doesn’t directly support releases/roadmaps.</td>
</tr>
</tbody>
</table>
<p>Notes:</p>
<ol>
<li>Agile allows only pseudo-Fibonacci numbers for story points.</li>
<li>IceScrum’s iteration burndown chart is flawed; the horizontal axis shows only days elapsed so far in the sprint rather than full time range of the sprint.</li>
<li>Agilo’s iteration burndown chart is flawed in the online demo version; the vertical axis scale is off.</li>
<li>eXplainPMT has a burndown chart for the whole project, not for each iteration.</li>
<li>Agilo’s backlog hierarchy is not easy to use; it requires associating items by item number.</li>
<li>eXplainPMT has “initiatives” that are similar to epics, but they are only an attribute of a story.</li>
<li>Agile uses the term &#8220;milestones&#8221; in place of &#8220;releases&#8221;.</li>
<li>Agilo’s roadmap feature shows all sprints and a lot of scrolling is required to see all releases.</li>
<li>Agilo has a separate bug backlog.</li>
</ol>
<h3>Agilefant</h3>
<p>URL: <a href="http://www.agilefant.org/" target="_blank">http://www.agilefant.org/</a></p>
<p>Version reviewed: 1.6.2  [Note: Version 2.0 is promised “soon”.]</p>
<p>Technology: Tomcat 5.5, MySQL, Java 1.6</p>
<p>License: MIT</p>
<h4>Concepts</h4>
<p><em>Products</em> are the highest level construct, and each deployment may have multiple products. Each product may have one or more <em>projects</em>, which are essentially releases. Each project may have one or more <em>iterations</em>. Each product, project (think &#8220;release&#8221;), and iteration has its own <em>backlog</em>, which contains <em>stories</em>. Stories can be moved to any other backlog, for example from the product backlog to an iteration backlog. Stories may consist of zero or more <em>tasks</em>. Projects can be prioritized in the <em>Portfolio</em> view.</p>
<p>The tool supports multiple concurrent iterations, which allows larger organizations to use the tool effectively.</p>
<p>Agilefant supports multiple users and users can be grouped into teams. However,  it does not support any user roles; a user is a user, with no differences in permissions or access to features. Teams can be assigned to specific iterations.</p>
<p>Version 1.6.2 does not include the concept of higher-level features or epics, although this feature is promised in version 2.0 which is supposed to be released soon. It does support the concept of <em>themes</em>, which are an attribute of stories, and this does provide a simplistic way to associate a group of stories.</p>
<h4>Viability, Support &amp; Documentation</h4>
<p>The product documentation is adequate but not excellent. The product is intuitive enough that not much user documentation is necessary. The installation documentation is sufficient. Forums and email support appear to be fairly good. Development is active with version 2.0 supposed to be released soon, although no particular date for the release has been published.</p>
<h4>Usability</h4>
<p>Agilefant is intuitive. We were able to figure out how to use all features without relying on documentation. It lacks “drag and drop” features, but it otherwise makes good use of client-side features that make the user interface more responsive.</p>
<h4>Strengths</h4>
<ul>
<li>Rich feature set.</li>
<li>Suitable for larger organizations and projects, except for the lack of “epics” or story hierarchies. (Version 2.0 should fix that shortcoming.)</li>
<li>Reasonably intuitive and easy to use.</li>
<li>Portfolio planning feature.</li>
<li>Timesheet feature.</li>
</ul>
<h4>Weaknesses</h4>
<ul>
<li>Stories can be estimated in hours only, not points.</li>
<li>Stories cannot be ranked absolutely; they can only be prioritized on a scale of 1 to 5.</li>
<li>No “drag and drop” re-ordering of stories.</li>
<li>No “epics” or hierarchy of stories. Note that a story hierarchy is promised for version 2.0.</li>
<li>No “task board” or “whiteboard” view.</li>
<li>No differentiation between user roles.</li>
</ul>
<h4>Overall Rating</h4>
<p>Agilefant is a very capable tool with a rich feature set and a few weaknesses. It is better suited for large projects and large organizations than any of the other tools reviewed in this article, but the lack of a hierarchy of story/requirement levels (a.k.a. &#8220;epics&#8221;) is a significant drawback for large projects. The lack of epics or a hierarchy of stories, however, is a big weakness to overcome for large scale projects.</p>
<h4>Screenshots</h4>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image001.png"><img class="aligncenter" src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image001.png" alt="" width="417" height="349" /></a></p>
<p style="text-align: center">Above: Tree-style navigation in Agilefant.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image002.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image002.png" alt="" width="198" height="225" /></a></p>
<p style="text-align: center">Above: Objects that a user can create in Agilefant.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image003.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image003.png" alt="" width="600" height="263" /></a></p>
<p style="text-align: center">Above: The <em>Iteration Details</em> view in Agilefant.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image004.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image004.png" alt="" width="600" height="248" /></a></p>
<p style="text-align: center">Above: The list of stories and tasks within an iteration in Agilefant.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image005.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image005.png" alt="" width="358" height="277" /></a></p>
<p style="text-align: center">Above: The <em>Iteration Burndown</em> chart in Agilefant.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image006.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image006.png" alt="" width="600" height="298" /></a></p>
<p style="text-align: center">Above: The <em>Daily Work</em> view in Agilefant.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image007.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image007.png" alt="" width="600" height="424" /></a></p>
<p style="text-align: center">Above: The <em>Product</em> view in Agilefant.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image008.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image008.png" alt="" width="600" height="268" /></a></p>
<p style="text-align: center">Above: Agilefant&#8217;s <em>Development Porfolio</em> view allows projects (releases) to be ranked.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image009.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image009.png" alt="" width="451" height="307" /></a></p>
<p style="text-align: center">Above: Agilefant&#8217;s <em>Timesheets</em> feature provides a report of how users have spent their time.</p>
<h3>IceScrum</h3>
<p>URL: <a href="http://www.icescrum.org/" target="_blank">http://www.icescrum.org/</a></p>
<p>Version reviewed: 2#13</p>
<p>Technology: Java 1.5 with servlet engine (e.g. Tomcat). Bundled with HSQLDB, but can be configured to work with other DBMs such as MySQL.</p>
<p>License: GPL</p>
<h4>Concepts</h4>
<p><em>Products</em> (also called projects in some places) are the highest level construct, and each deployment may have multiple products. Each product has a single <em>backlog</em> and a <em>roadmap</em>. A backlog contains <em>features</em> (similar to epics), <em>user stories, defects</em> and <em>technical stories</em>. A roadmap contains multiple <em>releases</em>, each of which has a single <em>release plan</em>. A release plan consists of multiple <em>sprints</em>. Each sprint contains <em>stories</em>, which in turn contain <em>tasks</em> and <em>acceptance tests</em>. <em>Impediments</em> can be tracked for each product.</p>
<p>Unlike Agilefant, IceScrum includes a task board/whiteboard view of the iteration, allowing tasks to be dragged and dropped. It also allows drag and drop ranking of user stories in the backlog. Many options are available only from a right-click context menu, which isn’t obvious at first but is easy to use once you notice it.</p>
<p>IceScrum is the only product reviewed that has a planning poker feature. This feature allows a distributed team to play planning poker for estimating features and user stories.</p>
<p>IceScrum allows only a single release and single sprint to be active at one time (for a particular product), making it unsuitable for larger organizations that need multiple concurrent sprints with multiple teams running in parallel for a single product.</p>
<p>IceScrum users may have any of the Scrum roles (Product Owner, Scrum Master, Team Member, Stakeholder) plus custom roles may be created. It does not allow users to be grouped into teams.</p>
<p>Beyond a burndown chart, IceScrum does not have any reports or reporting API.</p>
<h4>Viability, Support &amp; Documentation</h4>
<p>The product documentation is adequate but not excellent. The installation guide is written only in French. Forums and email support appear to be fairly good. Development is active.</p>
<h4>Usability</h4>
<p>Some features are available only from right-click context menus. This is fine once you discover it, but it’s not obvious to new users. It has a relatively rich user interface with drag and drop capability in several places.</p>
<h4>Strengths</h4>
<ul>
<li>Rich feature set.</li>
<li>The <em>Sprint Backlog</em> view resembles a physical task board quite effectively.</li>
<li>The <em>Roadmap</em>, <em>Release Plan</em> and <em>Sprint Plan</em> views support multiple levels of planning.</li>
<li>Acceptance tests can be recorded for each story. A BDD-inspired template for acceptance tests is available.</li>
<li>Includes a planning poker feature.</li>
<li>Supports absolute ranking of stories by drag and drop, and estimates in story points.</li>
</ul>
<h4>Weaknesses</h4>
<ul>
<li>The story card layout would make it difficult to rank a large product backlog.</li>
<li>Some features are not intuitive. Drag and drop works in some places but not in others, even though the mouse cursor make it seem that drag and drop should work. The right-click context menu is not obvious, but it&#8217;s easy to use once you discover it.</li>
<li>IceScrum is not suitable for large projects with multiple teams working on a single product; only a single release and single sprint can be active at one time.</li>
</ul>
<h4>Overall Rating</h4>
<p>IceScrum is a very capable tool with a rich feature set and a few weaknesses. Although it supports multiple products (projects), it is suitable only for small projects with a single team working on one sprint at a time per product.</p>
<h4>Screenshots</h4>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image010.png"><img class="aligncenter" src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image010.png" alt="" width="589" height="273" /></a></p>
<p style="text-align: center">Above: IceScrum&#8217;s <em>Feature</em> view. Features are high-level requirements akin to epics.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image011.jpg"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image011.jpg" alt="" width="600" height="252" /></a></p>
<p style="text-align: center">Above: Creating a user story in IceScrum&#8217;s product backlog.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image012.jpg"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image012.jpg" alt="" width="600" height="245" /></a></p>
<p style="text-align: center">Above: IceScrum&#8217;s <em>Product Backlog</em> view. Each story card can be dragged and dropped to change ranking. Features (epics) are associated with a story by dragging the feature from the left side of the page onto the desired story.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image013.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image013.png" alt="" width="462" height="290" /></a></p>
<p style="text-align: center">Above: Right-clicking on any story card gives a context menu.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image014.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image014.png" alt="" width="600" height="317" /></a></p>
<p style="text-align: center">Above: IceScrum&#8217;s <em>Sprint Backlog</em> view. To add a story from the product backlog to the sprint, drag the story from the left side of the page and drop it in the story area of the sprint.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image015.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image015.png" alt="" width="600" height="256" /></a></p>
<p style="text-align: center">Above: IceScrum&#8217;s <em>Roadmap</em> view shows the timeline of releases and sprints within the release.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image016.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image016.png" alt="" width="600" height="281" /></a></p>
<p style="text-align: center">Above: IceScrum&#8217;s <em>Release Plan</em> view. Product backlog items can be dragged and dropped onto any sprint.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image017.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image017.png" alt="" width="597" height="473" /></a></p>
<p style="text-align: center">Above: IceScrum&#8217;s <em>Sprint Burndown</em> view. The burndown is flawed, showing only the actual days elapsed so far on the horizontal axis rather than the full time range of the sprint. In the screen shot above, the sprint is 14 days, but the burndown shows only the first 2 days.</p>
<h3>Agilo</h3>
<p>URL: <a href="http://www.agile42.com/cms/pages/agilo/" target="_blank">http://www.agile42.com/cms/pages/agilo/</a></p>
<p>Version reviewed: 1.0.2 Pro (demo instance at <a href="https://agilo.agile42.com/login" target="_blank">https://agilo.agile42.com/login</a> with login: demo/demo)</p>
<p>Technology: Python (2.4, 2.5, or 2.6), SQLite (also PostgreSQL or MySQL). Built on Trac 0.11 (open source ticketing system built on Python).</p>
<p>License: Apache License 2.0</p>
<h4>Concepts</h4>
<p>Each deployment can have multiple <em>milestones</em> (releases). The backlog contains <em>requirements</em>, <em>user stories</em> and <em>tasks</em>. These three item types support a hierarchy by reference: requirements can reference stories, and stories can reference tasks. This hierarchy is difficult to establish and utilize, however. Agilo has a separate backlog for defects, which makes it difficult to prioritize defects relative to user stories. It also has a separate impediment backlog.</p>
<p>Users can be given the roles of Scrum Master, Product Owner, or Team Member. Users may also be grouped into teams.</p>
<p>Agilo includes an excellent and intuitive task board/whiteboard view of the iteration, allowing tasks to be dragged and dropped. This is by far the best feature of the tool; other features are less untuitive. Perhaps Trac users would find it more friendly?</p>
<p>Agilo has a simple dashboard with a sprint burndown chart, a graph of stories and tasks (total, planned, and closed), and allocation of tasks to team members by percent. In addition, it allows custom queries and reports to be created and saved.</p>
<h4>Viability, Support &amp; Documentation</h4>
<p>The product documentation is adequate but not excellent. The forums are very active and seem to be a good place for support. The Pro version includes professional support for about €8.50 per month.</p>
<h4>Usability</h4>
<p>I found some of Agilo’s features to be unintuitive and difficult to use, requiring many clicks and pages to accomplish common tasks. The task board/whiteboard feature, however, is excellent and very easy to use.</p>
<h4>Strengths</h4>
<ul>
<li>Excellent task board/whiteboard iteration view with drag and drop functionality.</li>
<li>Supports absolute ranking of stories by drag and drop, and estimates in story points.</li>
<li>Good reporting features, including user-customized reports that can be saved.</li>
</ul>
<h4>Weaknesses</h4>
<ul>
<li>Some features are not intuitive. It feels like Trac didn’t support agile concepts very well so they had to be force-fit into Trac’s model.</li>
<li>When creating a task, it can be associated with a sprint, but not with a story.</li>
<li>Many operations require lots of clicks to complete.</li>
</ul>
<h4>Overall Rating</h4>
<p>Although the task board/whiteboard view is intuitive and excellent, other features are less intuitive and often not very easy to use. The sprint burndown in the demo instance was flawed, showing 1200 hours when only 37 hours of tasks were planned.</p>
<h4>Screenshots</h4>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image018.jpg"><img class="aligncenter" src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image018.jpg" alt="" width="600" height="323" /></a></p>
<p style="text-align: center">Above: Agilo&#8217;s <em>Product Backlog</em> view.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image019.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image019.png" alt="" width="600" height="390" /></a></p>
<p style="text-align: center">Above: Agilo&#8217;s <em>Sprint Backlog</em> view. This view is confusing because tasks don’t appear underneath their stories. In the example above, 2174 and 2176 are tasks for story 2173. They can be dragged and dropped to an intuitive position, although in some views I was unable to do even that.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image020.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image020.png" alt="" width="600" height="368" /></a></p>
<p style="text-align: center">Above: Agilo&#8217;s <em>Sprint Burndown</em>. This chart was flawed, showing 1200 hours on the vertical axis when only 37 hours of work were planned.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image021.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image021.png" alt="" width="600" height="394" /></a></p>
<p style="text-align: center">Above: Agilo&#8217;s <em>Whiteboard</em> view. This is one of the best features in the tool. It&#8217;s quite intuitive, with drag and drop capability. Add a new task to a story by clicking the “+” symbol. Tasks can be edited inline by right-clicking.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image022.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image022.png" alt="" width="600" height="376" /></a></p>
<p style="text-align: center">Above: Agilo&#8217;s <em>Roadmap</em> view. This view shows all <em>milestones</em> (releases) plus a summary of each sprint in each milestone. With multiple sprints per milestone, a lot of scrolling is required to see the big picture, which makes this feature rather ineffective.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image023.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image023.png" alt="" width="600" height="278" /></a></p>
<p style="text-align: center">Above: Agilo&#8217;s <em>Bug Backlog</em>. Bugs are tracked in their own separate backlog, which is a drawback since they can’t be prioritized relative to other product backlog items such as user stories.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image024.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image024.png" alt="" width="583" height="276" /></a></p>
<p style="text-align: center">Above: Associating requirements (epics) with user stories and stories with tasks in Agilo. This feature is not easy to use since stories must be separately looked up by number, then individually entered on this page.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image025.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image025.png" alt="" width="600" height="349" /></a></p>
<p style="text-align: center">Above: An Agilo user story showing references to a <em>requirement</em> (a.k.a. epic) and a <em>task</em>.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image026.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image026.png" alt="" width="498" height="568" /></a></p>
<p style="text-align: center">Above: Agilo&#8217;s <em>View Tickets</em> page, which lists built-in and user-defined reports.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image027.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image027.png" alt="" width="600" height="404" /></a></p>
<p style="text-align: center">Above: A sample report from Agilo  &#8211; active tickets by milestone.</p>
<h3>eXplainPMT</h3>
<p>URL: <a href="http://github.com/explainpmt/explainpmt/tree/master" target="_blank">http://github.com/explainpmt/explainpmt/tree/master</a></p>
<p>Version reviewed: No version specified at demo site: <a href="http://github.com/explainpmt/explainpmt/tree/master" target="_blank">http://github.com/explainpmt/explainpmt/tree/master</a> (login: demo/demo)</p>
<p>Technology: Ruby, RDBMS (SQLite, PostgreSQL or MySQL)</p>
<p>License: GPL</p>
<h4>Concepts</h4>
<p>The highest level construct is the <em>project</em>, and eXplainPMT supports multiple projects. Each project has one or more <em>releases</em>, and <em>iterations</em>. Note that iterations are associated with projects, not with releases. A project has one <em>backlog</em>, and a backlog contains <em>stories</em>. Stories have <em>tasks</em> and <em>acceptance tests</em>, and can be assigned to a release. Stories may also be associated with an <em>initiative</em>, which is somewhat like an <em>epic</em>, except initiatives cannot be ranked or prioritized. Surprisingly, tasks do not have estimated or actual hours; they have only two states: incomplete or complete.</p>
<p>Users in eXplainPMT do not have specific roles; all users are the same. Users may be grouped into teams.</p>
<h4>Viability, Support &amp; Documentation</h4>
<p>eXplainPMT has no user guide and only a brief README file for an installation guide. It has no forums, nor any email support. It is unclear whether development is still active; the last update was November 2008.</p>
<h4>Usability</h4>
<p>The user interface is straightforward and intuitive, but some very basic features are lacking. For example, after creating a story in the backlog, it cannot be moved into an iteration. In addition, eXplainPMT does not support drag and drop nor the richer experience of modern browser applications.</p>
<h4>Strengths</h4>
<ul>
<li>Intuitive interface.</li>
<li>Supports the definition of acceptance tests for stories.</li>
</ul>
<h4>Weaknesses</h4>
<ul>
<li>Cannot estimate or track task hours!</li>
<li>No task board/whiteboard view.</li>
<li>No iteration burndown chart.</li>
<li>No releases or roadmap.</li>
<li>Development status is unclear; the last update was November 2008.</li>
<li>Support and documentation are almost non-existent.</li>
<li>Not suitable for large projects since it allows only one iteration to be active at a time.</li>
</ul>
<h4>Overall Rating</h4>
<p>eXplainPMT is missing many important features, the development status is uncertain, and support and documentation are almost non-existent. It does not support large teams. Agilefant, IceScrum, Agilo and XPlanner are all likely to be better tools for most agile teams.</p>
<h4>Screenshots</h4>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image028.png"><img class="aligncenter" src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image028.png" alt="" width="600" height="269" /></a></p>
<p style="text-align: center">Above: eXplainPMT&#8217;s <em>Projects</em> view.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image029.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image029.png" alt="" width="600" height="279" /></a></p>
<p style="text-align: center">Above: eXplainPMT&#8217;s <em>Releases</em> view.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image030.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image030.png" alt="" width="600" height="308" /></a></p>
<p style="text-align: center">Above: eXplainPMT&#8217;s <em>Iteration</em> view.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image031.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image031.png" alt="" width="600" height="213" /></a></p>
<p style="text-align: center">Above: eXplainPMT&#8217;s <em>Backlog</em>.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image032.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image032.png" alt="" width="600" height="277" /></a></p>
<p style="text-align: center">Above: eXplainPMT&#8217;s <em>Initiative</em> view. Initiatives are logical groupings of stories.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image033.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image033.png" alt="" width="600" height="335" /></a></p>
<p style="text-align: center">Above: eXplainPMT&#8217;s <em>Story</em> view.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image034.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image034.png" alt="" width="600" height="304" /></a></p>
<p style="text-align: center">Above: eXplainPMT&#8217;s <em>Project Burndown</em>. The burndown, measured in points, is for the whole project only, not for iterations.</p>
<h3>XPlanner</h3>
<p>XPlanner is included in this comparison because at one time it had a large user base and was the primary tool in this category. Although the project is dormant now, it serves as a good baseline for seeing how tools have changed in the past few years.</p>
<p>URL: <a href="http://www.xplanner.org/" target="_blank">http://www.xplanner.org/</a></p>
<p>Version reviewed: 0.7b (beta)</p>
<p>Technology: Java 1.5, Tomcat 5.0 (not 5.5), MySQL</p>
<p>License: LGPL</p>
<h4>Concepts</h4>
<p>The highest level construct is the <em>project</em>, and XPlanner supports multiple projects. It does not include <em>releases</em>. Each project has one or more <em>iterations</em>. It does not include a <em>product backlog</em>, but a workaround is to create a special iteration to use as a product backlog. Iterations contain <em>stories</em>, and stories contain <em>tasks</em>. Tasks may be of type <em>feature, debt, defect, ftest</em> (functional test), <em>atest</em> (acceptance test), or <em>overhead</em>. Stories are estimated in hours, and tasks are estimated and tracked in hours.</p>
<p>Users in XPlanner can be assigned four permission levels: Viewer (read only), Editor, Admin., or Super Admin. XPlanner does not have a team construct for grouping users.</p>
<h4>Viability, Support &amp; Documentation</h4>
<p>The last update to XPlanner was in May 2006, so it’s safe to say the project is dormant. The project does have forums for support that contain lots of useful help but they are inactive now; the forum averages two new topics per month with a few replies each. The installation documentation is sufficient although it’s only a README file in the latest version 0.7b. User documentation is minimal, but the tool is intuitive enough that little documentation is necessary.</p>
<h4>Usability</h4>
<p>XPlanner’s UI is straightforward and intuitive. However, it lacks most of the client-side (AJAX-based) usability features of most modern browser applications.</p>
<h4>Strengths</h4>
<ul>
<li>Intuitive interface.</li>
<li>Rich built-in reports and charts.</li>
<li>SOAP API for integration.</li>
<li>Customizable notation for simple URL linking with external systems such as defect tracking.</li>
</ul>
<h4>Weaknesses</h4>
<ul>
<li>No releases or roadmap.</li>
<li>No task board/whiteboard view.</li>
<li>No story points.</li>
<li>No &#8220;epics&#8221; or hierarchy of stories/features/requirements.</li>
<li>The project is dormant, with the last update in May 2006.</li>
<li>Support is very limited since the project is dormant.</li>
</ul>
<h4>Overall Rating</h4>
<p>Despite its shortcomings, XPlanner is still a good tool for small teams. Since the project is dormant and other tools have better features now, we recommend Agilefant, IceScrum or Agilo over XPlanner, but recommend XPlanner over eXPlainPMT for most teams.</p>
<h4>Screenshots</h4>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image035.png"><img class="aligncenter" src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image035.png" alt="" width="600" height="571" /></a></p>
<p style="text-align: center">Above: Defining a story in XPlanner.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image036.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image036.png" alt="" width="600" height="274" /></a></p>
<p style="text-align: center">Above: XPlanner&#8217;s <em>Iteration</em> view. Stories are ranked by manually renumbering them. You can move a story to a different iteration with the 3<sup>rd</sup> action icon.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image037.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image037.png" alt="" width="600" height="400" /></a></p>
<p style="text-align: center">Above: XPlanner&#8217;s <em>Story</em> view</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image038.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image038.png" alt="" width="600" height="186" /></a></p>
<p style="text-align: center">Above: Recording time spent on a task in XPlanner.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image039.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image039.png" alt="" width="600" height="308" /></a></p>
<p style="text-align: center">Above: XPlanner&#8217;s <em>Iteration Progress</em> chart, showing estimated and actual hours.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image040.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image040.png" alt="" width="600" height="306" /></a></p>
<p style="text-align: center">Above: XPlanner&#8217;s <em>Iteration Burndown</em>, showing hours remaining in the iteration.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image041.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image041.png" alt="" width="600" height="487" /></a></p>
<p style="text-align: center">Above: A variety of built-in charts in XPlanner&#8217;s chart view.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image042.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image042.png" alt="" width="600" height="286" /></a></p>
<p style="text-align: center">Above: XPlanner&#8217;s <em>Metrics</em> view.</p>
<p style="text-align: center"><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image043.png"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/09/image043.png" alt="" width="600" height="271" /></a></p>
<p style="text-align: center">Above: XPlanner&#8217;s accuracy metrics, showing the accuracy of estimates.</p>
<h3>Conclusion</h3>
<p>Overall I give high marks to Agilefant, IceScrum and Agilo. XPlanner has significant drawbacks but is a very capable tools the feature sets meet your needs. eXPlainPMT is missing too many key features and its development status is uncertain, so I don’t recommend it. However, each organization should consider its own situation and feature needs before choosing a tool. Particular features may be very important for one organization but not for another.</p>
]]></content:encoded>
			<wfw:commentRss>http://olex.openlogic.com/wazi/2009/comparing-open-source-agile-project-management-tools/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Survey of Open Source Modeling Tools for Software Development</title>
		<link>http://olex.openlogic.com/wazi/2009/oss-modeling-tools-for-software-development/</link>
		<comments>http://olex.openlogic.com/wazi/2009/oss-modeling-tools-for-software-development/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 18:21:55 +0000</pubDate>
		<dc:creator>Grant Smith</dc:creator>
				<category><![CDATA[Comparisons]]></category>
		<category><![CDATA[Acceleo]]></category>
		<category><![CDATA[AndroMDA]]></category>
		<category><![CDATA[ArgoUML]]></category>
		<category><![CDATA[BOUML]]></category>
		<category><![CDATA[Dia]]></category>
		<category><![CDATA[Gaphor]]></category>
		<category><![CDATA[Kivio]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[PyUML]]></category>
		<category><![CDATA[StarUML]]></category>
		<category><![CDATA[Taylor]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[UniMod]]></category>
		<category><![CDATA[Violet]]></category>

		<guid isPermaLink="false">http://olex.openlogic.com/wazi/?p=1415</guid>
		<description><![CDATA[Poor planning is one of the top reasons why software projects are delivered late, over budget, or not at all, so it’s important to get organized before you start coding. In this article we survey some of the open source modeling tools available to help you streamline the development planning process.]]></description>
			<content:encoded><![CDATA[<p>Poor planning is one of the top reasons why software projects are delivered late, over budget, or not at all, so it’s important to get organized before you start coding.  For decades programmers tried all manner of flow charts, elaborate diagrams, and volumes of specifications in an attempt to fully understand the code they planned to write, but these methods often proved to be ineffective and time consuming.  Fortunately, programmers today can choose from a wide range of modeling tools that make it relatively easy to lay out the functionality and use cases for a new project.</p>
<p>In this article we’ll survey some of the modeling tools available to help you streamline the development planning process.  All of the modeling tools covered in this survey are open source applications. The modeling tools addressed in this survey are:</p>
<ul>
<li><a href="https://olex.openlogic.com/packages/acceleo" target="_blank">Acceleo</a></li>
<li><a href="https://olex.openlogic.com/packages/andromda" target="_blank">AndroMDA</a></li>
<li><a href="https://olex.openlogic.com/packages/argouml" target="_blank">ArgoUML</a></li>
<li><a href="https://olex.openlogic.com/packages/bouml" target="_blank">BOUML</a></li>
<li><a href="https://olex.openlogic.com/packages/dia" target="_blank">Dia</a></li>
<li><a href="http://www.fujaba.de/" target="_blank">Fujaba</a></li>
<li><a href="https://olex.openlogic.com/packages/gaphor" target="_blank">Gaphor</a></li>
<li><a href="https://olex.openlogic.com/packages/kivio" target="_blank">Kivio</a></li>
<li><a href="https://olex.openlogic.com/packages/netbeans" target="_blank">NetBeans</a></li>
<li><a href="http://www.papyrusuml.org/" target="_blank">Papyrus</a></li>
<li><a href="https://olex.openlogic.com/packages/pyuml" target="_blank">PyUML</a></li>
<li><a href="https://olex.openlogic.com/packages/staruml" target="_blank">StarUML</a></li>
<li><a href="https://olex.openlogic.com/packages/taylor" target="_blank">Taylor</a></li>
<li><a href="https://olex.openlogic.com/packages/uml" target="_blank">Umbrello</a></li>
<li><a href="https://olex.openlogic.com/packages/unimod" target="_blank">UniMod</a></li>
<li><a href="https://olex.openlogic.com/packages/violet" target="_blank">Violet</a></li>
</ul>
<h3>Background</h3>
<p>As modeling tools have evolved, they’ve blurred the boundaries of traditional software development planning. For example, some modeling tools can analyze and reverse engineer source code in order to produce UML diagrams. Similarly, most modeling tools support <a href="http://en.wikipedia.org/wiki/Model_Driven_Architecture" target="_blank">model-driven architecture (MDA)</a>, which means they can generate code from the models. Whether or not you use those features — and to what extent — is up to you. One option is to use the generated code as a skeleton and add in technology of your choice further down the road.</p>
<p>Most of the modeling tools covered in this survey use the <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language" target="_blank">Unified Modeling Language (UML)</a>, so you may wish to become proficient in UML to maximize your understanding of these tools.  In addition to UML compliance, some of the other factors we’ll examine for these modeling tools include:</p>
<ul>
<li>Code generation capabilities</li>
<li>Ease of use</li>
<li>Documentation</li>
</ul>
<p>We’ll start by taking a look at &#8220;contenders&#8221; that have unique strengths or benefits but lack some of the features we feel are most desirable. Then, we’ll move on to our list of &#8220;primary candidates&#8221; that offer the strongest combination of capabilities, documentation, and ease of use.</p>
<h3>Condenders</h3>
<h4>AndroMDA</h4>
<p>If you&#8217;re serious about taking the MDA approach to software development, <a href="https://olex.openlogic.com/packages/andromda" target="_blank">AndroMDA</a> is candidate worthy of consideration.  While it does not have UML diagramming tools of it&#8217;s own, AndroMDA integrates with others to do the code generation. What we love about it is that it integrates with <a href="https://olex.openlogic.com/packages/maven" target="_blank">Maven</a>, which is quickly becoming the standard build tool for Java development.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_andromda.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_andromda.png" alt="" width="350" height="263" /></a></p>
<h4>Dia</h4>
<p><a href="https://olex.openlogic.com/packages/dia" target="_blank">Dia</a> is an application for creating technical diagrams. Its interface and features are loosely patterned after the Windows program Visio, so many users will find it easy to get started. Features of Dia include multiple-page printing, export to many formats (including EPS, SVG, CGM, and PNG), and the ability to use custom shapes created by the user as simple XML descriptions.  Dia is useful for drawing UML diagrams, network maps, and flowcharts, but it does not support code generation. It runs on Linux, Unix and Windows and is released under the <a href="https://olex.openlogic.com/license_classes/4" target="_blank">GPL License</a>.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_dia.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_dia.png" alt="" width="350" height="347" /></a></p>
<h4>Fujaba</h4>
<p><a href="http://www.fujaba.de/" target="_blank">Fujaba</a> is a UML modeling tool that generates code in Java and vice-versa. Most of the documentation is is German, but there is great tutorial in English that demonstrates how to create a networked game using Fujaba exclusively. It is distinguished from other CASE-Tools by the fact that it performs Story Driven Modeling (SDM). Fujaba seems to be popular among German academic institutions and is used as a teaching aid for software development.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_fujaba4.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_fujaba4.png" alt="" width="350" height="216" /></a></p>
<h4>Gaphor</h4>
<p><a href="https://olex.openlogic.com/packages/gaphor" target="_blank">Gaphor</a> is a simple UML 2.0 modeling environment, and simplicity seems to be its primary aim — it is easy to install, use and extend. Gaphor is cross-platform, running on multiple flavors of Unix and Windows. No code generation is supported. However the models can be exported to XMI, and SVG, PNG and PDF format exports are supported for the diagrams.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_gaphor-ss2.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_gaphor-ss2.png" alt="" width="350" height="305" /></a></p>
<h4>Kivio</h4>
<p><a href="https://olex.openlogic.com/packages/kivio" target="_blank">Kivio</a> is the <a href="https://olex.openlogic.com/packages/koffice" target="_blank">KOffice</a> flowchart and diagram creation tool. It allows you to create accurate scale diagrams by arranging pre-drawn shapes and stencils on a page. The stencils might represent stages of a process, office furniture, or components on an electronic circuit. Kivio comes with a large collection of different stencils, which are grouped into collections — known as stencil sets — by subject area. Kivio features script-able stencils using Python, support for Dia stencils, and a plugin framework for adding more functionality. No code generation is supported.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_kivio.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_kivio.png" alt="" width="350" height="264" /></a></p>
<h4>PyUML</h4>
<p><a href="https://olex.openlogic.com/packages/pyuml" target="_blank">PyUML</a> is described as a fully functional UML-Roundtrip-Tool for <a href="https://olex.openlogic.com/packages/python" target="_blank">Python</a>. It is implemented as an <a href="https://olex.openlogic.com/packages/eclipse" target="_blank">Eclipse</a> plugin based on the plugins <a href="https://olex.openlogic.com/packages/pydev" target="_blank">PyDev</a> and <a href="https://olex.openlogic.com/packages/eclipseplugin-eclipse_uml2" target="_blank">Eclipse Uml2Tools</a>. Unfortunately, the user guide is only available in German, and as such we were not able to thoroughly evaluate its features. It appears to support code generation for Python only, and as of publication of this survey it did not support the latest version of Eclipse (Ganymede).</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_pyuml.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_pyuml.png" alt="" width="350" height="141" /></a></p>
<h4>StarUML</h4>
<p><a href="https://olex.openlogic.com/packages/staruml" target="_blank">StarUML</a> is a Windows-only code generator and UML editor.  The documentation is reasonably good, but it&#8217;s obvious that it was directly translated from Korean or written by a non-native English speaker. Documentation is available in Korean, Russian and Japanese, too. The product itself is very powerful; generation is not limited at all, so you can generate Word documents and spreadsheets as well as source code. Although it is touted as open source, several commercial dependencies are required to build from source.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_staruml.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_staruml.png" alt="" width="350" height="227" /></a></p>
<p>The last release of StarUML was in 2005, so it seems the product is either completely stable or development has stalled. A recent discussion on the forum page indicates that the project may have been abandoned, and some developers have started a fork called <a href="http://sunuml.wiki.sourceforge.net/" target="_blank">SunUML</a>.</p>
<h4>Umbrello</h4>
<p><a href="https://olex.openlogic.com/packages/uml" target="_blank">Umbrello</a> is a nice KDE-based UML modeler and code generator with a wealth of code generation options. In fact, it supports more languages out of the box than all of the other generators included in this survey. Most new Linux distributions with KDE4 include Umbrello as part of the kdesdk package. Umbrello is not yet available for Windows, but it looks as though this may soon change — there&#8217;s a screenshot of Umbrello running on Windows in an experimental capacity on the project website.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_umbrello-20.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_umbrello-20.png" alt="" width="350" height="264" /></a></p>
<h4>UniMod</h4>
<p>One approach to software development is to concentrate on defining and implementing application behavior using SWITCH-technology with the help of Structural Finite State Machines (FSM), and <a href="https://olex.openlogic.com/packages/unimod" target="_blank">UniMod</a> falls within this methodology. However, UniMod is different from other projects using FSMs for describing application logic in that it uses UML and is not focused on embedded systems. UniMod generates Java code exclusively and is another plugin for the Eclipse platform.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_unimod.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_unimod.png" alt="" width="350" height="312" /></a></p>
<h4>Violet</h4>
<p><a href="https://olex.openlogic.com/packages/violet" target="_blank">Violet</a> is a simple UML diagram editor and is not intended as an industrial strength modeling tool. No code generation or reverse engineering capabilities are provided, and it does not support XMI export or perform semantic checking of models (in other words, you can draw contradictory diagrams). Violet can be run as an applet, via Java Web Start or as an Eclipse plugin. Violet&#8217;s strength lies in its simplicity and easy of use.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_violet.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_violet.png" alt="" width="350" height="268" /></a></p>
<h3>Primary Candidates</h3>
<h4>ArgoUML</h4>
<p><a href="https://olex.openlogic.com/packages/argouml" target="_blank">ArgoUML</a> is another mature code generating CASE tool, supporting diagram editing for all 9 UML 1.4 diagrams. It boasts a rich set of features including code generation for Java, C++, C#, PHP4 and PHP5, and it&#8217;s platform independent and available in ten languages. Diagrams can be exported in as GIF, PNG, PS, EPS, PGML and SVG. Another nice feature is that it supports reverse engineering with Jar/class file importing. Even though we found the user documentation to be lacking in some areas, the documentation seems to be an active work in progress.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_argouml.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_argouml.png" alt="" width="350" height="318" /></a></p>
<p>ArgoUML is very easy to install, as it has no dependencies other than Java. In most cases it can be installed with a single click using Java Web Start. ArgiUML supports XMI, which is an XML based exchange format between UML tools, so interchange between XMI-compliant tools should be a snap. Other cool features include to-do lists, design critics, OCL support, checklists and multiple overlapping views.</p>
<p>It&#8217;s worth mentioning that there is a commercial product called Poseidon, which uses the ArgoUML code base and presents a more complete, rounded product. Having used both, we can live with some of the rough edges in ArgoUML in order to gain some of the other benefits of using an open source solution.</p>
<h4>BOUML</h4>
<p><a href="https://olex.openlogic.com/packages/bouml" target="_blank">BOUML</a> is a very promising project. Running under Linux, Solaris, MacOS X and Windows, it provides UML diagram editing and code generation for C++, Java, Python, PHP and IDL. The generated code is achieved through what the author calls &#8220;plug-outs&#8221; (named because they execute outside of the BOUML environment), which can be developed in C++ or Java to support other languages. Considering the author is a non-native English speaker, the documentation is excellent. This is a great example of useful open source.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_bouml.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_bouml.png" alt="" width="350" height="270" /></a></p>
<h4>Netbeans</h4>
<p>The popular <a href="https://olex.openlogic.com/packages/netbeans" target="_blank">Netbeans IDE</a> has a great UML plugin, which is easily installed via the Plugin Manager. Designers and analysts design applications using the UML modeling language, then developers generate Java code from the UML model. You can also update the model from changes made in the source code. Generated source code can be saved into new source files or merged into existing source code files, thereby providing full round-trip engineering capability. Your collection types are preserved during Forward and Reverse Engineering and may be set and changed.  The Netbeans documentation is very good, and there are tutorial trails covering UML based development. However, code generation is currently Java only.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_netbeans.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_netbeans.png" alt="" width="350" height="191" /></a></p>
<h4>Papyrus / Acceleo</h4>
<p>Another tool based on the Eclipse environment, <a href="http://www.papyrusuml.org/" target="_blank">Papyrus</a> models within UML 2.0 and supports multiple code generation possibilities. It supports the DI (Diagram Interchange) standard, an extensible architecture that allows users to add new diagrams and new code generators as well as profile development support facilities for UML2 profiles, nested profiles, and OCL constraints in profile descriptions. Code generation is supported through interfacing with Acceleo.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_papyrus.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_papyrus.png" alt="" width="350" height="237" /></a></p>
<p><a href="https://olex.openlogic.com/packages/acceleo" target="_blank">Acceleo</a>, built as an Eclipse plugin and utilizing the Eclipse EMF (Eclipse Modeling Framework), is a mature MDA environment. With syntax highlighting, real-time error detection, meta-model and scripts-based completion, and real-time preview of generated code, this is certainly an extremely useful product. Acceleo lets you insert custom coding into the generated code by defining coding zones, which are preserved in future iterations of generation. What this means is that you can use Acceleo throughout your development process and seamlessly evolve your project without losing any customization code. It uses custom templates to generate many commonly used programming artifacts, using wizards and a special syntax defined as a result of many years of experience in code generation. In addition, Acceleo uses &#8220;services&#8221; to extend templates to implement complex operations — basically allowing unlimited extensibility while keeping the templates clean and easy to read. Acceleo can be used to generate C, Fortran, Java, Smalltalk, XML, VB.Net, and virtually any markup language. This is accomplished by the use of Modules, which are basically groups of several templates that describe the information required to generate source code.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_acceleo.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_acceleo.png" alt="" width="350" height="200" /></a></p>
<p>A large number of commercial and open source UML Case tools are compatible with Acceleo, and it runs on any Eclipse-compatible operating system. And if this all sounds way too technical, don&#8217;t despair — the online documentation and tutorials are superb. The website features a support forum for both English and French language users. Additionally, there is a wiki, an IRC channel, a mailing list and an RSS feed.</p>
<h4>Taylor</h4>
<p>Implemented as a set of Eclipse plugins and targeted towards JEE development, <a href="https://olex.openlogic.com/packages/taylor" target="_blank">Taylor</a> aims to make creating JEE applications as easy as Ruby-on-Rails, but with the power of JEE and UML. We were very pleased to see that Taylor can generate <a href="https://olex.openlogic.com/packages/jsf" target="_blank">JSF</a> and <a href="https://olex.openlogic.com/packages/jboss-seam" target="_blank">JBoss Seam</a> code, as well as EJB3 Entity and Session Beans. Equally exciting is the fact it can generate Maven pom.xml files and APT documentation from the UML comments. This merely scratches the surface of its feature list — Java Enterprise developers won&#8217;t be disappointed with the direction of this project. The documentation is excellent and includes a cool Flash-based demo.</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_taylor.png" target="_blank"><img src="http://olex.openlogic.com/wazi/wp-content/uploads/2009/02/uml_modeling_taylor.png" alt="" width="350" height="264" /></a></p>
<h3>Conclusion</h3>
<p>From the perspective of a reviewer with no specific software development project in mind, the most feature-laden option is the Papyrus / Acceleo combination. If your primary IDE is Eclipse, you will benefit from having your modeling software running in the same environment as your active code editor. For Java programmers using Netbeans, the same can said of its modeling tool. BOUML, while superb in its own right, is the vision of a single author and, as such, enterprise development institutions may be hesitant to adopt it. If you don&#8217;t mind breaking away from your IDE, give Taylor a test drive.</p>
<p>As we’ve seen, there are many good open source choices for project conception and planning tools, but the best tool for the job is not easily defined.  Your unique programming language requirements, environment, operating system, and IDE will guide your decision making process.</p>
]]></content:encoded>
			<wfw:commentRss>http://olex.openlogic.com/wazi/2009/oss-modeling-tools-for-software-development/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Open Source Database Applications Comparison Matrix</title>
		<link>http://olex.openlogic.com/wazi/2009/open-source-database-applications-comparison-matrix/</link>
		<comments>http://olex.openlogic.com/wazi/2009/open-source-database-applications-comparison-matrix/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 16:15:48 +0000</pubDate>
		<dc:creator>Kimberly McClintock</dc:creator>
				<category><![CDATA[Comparisons]]></category>
		<category><![CDATA[derby]]></category>
		<category><![CDATA[h2database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://olex.openlogic.com/wazi/?p=1852</guid>
		<description><![CDATA[Use this comparison matrix to learn about the differences between - and relative benefits of - the popular open source databases MySQL, PostgreSQL, Derby and H2 Database Engine (H2DB).]]></description>
			<content:encoded><![CDATA[<p>Use this comparison matrix to learn about the differences between &#8211; and relative benefits of &#8211; the popular open source databases <a title="MySQL in OLEX" href="https://olex.openlogic.com/packages/mysql" target="_blank">MySQL</a>, <a title="PostgreSQL in OLEX" href="https://olex.openlogic.com/packages/postgresql" target="_blank">PostgreSQL</a>, <a title="Derby in OLEX" href="https://olex.openlogic.com/packages/derby" target="_blank">Derby</a> and <a title="H2DB in OLEX" href="https://olex.openlogic.com/packages/h2database" target="_blank">H2 Database Engine (H2DB)</a>.</p>
<p>Over the years, offerings in the sphere of Databases available from the open source community have become faster and more reliable and, with that, increasingly popular choices for enterprises globally and across a broad swath of industries. As with a number of other categories of project, open source databases now compete on equal footing with established proprietary offerings such as SQL Server and Oracle. In fact, studies and polls executed in the last few years consistently indicate that MySQL and PostgreSQL both rank in the top ten databases used by enterprises; MySQL frequently appears in the top three along with SQL Server and Oracle.</p>
<p>The following tables represent research completed in the fall of 2007 by OpenLogic. We went to the experts &#8212; members of the OpenLogic Expert Community who are committers and expert users of the projects &#8212; and asked them to answer a set of questions. Experts in MySQL, PostgreSQL, Derby and H2DB responded. Use the resulting information as a tool to plan your projects.</p>
<p>The five questions we asked the experts appear below. To view the  	detail on the projects* compared across each question, <a id="Questions">click the question</a>.</p>
<ol>
<li><a href="#QuestionOneSummary">What&#8217;s 			the &#8217;sweet spot&#8217; of your project? For what type of projects should 			users strongly consider it? </a></li>
<li><a href="#QuestionTwoSummary">What 			type of scenarios does your project not fit into as well? Would you 			recommend another project in this scenario? If so, which one? </a></li>
<li><a href="#QuestionThreeSummary"> Of 			the projects included here, which have you tried? Of those, which 			ones did you like or dislike, and why?</a></li>
<li><a href="#QuestionFourSummary"> What 			is the future of this project? What&#8217;s coming that will ease 			development?</a></li>
<li><a href="#QuestionFiveSummary"> Are 			there myths about this project that you&#8217;d like to challenge? </a></li>
</ol>
<p>For comprehensive information on each project, search the OLEX Open 	Source Library. For a list of the open source developers we 	interviewed, click 	<a title="Acknowledgements" href="#Acknowledgements">here</a>.</p>
<p><a id="What_version?">*While no version of the projects is 		specified, you can assume that the information relates to the latest 		version in our library at the time of the last update.</a></p>
<h2>Summarized Response</h2>
<div>
<div id="help">
<h3 id="QuestionOneSummary" class="section">What&#8217;s your project&#8217;s &#8217;sweet spot&#8217;? For what type of projects should users strongly consider it?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question One -- Full Answers" href="#QuestionOne">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MySQL</th>
<td>
<ul>
<li> It supports replication of primary-secondary out of the box.</li>
<li> It provides good handling of national languages (you can set collation and encoding per database, table, column).</li>
<li> It executes simple commands (select/insert/update/delete) quickly.</li>
<li> It is multiplatform.</li>
</ul>
</td>
</tr>
<tr>
<th>PostgreSQL</th>
<td>
<ul>
<li>It&#8217;s great for Web based applications doing either &#8216;daily chores&#8217; or research projects.</li>
<li>It&#8217;s fast and easy to use.</li>
<li>Updating is easy. Update and replication can be automated with tools.</li>
<li>Good documentation.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Derby</th>
<td>
<ul>
<li>Operates in both embedded mode and on a network server.</li>
<li>Supports Java based stored procedures, and provides a good deal of flexibility in data manipulation.</li>
<li>Tight security features distinguish it from other open source offerings.</li>
<li>Good for CDC devices.</li>
</ul>
</td>
</tr>
<tr>
<th>H2 Database Engine (H2DB)</th>
<td>
<ul>
<li>A fast SQL database.</li>
<li>It&#8217;s good in Java unit test scenarios requiring a SQL database and accessing any SQL database with the JDBC API (using the H2 Console tool).</li>
<li>Great documentation.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionTwoSummary" class="section">What type of scenarios does your project not fit into as well? Would you recommend another project in this scenario? If so, which one?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question Two -- Full Answers" href="#QuestionTwo">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MySQL</th>
<td>
<ul>
<li>Any scenario requiring logic in the database.</li>
<li>Not so good for complicated queries.</li>
<li>MySQL is not the best choice if the administrator needs to give hints to internal query planner (basically only USE INDEX).</li>
<li>Triggers and stored routines have many restrictions (for example one cannot use transactions inside routines or use statements which returns resultsets).</li>
</ul>
</td>
</tr>
<tr>
<th>PostgreSQL</th>
<td>
<ul>
<li>One requiring a full journaling system.</li>
<li>Use a lighter database system (like dbm) if all you need are very simple key/data pairs.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Derby</th>
<td>
<ul>
<li>High availability and replication are not supported.</li>
<li>It&#8217;s not suitable for applications with hundreds of transactions per second or databases larger than 10 gigabytes.</li>
<li>Not suitable for any kind of warehousing scenario, or a scenario which involves the manipulation of spatial data.</li>
</ul>
</td>
</tr>
<tr>
<th>H2 Database Engine (H2DB)</th>
<td>
<ul>
<li>Applications that need a large database.</li>
<li>Scenarios in which many (3 or more) connections concurrently access the same database.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionThree" class="section">Of the projects included here, which have you tried? Of those, which ones did you like or dislike, and why?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question Four -- Full Answers" href="#QuestionThree">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MySQL</th>
<td>PostgreSQL: liked</p>
<ul>
<li>In my opinion Postgresql is most the mature open source database engine. It&#8217;s powerful, full-featured, efficient and robust.</li>
<li>Of particular note are the following features:
<ul>
<li>Procedural languages: postgresql makes it possible to write database functions in many languages like java, perl, python, php.</li>
<li>It&#8217;s very useful to explain analyze command, and it shows and measures queries via query planner.</li>
<li>A query optimizer with a couple of optimization algorithms.</li>
<li>A rich SQL dialect: foreign keys, views, procedures, triggers.</li>
<li>Contrib package &#8211; extensions which are developed outside postgresql.</li>
</ul>
</li>
</ul>
</td>
</tr>
<tr>
<th>PostgreSQL</th>
<td>MySQL: didn&#8217;t like</p>
<ul>
<li>I found it cumbersome.</li>
<li>It lacks concise documentation.</li>
<li>It may be faster than PostgreSQL in some circumstances, but if a developer needs to spend twice the time to make it all work, it is not worth it.</li>
<li>From the tests I have seen, MySQL and PostgreSQL are pretty much equal in access speed. (Speed issues may arise depending on how you use the database and all systems have advantages and disadvantages in that area.)</li>
<li>Especially annoying in MySQL are the documents that indicate functionality that doesn&#8217;t exist or doesn&#8217;t work as described. It&#8217;s possible that the docs referred to a different version, but the appropriate version was not made clear. This made the docs unusable.</li>
<li>Outside of that, the SQL commands are in general similar, though PostgreSQL has more functionality. This allows more granularity in your day to day programming of the database.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Derby</th>
<td>PostgreSQL: liked</p>
<ul>
<li>I vote for PostgreSQL when enterprise level features like clustering and high availability are required.</li>
<li>Migration from PostgreSQL to ORACLE is very easy and it makes PostgreSQL a good choice for projects that may need to be ported to an ORACLE database.</li>
</ul>
</td>
</tr>
<tr>
<th>H2 Database Engine (H2DB)</th>
<td>MySQL: liked</p>
<ul>
<li>Easy to use, very stable, fast.</li>
<li>The licensing could be clearer and it&#8217;s not Java.</li>
</ul>
<p>PostgreSQL: liked</p>
<ul>
<li>Easy to use, very stable, quite fast, clear license.</li>
<li>Not Java.</li>
</ul>
<p>Derby: disliked</p>
<ul>
<li>Wish it were easier to use.</li>
<li>Wish documentation were better.</li>
<li>It was not as stable as others I have used and as its reputation led me to believe.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFourSummary" class="section">What is the future of this project? What&#8217;s coming that will ease development?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question Four -- Full Answers" href="#QuestionFour">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MySQL</th>
<td>
<ul>
<li>Falcon, a new storage engine.</li>
</ul>
</td>
</tr>
<tr>
<th>PostgreSQL</th>
<td>
<ul>
<li>Adherence to SQL standards.</li>
<li>Faster queries.</li>
<li>Simplified upgrades.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Derby</th>
<td>
<ul>
<li>More efficient replication.</li>
<li>Higher availability.</li>
<li>Greater support for XML.</li>
</ul>
</td>
</tr>
<tr>
<th>H2 Database Engine (H2DB)</th>
<td>
<ul>
<li>Performance enhancements.</li>
<li>Better documentation.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFiveSummary" class="section">Are there myths about this project that you&#8217;d like to challenge?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question Five -- Full Answers" href="#QuestionFive">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MySQL</th>
<td>
<ul>
<li>That it is dual licensed.</li>
</ul>
</td>
</tr>
<tr>
<th>PostgreSQL</th>
<td>
<ul>
<li>Because it is free, it must not be any good.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Derby</th>
<td>
<ul>
<li>That it doesn&#8217;t perform as well as other open source alternatives.</li>
</ul>
</td>
</tr>
<tr>
<th>H2 Database Engine (H2DB)</th>
<td>
<ul>
<li>That Java is slow.</li>
<li>That transactions lack durability.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<p><!-- COMPLETE RESPONSES --></p>
<h2>Complete Responses</h2>
<h3 id="QuestionOne" class="section">What&#8217;s your project&#8217;s &#8217;sweet spot&#8217;?</h3>
<p>This is the full response. For a summary of the response, click <a title="title=" href="#QuestionOneSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MySQL</th>
<td>MySQL has the following strengths:</p>
<ul>
<li>It supports primary-secondary replication out of the box.</li>
<li>It handles national languages well (you can set collation and encoding per database, table, column).</li>
<li>It executes simple commands (select/insert/update/delete) quickly.</li>
<li>It is multi-platform.</li>
</ul>
<p>Given these strengths, it&#8217;s the best platform for use developing Web sites because these kinds of projects demand a database that can respond quickly.</p>
<p>In Web environments, more than half of the operations required of the database involve reading data. Given that MySQL supports database replication out of the box, it makes scaling sites and Web services easier.</p>
<p>The primary advantage of multi-platform support is scalability. I&#8217;ve worked in environments that began by installing MySQL on a single PC, then two, then a SUN SPARC server followed by several Intel IA-64 (Itanium) servers, and eventually two IBM PowerPCs with AIX; with all of them running MySQL as the database server. Additionally, some of the developers had a local copy of MySQL installed on theirs laptops/desktops. Very convenient.</td>
</tr>
<tr>
<th>PostgreSQL</th>
<td>Postgresql is also very well documented, with easy to read chapters, many examples that work, and information properly organized by version (7.4, 8.0, 8.2&#8230;).</td>
</tr>
<tr class="odd">
<th>Derby</th>
<td>Apache Derby is a pure Java RDBMS (Relational Database Management System). It can operate both in embedded mode, and as a network server. Derby supports Java based stored procedures, and provides a good deal of flexibility in data manipulation.</p>
<p>The tight security features of Derby make it a unique open source database. In addition to regular SQL grant and revoke mechanisms, Derby allows you to configure several options to a determine connection authentication source (LDAP, Built-in, etc.), and also to utilize database encryption using JCE facilities.</p>
<p>Derby supports four common isolation levels, and it operates by default in READ_COMMITED mode. In addition, it supports backup/ restore operations and crash recovery for transactions not committed, if for any reason the database crashes.</p>
<p>Derby can be used on any J2ME enabled device with support for CDC/Foundation 1.1. Having different versions and modes makes Derby the most suitable database for many projects. For example: those designed for CDC devices, desktop applications which can use embedded mode, and server side applications with multi gigabytes databases that can utilize network server mode. All of these modes and versions have the same functionality, which makes the development cycle less complex.</td>
</tr>
<tr>
<th>H2 Database Engine (H2DB)</th>
<td>H2 Database Engine&#8217;s sweet spot is Java applications requiring a fast or embedded (or both) SQL database. Another strength is Java unit test scenarios requiring a SQL database and accessing any SQL database with the JDBC API (using the H2 Console tool). Finally, the terrifc documentation makes it a good choice for developers unfamiliar with SQL.</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionTwo" class="section">What scenarios does this project not work as well in?</h3>
<p>This is the full response. For a summary of the response, click <a title="title=" href="#QuestionTwoSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MySQL</th>
<td>One which demands putting logic into a database (complicated stored procedures, triggers). For this kind of projects PostgreSQL or Oracle are a better fit.</p>
<p>As mentioned before, MySQL is good for simple queries, but not so good for complicated ones (for example, a project with joins from many tables, sub-queries, grouping etc). This is especially true when the tables contain a large amount of data. In my opinion, it doesn&#8217;t fit in environments like Data Warehouses or Data Mart.</p>
<p>Some other MySQL drawbacks include:</p>
<ul>
<li>The administrator can&#8217;t give hints to internal query planner (basically only USE INDEX).</li>
<li>Triggers and stored routines have many restrictions (for example, one cannot use transactions inside routines or use statements which return resultsets).</li>
<li>Higher level languages like plpsql or script languages like Perl or Python can not be used to program logic in a database.</li>
</ul>
</td>
</tr>
<tr>
<th>PostgreSQL</th>
<td>Even really large projects can use PostgreSQL without much of a problem.</p>
<p>The one thing that Postgresql itself does not offer is a full journaling system. Instead, it relies on your file system to ensure data integrity. This means PostgreSQL needs to run with ext3, NTFS or an equivalent file system.</p>
<p>I do not know of a database system that replicates a full working journal. Yet if you need to use ext2, FAT or some other non-journaling file system, you would need such a system. On the other hand, these days you should not be using ext2 or FAT or any similar file system anyway.</p>
<p>Again, I would recommend a much lighter database system (like dbm) if all you need are very simple key/data pairs. Thus, very small projects should use their own system.</td>
</tr>
<tr class="odd">
<th>Derby</th>
<td>The current version of Derby does not support high availability and replication, although in the next major version there will be out of the box support for replication and high availability.</p>
<p>Derby is not suitable for applications with hundreds of transactions per second, or for databases larger than 10 gigabytes.</p>
<p>Additionally, Derby is not suitable for any kind of warehousing scenario, or for any scenario which involves the manipulation of spatial data.</p>
<p>That said, there are workarounds for some of these issues. Using Sequoia can resolve high availability and replication issues, for example. For all of the above scenarios, PostgreSQL is the most suitable project because of its stable engine, enterprise level features like clustering and high availability, and supports for spatial data.</td>
</tr>
<tr>
<th>H2 Database Engine (H2DB)</th>
<td>Applications that need a large database or scenarios in which many (3 or more) connections concurrently access the same database.</p>
<p>Non-Java applications, of course, and instances when the processing of XML documents is required.</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionThree" class="section">Of the projects included here, which have you tried? Of those, which ones did you like or dislike, and why?</h3>
<p>This is the full response. For a summary of the response, click <a title="title=" href="#QuestionThreeSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MySQL</th>
<td>PostgreSQL: liked</p>
<ul>
<li>In my opinion, Postgresql is the most mature open source database engine. It&#8217;s powerful, full-featured, efficient and robust.</li>
<li>Of particular note are the following features:
<ul>
<li>Procedural languages: postgresql makes it possible to write database functions in many languages like java, perl, python, or php.</li>
<li>It&#8217;s very useful for explaining analyze command, shows and measure query via query planner.</li>
<li>A query optimizer with couple optimization algorithms.</li>
<li>Rich SQL dialect: foreign keys, views, procedures, triggers.</li>
<li>Contrib package &#8211; extensions which are developed outside postgresql.</li>
</ul>
</li>
</ul>
</td>
</tr>
<tr>
<th>PostgreSQL</th>
<td>MySQL: didn&#8217;t like</p>
<ul>
<li>I found it cumbersome.</li>
<li>It lacks concise documentation.</li>
<li>It may be faster than PostgreSQL in some circumstances, but it&#8217;s not worth it if a developer needs to spend twice the time to make it all work.</li>
<li>From the tests I have seen, MySQL and PostgreSQL are pretty much equal in access speed. (Speed issues may arise depending on how you use the database, and all systems have advantages and disadvantages in that area.)</li>
<li>Especially annoying in MySQL are the documents that indicate functionality that doesn&#8217;t exist or doesn&#8217;t work as described. It&#8217;s possible that the documents referred to a different version, but the appropriate version was not made clear, therefore the documents were unusable.</li>
<li>Other than that, the SQL commands are similar, though PostgreSQL has more functionality. This allows more granularity in your day-to-day programming of the database.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Derby</th>
<td>PostgreSQL: liked</p>
<ul>
<li>I vote for PostgreSQL when enterprise level features like clustering and high availability are required.</li>
<li>Migration from PostgreSQL to ORACLE is very easy and it makes PostgreSQL a good choice for projects that may need to be ported to an ORACLE database.</li>
</ul>
</td>
</tr>
<tr>
<th>H2 Database Engine (H2DB)</th>
<td>MySQL: liked</p>
<ul>
<li>Easy to use, very stable, fast.</li>
<li>The licensing could be clearer and it&#8217;s not Java.</li>
</ul>
<p>PostgreSQL: liked</p>
<ul>
<li>Easy to use, very stable, quite fast, clear license.</li>
<li>Not Java.</li>
</ul>
<p>Derby: disliked</p>
<ul>
<li>Wish it were easier to use.</li>
<li>Wish documentation were better.</li>
<li>It was not as stable as others I have used, and as its reputation led me to believe it would be.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFour" class="section">What is the future of this project? What&#8217;s coming that will ease development?</h3>
<p>This is the full response. For a summary of the response, click <a title="title=" href="#QuestionFourSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MySQL</th>
<td>The most significant plans for MySQL involve a new storage engine called Falcon. This engine will likely replace innodb/myisqm. It&#8217;s in an early stage of development, but it looks promising.</p>
<p>If you&#8217;re interested in why such a move is necessary, here&#8217;s some background. Currently, MySQL version 5.1 supports several storage engines, or methods of storing data on disc drives. But usually only two types are used: MyISAM and InnoDB.</p>
<p>MyISAM is the default engine. It&#8217;s fast, architecture independent, and has full text search indexes. However, since it&#8217;s not transactional, it&#8217;s not ACID compliant. This disqualifies MyISAM in scenarios which demand data consistency. Also, it doesn&#8217;t allow foreign keys. Every table in MyISAM is stored in separate files. This issue opens the possibility of data corruption.</p>
<p>InnoDB is a transaction safe (ACID compliant) engine. It allows locking data on row level, foreign keys, constraints, etc. Tables and indexes are stored in tablespaces which can be partitioned. But InnoDB has drawbacks. It is slower than the MyISAM engine, it doesn&#8217;t have full-text-search indexes, and there are some problems with AUTO_INCREMENT indexes. Possibly the biggest issue, however, is that InnoDB was developed by InnoBase, and InnoBase was acquired in 2005 by Oracle. Needless to say, the future of InnoDB in MySQL was uncertain.</p>
<p>Hence the development of Falcon, a new storage engine developed by MySQL AB. The Falcon Storage Engine has been designed with modern database requirements in mind, and particularly for use within high volume Web serving, or other environments that require high performance. It&#8217;s still in the alpha stage and still taking shape, but plans are in place for features such as:</p>
<ul>
<li>Optimizations for multiple CPU environments (multithreading).</li>
<li>True Multi Version Concurrency Control (reading/storing data with efficient locking).</li>
<li>Advanced indexes.</li>
<li>Data compression stores.</li>
<li>Intelligent tablespaces (disk management).</li>
<li>Implicit save points (for keeping data integrity).</li>
</ul>
<p>From a legal and business perspective, MySQL is in no way obligated to Oracle if it switches to the Falcon project.</td>
</tr>
<tr>
<th>PostgreSQL</th>
<td>Postgresql is already in use by companies with databases of about 32 Tb with tables having million of rows; and it just <em>works</em>. What else do you need?!</p>
<p>Seriously, like any complex system, it still has some gray areas. For instance, the project is investing energy into improving adherence to SQL standards. Another area of focus is the continued improvement of compatibility, and the filling in of holes in functionality. Still another is improvement of the search algorithm in order to speed up queries.</p>
<p>Finally, we are working to ameliorate some issues with the update process. Right now it is classic, but cumbersome, particularly for large databases. The user must dump the database, stop the old system, start the new system and then restore the database in the new system. We are working on a tool named pg_update that would &#8220;simply&#8221; update an existing set of tables to a newer version of PostgreSQL.</td>
</tr>
<tr class="odd">
<th>Derby</th>
<td>There are several plans for further development of Derby. One of the most important features, which will make it easier to use and more efficient, is primary/secondary replication, and improvements to availability.</p>
<p>Another area of development involves working on new XML processing features and enhanced support for XPath and XQuery over Derby XML type.</p>
<p>Security enhancements are also on the way, as well as the  implementation of more features defined in SQL 2003 mandatory and SQL 99 core. The latter will make it easier to write complex SQL statements for Derby.</td>
</tr>
<tr>
<th>H2 Database Engine (H2DB)</th>
<td>Project developers are enhancing Derby and adding new features. Some of these are:</p>
<ul>
<li>Optimization for improved performance in larger databases.</li>
<li>Improved concurrency.</li>
<li>Various ease-of-use features.</li>
<li>Documentation improvements.</li>
<li>Improvements to extensibility.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFive" class="section">Are there myths about this project that you&#8217;d like to challenge?</h3>
<p>This is the full response. For a summary of the response, click <a title="title=" href="#QuestionFiveSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MySQL</th>
<td>People tend to believe that MySQL is dual-licensed because it can be used as GPL software or as commercial software. MySQL is not dual licensed. Additionally, people sometimes misunderstand the GPL, and that frightens them off; but that&#8217;s a separate topic.</td>
</tr>
<tr>
<th>PostgreSQL</th>
<td>Since PostgreSQL is free software, many people believe that it can&#8217;t possibly be reliable, fast, fully featured etc.</p>
<p>In fact, PostgreSQL has most of the features you can find in other DBMSs like Oracle and Microsoft SQL. Not only that, it also includes many very useful features that are specific to PostgreSQL, such as user defined types (not just a record&#8230; a full user defined type! With functions to execute when operators are used against variables of that type, etc.).</p>
<p>In terms of security, Postgresql is one of the best databases I have seen. First of all, it runs as postgresql (not root as some others do).  Next, by default, the administrator user is not root or admin, but rather a common user of your choice and postgres. Once chosen, that user can do all the things you need a database administrator to do: create other users, databases, and tables;  and assign rights, roles, and groups to other users.</p>
<p>The database system is reliable because the entire system is thoroughly tested for at least one month before any given release. As a result, we have only rarely encountered issues with reliability.</td>
</tr>
<tr class="odd">
<th>Derby</th>
<td>Derby&#8217;s performance compared to other open source databases is much discussed, and was the subject of a talk at ApacheCON 2005. Viewing that &#8211; available on the project wiki &#8211; should put any questions to rest.</td>
</tr>
<tr>
<th>H2 Database Engine (H2DB)</th>
<td>
<ul>
<li>That it is slow because Java is slow.</li>
<li>That transactions in H2 are less durable than other in databases. In my view, this  is not true.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3><a name="acknowledgements"> Acknowledgments</a></h3>
<p>OpenLogic would like to thank the following members of the OpenLogic 	Expert Community for their contributions to this effort and invite the 	community to email us (docs-at-openlogic-dot-com) if they&#8217;d like to augment, correct, update, 	refute or dispute any of the information included herein.</p>
<table class="help_table" border="0" width="300">
<tbody>
<tr>
<th> Project</th>
<th> Contributer</th>
</tr>
<tr class="odd">
<td>MySQL</td>
<td>Krzysztof Krzyzaniak</td>
</tr>
<tr>
<td>PostgreSQL</td>
<td>Alexis Wilke</td>
</tr>
<tr class="odd">
<td>Derby</td>
<td>Masoud Kalali</td>
</tr>
<tr>
<td>HQ2DB</td>
<td>Thomas Mueller</td>
</tr>
</tbody>
</table>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://olex.openlogic.com/wazi/2009/open-source-database-applications-comparison-matrix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Comparison of Enterprise Mail Servers &#8211; Open Source and Otherwise</title>
		<link>http://olex.openlogic.com/wazi/2008/a-comparison-of-enterprise-mail-servers/</link>
		<comments>http://olex.openlogic.com/wazi/2008/a-comparison-of-enterprise-mail-servers/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 17:53:41 +0000</pubDate>
		<dc:creator>Dru Lavigne</dc:creator>
				<category><![CDATA[Comparisons]]></category>

		<guid isPermaLink="false">http://olex.openlogic.com/wazi/?p=1589</guid>
		<description><![CDATA[While open source mail servers have always dominated the mail transfer market, enterprises expect much more than just simple mail transfer from their mail servers. How do you pick the right enterprise mail server for your business?]]></description>
			<content:encoded><![CDATA[<p>While open source mail servers have always dominated the mail transfer market, enterprises expect much more than simply mail transfer from their mail servers. For instance, enterprise mail servers need to provide features such as effective SPAM and virus protection, shared calenders and contacts, and seamless integration with a wide variety of mail clients and email capable devices. This comparison will briefly describe the evolution of open source mail servers and then examine some of the contenders before focusing on the primary open source candidates for enterprise deployment.</p>
<p>The mail servers discussed in this comparison:</p>
<ul>
<li><a href="http://www-01.ibm.com/software/lotus/products/notes/"> IBM Lotus Notes</a></li>
<li><a href="http://www.microsoft.com/EXCHANGE/default.mspx"> Microsoft Exchange</a></li>
<li><a href="http://www.novell.com/products/groupwise/"> Novell Groupwise</a></li>
<li><a href="http://www.sendmail.com/"> Sendmail</a></li>
<li><a href="http://www.postfix.org/"> Postfix</a></li>
<li><a href="http://www.qmail.org/top.html">Qmail</a></li>
<li><a href="http://www.exim.org/"> Exim</a></li>
<li><a href="http://www.open-xchange.com/"> Open-Xchange</a></li>
<li><a href="http://www.zimbra.com/"> Zimbra</a></li>
<li><a href="http://www.scalix.com/"> Scalix</a></li>
</ul>
<h3>Background</h3>
<p>Traditionally, an enterprise required two types of mail servers. An <a href="http://en.wikipedia.org/wiki/Mta"> MTA</a>, also known as an <a href="http://en.wikipedia.org/wiki/Smtp"> SMTP</a> server,  was used to transfer mail between organizations over the Internet. Since the introduction of Sendmail in the early 1980s, open source has dominated the MTA market, with a recent <a href="http://www.mailradar.com/mailstat/"> survey</a> showing that the open source MTAs Sendmail, Postfix, Qmail, and Exim represent 74% marketshare. The second type of server, known as a <em>messaging</em> or <em>groupware</em> server, was used to provide additional intra-organizational features such as shared calenders and contacts. The first messaging servers used proprietary protocols&#8211;in other words, they did not support SMTP. As enterprises became more Internet-connected, the vendors of messaging servers added SMTP connectors to provide MTA functionality. IBM Lotus Notes, Microsoft Exchange, and Novell Groupwise are examples of enterprise-grade mail servers that provide both MTA and messaging functionality.</p>
<p>Over the years, open source components were created to provide messaging, anti-virus, and spam protection features. Many of these components have matured and, when stacked to create a complete solution, can provide most of the features enterprises have come to expect from their proprietary mail solutions. However, creating a &#8220;roll your own&#8221; messaging solution can quickly erode the savings enterprises get by no longer paying licensing fees to a traditional proprietary vendor. It takes a significant amount of time and talent to research which components provide the required features; integrate, test and support those components into a custom solution, and, if necessary, to develop any features not provided by the open source components. Fortunately, a new generation of open source enterprise mail server has emerged to provide vendor-supported, pre-integrated, and customizable solutions for the enterprise.</p>
<h3>Contenders</h3>
<p>All of the solutions we examine provide:</p>
<ul>
<li> feature-rich messaging for a variety of mail clients</li>
<li>offer a number of offerings which cater to an enterprise&#8217;s size and budget</li>
<li>and provide a network of integration suppliers, support offerings, and third-party add-ons</li>
</ul>
<p>Each provides an open source &#8220;community&#8221; edition, developer APIs, and some means of community support such as forums, wiki, and documentation. Two vendors, Open-Xchange and Zimbra, use primarily open source technologies within their solution.</p>
<h3>Primary Candidates</h3>
<p>Three commercial open source vendors stand out as potential enterprise mail solutions because they provide and support the features set out at the beginning of this comparison.  These candidates are:</p>
<ul>
<li>Open-Xchange</li>
<li>Zimbra</li>
<li>Scalix</li>
</ul>
<h3>Open-Xchange</h3>
<p>Open-Xchange, a privately-held company headquartered in Tarrytown, N.Y., released its software under the <a href="http://www.opensource.org/licenses/gpl-2.0.php"> GPL</a> in August, 2004. Open-Xchange offers several editions: a free community edition for enterprises with experienced Linux staff, a commercial server edition for medium to large enterprises, a hosting edition for SaaS providers, and a turnkey appliance for small to medium enterprises with a limited IT department. Support options range from the freely available <a href="http://www.open-xchange.com/en/oxpedia"> Oxpedia</a> to various levels of service level agreements. Price lists are available by checking the webpage for each edition and support level. There are pricing points for government, academic, and the enterprise.</p>
<h4>Overview</h4>
<p>Open-Xchange provides a rich email and collaboration environment, document sharing, anti-virus and anti-spam, automatic updates, and backup/recovery. It is designed to interoperate with Outlook and existing Microsoft Exchange clients.  OxTender for Mac OSX, currently in beta, allows Mac users to access email, appointments, documents, contacts and tasks through standard Mac applications like Mail, iCal and Address Book. Open-Xchange also offers an easy-to-use graphical and skinnable web interface for administration tasks.</p>
<h4>Technology</h4>
<p>Open-Xchange is comprised of several mature open source components, including: the Apache webserver, Tomcat servlet engine, MySQL database, OpenLDAP directory server, SpamAssassin, ClamAV for antivirus, and the Dovecot, Cyrus, and Courier mail servers. It supports many standards, protocols, and extensions including: <a href="http://en.wikipedia.org/wiki/AJAX"> AJAX</a>, <a href="http://en.wikipedia.org/wiki/Webdav"> WebDAV</a>, <a href="http://en.wikipedia.org/wiki/SOAP_(protocol)"> SOAP</a>, <a href="http://en.wikipedia.org/wiki/Java_(programming_language)"> Java</a>, <a href="http://en.wikipedia.org/wiki/Osgi"> OSGi</a>, <a href="http://en.wikipedia.org/wiki/Syncml"> and SyncML</a>.</p>
<h4>Features</h4>
<p>Open-Xchange provides automatic synchronization with Outlook and synchronization with any SyncML 1.1 <a href="http://www.opensync.org/wiki/releases/0.2x/DeviceCompatibilityList"> compliant</a> device.</p>
<p>A <a href="http://www.open-xchange.com/en/products/migration-tools"> migration tool</a> is available to move email messages, calendar entries, tasks, contacts, user groups, and mailboxes from Microsoft Exchange to the Open-Xchange Server. <a href="http://www.open-xchange.com/en/partner/solutions"> Partner solutions</a> are also available to extend functionality with such features as process and project management, data recovery, and unified messaging with VoIP.</p>
<p><a href="http://dev.netvibes.com/doc/"> Netvibes UWA</a> enables integration of web applications such as RSS feeds, podcasts, video channels, Salesforce.com, and SAP Business One. The OSGi framework support enables easy integration of third-party applications, such as CRM and ERP. Moreover, updates of all OSGi modules can be installed with almost no downtime.</p>
<h4>Usability</h4>
<p>From an implementation point of view, all versions of Open-Xchange (except for the turnkey appliance) require knowledge of Linux mail systems, Apache, MySQL 5.x, and command line administration of Linux systems. Integration of add-ons and appliances may require experience in XML, OSGi, or UWA. OXpedia provides free installation and developer guides and partners are available to provide installation services for a fee.</p>
<p>Once the solution is in-place, users can use the webmail interface or their existing Outlook or Mac OSX client to perform their usual enterprise email tasks. Administrators will still want to be familiar with Linux command line utilities as the administrative GUI is a work in progress. Small enterprises with little or no IT staff with Linux experience should consider the appliance and may find the administrative GUI complete for their needs.</p>
<h4>Screenshots</h4>
<p>User Interface</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/openxchange_user.jpg"><img class="alignnone size-medium wp-image-1782" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/openxchange_user.jpg" alt="" width="300" height="200" /></a></p>
<p>Administrative Interface</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/openxchange_admin.png"><img class="alignnone size-medium wp-image-1781" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/openxchange_admin-300x184.png" alt="" width="300" height="184" /></a></p>
<h3>Zimbra</h3>
<p>Zimbra, a Yahoo! company, releases its source and binary code offerings under the <a href="http://www.zimbra.com/license/yahoo_public_license_1.1.html"> YPL</a>. It offers five on-site editions as well as a hosted edition which can be hosted either on Yahoo! servers or through a Zimbra hosting provider. Pricing for the on-site editions is available <a href="http://www.zimbra.com/products/pricing_on_site.html"> online</a>. Zimbra offers a variety of <a href="http://www.zimbra.com/support/support_overview.html"> support</a> options ranging from open source forums and documentation to several levels of support level agreements.</p>
<h4>Overview</h4>
<p>Zimbra provides a rich email and collaboration environment, document sharing, anti-virus and anti-spam, automatic updates, and backup/recovery. It is designed to interoperate with Outlook and Mac OSX Entourage users. Its GUI administrative interface makes it easy to  manage service classes, create and edit new accounts, create and edit distribution lists, manage email queues, view and manage systems status, and start system backups.</p>
<h4>Technology</h4>
<p>Zimbra is comprised of several mature open source components, including: Apache Tomcat, Postfix, MySQL, OpenLDAP, Lucene, ClamAV, SpamAssassin, and OpenLDAP. It also supports many standards, protocols, and extensions including:  SMTP, LMTP, SOAP, XML, IMAP, POP, iCal, CalDAV, and AJAX.</p>
<p>Zimbra provides a complete set of services to plan and execute customer migrations from Exchange, Domino, GroupWise, or other legacy email systems. Documentation and scripts are made <a href="http://wiki.zimbra.com/index.php?title=User_Migration"> available</a> for migrating existing user accounts.</p>
<h4>Features</h4>
<p>Interoperability with Microsoft Exchange 2003 and integrated instant messaging are currently in beta. Connectors are available to support Microsoft Outlook and Entourage on Mac OS X 10.4.</p>
<p>The Mobile Web Client is interoperable with all  devices with HTML capable browsers, including the Apple iPhone. Mobile Edition provides sync to any java enabled device as well as native OTA synchronization and push email to iPhone, Windows, Palm, and Symbian OS devices. Zimbra Mobile Connector for BES provides native OTA synchronization withl BlackBerry devices.</p>
<p><a href="http://www.zimbra.com/products/zimlets.html"> Zimlets</a> provide integration with third party information systems such as unified messaging with asterisk.</p>
<h4>Usability</h4>
<p>Zimbra provides <a href="http://www.zimbra.com/products/demos.html"> demos and screenshots</a> of its user and administrative interface. The administrative interface is quite complete, making it useful for most tasks. The Zimbra <a href="http://gallery.zimbra.com/"> Gallery</a> allows administrators to easily extend their users&#8217; experience using zimlets, themes, and extras. The hosted solutions provide less customization but allow enterprises with limited IT resources to still benefit from an affordable and collaborative environment.</p>
<h4>Screenshots</h4>
<p>User Interface</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/zimbra_user.gif"><img class="alignnone size-medium wp-image-1786" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/zimbra_user-300x193.gif" alt="" width="300" height="193" /></a></p>
<p>Administrative Interface</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/zimbra_admin.gif"><img class="alignnone size-medium wp-image-1785" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/zimbra_admin-300x189.gif" alt="" width="300" height="189" /></a></p>
<h3>Scalix</h3>
<p>Scalix was acquired by Xandros Inc. in 2007. It offers several editions: an enterprise edition, small business edition, hosting edition, and community edition (free for up to 10 premium users). Each edition is under a separate Scalix license. Scalix offers a variety of  support options ranging from the open source wiki and documentation to several levels of support level agreements. Pricing requires contact with a sales representative.</p>
<h4>Overview</h4>
<p>Scalix offers replicated multi-server support with centralized administration from a single Management Console. It supports multiple independent mail server instances on a single server, each with its own independent user set, domain name, service processes and message store which is useful for a central group that manages IT for legally separate entities or or for hosting solutions. Scalix provides clustering, failover, and load balancing. Recovery folders allow administrators to recover emails on a per-user basis. Warious storage architectures, including any DAS and Fibre Channel or iSCSI, are supported. Connectors are provided for Microsoft Outlook and Novell Evolution clients.</p>
<h4>Technology</h4>
<p>Scalix is built upon OpenMail technology licensed from Hewlett Packard. The Scalix Collaboration Platform supports many standards, protocols, and extensions including:  SOAP, <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"> REST</a>, CalDAV, and AJAX. The Scalix ecosystem provides a list of <a href="http://www.scalix.com/enterprise/ecosystem/applications.php"> certified ecosystem components</a> (applications). Spam and virus protection are provided by add-on modules from <a href="http://www.commtouch.com/"> Commtouch</a>.</p>
<h4>Features</h4>
<p>Scalix ActiveSync provides calendar and contact synchronization with a wide variety of devices, ranging from Apple&#8217;s iPhone over Symbian-based devices from Nokia and Sony-Ericsson to PDAs and SmartPhones running Windows Mobile 2005 and higher. A separate product, NotifyLink Enterprise Mobility Solution for Scalix, provides Blackberry support.</p>
<p>Scalix and partner migration tools are available to migrate mailboxes, messages, public folders, calendars, and directory data from Exchange and other legacy systems. Scalix provides transparent server-to-server co-existence with Exchange for enterprises who need to maintain a mixed environment or migrate on a phased schedule.</p>
<h4>Usability</h4>
<p>The administrative interface allows for management of users, groups, resources, mailbox usage, and basic server settings. Developers should note that the source code is licensed under the <a href="http://www.scalix.com/community/opensource/licensing.php"> SPL</a>, a modified MPL license.</p>
<h4>Screenshots</h4>
<p>User Interface</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/scalix_user.jpg"><img class="alignnone size-medium wp-image-1784" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/scalix_user.jpg" alt="" width="300" height="228" /></a></p>
<p>Administrative Interface</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/scalix_admin.gif"><img class="alignnone size-medium wp-image-1783" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/12/scalix_admin-300x225.gif" alt="" width="300" height="225" /></a></p>
<h3>Conclusions</h3>
<p>Enterprise mail servers are feature-rich&#8211;in other words, they are complex and expensive. When researching a mail solution, consider where you want to spend your money: on licensing, vendor support, in-house configuration, or in-house development. Also consider which features are business requisites. Does the solution provide all the features needed? If not, what are the associated costs of developing or integrating third-party modules?</p>
<p>Each of the solutions discussed offer interoperability with most clients and devices. They provide either out-of-the-box support or APIs to allow integration with other applications such as instant messaging or VOiP. Enterprises should research each product&#8217;s fine print to determine the specific supported versions of clients and devices as well as the amount of work required for application integration.</p>
<h3>Final Thoughts</h3>
<p>This comparison did not discuss network architecture from a security perspective. Some enterprises require a separation between their MTA (Internet facing) and messaging (intranet facing) servers. We also did not discuss the data security or privacy implications of using hosted services.</p>
]]></content:encoded>
			<wfw:commentRss>http://olex.openlogic.com/wazi/2008/a-comparison-of-enterprise-mail-servers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparing Open Source Reporting Tools for Use in the Enterprise</title>
		<link>http://olex.openlogic.com/wazi/2008/open-source-reporting-tool-comparison-for-the-enterprise/</link>
		<comments>http://olex.openlogic.com/wazi/2008/open-source-reporting-tool-comparison-for-the-enterprise/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 23:04:05 +0000</pubDate>
		<dc:creator>Rod Cope</dc:creator>
				<category><![CDATA[Comparisons]]></category>
		<category><![CDATA[birt]]></category>
		<category><![CDATA[jacob]]></category>
		<category><![CDATA[jasperreports]]></category>
		<category><![CDATA[jfreereport]]></category>
		<category><![CDATA[pentaho]]></category>
		<category><![CDATA[poi]]></category>

		<guid isPermaLink="false">http://olex.openlogic.com/wazi/?p=1083</guid>
		<description><![CDATA[There are many open source reporting tools readily available for companies to deploy to their business users today.  Most of them, however, do not provide hard core corporate features such as multiple user support, integration with existing security mechanisms, ad hoc visual reporting tools, scheduling facilities, and the like.  This comparison will briefly examine some [...]]]></description>
			<content:encoded><![CDATA[<p>There are many open source reporting tools readily available for companies to deploy to their business users today.  Most of them, however, do not provide hard core corporate features such as multiple user support, integration with existing security mechanisms, ad hoc visual reporting tools, scheduling facilities, and the like.  This comparison will briefly examine some of the more common contenders before focusing on the primary candidates for enterprise deployment.</p>
<p>Tools addressed in this comparison include:</p>
<ul>
<li><a href="https://olex.openlogic.com/packages/eclipseplugin-eclipse_birt" target="_blank">BIRT</a></li>
<li><a href="http://datavision.sourceforge.net/" target="_blank">DataVision</a></li>
<li><a href="https://olex.openlogic.com/packages/jacob" target="_blank">Jacob</a></li>
<li><a href="https://olex.openlogic.com/packages/jasperreports" target="_blank">JasperReports</a></li>
<li>Jedox</li>
<li><a href="https://olex.openlogic.com/packages/jfreereport" target="_blank">JFreeReport</a></li>
<li>jXLS</li>
<li>OpenReport</li>
<li>OpenReports</li>
<li><a href="https://olex.openlogic.com/packages/pentaho" target="_blank">Pentaho</a></li>
<li><a href="https://olex.openlogic.com/packages/pentaho" target="_blank">POI</a></li>
</ul>
<h3>Background</h3>
<p>Open source reporting tools have been around for a number of years.  They provide functionality ranging from developer-only libraries that help organize relational data to visual report designers for IT professionals to web-based ad hoc querying applications targeted at business users.  Only in the past two years have some of these packages matured to a point where an enterprise can reasonably select one as a significant piece of technology to be deployed throughout the organization.</p>
<p>Although developer libraries and visual report designers from the open source world can be very powerful, it is the web-based, business user-facing applications that make this category interesting from an enterprise perspective.  The key here is that business users can frequently serve themselves by choosing, running, viewing, and saving reports without help from IT.  These abilities imply a set of criteria by which we can compare the open source reporting tools:</p>
<ul>
<li>Ease of use:  the need for training should be minimal and the interface should be pleasurable to use</li>
<li>Ease of deployment:  business users should need only a standard web browser to access the tool</li>
<li>Security:  the application should work with established security mechanisms (e.g., LDAP)</li>
<li>Distribution:  it should be easy for users to have reports emailed to themselves and to others</li>
<li>Scheduling:  end users should be able to schedule future report runs (e.g., first Monday of each month)</li>
<li>Multiple formats:  users like to have options when exporting report data (e.g., XLS, PDF, CSV)</li>
<li>Availability:  users want the reporting system available 24&#215;7 (i.e., clusterability, scalability)</li>
<li>Ease of administration:  it should be straightforward to set up and maintain the solution</li>
<li>Viability:  the tool should have a well-structured and thriving community with a reasonable license</li>
</ul>
<h3>Contenders</h3>
<p>Before focusing on the primary candidates for enterprise roll out, it is important to cover other reporting tools that are frequently used by developers, because not all reporting needs are of enterprise scope.</p>
<h4>DataVision and OpenReport</h4>
<p>DataVision and OpenReport are examples of developer libraries that aid developers in building reporting functionality into their applications.  As such, they are necessarily limited in addressing the criteria we set out above as important for enterprise business users.</p>
<h4>jXLS, POI, and Jacob</h4>
<p>These tools and others like them allow Java developers to create and/or manipulate XLS files to help with Microsoft Excel integration.  They are fairly low level and do not meet our enterprise criteria.</p>
<h4>Jedox</h4>
<p>Available as an open source component, Jedox provides &#8220;enterprise spreadsheets&#8221; so that end users can run reports inside of Microsoft Excel.  This works through an Excel plug-in and does not provide a separate web-based interface.  As such, it does not meet the &#8220;ease of deployment&#8221; criterion.</p>
<h4>JFreeReport</h4>
<p><a href="https://olex.openlogic.com/packages/jfreereport" target="_blank">JFreeReport</a> is now part of the Pentaho project and so it will be covered in the context of Pentaho later in this comparison.</p>
<h4>BIRT</h4>
<p><a href="https://olex.openlogic.com/packages/eclipseplugin-eclipse_birt" target="_blank">BIRT</a>, Business Intelligence Reporting Tools, is a sub-project of Eclipse.  It was originally donated by Actuate, a commercial provider of primarily proprietary reporting tools.  BIRT focuses on a report designer that is available as an Eclipse plug-in.  It also includes a debugger and other development tools.  Enterprise deployment of BIRT-based reports as defined by our criteria above is only available at this time through the proprietary iServer product from Actuate and is therefore not addressed further in this comparison of open source reporting tools for the enterprise.</p>
<h3>Primary Candidates</h3>
<p>Three open source projects stand out as potential enterprise reporting solutions because they address each of the criteria set out at the beginning of this comparison.  The candidates are:</p>
<ul>
<li>JasperReports</li>
<li>OpenReports</li>
<li>Pentaho</li>
</ul>
<h3>OpenReports</h3>
<p>Not to be confused with OpenReport, OpenReports (oreports.com) provides enterprise wrappings around a number of reporting engines that include:  BIRT, JasperReports, JFreeReport/Pentaho, and jXLS.  It offers a web-based interface with support for scheduling, security integration, and administration.  The primary benefit of OpenReports is that it allows users to mix and match reporting engines.  In this fashion, different groups within an enterprise are able to use different report design tools yet share the same server platform.</p>
<p>OpenReports is licensed under the GPL, version 2.  It is based on enterprise Java technology, supports OLAP functionality, and offers many report formats that include HTML, PDF, CSV, XLS, RTF, and image.  It allows reports to be scheduled and sent to users via email.  It also has both SOAP- and REST-based API&#8217;s.</p>
<p>The Professional version of OpenReports adds the following features:  user dashboards that can display multiple reports, charts, or graphs simultaneously; drilldown charts; and report usage statistics.  The list price for this version is approximately $500 per server.</p>
<p>Unfortunately, OpenReports is being developed by a single programmer and therefore does not meet our criterion for &#8220;viability&#8221;.</p>
<h3>Pentaho</h3>
<p>One of the two primary enterprise-ready open source reporting tools with significant commercial backing, <a href="https://olex.openlogic.com/packages/pentaho" target="_blank">Pentaho</a> focuses on data integration and workflow automation.  By the way, the name &#8220;Pentaho&#8221; was created when the company was formed in 2004 by five original founders who wanted to retire in Lake Tahoe.</p>
<h4>Overview</h4>
<p>The Pentaho Business Intelligence suite includes:</p>
<ul>
<li>Reporting (Report designer and viewer)</li>
<li>Analysis (OLAP)</li>
<li>Dashboards (Portal, metrics, alerts)</li>
<li>Data Mining (Relationship and trend discovery)</li>
</ul>
<p>Pentaho is composed of a number of open source components, which has led to a number of open source licenses.  Its various top level components are licensed under either the <a title="GPL" href="https://olex.openlogic.com/license_classes/4" target="_blank">GPL</a> version 2, the <a title="LGPL" href="https://olex.openlogic.com/license_classes/5" target="_blank">LGPL</a>, or the <a title="MPL" href="https://olex.openlogic.com/license_classes/6" target="_blank">MPL</a> (Mozilla Public License).  If you intend to redistribute Pentaho as part of your commercial offering, pay close attention to the individual license(s) associated with each part you plan to deploy.</p>
<h4>Technology</h4>
<p>Pentaho has a Java Enterprise Edition (JEE) foundation that is based on JBoss.  In addition, it relies heavily on JBoss Portal for much, but not all, of its user interface.  This causes some undesirable seams in the user experience which will be addressed later.  To aid in security integration, it supports the standard <a title="Acegi Security" href="https://olex.openlogic.com/packages/acegi-security" target="_blank">Acegi</a> open source package that allows pluggable authentication and authorization schemes.  It also integrates with <a title="CAS" href="http://www.ja-sig.org/products/cas/" target="_blank">CAS</a> (Central Authentication Service) servers to facilitate single sign-on with other enterprise systems.</p>
<h4>Features</h4>
<p>Pentaho has what seems to be the &#8220;standard&#8221; set of open source reporting features, such as:</p>
<ul>
<li>Visual report designer and editor</li>
<li>Web-based interface for business users to see, run, and export reports</li>
<li>Several reporting formats, including HTML, PDF, XLS, and CSV</li>
<li>Administrative functions, such as scheduling reports to run at certain times</li>
<li>The ability to email reports to a number of users</li>
<li>Users, groups, and role management to restrict report access to particular users</li>
<li>Web service API&#8217;s for common functionality</li>
</ul>
<p>Some of Pentaho&#8217;s strengths relative to its competition are:</p>
<ul>
<li>Web-based ad hoc reporting wizard:  lets technically-inclined business users point, click, drag, and drop their way to nice looking on-the-fly reports</li>
<li>Conditional report distribution:  allows users to email reports when certain conditions are met (e.g., sales are below expectations by 25%)</li>
<li>Task bar notification:  Windows users can get notified when a new report is ready to view</li>
<li>Focus on data integration through ETL (Extract-Transform-Load) tools and automated workflows</li>
<li>Data mining tools</li>
</ul>
<p>Some noteworthy feature limitations:</p>
<ul>
<li>Administrators can only edit existing report schedules, not create new ones</li>
</ul>
<p>The commercial version of the package, called Pentaho Professional, includes these additional features:</p>
<ul>
<li>Single Sign-On (SSO) support</li>
<li>LDAP and Microsoft Active Directory (MSAD) integration</li>
<li>Clustering support</li>
<li>Report versioning</li>
<li>Audit trail collection</li>
</ul>
<p>Note:  The version of Pentaho tested was 1.7, released in May.  The current generally available production version as of the time of this writing is 1.7.1.</p>
<h4>Usability</h4>
<p>Web interface usability is the area in which Pentaho has the most room for improvement.  It is certainly powerful with report retrieval, parameter passing, drill-through charts, text linking, and administrative capabilities.  Unfortunately, it&#8217;s not always intuitive.  Due to the partial integration of JBoss Portal, it often feels like the user has to jump between two entirely different user interfaces.  That makes it difficult for first-time users to understand where to look for certain features, how to navigate through common screens, and how to get back to places they have already been.</p>
<p>The visual report designer and editor is good, but a little bit quirky.  As with its competition, it will take some time to get used to the occasional strange behavior and bake the workarounds into the standard workflow.</p>
<p>In general, Pentaho&#8217;s web interface is usable with some training and familiarization, but it leaves a lot to be desired.</p>
<h4>Screenshots</h4>
<div id="attachment_1102" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-1102" title="pentaho1" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/pentaho1.png" alt="" width="500" height="369" /><p class="wp-caption-text">Pentaho report designer</p></div>
<div id="attachment_1104" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-1104" title="pentaho2" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/pentaho21.png" alt="" width="500" height="529" /><p class="wp-caption-text">Pentaho web interface</p></div>
<div id="attachment_1105" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-1105" title="pentaho3" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/pentaho3.png" alt="" width="500" height="379" /><p class="wp-caption-text">Pentaho web report viewer</p></div>
<h3>Jasper</h3>
<p><a title="Jasper reports" href="https://olex.openlogic.com/packages/jasperreports" target="_blank">Jasper reports</a> was created as an open source project by Teodor Danciu in 2001.  Its feature set revolves around reporting and analysis with an overall emphasis on ease of use.</p>
<h4>Overview</h4>
<p>The Jasper Business Intelligence suite includes:</p>
<ul>
<li>JasperReports (Report designer and viewer)</li>
<li>JasperServer (Admin, scheduler, ad hoc queries)</li>
<li>JasperAnalysis (OLAP)</li>
<li>JasperETL (Data integration)</li>
</ul>
<p>Although Jasper is composed of a number of open source components, each top level component is licensed under the GPL version 2 or the LGPL.  If you intend to redistribute Jasper as part of your commercial offering, pay close attention to the terms of the license(s) that affect each component you plan to deploy.</p>
<h4>Technology</h4>
<p>Jasper has a Java foundation that is based on <a title="Tomcat" href="https://olex.openlogic.com/packages/tomcat" target="_blank">Tomcat</a>, <a title="Spring" href="https://olex.openlogic.com/packages/spring" target="_blank">Spring</a>, and <a title="Hibernate" href="https://olex.openlogic.com/packages/hibernate" target="_blank">Hibernate</a>.  It supports the standard <a title="Acegi Security" href="https://olex.openlogic.com/packages/acegi-security" target="_blank">Acegi</a> open source package to facilitate integration with existing authentication and authorization mechanisms.  As such, it can work in a single sign-on environment with other enterprise systems.</p>
<h4>Features</h4>
<p>Jasper has the &#8220;standard&#8221; set of open source reporting features, such as:</p>
<ul>
<li>Visual report designer and editor</li>
<li>Web-based interface for business users to see, run, and export reports</li>
<li>Several reporting formats, including HTML, PDF, XLS, and CSV</li>
<li>Administrative functions, such as scheduling reports to run at certain times</li>
<li>The ability to email reports to a number of users</li>
<li>Users, groups, and role management to restrict report access to particular users</li>
<li>Web service API&#8217;s for common functionality</li>
</ul>
<p>Some of Jasper&#8217;s strengths relative to its competition are:</p>
<ul>
<li>Very good user interface</li>
<li>Strong internationalization (I18N) support</li>
<li>Hibernate query support in addition to SQL queries</li>
<li>Custom report expressions can be written in <a title="Groovy" href="https://olex.openlogic.com/packages/groovy" target="_blank">Groovy</a>, a Java-based scripting language</li>
<li>Single sign-on support</li>
<li>Fine-grained security model on OLAP reports</li>
</ul>
<p>Some noteworthy feature limitations:</p>
<ul>
<li>Hibernate queries are powerful, but can lead to performance issues unless special care is paid to optimization (<a title="Hibernate query optimization" href="http://www.javalobby.org/articles/hibernatequery103/" target="_blank">http://www.javalobby.org/articles/hibernatequery103/</a>)</li>
</ul>
<p>The commercial version of the package, called JasperReport Professional, includes these additional<br />
features:</p>
<ul>
<li>End-user ad hoc querying and reporting</li>
<li>Easy end-user created dashboards and mashups</li>
</ul>
<p>Note:  The version of the Jasper suite tested was 3.0.0, released in June.  The current generally available<br />
production version as of the time of this writing was 3.0.0.</p>
<h4>Usability</h4>
<p>Jasper&#8217;s web interface is not perfect, but it&#8217;s very good relative to its competition.  Most of it is a modern web 2.0 application with a clean and appealing look and feel.  It provides easy report retrieval, parameter passing, drill-through charts, text linking, and administrative capabilities.  It also allows users to export their reports in a multitude of formats, including XML and Flash in addition to the standard set (HTML, PDF, XLS, and CSV).  Jasper makes it easy for business users to schedule their own reports to run at certain times, such as the first Monday of each month.</p>
<p>For developers creating reports, the Jasper report designer can be used in either stand-alone mode or as a <a title="NetBeans" href="https://olex.openlogic.com/packages/netbeans" target="_blank">NetBeans</a> plug-in.  As with other open source report designers, there are quirks that need to be worked around until they become habit.</p>
<p>In general, Jasper delivers a user experience far better than its competitors.</p>
<h4>Screenshots</h4>
<div id="attachment_1106" class="wp-caption alignnone" style="width: 509px"><img class="size-full wp-image-1106" title="jasper1" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/jasper1.png" alt="" width="499" height="402" /><p class="wp-caption-text">Jasper report designer</p></div>
<div id="attachment_1108" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-1108" title="jasper2" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/jasper2.png" alt="" width="500" height="374" /><p class="wp-caption-text">Jasper web admin console</p></div>
<div id="attachment_1111" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-1111" title="jasper3" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/jasper32.png" alt="" width="500" height="374" /><p class="wp-caption-text">Jasper report viewer</p></div>
<h3>OLAP &#8211; Pentaho and Jasper</h3>
<p>Both Pentaho and Jasper rely on <a title="Mondrian" href="https://olex.openlogic.com/packages/mondrian" target="_blank">Mondrian</a> for OLAP (On-Line Analytical Processing) support.  They also each rely on JPivot, a web interface that lets end users run OLAP queries against Mondrian.  Mondrian actually transforms these queries into standard SQL and thus works well with <a title="MySQL" href="https://olex.openlogic.com/packages/mysql" target="_blank">MySQL</a>, <a title="PostgreSQL" href="https://olex.openlogic.com/packages/postgresql" target="_blank">PostgreSQL</a>, Oracle, DB2, and other relational databases.  It uses sophisticated query caching to provide very strong performance.</p>
<div id="attachment_1112" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-1112" title="olap1" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/pentaho_jasper1.png" alt="" width="500" height="379" /><p class="wp-caption-text">OLAP schema designer</p></div>
<div id="attachment_1127" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-1127" title="pentaho_jasper2" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/pentaho_jasper2.png" alt="" width="500" height="342" /><p class="wp-caption-text">OLAP schema designer - XML view</p></div>
<div id="attachment_1114" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-1114" title="olap3" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/pentaho_jasper3.png" alt="" width="500" height="374" /><p class="wp-caption-text">OLAP report viewer (JPivot)</p></div>
<div id="attachment_1115" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-1115" title="olap4" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/pentaho_jasper4.png" alt="" width="500" height="374" /><p class="wp-caption-text">OLAP report viewer (JPivot chart)</p></div>
<h3>Conclusion</h3>
<p>Jasper has a heavy focus on reporting and analysis.  It has a better web 2.0 user interface than Pentaho and is generally easier to use.  It benefits from better marketing, informational web sites, and documentation.  Overall, it makes researching and finding what users need easier than Pentaho.  The paid version offers ad hoc query support through the web interface (which comes with the open source version of Pentaho) and a dashboard creation web interface.</p>
<p>Pentaho focuses on data integration, ETL, and workflow automation.  As such, it is very powerful.  Today, it has a user interface that is more difficult for business users than is Jasper&#8217;s.  The documentation is also less robust than its competition.  On the other hand, it has strong data mining tools and even iPhone integration.  The paid version includes LDAP integration, SSO support, and auditing capabilities (all of which come with the open source version of Jasper).</p>
<p>If your enterprise needs center around report creation, distribution, and business end user self-service, Jasper is probably a good choice.  If your needs are primarily around data integration, reporting automation and workflow, and data mining, then Pentaho is probably a good choice.</p>
<h3>Final Thoughts</h3>
<p>Open source reporting tools have made great strides in the last two years and they will no doubt continue to get stronger every day.  Competition continues to drive Jasper and Pentaho very hard.  Their capabilities have leapfrogged each other before and it may happen again.  Jasper will grow its abilities in the data integration space and Pentaho will improve its user interface.</p>
<p>Keep watching this space as the players evolve at a pace that only open source can maintain.</p>
]]></content:encoded>
			<wfw:commentRss>http://olex.openlogic.com/wazi/2008/open-source-reporting-tool-comparison-for-the-enterprise/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Web Framework Project Comparison Matrix</title>
		<link>http://olex.openlogic.com/wazi/2008/web-framework-comparison-matrix/</link>
		<comments>http://olex.openlogic.com/wazi/2008/web-framework-comparison-matrix/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 23:57:17 +0000</pubDate>
		<dc:creator>Kimberly McClintock</dc:creator>
				<category><![CDATA[Comparisons]]></category>
		<category><![CDATA[jboss-seam]]></category>
		<category><![CDATA[myfaces]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[shale]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[struts]]></category>
		<category><![CDATA[webwork]]></category>
		<category><![CDATA[wicket]]></category>

		<guid isPermaLink="false">http://olex.openlogic.com/wazi/?p=383</guid>
		<description><![CDATA[We've developed this comparison matrix to help you learn about the differences between - and relative benefits of - the most popular open source Web frameworks: Shale, Struts, Wicket, WebWork, Rails, JBossSeam, MyFaces and Spring. Although Rails is not a Java project, we included it given its popularity.  To help you make a decision about which Web Framework to use, we went to the experts -- members of the OpenLogic Expert Community who are committers and expert users of the projects -- and asked them to answer a bunch of questions about each project.]]></description>
			<content:encoded><![CDATA[<p>A Web Framework speeds development by providing libraries to satisfy the common development needs of Web applications, and by promoting code reuse among engineers and over projects. For example, many frameworks provide libraries for establishing database access and managing user sessions. We&#8217;ve developed this comparison matrix to help you learn about the differences between &#8211; and relative benefits of &#8211; the most popular open source Web frameworks: Shale, Struts, Wicket, WebWork, Rails, JBossSeam, MyFaces and Spring. Although Rails is not a Java project, we included it given its popularity.</p>
<p>To help you make a decision about which Web Framework to use, we went to the experts &#8212; members of the OpenLogic Expert Community who are committers and expert users of the projects &#8212; and asked them to answer a bunch of questions about each project.</p>
<h2>The Five Questions</h2>
<p>The five questions we asked the experts appear below. To view more detail on the projects* compared across each question, <a id="Questions">click the question</a>.</p>
<ol>
<li><a href="#QuestionOneSummary">What&#8217;s the &#8217;sweet spot&#8217; of your project? For what type of projects should users strongly consider it? </a></li>
<li> <a href="#QuestionTwoSummary">What type of scenarios does your project not fit into as well?  Would you recommend another project in this scenario? If so, which one? </a></li>
<li><a href="#QuestionThreeSummary"> Of the projects included here, which have you tried? Of those, which ones did you like or dislike, and why?</a></li>
<li><a href="#QuestionFourSummary"> What is the future of this project? What&#8217;s coming that will ease development?</a></li>
<li><a href="#QuestionFiveSummary"> Are there myths about this project that you&#8217;d like to challenge? </a></li>
</ol>
<p>For comprehensive information on each project, search the OLEX Open Source Library. For a list of the open source developers we interviewed, click <a title="Acknowledgments" href="#Acknowledgments">here</a>.</p>
<p>*While no version of the projects is specified, you can assume that the information relates to the latest version in our library at the time of the last update.</p>
<h2>Summarized Responses</h2>
<h3 id="QuestionOneSummary" class="section">What&#8217;s your project&#8217;s &#8217;sweet spot&#8217;?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question One -- Full Answers" href="#QuestionOne">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MyFaces</th>
<td>
<ul>
<li>Separation of MVC layers reduces developer effort.</li>
<li>Framework addresses every complex aspect of Web development.</li>
<li>Developers can create new components or use existing ones.</li>
<li>Many sources for additional components.</li>
</ul>
</td>
</tr>
<tr>
<th>JBoss SEAM</th>
<td>
<ul>
<li>Complex Web applications that need to integrate with other open source projects.</li>
<li>Applications that have a long running business context.</li>
<li>Complex applications</li>
<li>Supports RESTful pages</li>
<li>Supports AJAX functionality</li>
<li>Uses new EJB 3.0 programming artifacts</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Spring MVC</th>
<td>
<ul>
<li>Projects that use &#8211; or intend to use &#8211; Spring</li>
<li>Projects that need to expose business logic as HTTP addressable URLs</li>
<li>Projects that must provides multiple view rendering techniques</li>
</ul>
</td>
</tr>
<tr>
<th>Stripes</th>
<td>
<ul>
<li>Projects in which developers must get productive fast</li>
<li>Sensible defaults reduce the need for configuration</li>
<li>Contains all basic components necessary for enterprise Web development tasks; avoids feature bloat</li>
<li>Stable code base</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Struts 1*</th>
<td>
<ul>
<li>Struts 1 has essentially been replaced by Struts 2 and is not recommended for new projects unless the development team already has expertise</li>
</ul>
</td>
</tr>
<tr>
<th>Struts 2* (WebWork)</th>
<td>
<ul>
<li>Projects with developers familiar with Struts 1</li>
<li>Projects using Struts 1 who need productivity increase</li>
</ul>
</td>
</tr>
<tr class="odd">
<th> Wicket</th>
<td>
<ul>
<li>Projects that must create the typical stateful Web application that must track session state and perform services for the user.</li>
<li>Ideal for developers who prefer a very clean separation of concerns and object-oriented programming</li>
<li>New projects that need to get up and going fast</li>
<li>Projects with teams that have UI members and programmers, working independently</li>
<li>Single developer  projects</li>
<li>Projects requiring mailing list support</li>
</ul>
</td>
</tr>
<tr>
<th> Shale*</th>
<td>
<ul>
<li>Projects requiring exceptional JUnit /JMock based testing framework</li>
<li>Projects requiring an XML-based alternative to JSP</li>
</ul>
</td>
</tr>
<tr class="odd">
<th> Rails</th>
<td>
<ul>
<li>Web applications depending on REST and/or AJAX</li>
<li>Standalone Web sites</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#More">*More information on the relationship between Struts, Shale and WebWork.</a></p>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionTwoSummary" class="section">What sorts of projects does this package not work as well for?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question Two -- Full Answers" href="#QuestionTwo">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MyFaces</th>
<td>
<ul>
<li>No native AJAX support</li>
<li>No support for REStful pages</li>
<li>Standard component set too limited for complex enterprise applications</li>
</ul>
</td>
</tr>
<tr>
<th>JBoss SEAM</th>
<td>
<ul>
<li>Stiff learning curve makes it a challenge for projects with junior developers</li>
<li>Developers will need knowledge of JSF and some EJB 3.0 framework.</li>
<li>Simple CRUD applications.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Spring MVC</th>
<td>
<ul>
<li>Projects with a complex business model</li>
</ul>
</td>
</tr>
<tr>
<th>Stripes</th>
<td>
<ul>
<li>Projects that need to run in a context where Java5 is not available</li>
<li>Established projects</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Struts 1*</th>
<td>Struts 1 has essentially been replaced by Struts 2  and is not recommended for new projects.</p>
<p>The following is included for purposes of comparison:</p>
<ul>
<li> Projects that will be deployed to a 1.5 JVM</li>
<li>A lot of boilerplate code needs to be written for simple tasks</li>
<li>A Struts application will always have more classes than an equivalent application written in a different framework</li>
</ul>
</td>
</tr>
<tr>
<th>Struts 2* (WebWork)</th>
<td>Not recommended for any but new projects.</td>
</tr>
<tr class="odd">
<th> Wicket</th>
<td>
<ul>
<li>Nearly completely static or completely stateless sites should avoid Wicket</li>
<li>Projects with existing code</li>
</ul>
</td>
</tr>
<tr>
<th>Shale*</th>
<td>
<ul>
<li>Shale is &#8220;on-top-of-JSF&#8221; so can&#8217;t be used outside a JSF-app</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Rails</th>
<td>
<ul>
<li>Projects that require lots of enterprise integration</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#More">*More information on the relationship between Struts, Shale and WebWork.</a></p>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionThreeSummary" class="section">Of the projects we&#8217;re comparing, which have you tried?</h3>
<p>These are summarized answers. For more detail, click <a title="Full Answer - Question Three" href="#QuestionThree">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MyFaces</th>
<td>Seam: didn&#8217;t like</p>
<ul>
<li>Steep learning curve for the developer, including JSF + EJB 3.0.</li>
<li>Its many libraries make it challenging to successfully deploy.</li>
</ul>
</td>
</tr>
<tr>
<th>JBoss SEAM</th>
<td>No information available.</td>
</tr>
<tr class="odd">
<th>Spring MVC</th>
<td>Struts: liked</p>
<ul>
<li>A simple, mature web framework. Struts 1 is a bit heavy and tedious, but the newest version (Struts 2) blends the robustness of Struts with the benefits of WebWork and many lessons learned from the Rails framework.</li>
</ul>
<p>Webwork: liked</p>
<ul>
<li>A simple, mature, and lightweight framework. Configuration can be arduous. Development has merged with Struts and benefits from the experience and community of that project.</li>
</ul>
<p>Rails: liked</p>
<ul>
<li>Rails favors convention over configuration and goes a long way to making web application development simpler. However, it is still immature and lacks the breadth of features of Java web application frameworks.</li>
</ul>
</td>
</tr>
<tr>
<th>Stripes</th>
<td>Spring: MVC: didn&#8217;t like</p>
<ul>
<li>Overly complex, too much configuration outside the code.</li>
</ul>
<p>Struts 1: didn&#8217;t like</p>
<ul>
<li>Hamstrung by the backward compatibility requirements.</li>
</ul>
<p>WebWork / Struts 2: didn&#8217;t like</p>
<ul>
<li>WebWork learned a lot from Struts 1, but still suffers from configuration pain.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Struts 1*</th>
<td>Spring MVC: didn&#8217;t like</p>
<ul>
<li>Overly complex, too much configuration outside the code.</li>
</ul>
<p>WebWork / Struts 2: didn&#8217;t like</p>
<ul>
<li>WebWork learned a lot from Struts 1, but still suffers from configuration pain.</li>
</ul>
<p>Stripes: liked</p>
<ul>
<li>Excellent framework, clean and simple, it simply keeps out of the way.</li>
</ul>
</td>
</tr>
<tr>
<th>Struts 2* (WebWork)</th>
<td>Spring MVC: liked</p>
<ul>
<li>Respectable effort that no one should be ashamed of using.</li>
</ul>
<p>Stripes: liked</p>
<ul>
<li>Very compelling. Either would be a good choice for a project getting a fresh start.</li>
</ul>
<p>Wicket: liked</p>
<ul>
<li>Very compelling. Either would be a good choice for a project getting a fresh start.</li>
</ul>
<p>JSF: didn&#8217;t like</p>
<ul>
<li>is the EJB of web frameworks. Cool in theory. Hell in practice.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Wicket</th>
<td>Spring: liked</p>
<ul>
<li>I use it to configure my entire middle-tier, and it allows me to operate many similar sites by overriding pieces of configuration that may be different for that particular site.  I’ve also used it for configuring custom back-office applications based on many components that I wrote, and wired together via Spring.</li>
</ul>
<p>Tapestry: didn&#8217;t like</p>
<ul>
<li>Worked with it for two years on an enterprise project at work.  It had absolutely no transparency as to what was going on underneath the covers.  It forced you to do things a certain way – the “HLS” way.  Everyone involved with the project seemed religiously addicted to it, and only to doing it the “HLS” way, like he was a deity.  It forced tons of configuration on you.  Every release is a complete rewrite, and backwards-compatibility is constantly thrown out the window to suit the author’s current whims.  The learning curve is extremely steep.  I hear that version 4 is better, but I gave it up with version 3.</li>
</ul>
<p>Trails: didn&#8217;t like</p>
<ul>
<li>Didn&#8217;t try very hard. Couldn’t ever really get it to work well, although with more effort, that would’ve likely changed.  Did not like Tapestry, so did not pursue further.</li>
</ul>
</td>
</tr>
<tr>
<th> Shale*</th>
<td>Spring MVC: liked</p>
<ul>
<li>Cool, nice glue code, but there is a little overlap in Shale&#8217;s dialog and Spring Web-Flow (their JSF-version).</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Rails</th>
<td>No information available. TODO</td>
</tr>
</tbody>
</table>
<p><a href="#More">*More information on the relationship between Struts, Shale and WebWork.</a></p>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFourSummary">What is the future of this project?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question Four -- Full Answers" href="#QuestionFour">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MyFaces</th>
<td>
<ul>
<li>Community is writing the new JSR 314</li>
<li>Artifacts from Shale will probably make it into JSF 2.0</li>
</ul>
</td>
</tr>
<tr>
<th>JBoss SEAM</th>
<td>
<ul>
<li>Developers are simplifying this project by separating the add-on parts</li>
<li>Project is related to the JSR Web Beans</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Spring MVC</th>
<td>
<ul>
<li>Easier configuration and better validation</li>
</ul>
</td>
</tr>
<tr>
<th>Stripes</th>
<td>
<ul>
<li>No major architectural changes</li>
<li>Community has expanded to ensure response to requests</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Struts 1*</th>
<td>
<ul>
<li>Bug fixes</li>
</ul>
</td>
</tr>
<tr>
<th>Struts 2* (WebWork)</th>
<td>No information available.</td>
</tr>
<tr class="odd">
<th>Wicket</th>
<td>
<ul>
<li>Improvements to scalability</li>
<li>Better support for stateless applications</li>
<li>Full-featured Java 1.5 version planned</li>
<li>More tightly-integrated support for Spring</li>
<li>Role-based authorization</li>
</ul>
</td>
</tr>
<tr>
<th>Shale*</th>
<td>
<ul>
<li>Some artifacts from Shale will probably make it into JSF 2.0</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Rails</th>
<td>
<ul>
<li>Rails 2.0 is expected to be released by the end of 2007</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#More">*More information on the relationship between Struts, Shale and WebWork.</a></p>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFiveSummary">What is the future of this project?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question Five -- Full Answers" href="#QuestionFive">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Projecth</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>MyFaces</th>
<td>No information available.</td>
</tr>
<tr>
<th> JBoss SEAM</th>
<td>
<ul>
<li>Some developers think that JBoss SEAM is a J2EE standard, but it is not.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Spring MVC</th>
<td>
<ul>
<li>Spring MVC and Spring WebFlow are not competing projects.</li>
</ul>
</td>
</tr>
<tr>
<th>Stripes</th>
<td>
<ul>
<li>Stripes has been dismissed as a &#8220;one man band&#8221; but it has a very helpful and constructive user and development community</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Struts 1*</th>
<td>
<ul>
<li>Struts has no support for AJAX.</li>
<li>Developers also think that they will be required to use JSPs.</li>
</ul>
</td>
</tr>
<tr>
<th>Struts 2* (WebWork)</th>
<td>No information available.</td>
</tr>
<tr class="odd">
<th>Wicket</th>
<td>
<ul>
<li>URLs are ugly.</li>
<li>That this framework is an infant version of Tapestry.</li>
</ul>
</td>
</tr>
<tr>
<th>Shale*</th>
<td>
<ul>
<li>That Shale is a JSF implementation</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>Rails</th>
<td>
<ul>
<li>That Rails is all about code generation</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#More">*More information on the relationship between Struts, Shale and WebWork.</a></p>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h2>Complete Responses</h2>
<h3 id="QuestionOne" class="section">What&#8217;s your project&#8217;s &#8217;sweet spot&#8217;?</h3>
<p>This is the full response. For a summary of the response, click <a href="#QuestionOneSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th> MyFaces</th>
<td>The JSF/MyFaces Web Framework reduces developer effort by cleanly  						separating MVC layers. The framework addresses every complex  						aspect of Web development, including page flows, model  						validations, model conversions and page actions. Developers have  						the freedom to create new components from scratch, or launch  						development from existing components. Because JSF/MyFaces  						represents the standard implementation, developers have another  						resource for components: the many open source solutions available.  						The list include ICEFaces, Ajax4JSF, Apache Trinidad and Sun  						Sandbox.</td>
</tr>
<tr>
<th> JBoss SEAM</th>
<td>JBoss SEAM allows developers to code many types of complex,  						multi-window, transactional web applications more easily using EJB  						3.0 as M(Model) layer and JSF as VC(View-Controller) layer part of  						the project.</p>
<p>It supports RESTful pages, provides AJAX functionality, and eases  						the development life cycle by using the Java annotations heavily.  						It provides new EJB 3.0 programming artifacts easily, so while  						developers need to learn this functionality, they do not have to  						be experts to begin.</p>
<p>This set of tools works well on projects aspiring to integration  						with other open source projects.</p>
<p>Finally, SEAM extends the classical session, request, and  						application scope with new defined context. This makes it a good  						choice for applications that have a long running business context  						containing more than one request.</td>
</tr>
<tr class="odd">
<th> Spring MVC</th>
<td>Because the Spring MVC Web application framework is tightly  						integrated with the Spring application framework, it is best  						suited for projects that use &#8211; or intend to use &#8211; Spring as the  						basis. It provides a simple way of exposing business logic as HTTP  						addressable URLs and provides multiple view rendering techniques.</td>
</tr>
<tr>
<th> Stripes</th>
<td>Stripes, a Java servlet presentation framework, is an ideal fit  						for many Web based applications, large or small. Stripes offers a  						clean design with simple concepts that allow developers to get  						productive fast. Annotation based configuration was designed into  						the tool, and sensible defaults reduce the need for configuration  						to be explicitly stated. Finally, a carefully controlled code base  						keeps the tools from the feature-bloat that makes competitors  						unwieldy while not compromising on the basic components developers  						will need to do the classic enterprise Web development tasks.</td>
</tr>
<tr class="odd">
<th> Struts 1*</th>
<td>Although Struts 1 has essentially been replaced by Struts 2 (also  						in this list), and is not recommended for projects commencing  						today, it is still in use and extremely popular with enterprises  						so we&#8217;ve included it here.</p>
<p>Struts 1 provided an excellent fit for projects that involved  							form submission. When Struts was first released developers  							migrated to it from home grown servlet frameworks. Struts gave  							the industry a defacto standard for developing browser-based  							applications.<br />
Two notable sites using Struts 1 are  						http://www.virgin-atlantic.com and https://www.21st.com/.</td>
</tr>
<tr>
<th> Struts 2 (WebWork)</th>
<td>Struts 2, WebWork renamed, is an excellent web application  						framework of the &#8220;action controller&#8221; family. Due to  						similarity of paradigm, those tens-of-thousands of developers out  						there that are familiar with Struts 1 can learn Struts 2/WebWork  						in a matter of a day, realizing huge productivity increases. At  						the time my team made that transition about 3 years ago, we  						estimated about a 40% productivity increase in work on the web  						application. This is due to the (what was at the time WebWork was  						built) &#8220;next generation&#8221; features that WebWork  						introduced upon the &#8220;action controller framework&#8221;  						paradigm. Validation, auto-form handling, type conversion,  						interceptors, etc. all add up to having a real usable tool set,  						without having to entirely change the way you &#8220;think&#8221;.</p>
<p>If a team is coming from Struts 1 and looking for a quick worth  						while change, WebWork/Struts 2 is for you. It vastly improves upon  						Struts 1, and has features that are quite competitive against the  						newer frameworks.</td>
</tr>
<tr class="odd">
<th> Wicket</th>
<td>Wicket, out-of-the-box, provides everything teams need to create  						the typical stateful Web application that must track session state  						and perform services for the user.</p>
<p>This Web framework is ideal for developers who prefer a very clean  						separation of concerns and object-oriented programming and need to  						get going fast. Developers can be productive in Wicket quickly.  						Teams that have UI members and programmers working independently  						of each other find Wicket exceptionally friendly. Since the HTML  						is all regular HTML, with no weird additional syntax, the UI  						designers can write the HTML / CSS and leave the implementation  						completely to the programmers.</p>
<p>Although it sounds like the opposite of the previous point, Wicket  						is also great for one-man shops where one developer must program  						and write her own HTML. The developer can focus on object-oriented  						programming, and then add the basic HTML once she&#8217;s figured the  						implementation out. Projects that need or desire excellent mailing  						list support will find that the wicket-users mailing list first  						rate.</p>
<p>If you just want to do object oriented programming and not worry  						about jumping through hoops to work with “the framework”, Wicket  						is for you.  Once you understand a few basic concepts of how  						Wicket operates, you can start to figure out most of it on your  						own.</td>
</tr>
<tr>
<th> Shale*</th>
<td>The Shale Web framework offers an exceptional JUnit /JMock based  						testing framework that provides developers the possibility of  						testing their JSF-application. Other goodies include the  						view-controller which follows the common JSF-pattern of one  						&#8216;backing bean&#8217; behind the page. For teams that need an XML-based  						alternative to JSP, Shale provides CLAY.</td>
</tr>
<tr class="odd">
<th> Rails</th>
<td>The sweet spot for Rails is any web application, especially ones  						that involve REST and/or AJAX. It should be strongly considered  						for stand-alone web sites.</td>
</tr>
</tbody>
</table>
<p><a href="#More">*More information on the relationship between Struts, Shale and WebWork.</a></p>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionTwo" class="section">What sorts of projects does this package not work as well for?</h3>
<p>This is the full response. For a summary of the response, click <a href="#QuestionTwoSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th> MyFaces</th>
<td>If developers need to create an application that requires static   						pages using HTML+ CSS + JavaScript, then JSF/MyFaces is not the   						best choice. It does not natively support AJAX functionality and   						developers will have to use one of the AJAX-enabled JSF components   						available in the community. JSF/MyFaces does not support REStful   						pages and the standard component set is probably not enough for   						implementing complex enterprise applications.</p>
<p>Users say, JSF &#8220;is the EJB of web frameworks. Cool in theory.   						Hell in practice.&#8221;</td>
</tr>
<tr>
<th> JBoss SEAM</th>
<td>Although this project tries to address all the challenges of   						developing dynamic web projects, the stiff learning curve makes it   						a challenging set of tools for junior teams. Developers will need   						some knowledge of the JSF (it uses JSF as view) and some familiarity with the EJB 3.0   						framework.</p>
<p>Its dependence on libraries makes JBoss SEAM challenging to deploy.   						Suitable for very complex and transactional dynamic web projects,   						it should not be used in simple CRUD applications.</td>
</tr>
<tr>
<th> Spring MVC</th>
<td>A relatively new framework, Spring MVC is missing some of the   						features of more mature frameworks. If developers are building a   						project with an established, complex business model, it is   						somewhat arduous in Spring MVC to bind request parameters to a   						complex model. WebWork would be a better choice in this scenario because of its OGNL binding framework.</td>
</tr>
<tr class="odd">
<th> Stripes</th>
<td>Because Stripes requires Java 5, it will not work in any context   						where Java 5 is not available. Developers think this would be a   						great choice for brand new projects, not as good for those with   						existing code.</td>
</tr>
<tr>
<th> Struts 1*</th>
<td>Any projects that will be deployed to a 1.5 JVM should use Stripes   						instead.</p>
<p>One of the biggest complaints about Struts 1.x is the amount of   						boilerplate code that needs to be written for simple tasks. For   						instance, there is configuration required in struts-config.xml,   						possibly a form class to be written, and action class, possibly a   						Tiles configuration, and the a JSP. None of these things can be   						changed without introducing backward-compatibility problems with   						earlier Struts releases and so Struts 1.x is not able to overcome   						these weaknesses.</p>
<p>The lack of annotations can be mitigated with the use of tools   						such as XDoclet, and smart design can reduce the pain involved   						with adding new classes. However, the separation of form and   						action that many of the newer frameworks have avoided can only be   						handled, can&#8217;t be fixed. This means a Struts application will   						always have more classes than an equivalent application written in   						one of the other newer frameworks.</p>
<p>Given all of this, Struts 1.x makes a poor choice for most   						projects commencing today, with one exception: if the team is   						already familiar with Struts 1.</td>
</tr>
<tr class="odd">
<th> Struts 2* (WebWork)</th>
<td>Not recommended for any but new projects.</td>
</tr>
<tr>
<th> Wicket</th>
<td>Nearly completely static or completely stateless sites should   						avoid Wicket.  Wicket does perform well even for this sort of   						site, but it provides a lot of things that developers will not   						need in this situation. Wicket is a great   						choice for brand new projects, not as good for those with existing   						code.</td>
</tr>
<tr class="odd">
<th> Shale*</th>
<td>Requires JSF/MyFaces as it provides the runtime   						environment for Shale. Since Shale is &#8220;on-top-of-JSF&#8221;, the   						usage of Shale outside a JSF-application is pretty limited.</td>
</tr>
<tr>
<th> Rails</th>
<td>Rails does not particularly excel at projects that require lots of   						enterprise integration, such as performing a transaction across   						multiple databases or message queues. In these situations,   						Java-based Web application frameworks are probably the best   						choice. This may change in the future, however, as JRuby can   						already run Rails applications and also use Java&#8217;s high-end   						integration facilities.</td>
</tr>
</tbody>
</table>
<p><a href="#More">*More information on the relationship between Struts, Shale and WebWork.</a></p>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionThree" class="section">Of the projects we&#8217;re comparing, which have you tried?</h3>
<p>This is the full response. For a summary of the response, click <a href="#QuestionThreeSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th> MyFaces</th>
<td>Seam: didn&#8217;t like</p>
<ul>
<li> Steep learning curve for the developer, including JSF + EJB 3.0.</li>
<li> Its many libraries make it challenging to successfully deploy.</li>
</ul>
</td>
</tr>
<tr>
<th> JBoss SEAM</th>
<td>No information available.</td>
</tr>
<tr class="odd">
<th> Spring MVC</th>
<td>Struts: liked</p>
<ul>
<li>A simple, mature web framework. Struts 1 is a bit   								heavy and tedious, but the newest version (Struts 2) blends the   								robustness of Struts with the benefits of WebWork and many   								lessons learned from the Rails framework.</li>
</ul>
<p>Webwork: liked</p>
<ul>
<li> A simple, mature, and lightweight framework. Configuration can   								be arduous. Development has merged with Struts and   								benefits from the experience and community of that project.</li>
</ul>
<p>Rails: liked</p>
<ul>
<li> Rails favors convention over configuration and goes a long way   								to making web application development simpler. However, it is   								still immature and lacks the breadth of features of Java web   								application frameworks.</li>
</ul>
</td>
</tr>
<tr>
<th> Stripes</th>
<td>Spring: MVC: didn&#8217;t like</p>
<ul>
<li> Overly complex, too much configuration outside the code.</li>
</ul>
<p>Struts 1: didn&#8217;t like</p>
<ul>
<li> Hamstrung by the backward compatibility requirements.</li>
</ul>
<p>WebWork / Struts 2: didn&#8217;t like</p>
<ul>
<li> WebWork learned a lot from Struts 1, but still suffers from   								configuration pain.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th> Struts 1*</th>
<td>Spring MVC: didn&#8217;t like</p>
<ul>
<li> Overly complex, too much configuration outside the code.</li>
</ul>
<p>WebWork / Struts 2: didn&#8217;t like</p>
<ul>
<li> WebWork learned a lot from Struts 1, but still suffers from   								configuration pain.</li>
</ul>
<p>Stripes: liked</p>
<ul>
<li> Excellent framework, clean and simple, it simply keeps out of   								the way.</li>
</ul>
</td>
</tr>
<tr>
<th> Struts 2* (WebWork)</th>
<td>Spring MVC: liked</p>
<ul>
<li> Respectable effort that no one should be ashamed of using.</li>
</ul>
<p>Stripes: liked</p>
<ul>
<li> Very compelling. Either would be a good choice for a project   								getting a fresh start.</li>
</ul>
<p>Wicket: liked</p>
<ul>
<li> Very compelling. Either would be a good choice for a project   								getting a fresh start.</li>
</ul>
<p>JSF: didn&#8217;t like</p>
<ul>
<li> is the EJB of web frameworks. Cool in theory. Hell in practice.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th> Wicket</th>
<td>Spring: liked</p>
<ul>
<li> I use it to configure my entire middle-tier, and it allows me to   								operate many similar sites by overriding pieces of configuration   								that may be different for that particular site.  I’ve   								also used it for configuring custom back-office applications   								based on many components that I wrote, and wired together via   								Spring.</li>
</ul>
<p>Tapestry: didn&#8217;t like</p>
<ul>
<li> Worked with it for two years on an enterprise project at   								work.  It had absolutely no transparency as to what was   								going on underneath the covers.  It forced you to do things   								a certain way – the “HLS” way.  Everyone   								involved with the project seemed religiously addicted to it, and   								only to doing it the “HLS” way, like he was a   								deity.  It forced tons of configuration on you.  Every   								release is a complete rewrite, and backwards-compatibility is   								constantly thrown out the window to suit the author’s   								current whims.  The learning curve is extremely   								steep.  I hear that version 4 is better, but I gave it up   								with version 3.</li>
</ul>
<p>Trails: didn&#8217;t like</p>
<ul>
<li> Didn&#8217;t try very hard. Couldn’t ever really get it to work   								well, although with more effort, that would’ve likely   								changed.  Did not like Tapestry, so did not pursue further.</li>
</ul>
</td>
</tr>
<tr>
<th> Shale*</th>
<td>Spring MVC: liked</p>
<ul>
<li> Cool, nice glue code, but there is a little overlap in Shale&#8217;s   								dialog and Spring Web-Flow (their JSF-version).</li>
</ul>
</td>
</tr>
<tr class="odd">
<th> Rails</th>
<td>No information available.</td>
</tr>
</tbody>
</table>
<p><a href="#More">*More information on the relationship between Struts, Shale and WebWork.</a></p>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFour" class="section">What is the future of this project? What&#8217;s coming that will ease   						development?</h3>
<p>This is the full response. For a summary of the response, click <a href="#QuestionFourSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th> MyFaces</th>
<td>The JSF 2.0 community is writing the new JSR 314. Interested   						parties can find it here: http://jcp.org/en/jsr/detail?id=314.   						This effort solves a number of the problems addressed in other   						questions.</p>
<p>Some artifacts from Shale will probably make it into JSF 2.0. For   						instance, there are the Shale-Tiger extensions that allow the   						usage of annotations to register a managed bean.</td>
</tr>
<tr>
<th> JBoss SEAM</th>
<td>Developers are simplifying this project by separating the add-on   						parts. It is also related to the  new JSR Web Beans. For more   						information, see http://jcp.org/en/jsr/detail?id=299.</td>
</tr>
<tr class="odd">
<th> Spring MVC</th>
<td>Spring MVC continues to benefit from the improvements made to the   						core Spring framework. Future improvements include easier   						configuration and better validation.</td>
</tr>
<tr>
<th> Stripes</th>
<td>There has been an expansion of the developer base recently to   						ensure that Stripes continues to be in a position to respond to   						the community&#8217;s requests. However, the community plans no major   						architectural changes. Users can adopt Stripes confident in the   						knowledge that the codebase has stabilized.</td>
</tr>
<tr class="odd">
<th> Struts 1*</th>
<td>Struts 1.x has a very limited future. Whilst officially new   						functionality is being added to the 1.x releases if backward   						compatibility can be maintained, in reality only very minor   						functionality improvements are being added. Having said this,   						bugfixes are still released. Thirdparty tools (eg XDoclet, IDE   						support) are mature and unlikely to offer any significant changes   						from the functionality offered today.</td>
</tr>
<tr>
<th> Struts 2* (WebWork)</th>
<td>No information available.</td>
</tr>
<tr class="odd">
<th> Wicket</th>
<td>The community plans to improve scalability, and provide better   						support for stateless applications. A full Java 1.5 version of   						Wicket is planned (current version works on 1.5, of course, but   						does not take advantage of 1.5 features so that 1.4 projects can   						still use it). Additionally, more tightly-integrated support for   						Spring and role-based authorization is in the works. Manning Early   						Access Program publishers released a   						Wicket-in-Action in July 2007.</td>
</tr>
<tr class="odd">
<th> Shale*</th>
<td>Some artifacts from Shale will probably make it into JSF 2.0. For   						instance, there are the Shale-Tiger extensions that allow the   						usage of annotations to register a managed bean.</td>
</tr>
<tr>
<th> Rails</th>
<td>Rails 2.0 is expected to be released by the end of 2007. It will   						make REST-based web application development even easier. It will   						also provide improvements in these areas: performance, security,   						formatting content for multiple clients (e.g., iPhone and Atom   						readers), testing, database schema migrations, XML handling,   						debugging, plug-in processing, and much more.</td>
</tr>
</tbody>
</table>
<p><a href="#More">*More information on the relationship between Struts, Shale and WebWork.</a></p>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFive" class="section">Are there myths about this project that you&#8217;d like to 						challenge?</h3>
<p>This is the full response. For a summary of the response, click <a href="#QuestionFiveSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th> MyFaces</th>
<td>No information available.</td>
</tr>
<tr>
<th> JBoss SEAM</th>
<td>Some developers think that JBoss SEAM is a J2EE standard, but it 						is not. It is developed on top of two important J2EE standards, 						namely, JSF and EJB 3.0.</td>
</tr>
<tr class="odd">
<th> Spring MVC</th>
<td>Spring MVC and Spring WebFlow are sometimes seen as competing projects. Spring WebFlow is actually complimentary in that  						it  						solves a particular problem with long web conversations.</td>
</tr>
<tr>
<th> Stripes</th>
<td>Stripes (like many other good frameworks) was started by one person,  						Tim Fennell, and concerns have been raised about it being  						a  						&#8220;one man band&#8221;. Earlier this year Tim stated that he  						wanted to  						open the framework up to more developers, his reasoning  						was so  						that Stripes could continue to grow. Stripes now has a very  						helpful  						and constructive user and development community.</td>
</tr>
<tr class="odd">
<th> Struts 1*</th>
<td>Developers think they need to use AJAX in their application and 						think that older frameworks like Struts have no support for AJAX. 						This is a myth, any framework can integrate with AJAX, see 						<a href="http://wiki.apache.org/struts/AjaxStruts">http://wiki.apache.org/struts/AjaxStruts</a> for details on how AJAX interacts with a server side 						implementation based on Struts. It should be noted that existing 						applications written on Struts should not be ported to a newer 						framework purely in order to add AJAX using some AJAX support from 						another framework.</p>
<p>Developers also think that they will be required to use JSPs. Struts, like all popular frameworks, uses JSP as the default templating engine. It is possible to use Struts tags with both Freemarker ( <a href="http://cwiki.apache.org/WW/freemarker-tags.html">http://cwiki.apache.org/WW/freemarker-tags.html</a>) 						and Velocity ( 						<a href="http://cwiki.apache.org/WW/velocity-tags.html">http://cwiki.apache.org/WW/velocity-tags.html</a>).</td>
</tr>
<tr class="odd">
<th> Struts 2 (WebWork)</th>
<td>No information available.</td>
</tr>
<tr>
<th> Wicket</th>
<td>All of the URLs are ugly.  This is easily configured.  						Developers can literally do whatever they want with the URLs to 						fit the project&#8217;s needs.</p>
<p>That this framework is an infant version of Tapestry.  Wicket 						supports so many things out-of-the-box, and is a very mature 						framework in that “it just works” and has few 						bugs.  It has excellent AJAX support, again, out-of-the-box.</td>
</tr>
<tr class="odd">
<th> Shale*</th>
<td>Developers think that Shale is a JSF implementation, but it&#8217;s not.  						It is a lightweight framework on-top of JSF.</td>
</tr>
<tr>
<th> Rails</th>
<td>Some people think that Rails is all about code generation. Although  						code generation in Rails, called &#8220;scaffolding&#8221;,  						is  						convenient, that&#8217;s really just a tiny fraction of a very robust  						package.  						Code generation gets you started quickly and lets new  						Rails  						users learn how the basics work, but in most cases the generated  						code will be replaced by hand-written code one method at  						a time.  						This makes sure your application is always ready to run  						and test  						while you&#8217;re implementing it.</td>
</tr>
</tbody>
</table>
<p><a href="#More">*More information on the relationship between Struts, Shale and WebWork.</a></p>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="More">Struts, Shale and WebWork</h3>
<p>In the early 2000&#8217;s, WebWork broke off from Apache Struts 1. In 2006, WebWork 2.2  			was pulled back in to the Apache Struts project and became Struts 2.  			Shortly thereafter, development on WebWork ceased. All releases after  			after 2.2 consist of patches. Active development is taking place  			on the Struts 2 code base.</p>
<p>Shale also began life as an Apache Struts subproject. Based on the  			JSF standard (which did not exist when Struts 1 development commenced  			in 2000), the Shale project broke off on its own in late 2006.</p>
<p>A word about the relationship between Struts, WebWork and Shale in the OLEX Library.  			Although the entries in this table are organized into Struts 1 and  			Struts 2/Webwork, downloadable code in the OLEX library is organized  			differently. Under the Struts project, you will find Struts versions  			1.0.2 through 2.0.9, and under the Webwork project you will find  			versions 2.1.7 through 2.2.4. OpenLogic policy is to offer all of a  			project&#8217;s versions &#8211; regardless of the significance of the changes &#8211;  			together. Project developers, when asked to answer our &#8216;Sweet Spot&#8217;  			questions, found it more natural to talk about in terms of Struts 1  			and WebWork/Struts 2 given that the code bases are so closely 			related.</p>
<p>For access to Struts 1 and Struts 2   			code lines in the OLEX library, search for Struts. WebWork code is   			kept under the WebWork project.</p>
<h3 id="Acknowledgments">Acknowledgments</h3>
<p>OpenLogic would like to thank the following members of the OpenLogic 	Expert Community for their contributions to this effort and invite the 	community to email us (docs-at-openlogic-dot-com) if they&#8217;d like to augment, correct, update, 	refute or dispute any of the information included herein.</p>
<table class="help_table" border="0" width="300">
<tbody>
<tr>
<th> Project</th>
<th> Contributer</th>
</tr>
<tr class="odd">
<td>JSF/MyFaces</td>
<td>Gurkan Erdogdu</td>
</tr>
<tr>
<td>JBoss SEAM</td>
<td>Gurkan Erdogdu</td>
</tr>
<tr class="odd">
<td>Spring MVC</td>
<td>Andres March</td>
</tr>
<tr>
<td>Stripes</td>
<td>Dmitri Colebatch</td>
</tr>
<tr class="odd">
<td>Struts 1</td>
<td>Dmitri Colebatch</td>
</tr>
<tr>
<td>Struts 2 (Webwork)</td>
<td>James House</td>
</tr>
<tr class="odd">
<td>Wicket</td>
<td>Jeremy Thompson</td>
</tr>
<tr>
<td>Shale</td>
<td>Mathias Wessendorf</td>
</tr>
<tr class="odd">
<td>Rails</td>
<td>Internal Expertise</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://olex.openlogic.com/wazi/2008/web-framework-comparison-matrix/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comparing Open Source Licenses</title>
		<link>http://olex.openlogic.com/wazi/2008/license-comparison-matrix-pdf_screenshots/</link>
		<comments>http://olex.openlogic.com/wazi/2008/license-comparison-matrix-pdf_screenshots/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 20:52:41 +0000</pubDate>
		<dc:creator>Dave McLoughlin</dc:creator>
				<category><![CDATA[Comparisons]]></category>
		<category><![CDATA[Open Source Licensing]]></category>

		<guid isPermaLink="false">http://olex.openlogic.com/wazi/?p=213</guid>
		<description><![CDATA[The OpenLogic Certified Library includes hundreds of projects and over 225 different licenses, most of which are based &#8212; at least loosely &#8212; on one of the 18 most commonly used license types. We've laid out for you in table form a detailed comparison of the common features of these licenses.]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.openlogic.com/products/certified-library.php" target="_blank">OpenLogic Certified Library</a> includes hundreds of projects and over 225 different licenses. While many of these licenses are custom, most are based — at least loosely — on one of the 18 most commonly used license types. We&#8217;ve laid out for you in table form a detailed comparison of the common features of these licenses.</p>
<p>The three tables below compare the licenses on these general, and commonly considered, points, in increasing detail:</p>
<ul>
<li>Author</li>
<li>Date published</li>
<li>OSI Approved</li>
<li>GPL Compatible</li>
<li>Copyleft</li>
</ul>
<p>For those of you new to licensing, some definitions:</p>
<p><strong>GPL Compatible</strong> licenses allow the combination of the code covered by them with programs that use the GPL without conflict.  Some free/open source software licenses are not GPL-compatible which means they impose conditions not in keeping with the GPL.</p>
<p><strong>Copyleft</strong> licenses &#8211; of which the GPL is the most commonly used &#8211; require any  work originating in the licensed code to be made available under terms identical to that specified by the license that applies to the originating code.</p>
<h3>Comparing Licenses One to Another</h3>
<p>Here&#8217;s a pdf of the highest level comparison&#8230;</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/os_license_compare_general.pdf"><img class="alignnone size-full wp-image-1172" title="lic_compare_summary_tear" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/lic_compare_summary_tear.png" alt="" width="500" height="232" /></a></p>
<p>A little more detail&#8230;</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/os_license_compare_summary.pdf"><img class="alignnone size-full wp-image-1174" title="lic_compare_general_tear" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/lic_compare_general_tear.png" alt="" width="500" height="251" /></a></p>
<p>And the most detail yet&#8230;</p>
<p><a href="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/os_license_compare_detail.pdf"><img class="alignnone size-full wp-image-1175" title="lic_compare_detail_tear" src="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/lic_compare_detail_tear.png" alt="" width="500" height="401" /></a></p>
<p>If you&#8217;d like, you can download the entire license matrix in either <a href="https://olex.openlogic.com/wazi/wp-content/uploads/2008/10/oss_compare_10082008_entire_final.xls">Microsoft Excel (XLS)</a> or <a href="http://olex.openlogic.com/wazi/wp-content/uploads/2008/10/oss_compare_10082008_entire_final.ods">OpenDocument Spreadsheet (ODS)</a> format.</p>
<hr />This article is licensed under the <a href="http://www.gnu.org/licenses/fdl-1.2.txt" target="_blank"><span style="color: #888888;">GNU Free Documentation License</span></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://olex.openlogic.com/wazi/2008/license-comparison-matrix-pdf_screenshots/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Open Source Application Server Comparison Matrix</title>
		<link>http://olex.openlogic.com/wazi/2008/application-server-comparison-matrix/</link>
		<comments>http://olex.openlogic.com/wazi/2008/application-server-comparison-matrix/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 19:46:42 +0000</pubDate>
		<dc:creator>Kimberly McClintock</dc:creator>
				<category><![CDATA[Comparisons]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://olex.openlogic.com/wazi/?p=51</guid>
		<description><![CDATA[The following tables represent research completed in the fall of 2007 by OpenLogic. We went to the experts -- members of the OpenLogic Expert Community who are committers and expert users of the projects -- and asked them to answer a set of questions. Members of Tomcat, JBoss, Jetty and GlassFish responded. Use the resulting information as a tool to plan your projects.
]]></description>
			<content:encoded><![CDATA[<p>Use this comparison matrix to learn about the differences between and relative benefits of the popular  open source application servers JBoss, Tomcat, Glassfish, and Jetty.</p>
<p>From the generally thin-featured offerings and questions of security of the early 2000&#8217;s, the Application Server category of open source project has matured to compete squarely with their commercial counterparts. Sometimes the terms &#8216;Application Server&#8217; and &#8216;Web Application Framework&#8217; are used interchangeably; we&#8217;ve distinguished between them for our research. By Application Server here we mean &#8217;servers of Web based applications&#8217;. You&#8217;ll want to look to the Web Frameworks SweetSpot for more information on the web application frameworks developed by the open source community.</p>
<p>The following tables represent research completed in the fall of 2007 by OpenLogic. We went to the experts &#8212; members of the OpenLogic Expert Community who are committers and expert users of the projects &#8212; and asked them to answer a set of questions. Members of Tomcat, JBoss, Jetty and GlassFish responded. Use the resulting information as a tool to plan your projects.</p>
<p>For comprehensive information on each project compared, locate it in the OpenLogic Enterprise Exchange library by accessing the &#8216;Browse Open Source&#8217; tab.</p>
<p>The five questions we asked the experts appear below. To view more detail on the projects* compared across each question, <a id="Questions">click the question</a>.</p>
<ol>
<li><a href="#QuestionOneSummary">What&#8217;s the &#8217;sweet spot&#8217; of your project? For what type of projects should users strongly consider it? </a></li>
<li><a href="#QuestionTwoSummary">What type of scenarios does your project not fit into as well? Would you recommend another project in this scenario? If so, which one? </a></li>
<li><a href="#QuestionThreeSummary"> Of the projects included here, which have you tried? Of those, which ones did you like or dislike, and why?</a></li>
<li><a href="#QuestionFourSummary"> What is the future of this project? What&#8217;s coming that will ease development?</a></li>
<li><a href="#QuestionFiveSummary"> Are there myths about this project that you&#8217;d like to challenge? </a></li>
</ol>
<p>For comprehensive information on each project, search the OLEX Open Source Library. For a list of the open source developers we interviewed, click <a title="Acknowledgments" href="#Acknowledgments">here</a>.</p>
<p><a id="What_version?">*While no version of the projects is specified, you can assume that the information relates to the latest version in our library at the time of the last update.</a></p>
<h2 class="section">Summarized Responses</h2>
<h3 id="QuestionOneSummary" class="section">What&#8217;s your project&#8217;s &#8217;sweet spot&#8217;?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question One -- Full Answers" href="#QuestionOne">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th>Project</th>
<th> Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>GlassFish</th>
<td>
<ul>
<li>Web services</li>
<li>Enterprise level support for clustering</li>
<li> Enterprise level administration console (CLI, Web based GUI and JMX)</li>
<li>Installation profiles</li>
<li>Tight integration with a wide variety of software packages</li>
</ul>
</td>
</tr>
<tr>
<th>Tomcat</th>
<td>
<ul>
<li>Extremely configurable and pluggable design</li>
<li>Popularity results in large user base</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>JBoss</th>
<td>
<ul>
<li>Ease of use</li>
<li>Development environments</li>
</ul>
</td>
</tr>
<tr>
<th>Jetty</th>
<td>
<ul>
<li> Small size</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionTwoSummary" class="section">What sorts of projects does this package not work as well for?</h3>
<p>This is a summary of the responses. For full detail, click  <a title="Question Two -- Full Answers" href="#QuestionTwo">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th> Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>GlassFish</th>
<td>
<ul>
<li>Any scenario requiring a full Java EE application server or Servlet container is good for GlassFish</li>
<li>GlassFish does not fit in a scenario requiring a container embedded</li>
</ul>
</td>
</tr>
<tr>
<th>Tomcat</th>
<td>
<ul>
<li>Tomcat does not fit well into fullblown J2EE applications</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>JBoss</th>
<td>
<ul>
<li>Will fit in any scenario</li>
</ul>
</td>
</tr>
<tr>
<th>Jetty</th>
<td>
<ul>
<li> Scenarios requiring J2EE support beyond servlets should be avoided</li>
<li>Scenarios requiring business logic to housed in a separate EJB tier</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionThreeSummary" class="section">Of the projects we&#8217;re comparing, which have you tried?</h3>
<p>This is a summary of the responses. For full detail, click  <a title="Question Three -- Full Answers" href="#QuestionThree">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th> Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>GlassFish</th>
<td>Tomcat: liked</p>
<ul>
<li> Tomcat is an optimized Servlet container with clustering 						capability and a very good http/https module implemented using 							non blocking NIO package. Tomcat is suitable if project is not 							going to host EJBs.</li>
</ul>
<p>Geronimo:liked</p>
<ul>
<li> Geronimo has all features that GlassFish has except that it does not provide any of those five features mentioned in question one. 	Although Geronimo has an administration interface, Web service support and very small level of clustering support (using Terracotta), it is far behind what GlassFish provides out of the 	box. Geronimo fits best in scenarios where there is no need for 	clustering and cluster management.</li>
</ul>
</td>
</tr>
<tr>
<th>Tomcat</th>
<td>CauchoResin: didn&#8217;t like</p>
<ul>
<li> Commercial.</li>
<li> Poor documentation.</li>
</ul>
<p>Jetty: liked</p>
<ul>
<li> Small and efficient, but has a smaller user base than some of the alternatives.</li>
</ul>
<p>GlassFish: disliked</p>
<ul>
<li> Worst configuration files ever</li>
<li> Hard to work with.</li>
</ul>
<p>Geronimo: liked</p>
<ul>
<li> Wraps Tomcat inside a J2EE server.</li>
</ul>
<p>JBoss: liked</p>
<ul>
<li> Same as Geronimo</li>
<li> Though I dislike the tyrant community of JBoss.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>JBoss</th>
<td>Tomcat: liked</p>
<ul>
<li> Easy to install, although can be tricky to configure in 							some aspects.</li>
</ul>
<p>Jetty: liked</p>
<ul>
<li> A great option if what you need is a simple web container.</li>
<li> It can be embedded (which makes deployment of the project as a 							whole easier).</li>
<li> Very fast startup (useful during development).</li>
</ul>
<p>GlassFish: didn&#8217;t like</p>
<ul>
<li> Hard to use, and very slow to start (especially when integrated 							with NetBeans).</li>
</ul>
</td>
</tr>
<tr>
<th>Jetty</th>
<td>Tomcat: liked</p>
<ul>
<li> Excellent community support.</li>
<li>Solid Web server</li>
<li>In my experience,  							the development community can be somewhat unhelpful and  							unfriendly.  					However, I have seen many many excellent  					examples of community support in Tomcat, both from users and  					developers. In particular, I have  					always found people such as Filip Hanik to be extremely helpful.</li>
</ul>
<p>JBoss: liked</p>
<ul>
<li>Strong community.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFourSummary" class="section">What is the future of this project? What&#8217;s coming that will ease development?</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question Four -- Full Answers" href="#QuestionFour">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th> Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>GlassFish</th>
<td>
<ul>
<li> Support for AIX</li>
<li> Faster startup</li>
<li> High availability (JMS high availability, in particular) using 							HADB</li>
<li> Enhancements to auto update feature</li>
</ul>
</td>
</tr>
<tr>
<th>Tomcat</th>
<td>
<ul>
<li> Faster and more stable</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>JBoss</th>
<td>
<ul>
<li> No information available.</li>
</ul>
</td>
</tr>
<tr>
<th>Jetty</th>
<td>
<ul>
<li><a title="link to Continuations information" href="http://docs.codehaus.org/display/JETTY/Continuations">Continuations</a> and 							Async SSL</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFiveSummary" class="section">Myths</h3>
<p>This is a summary of the responses. For full detail, click <a title="Question Five -- Full Answers" href="#QuestionFive">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th> Summarized Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th>GlassFish</th>
<td>
<ul>
<li>Poor performance.</li>
</ul>
</td>
</tr>
<tr>
<th>Tomcat</th>
<td>
<ul>
<li>Tomcat is great for development, but should not be used from production.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>JBoss</th>
<td>
<ul>
<li>Lack of support, and an inability to handle mission-critical projects. Neither of these are true.</li>
</ul>
</td>
</tr>
<tr>
<th>Jetty</th>
<td>
<ul>
<li>Jetty can only be run as part of JBoss or Geronimo.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<p><!-- COMPLETE RESPONSES --></p>
<h2>Complete Responses</h2>
<h3 id="QuestionOne" class="section">What&#8217;s your project&#8217;s &#8217;sweet spot&#8217;?</h3>
<p>This is the full response. For a summary of the response, click <a title="title=" href="#QuestionOneSummary">here</a>.</p>
<table class="help_table" style="height: 890px;" border="0" width="680">
<thead>
<tr>
<th> Project</th>
<th>Full Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th> GlassFish</th>
<td>
<ul>
<li>Web services: It has a well designed and implemented Web service stack which supports the latest WS-* standards like Reliable Messaging, Secure Conversation, Trust, Security, SecurityPolicy, MetadataExchange, Atomic Transaction, Coordination, etc. The GlassFish Web services stack is fully Interoperable with the .Net framework, and has been adopted by some other big players like IBM for its JDK version 6, BEA as Web service stack for BEA application server 10, JBoss WS 2.1.0, etc.</li>
<li>Enterprise level support for clustering: GlassFish has a very well designed and implemented clustering and high availability mechanism which distinguishes it as an open source application server. GlassFish supports in-memory replication for http sessions, stateful EJB session states, single sign on states, and container states (Timer…). Although the default replication mechanism between instances is based on JXTA (in-memory replication), it is possible to use HADB (a high performance database optimized for high availability use cases)to achieve 99.99% uptime.</li>
<li>Enterprise level administration console (CLI, Web based GUI and JMX): The GlassFish administration console allows full control over application server configuration and behavior from detailed configuration of an ORB listener to monitoring and diagnosis. Web based console can be used to manage and configure a cluster and deploy application or resource to entire cluster. Per-Web service, JDBC resource, web resource, etc monitoring provide detailed statistics about that resource usage.</li>
<li>Installation profiles: GlassFish can be installed using one of several profiles: Developer, Cluster or Enterprise. Each profile has special features that make it suitable for a specific purpose.For example, the Developer profile will not carry modules that are required for clustered environments and this allows for faster database stops and starts. The Developer profile also uses an embedded broker to serve JMS requirements. It uses the JKS format rather than the CertDB used by the Enterprise profile. These and other differences between the profiles let each role in an enterprise to have an installation suited for its purpose.</li>
<li> GlassFish is tightly integrated with a wide range of software, including:
<ul>
<li> OpenESB &#8211; a first class JBI implementation with tens of<br />
binding components and service engines.</li>
<li> OpenSSO &#8211; an open source version of Sun Java Access Manager.</li>
<li> OpenDS &#8211; an open source version of the Sun Directory Server.</li>
</ul>
</li>
</ul>
</td>
</tr>
<tr>
<th> Tomcat</th>
<td>Tomcat&#8217;s sweet spot is it&#8217;s extremely configurable and pluggable design. This means that every  component inside of Tomcat can be exchanged with one you or someone else has developed without<br />
changing Tomcat code. This is all managed via the configuration file. This ease of use has contributed to making Tomcat the most popular servlet engine today. This popularity results in a very<br />
large user base and access to lots of expertise. Additionally, and it&#8217;s easy to find developers with the Tomcat skill set.</td>
</tr>
<tr class="odd">
<th> JBoss</th>
<td>The biggest advantage of JBoss is ease of use. Installation is as simple as unzipping a file; deploying the application is as simple as copying a WAR/EAR. Support for expanded deployments makes development more productive.</p>
<p>JBoss should be considered for any Java EE project. Even if the project officially uses another application server, developers could use JBoss during development to increase productivity.</td>
</tr>
<tr>
<th> Jetty</th>
<td>Whilst Jetty is an excellent servlet engine on any measure, it is extremely lightweight and so easy to embed into another application. We have a number of applications that require embedded HTTP servers in which we have used Jetty very successfully.</p>
<p>The entire Jetty codebase is only a few hundred KB, and as such it is ideal for environments where memory is a premium. For example, many devices such as routers and modems have Web<br />
interfaces for managing the device. Jetty would be an ideal fit for this sort of deployment due to its compact footprint.</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionTwo" class="section">What sorts of projects does this package not work as well for?</h3>
<p>This is the full response. For a summary of the response, click <a title="Question Two -- Summary" href="#QuestionTwoSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th> Full Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th> GlassFish</th>
<td>Generally speaking, GlassFish fits any type of scenario requiring a full Java EE application server or Servlet container. In older versions of GlassFish (Sun Java application servers), it was not suitable to replace a Servlet container like Tomcat or Jetty but the new Grizzly engine used in GlassFish allows it to operate as<br />
well as Tomcat and Jetty in place of a Servlet container. In addition, it has a very easy and reliable cluster management and failover recovery which make it a wise choice.</p>
<p>The one scenario that current versions of GlassFish does not fit is any embedded use case where a container should be embedding in-process. For this scenario Tomcat fits well.</td>
</tr>
<tr>
<th>Tomcat</th>
<td>Any that is no java, of course. And, fullblown J2EE applications, for this you can use JBoss, Geronimo or Glassfish, all of which run a version of Tomcat inside.</td>
</tr>
<tr class="odd">
<th> JBoss</th>
<td>Technically speaking, I don&#8217;t know any scenario into which JBoss would not fit (that doesn&#8217;t mean such a scenario doesn&#8217;t exist, I&#8217;m just not familiar with any).</td>
</tr>
<tr>
<th> Jetty</th>
<td>If J2EE support beyond servlets is required, something like JBoss or Geronimo would be a better choice. It should be noted that technically speaking, neither of those are Servlet containers but instead include a Servlet container (typically Tomcat or Jetty) that is used to handle HTTP requests. Given that Jetty is only a servlet container, it does not support EJBs and other J2EE components except servlets.</p>
<p>Some applications may require that business logic be housed in a separate EJB tier which Jetty does not support. In these cases something like JBoss or Geronimo would be a better choice. Note that even in this case Jetty would still be an excellent choice for the HTTP/Servlet component of the application. I do not<br />
believe there are any projects where Jetty would not be an excellent fit for the HTTP/Servlet layer if Java is a requirement.</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionThree" class="section">Of the projects included here, which have you tried? Of those, which ones did you like or dislike, and why?</h3>
<p>This is the full response. For a summary of the response, click <a href="#QuestionThreeSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th> Full Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th> GlassFish</th>
<td>Tomcat: liked</p>
<ul>
<li> Tomcat is an optimized Servlet container with clustering capability and a very good http/https module implemented using non blocking NIO package. Tomcat is suitable if project is not going to host EJBs.</li>
</ul>
<p>Geronimo:liked</p>
<ul>
<li>Geronimo has all features that GlassFish has except that it does not provide any of those five features mentioned in question one. Although Geronimo has an administration interface, Web<br />
service support and very small level of clustering support (using Terracotta), it is far behind what GlassFish provides out of the box. Geronimo fits best in scenarios where there is no need for clustering and cluster management.</li>
</ul>
</td>
</tr>
<tr>
<th> Tomcat</th>
<td>CauchoResin: didn&#8217;t like</p>
<ul>
<li>Commercial.</li>
<li> Poor documentation.</li>
</ul>
<p>Jetty: liked</p>
<ul>
<li> Small and efficient, but has a smaller user base than some of the alternatives.</li>
</ul>
<p>GlassFish: disliked</p>
<ul>
<li> Worst configuration files ever</li>
<li>Hard to work with.</li>
</ul>
<p>Geronimo: liked</p>
<ul>
<li> Wraps Tomcat inside a J2EE server.</li>
</ul>
<p>JBoss: liked</p>
<ul>
<li> Same as Geronimo</li>
<li> Though I dislike the tyrant community of JBoss.</li>
</ul>
</td>
</tr>
<tr class="odd">
<th>JBoss</th>
<td>Tomcat: liked</p>
<ul>
<li> Easy to install, although can be tricky to configure in some aspects.</li>
</ul>
<p>Jetty: liked</p>
<ul>
<li> A great option if what you need is a simple web container.</li>
<li> It can be embedded (which makes deployment of the project as a whole easier).</li>
<li>Very fast startup (useful during development).</li>
</ul>
<p>GlassFish: didn&#8217;t like</p>
<ul>
<li> Hard to use, and very slow to start (especially when integrated with NetBeans).</li>
</ul>
</td>
</tr>
<tr>
<th> Jetty</th>
<td>Tomcat: liked</p>
<ul>
<li> Excellent community support.</li>
<li>Solid Web server</li>
<li> In my experience, the development community can be somewhat unhelpful and unfriendly (see<br />
http://issues.apache.org/bugzilla/show_bug.cgi?id=37424 for an example). However, I have seen many many excellent examples of community support in Tomcat, both from users and developers. In particular, I have always found people such as Filip Hanik to be extremely helpful.</li>
</ul>
<p>JBoss: liked</p>
<ul>
<li> Strong community.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFour" class="section">What is the future of this project? What&#8217;s coming that will ease<br />
development?</h3>
<p>This is the full response. For a summary of the response, click <a href="#QuestionFourSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th>Full Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th> GlassFish</th>
<td>The GlassFish kernel is slated for redesign in version 3. The new kernel is based on an HK2 module sub-system which makes it possible to start GlassFish in a cell phone or embed it<br />
in-process. Other enhancements include some to performance: GlassFish will start within few seconds (less than 5) using a lazy loading mechanism for its module and sub systems.</p>
<p>There will be an upgrade for GlassFish in early 2008 which make it possible to use GlassFish on AIX operating system. GlassFish version 3 will support Java EE 6 profiles in addition to support for scripting languages like JRuby, PHP, JavaScript (server side). Support for these languages will be available through containers which are already implemented to some degree.</p>
<p>The next version will include improvements for high availability (JMS high availability, in particular) using HADB.</p>
<p>GlassFish has an auto update mechanism that allows administrators to create an update center with new or updated application server artifacts and update all server instance from that update center. This feature allows the update of application servers or install of new modules on the server. In next version of GlassFish, it will be possible to update deployed applications using this update center.</td>
</tr>
<tr>
<th>Tomcat</th>
<td>Continue along the same path, it is now a commodity software, no revolutions inline but to make it better, more stable and faster.</p>
<p>JSR-315 is next on the list, which is servlet 3.0.</td>
</tr>
<tr class="odd">
<th> JBoss</th>
<td>No information available.</td>
</tr>
<tr>
<th> Jetty</th>
<td>Jetty is still under active development and a number of new features are being added to fulfill today&#8217;s requirements of a servlet container, including <a title="link to Continuations information" href="http://docs.codehaus.org/display/JETTY/Continuations">Continuations</a> and Async SSL.</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h3 id="QuestionFive" class="section">Are there myths about this project that you&#8217;d like to challenge?</h3>
<p>This is the full response. For a summary of the response, click <a href="#QuestionFiveSummary">here</a>.</p>
<table class="help_table" border="0" width="700">
<thead>
<tr>
<th> Project</th>
<th> Full Response</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th> GlassFish</th>
<td>The most insidious myths about GlassFish were allayed by SUN&#8217;s release of the SpecJ benchmark reports. SpecJ reports debunking myths about GlassFish performance are worth looking at &#8211; <a title="Glassfish performance" href="http://www.spec.org/jAppServer2004/results/res2007q3/jAppServer2004-20070703-00073.html" target="_blank">here</a> and <a href="http://weblogs.java.net/blog/sdo/archive/2007/07/sjsas_91_glassf.html" target="_blank">here</a>.</td>
</tr>
<tr>
<th>Tomcat</th>
<td>There is one myth, and it was around for a long time: Tomcat is great for development, but should not be used from production. While this may persist in some companies, many have realized the cost benefit of Tomcat, and its maturity.</td>
</tr>
<tr class="odd">
<th> JBoss</th>
<td>Lack of support, and an inability to handle mission-critical projects. Neither of these are true.</td>
</tr>
<tr>
<th> Jetty</th>
<td>One is that Jetty can only be run as part of JBoss or Geronimo. This is not true, the only reason Jetty would need to run as part of JBoss or Geronimo is if EJB support is required.</p>
<p>Jetty doesn&#8217;t have support for JNDI or LDAP integration. This is not true, JettyPlus (http://jetty.mortbay.org/jetty5/plus/index.html) has support for JTA, JNDI, JAAS and Javamail.</td>
</tr>
</tbody>
</table>
<p><a href="#Questions">Return to the questions list</a>.</p>
<h2 id="Acknowledgments">Acknowledgments</h2>
<p>OpenLogic would like to thank the following members of the OpenLogic Expert Community for their contributions to this effort and invite the 	community to email us if they&#8217;d like to augment, correct, update, refute or dispute any of the information included herein.</p>
<table class="help_table" border="0" width="300">
<tbody>
<tr>
<th> Project</th>
<th> Contributer</th>
</tr>
<tr class="odd">
<td>Glassfish</td>
<td>Masoud Kalalil</td>
</tr>
<tr>
<td>JBoss</td>
<td>Felipe Leme</td>
</tr>
<tr class="odd">
<td>Jetty</td>
<td>Dmitri Colebatch</td>
</tr>
<tr>
<td>Tomcat</td>
<td>Filip Hanik</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://olex.openlogic.com/wazi/2008/application-server-comparison-matrix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
