| [0] rationale |
| |
| Tapestry, currently housed at the SourceForge? (http://tapestry.sf.net), |
| is a component-based web application framework. Tapestry falls |
| generally into the pull-MVC model of development. |
| |
| Tapestry is designed specifically around the creation of completely |
| re-usable components. Components can easily be packaged into |
| libraries and distributed within Jar files, even when they contain |
| assets such as image files and stylesheets. |
| |
| Tapestry is organized around an abstraction that isolates |
| application-specific logic from the details of the servlet API, |
| such as HttpSession?, request, response, URLs and query parameters. |
| |
| Tapestry is highly pluggable, allowing any and all behavior to be |
| customized by subclassing appropriate base classes. |
| |
| Tapestry is specifically not a JSP taglib. Tapestry uses its own |
| method for instrumenting HTML that is extremely non-obtrusive (it |
| still previews properly in a WYSIWYG editor). Tapestry has well |
| specified, separate roles for HTML producers and Java developers, |
| and allows them to work together without interfering with each |
| other. |
| |
| The goal of Tapestry is to shift much of the burden of developing |
| web applications onto the framework, and free the developer to work |
| cleanly and effectively without concern for the many small details |
| of web application development. The primary function of Tapestry |
| is the automatic creation of URLs by the framework, facilitating |
| a fine-grained dispatch model. The bird's-eye view is that, in |
| Tapestry, actions (such as clicking a link, or submitting a form) |
| are associated with a particular component and, through a simple |
| delegation system, a particular bit of user code. There is no global |
| registry of actions, as in Struts, and it's easy to create reusable |
| components that define their own behaviors (in terms of links or |
| forms), independent of the containing page. |
| |
| Tapestry applications can be extremely sophisticated with surprisingly |
| little code. |
| |
| Tapestry includes a significant amount of documentation describing |
| its strengths and features in great detail, available at |
| http://tapestry.sf.net. Live demos, a great collection of user |
| quotes, extensive documentation (HTML and PDF) and a recent code |
| coverage report are all online. |
| |
| Tapestry has been an open-source project on SourceForge? since June |
| 2000. Milestone releases (such as 2.1 in July, or the just-released |
| 2.2) result in 6K - 7K downloads (increasing by over 1K downloads |
| with each successive release). Tapestry has averaged over 3000 |
| downloads a month during 2002, with peaks above 8K/month. |
| |
| Tapestry has recently adopted Apache meritocracy rules to govern |
| the project. The license for Tapestry has been changed from LGPL |
| to Apache Software License. |
| |
| [0.1] criteria |
| |
| Meritocracy: Tapestry follows the Apache meritocracy rules, with |
| a core of committers. |
| |
| Community: Tapestry has a modest, but very active community, centered |
| around a user's mailing list (approx. 200 members), a developer's |
| mailing list, and the Tapestry Wiki (http://tapestry.sf.net/wiki). |
| The mailing lists have an exceptionally good signal-to-noise ratio; |
| discussions typically revolve around planning new extensions to |
| the framework, creating new components and documentation, and |
| diagnosing developer issues. The developer's mailing list is used |
| primarily for voting, and for discussions about votes. A secondary |
| project, to provide a community component repository is now underway |
| (http://sf.net/projects/tacos). |
| |
| Core Developers. Tapestry has an active and dedicated team of |
| committers. The project was founded by Howard Lewis Ship, who is |
| extremely dedicated to Tapestry and authored the majority of the |
| codebase. Richard Lewis-Shell and Mind Bridge are frequent contributors |
| of components and bug fixes as well as some significant extensions. |
| Neil Clayton and Malcolm Edgar provide code and significant amounts |
| of documentation. Geoff Longman has created an excellent plugin |
| for the Eclipse IDE (as a separate project) and provides code to |
| keep the two projects in sync. Several other developers contribute |
| bug fixes, components and documentation. |
| |
| Alignment: Tapestry makes use of the ORO, commons-lang and |
| commons-logging packages internally. |
| |
| Scope: Tapestry is entirely a server-side framework, well aligned |
| with the overall goals of the Jakarta project. |
| |
| [0.2] warning signs |
| |
| Orphaned products. Tapestry is far from orphaned, it was originally |
| conceived and executed specifically as an open-source project. |
| |
| Inexperience: Howard Lewis Ship has been coding, documenting, |
| mentoring and managing this open source project for nearly three |
| years. Others on the team have been actively using, supporting and |
| extending Tapestry for over a year. |
| |
| Homogeneous Developers: The current Tapestry committers include |
| representatives from Canada, England, Australia and New Zealand; |
| other, more occasional, contributors represent South America and |
| Asia. This is just the opposite of the "smoke filled room". |
| |
| Reliance on Salaried Developers: Tapestry is largely developed |
| during free time. Many contributions are developed by consultants |
| to address specific needs of their clients, then modularized and |
| provided back to the community (for example, Geoff is developing |
| a workflow management subsystem for Tapestry that may be released |
| into the framework proper when completed). Increasingly, developers |
| are finishing projects with Tapestry and contributing components |
| created for those projects back into the project. |
| |
| No ties to other Apache Products: As stated above, Tapestry makes |
| use of the ORO and commons packages and has numerous places where |
| greater integration with Jakarta could occur. It is servlet container |
| agnostic, working well with Tomcat, Jetty, Resin and others. |
| |
| Fascination with Apache Brand: Tapestry has been, and always will |
| be an open-source project. |
| |
| [0.3] overlap with Turbine |
| |
| Turbine has a similar model to Tapestry, but the focus of the two |
| projects is somewhat divergent. Turbine is a service-oriented where |
| Tapestry is component-oriented. Turbine provides a larger toolkit |
| (in the form of services) for aspects of the application not related |
| directly to the presentation layer. Tapestry provides more flexibility |
| and power in the presentation layer but doesn't provide any other |
| services (such as scheduling, database access, security, etc.). |
| |
| Many Tapestry users are employing Tapestry for the presentation |
| layer, but leverage the many Turbine services (especially Torque). |
| |
| [1] scope of subproject |
| |
| The project shall create and maintain packages written in the Java |
| programming language constituting the framework itself, a standard |
| library of additional components, documentation, a web site and |
| additional examples. |
| |
| [2] identify the initial source from which the project is to be |
| populated |
| |
| The project currently resides on the SourceForge? (http://tapestry.sf.net). |
| |
| [3] identify the Jakarta resources to be created |
| |
| [3.1] mailing lists(s) |
| |
| tapestry-user tapestry-dev tapestry-cvs |
| |
| [3.2] CVS repositories |
| |
| jakarta-tapestry |
| |
| [3.3] Bugzilla |
| |
| framework - tapestry components - web site, contrib library, |
| documentation, examples |
| |
| [3.4] Wiki |
| |
| It is desired that a Wiki be setup. Use of the current Wiki |
| (http://tapestry.sf.net/wiki) has proven highly successful in |
| supporting distributed design, discussion and decision making, as |
| well as providing a home for temporary documentation until permanent |
| documentation changes occur. We would prefer MoinMoin?, a Python |
| Wiki implementation. |
| |
| [4] identify the initial set of committers |
| |
| Mind Bridge mindbridge mindbridgeweb@yahoo.com |
| |
| Neil Clayton nclayton neil@cloudnine.net.nz |
| |
| Malcolm Edgar medgar malcolm_edgar@hotmail.com |
| |
| Richard Lewis-Shell rlewisshell rlewisshell@mac.com |
| |
| Howard Lewis Ship hlship hlship@attbi.com |
| |
| Geoff Longman glongman glongman@intelligentworks.com |
| |
| [5] identify apache sponsoring individual |
| |
| Andrew C. Oliver |
| |
| dIon Gillard |