Use class_of in attr->clone
[gitmo/Moose.git] / grant-description
CommitLineData
56242e5e 11. Write a set of Moose::Intro::* documentation. This would be a major
2expansion of the documentation currently in Moose::Intro. These docs
3will explain concepts in detail, and also explain why and when someone
4would choose to use a particular feature.
5
6This differs from the cookbook, which is primarily aimed at showing
7examples of features in code, and then walking through that code.
8
9The intro docs would include the following:
10
11 * Moose::Intro::Attributes - what are attributes and how are they
12 used? This piece of documentation would show all the different
13 features available for attributes, including the "initializer",
14 "clearer", "predicate", triggers, etc. It's likely that this
15 will end up being split into two or three separate documents,
16 since Moose has quite a lot of attribute-related features. For
17 example, delegation could easily be in its own document, and it
18 may make sense to split features into a "basic" and "advanced"
19 set.
20
21 * Moose::Intro::Subclassing - subclassing the Moose
22 way. Subclassing in Moose is very simple, but different from the
23 "old school" Perl 5 way.
24
25 * Moose::Intro::MethodModifiers - a detailed discussion of each
26 type of method modifier with explanations of when each is
27 appropriate.
28
29 * Moose::Intro::MooseObject - details of how Moose::Object works
30 and the features it provides for its subclasses. In particular,
31 this documentation would focus on how to use the BUILD,
32 BUILDARGS, and DEMOLISH methods.
33
34 * Moose::Intro::Roles - an explanation of what roles are and
35 discussion of when to use them. This document would discuss how
36 to apply multiple roles to classes, how to apply roles to other
37 roles, and also how to apply roles to an instantiated object.
38
39 * Moose::Intro::Types - an explanation of Moose's type
40 system. This will include information on how and when to create
41 your own types, and how to use coercion.
42
43 * Moose::Intro::Introspection - what are metaclasses,
44 meta-attributes, etc? This document will explain what the
45 metaclasses are, and talk about how they can be used for
46 introspection.
47
48 * Moose::Intro::MooseX - an overview of some useful MooseX
49 modules, specifically MooseX::AttributeHelpers,
50 MooseX::StrictConstructor, MooseX::Params::Validate, and
51 MooseX::Types.
52
532. Revise all of the existing cookbook recipes for clarity and
54simplicity. I've already done this for a few recipes, but there are
55quite a few left to do.
56
573. Write the recipes marked as TODO:
58
59 * Moose::Cookbook::Basics::Recipe8 - Managing complex relations with trigger
60 * Moose::Cookbook::Basics::Recipe11 - BUILD and BUILDARGS
61 * Moose::Cookbook::Roles::Recipe3 - Runtime Role Composition
62 * Moose::Cookbook::Meta::Recipe6 - Hooking into the immutabilization system
63 * Moose::Cookbook::Meta::Recipe7 - Custom meta-instances
64
654. Complete API docs for all Moose and Class::MOP classes. Many of
66these classes have POD which simply lists their methods, without any
67explanation of what these methods do.