[t] Refactor some namespace pmc tests to use throws_like
[parrot.git] / docs / req / model_users.pod
blob43a45490ac221e8d6eaabb58982daa24f5ba1481
1 # Copyright (C) 2005-2007, Parrot Foundation.
2 # $Id$
4 =head1 NAME
6 docs/req/model_users.pod - Model Users For Parrot Design Decisions
8 =head1 RATIONALE
10 This document exists to give Parrot design a direction.  Before we can make
11 design decisions, we need a metric to evaluate them.  The best metrics are
12 based on I<informed> intuition.  This document is designed to inform the
13 intuition.
15 Below are listed some model users with random (or, in some cases,
16 not-so-random) names.
18 Questions to ask yourself: Do you know anyone who fits these descriptions?  If
19 so, what else would you write about them?  How would you describe them?  What
20 else do they care about?  What do they I<not> care about?
22 And let's remember that, in the end, we can't really please everyone.  So we
23 have to pick who we'll please, and who we'll piss off.  It just can't be
24 helped.
27 =head1 MODEL USERS
30 =head2 "Audrey": Perl 6 implementer
32 Audrey has a favorite language, Perl 6, and he wants to target it to Parrot.
34 Audrey:
36 =over 4
38 =item * values speed, but not above all else
40 =item * values interoperability of languages, especially with Perl 5
42 =item * doesn't care about PBC particularly, though he knows his users might,
43 eventually
45 =item * doesn't mind incompatible source changes, as long as the entire tool
46 chain still works after upgrading
48 =back
50 =head2 "Nick": Ponie implementer
52 Nick is implementing Perl 5 with (over? under? inside?) Parrot.
54 Nick:
56 =over 4
58 =item * doesn't care about dynamic loading of features
60 =item * ???
62 =back
64 =head2 "Dick": Scripting an existing application
66 Dick has an application that needs some scripting features, so he's embedding
67 Parrot to get PIR and the languages that target it, e.g.  Perl 6.
69 Dick:
71 =over 4
73 =item * cares mostly about ease and stability of embedding (no memory leaks!
74 no seg faults!)
76 =item * is probably not very sensitive to performance, since scripting
77 interfaces are never speed demons anyway
79 =item * probably bundles a specific Parrot version (or linkage to a specific
80 version) and maybe precompiled pbcs with his program
82 =item * may be more or less tolerant of changes depending on the system into
83 which Parrot is embedded
85 =back
87 =head2 "Tom": Embedded system creator
89 Tom loves Perl 6, so wants to write his special-purpose embedded system to run
90 on Parrot.  The platform is very limited, and speed is not particularly
91 crucial.
93 Tom:
95 =over 4
97 =item * cares mostly about stable long-term execution (no memory leaks!  no seg
98 faults!)
100 =item * doesn't care about inter-version compatibility, since he bundles Parrot
101 with his product
103 =item * doesn't care very much about performance
105 =item * depends on PBC for space efficiency
107 =item * wants to be able to strip down Parrot for deployment, omitting
108 subsystems that are large or which depend on large external systems
110 =back
112 =head2 "Ilya": Intensive CPU User
114 Ilya writes high-performance CPU-bound code, typically involving either intense
115 data structure manipulation or floating point math.
117 Ilya:
119 =over 4
121 =item * cares about performance to exclusion of most other factors
123 =item * doesn't care about PBC one way or the other
125 =item * can't handle incompatible source changes; is likely to pick a favorite
126 feature set and stick with it
128 =back
130 =head2 "Magpie": Lover of shiny things
132 Magpie sees something shiny -- a new runtime, or a new language, or even
133 better, a new language on a new runtime -- and is willing to do a lot to make
134 it work, just so he can play with it.
136 Magpie:
138 =over 4
140 =item * loves neat features
142 =item * doesn't care about PBC, backwards compatibility, or any of the things
143 that make a platform stable and useful for users who don't care about shiny
144 tech
146 =item * will put up with almost any change as long as the inconvenience leads
147 to something even more shiny
149 =back