Skip to content
This repository has been archived by the owner on Apr 17, 2018. It is now read-only.

Roadmap

dkubb edited this page Aug 14, 2010 · 60 revisions

Purpose of this page

DataMapper development is community driven, and priority is based on contributor need. This page lists the things the contributors are interested in seeing in DataMapper prior to 1.0

Contributors Needed

Please review some of the features below, and if you are interested in helping with them, please contact dkubb on github (Dan Kubb) or via irc in #datamapper or #dm-hacking. More information is coming, and each feature name will be hyperlinked to a document containing more information and any open questions.

0.10.x series

The 0.10.0 series will likely be the last before the 1.0 release (on or before RailsConf 2010).

Here are the planned features:

  • Finalize the Model, Collection and Resource APIs to match this gist
  • Updated Identity Map to use Moneta API
  • Provide a way to specify a custom IM per-model

RDBMS Decoupling

  • Move DO adapters into dm-more as:
    • dm-mysql-adapter
    • dm-postgres-adapter
    • dm-sqlite3-adapter
    • dm-oracle-adapter
    • dm-sqlserver-adapter
  • Move lib/dm-core/migrations.rb into dm-migrations
  • Move lib/dm-core/transaction.rb into dm-transaction
  • Add adapters for JRuby drivers
    • dm-h2-adapter
    • dm-derby-adapter
    • dm-hsql-adapter

Property

  • Move Paranoid types out into dm-types
  • Unify Property and Type
    • Create one DM::Property subclass for each primitive: Gist
    • Move type specific code from DM::Property into subclasses
    • Move type specific options to subclasses
    • Throw exceptions when wrong option used, like :size in a String object.
    • Update dm-types to inherit from DM::Property

Validations

  • Update dm-validations to add validations when has 1..3 used to ensure the minimal/maximal number of children is present.
    • Should also work for has 1, has 1..n, etc

Embedded Value

  • Add EmbeddedValue (EV) with the same API as DM::Model
  • Update dm-validations to work with an EV.
  • This concept comes from PoEAA, and is called the Embedded Value Pattern

Example Code:


  class Address
    include DataMapper::EmbeddedValue

    property :street,      String
    property :location,    String
    property :subdivision, String
    property :postal_code, String
    property :country,     String
  end

  class User
    include DataMapper::Resource

    property :id,      Serial
    property :name,    String
    property :address, Address
  end

General Cleanup

  • Remove dependency from Extlib, and use ActiveSupport, assuming libs can be cherry-picked
  • Change before/after hooks to use explicitly named callbacks, like AR.
  • Update datamapper.org docs, and model Django’s documentation guidelines.
    • Focus on short, quick tutorials, and longer topical guides for each area of DM (querying, models, validations, etc).
Clone this wiki locally