Last updated by 5 years ago

Page: Grails 1.0 feature set, Version:0

Grails 1.0 feature set

This document is to detail the high level features that are to make up the final agreed (required) feature set for a 1.0 release. We are aiming for a 1.0 release in early October 2007 so we have to be as tight as we can to make the objective achievable while also allowing us ample time to fix existing and new issues that are considered blockers.

We need a formal policy on what is considered a "blocker" i.e. will prevent a 1.0 release.

Grails dev team members can discuss the presence of these features in 1.0 on the dev mailing list, not on this page. The features will be listed as candidates, and then moved into agreed and deferred lists as discussion takes place.

Once the featureset is agreed for 1.0 we will create high level issues for each feature with fix-for 1.0 and then add the relevant sub-tasks and fix those in intermediary versions, the plan being that we will add no more new features after 0.8, and 0.9 will be bug fixes and performance tweaks until we then hit 1.0 RCs and finally a gold 1.0 in October 2007.

Some features will be indentified as grails core code changes. Others will be plugins that are "required" for grails 1.0 users to get maximum gratification quickly. Features that are not core to Grails will have to be moved out into plugins during this decision process.

I (Marc Palmer) will be leading this process and will update this page with concensus from the dev team. Under each item is a list of justifications for requirement in 1.0

Features - Pending candidates for 1.0

Features - Agreed for 1.0

Grails Core

  • DONE - Improve Unit testing infrastructure
  • DONE - Add custom URL mapping feature
  • DONE (except Ranges) - Improvements to GORM adding support for list, map and Groovy ranges
  • DONE - Command objects for Forms
  • Fix all auto-reloading issues
  • Implement support for JSP custom tag libraries in GSP
    1. Needed for wider adoption in J2EE shops
  • DONE - Add support for packages
  • DONE - Implement support for Spring Web Flow
    1. Needed for any form of complex form systems
    2. Prevents double-post
  • Support for partial validation of command/domain objects, to support large domain object spanning multiple flow steps
  • DONE - Upgrade to Jetty 6
  • Global interceptors / reworked interceptors mechanism for plugins and controllers to add interceptors. Something along the lines of UrlMappings has been thrown about.
    1. Inheritance is broken for interceptors currently
  • Add access to GSP taglibs from controllers via "tags.XXXX(yyyy)" calls
    1. Needed to make links etc in generated content i.e. RSS feeds

Persistence

  • Orphan control for GORM
  • Cascade delete control for GORM, and change default to NOT cascade deletes at all.
  • Implement generation of domain model from DB (Middlegen integration)
    1. Important for migration of existing applications
  • Index generation DSL for GORM
    1. Important for performance
  • Caching control for domain classes
    1. Important for performance
  • Add different table mapping schemes in GORM
    1. Crucial to make constraints work - nullable constraint not enforced at DB level with current mapping
    2. Current scheme inefficient storage of data, column count limitation problems on some DBs perhaps
  • Add mechanism to call actions in other controllers without having to manually instantiate the controller and do the injecting etc
    1. Required to do "inline" action chaining

Project Infrastructure

  • DONE - ApplicationConfig or similar class for storing things like mail transport config, per-environment
    1. Important to set convention pre 1.0
  • DONE - Re-organization of grails-tests as per list discussions into grails-tests/unit, grails-tests/functional etc
    1. Important to set convention pre 1.0
    2. We need an easy way to distinguish between unit tests and functional tests
  • Support loading of GSP views from any path set by the application, and with option for reloading/staleness/forced reload
    1. Needed to allow trivial content tweaks/updates on live sites

Plugins

    1. Required to stop Mail plugin dependency chaos in plugin community

Features - Deferred for post 1.0

  • Fork GSQL and use to add support for database migrations
  • Add XML-RPC support for Service classes
  • Implement Grails-AOP an AOP mechanism built on the Groovy MOP
  • Add scaffolding of user authentication code
  • Start to build up a UI component tag library

Grails core

  • Refactor scaffolding to make it more pluggable and extensible - Deferred as it is possible to customize currently anyway.

GORM

  • Implement support for JPA - Deferred as not crucial for operation of 1.0 apps
    1. Needed for wider adoption in J2EE shops?

Plugins

  • Integrate Converters Plugin functionality (or variant of)
    1. Makes Ajax stuff much cleaner
    1. Current java solutions are ugly
  • Create a standard security plugin based on Spring Security (formerly Acegi)
    1. For similar reasons to those for standard mail plugin, plugins requiring security

Project Infrastructure

  • Fix/update functional testing (WebTest or other)
    1. Important to have fully working unit tests in 1.0
  • Allow creation of common libs too (.gar files?) for re-use.
    1. Plugin system feels a bit heavyweight/wrong for this.

Web/Ajax

  • Add server-side scripting of client Javascript (javascript DSL)
  • Make scaffolding work for all relationship and field types
    1. Good visual/demo marketing value

Grails Plugins

  • Add server-side scripting of client Javascript (javascript DSL)
  • Implement generation of domain model from DB (Middlegen integration)

Other

  • IDE integration API to make IDE plugins easier to develop

Features - Rejected (turkeys)