Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / Module::Install::Philosophy.3pm
1 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sh \" Subsection heading
6 .br
7 .if t .Sp
8 .ne 5
9 .PP
10 \fB\\$1\fR
11 .PP
12 ..
13 .de Sp \" Vertical space (when we can't use .PP)
14 .if t .sp .5v
15 .if n .sp
16 ..
17 .de Vb \" Begin verbatim text
18 .ft CW
19 .nf
20 .ne \\$1
21 ..
22 .de Ve \" End verbatim text
23 .ft R
24 .fi
25 ..
26 .\" Set up some character translations and predefined strings.  \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote.  | will give a
29 .\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
30 .\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
31 .\" expand to `' in nroff, nothing in troff, for use with C<>.
32 .tr \(*W-|\(bv\*(Tr
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34 .ie n \{\
35 .    ds -- \(*W-
36 .    ds PI pi
37 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
39 .    ds L" ""
40 .    ds R" ""
41 .    ds C` ""
42 .    ds C' ""
43 'br\}
44 .el\{\
45 .    ds -- \|\(em\|
46 .    ds PI \(*p
47 .    ds L" ``
48 .    ds R" ''
49 'br\}
50 .\"
51 .\" If the F register is turned on, we'll generate index entries on stderr for
52 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53 .\" entries marked with X<> in POD.  Of course, you'll have to process the
54 .\" output yourself in some meaningful fashion.
55 .if \nF \{\
56 .    de IX
57 .    tm Index:\\$1\t\\n%\t"\\$2"
58 ..
59 .    nr % 0
60 .    rr F
61 .\}
62 .\"
63 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
64 .\" way too many mistakes in technical documents.
65 .hy 0
66 .if n .na
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "Module::Install::Philosophy 3"
132 .TH Module::Install::Philosophy 3 "2009-05-27" "perl v5.8.7" "User Contributed Perl Documentation"
133 .SH "NAME"
134 Module::Install::Philosophy \- The concepts behind Module::Install
135 .SH "SYNOPSIS"
136 .IX Header "SYNOPSIS"
137 This document describes the personal philosophy behind the creation of
138 \&\fBCPAN::MakeMaker\fR (the predecessor of \fBModule::Install\fR).  The views
139 expressed here belong to Brian Ingerson; if they are not of interest to
140 you, you can safely ignore this document.
141 .SH "I HAVE A DREAM"
142 .IX Header "I HAVE A DREAM"
143 I say to you today, my friends, that in spite of the difficulties and
144 frustrations of the moment, I still have a dream. It is a dream deeply
145 rooted in the Perl Module dream.
146 .PP
147 I have a dream that one day this community will rise up and live out the
148 true meaning of its creed: \*(L"We hold these truths to be self\-evident:
149 that all Perl authors are created equal.\*(R"
150 .PP
151 I have a dream that one day even the state of the \f(CW\*(C`CGI::\*(C'\fR namespace, a
152 desert state, sweltering with the heat of injustice and oppression, will
153 be transformed into an oasis of freedom and justice.
154 .PP
155 I have a dream that my four modules will one day live in an archive
156 where they will not be judged by the number of their prerequisites but
157 by the content of their source code.
158 .PP
159 I have a dream today.
160 .SH "DESCRIPTION"
161 .IX Header "DESCRIPTION"
162 The above is obviously a mutation of the monumental speech by great
163 Martin Luther King (<http://web66.coled.umn.edu/new/MLK/MLK.html>).
164 While the contexts are vastly different, I feel that there are some
165 serious parallelisms.
166 .PP
167 The \s-1CPAN\s0 has become a place that is not free of injustice. This
168 situation has arisen not out of directed oppression, but from a failure
169 of our community to keep its tools sharp. It is the culmination of many
170 small decisions made in the name of practicality. This is a sad state
171 for an institution that was created to allow all interested people to
172 contribute equally to the best of their ability.
173 .PP
174 This assertion is rooted in my personal experience as an author. When I
175 created my first Perl module, Inline.pm, I knew that I had done
176 something important. But how was I to make a dent in vast Perl
177 community?
178 .PP
179 As a complete unknown in the Perl community, my voice did not travel
180 far. I repeatedly tried to get even an acknowledgment from the gurus
181 familiar with \s-1XS\s0. No success. I resorted to sending messages with
182 ridiculous subjects to \f(CW\*(C`modules@perl.org\*(C'\fR. 
183 (<http://www.xray.mpe.mpg.de/mailing\-lists/modules/2000\-08/msg00078.html>) 
184 No response. Through sheer determination and shameless self-promotion I
185 eventually got the word out, and I hope the world is a slightly better
186 place for it.
187 .PP
188 Since then, Inline has won awards and I have had the privilege to meet almost
189 all of Perl's finest. But I still remember the pain of starting out, and
190 want to help invite more people into this wonderful world. 
191 .PP
192 One thing I have learned from experience is that the Perl community (and
193 throw in the Python and Ruby people as well) is a small drop in the vast
194 ocean of programming. It's a giant pot of Java out there; and a sea of
195 C. Perl may not be the biggest fish, but with some care and cunning we
196 could become a much bigger school.
197 .PP
198 These are the current problems that I see with \s-1CPAN\s0 and the core modules:
199 .IP "* New Modules don't help Older Perls" 4
200 .IX Item "New Modules don't help Older Perls"
201 If I were to guess what percent of all Perl5 installations were at the
202 current release level (5.8.0 in October 2002) I would say 3\-5%. That may
203 even be generous. I'd say that over 40% of installations might still be
204 at 5.005 or earlier.
205 .Sp
206 The biggest problem with adding a module to the core is that it only
207 helps a small subset of Perl users for a long long time. Worse yet, a
208 good module author will still probably avoid using the core additions as
209 prerequisites, because they want their new module to work as well on
210 5.005 as on 5.8.
211 .Sp
212 CPAN::MakeMaker should be able to help in this regard. For example,
213 instead of putting Inline.pm into the core for 5.9, I can now
214 effectively get it into the core for every version of Perl that
215 Inline supports.
216 .IP "* Author Exclusiveness" 4
217 .IX Item "Author Exclusiveness"
218 Not just anybody can get a module into the core. It seems you have to
219 know people in high places. If I were a brilliant new talent with a
220 great new module, it would have a harder time getting the ear of the
221 pumpking, then if I were, say, Damian Conway. In fact, I probably
222 wouldn't even know where to start.
223 .IP "* Reduced Competition" 4
224 .IX Item "Reduced Competition"
225 One comment I've heard from some very good Perl programmers is
226 \&\*(L"Everything important has already been done\*(R". Their feeling is that
227 even though a module is suboptimal, it would be a waste of time to
228 write a competing module. Who would use it instead of the one already
229 in the core?
230 .Sp
231 When I write a competing module, I know that I have to make it at least
232 twice as good as the existing one to even get noticed. That's not a bad
233 thing, but should everybody be forced into that situation?
234 .Sp
235 For example, let's say that you have created a really useful \s-1CGI\s0 script.
236 Let's also say that it makes use of your own \fBCGI::Special\fR module,
237 because \fB\s-1CGI\s0.pm\fR doesn't meet your needs. Even though your script might be
238 generally useful and worth sharing, the fact that it requires a
239 non-standard module can only negatively affect its acceptance. Trying to
240 get general acceptance for the superior \fBCGI::Special\fR module will be
241 harder still.
242 .Sp
243 Core modules are assumed by the general public to be \*(L"Best of Breed\*(R".
244 While this may be true for some modules at some point in time, it keeps
245 talented people from attempting to \*(L"breed\*(R" something better.
246 .IP "* Core Bloat" 4
247 .IX Item "Core Bloat"
248 Every time we add a module to the core it gets bigger and bigger. And we
249 can't ever remove modules from the core, once they've been added.
250 .Sp
251 If I had my druthers, we'd remove all modules from the core that weren't
252 necessary for either running Perl or installing modules. Of course, we'd
253 need to set things up so that installing modules was so easy, that it
254 could be done on the fly if necessary. Is this easily accomplishable?
255 Nope. Is it impossible? Nope. We have the best language in the world to
256 help us do it!
257 .IP "* Maintenance Bitrot" 4
258 .IX Item "Maintenance Bitrot"
259 Believe it or not, Perl authors can sometimes acquire a \*(L"Life Beyond
260 Perl\*(R". They get families or new hobbies or even hit by a bus. (This
261 would be a \*(L"Death Beyond Perl\*(R".) The fact is, that once somebody writes
262 a piece of code and shares it with the world, they are expected to
263 maintain it for all time.
264 .Sp
265 That is being generous. There are others that think that once their
266 module has become popular or made it into the core, they don't need to
267 keep fixing and improving it. I have personally been guilty of this sin.
268 .Sp
269 And then there's the Damian Conway Effect. This plagues the exceptional
270 authors who are so innovative and prolific they simply don't have time
271 to maintain everything they have written.
272 .PP
273 I initially formalized these opinions at the \s-1YAPC\s0 (Yet Another Perl
274 Conference) in June 2001. Since then I have been trying to think of
275 technological solutions to fix these social problems.
276 .PP
277 One idea was dubbed \s-1NAPC\s0. \s-1NAPC\s0 is \s-1CPAN\s0 backwards. It is a large system
278 of precompiled modules that can be installed on the fly, with the goal
279 of reducing the number of modules in the core. \s-1NAPC\s0 hasn't got started
280 yet. I'd still like to do it someday, but it's a big problem with a lot
281 of issues.
282 .PP
283 \&\fBCPAN::MakeMaker\fR (and now \fBModule::Install\fR) on the other hand, is
284 simple and ultimately flexible.  It should work with all of the existing
285 \&\s-1CPAN\s0 processes without requiring any changes from them. And new features
286 can be continuously added. Even though it doesn't scratch all of my
287 philosophical \s-1CPAN\s0 itches, it's a good start.
288 .SH "CONCLUSION"
289 .IX Header "CONCLUSION"
290 This is all just food for thought. Take it with a pinch of salt. 
291 .SH "AUTHOR"
292 .IX Header "AUTHOR"
293 Brian Ingerson <INGY@cpan.org>
294 .SH "COPYRIGHT"
295 .IX Header "COPYRIGHT"
296 Copyright (c) 2002. Brian Ingerson.
297 .PP
298 This document is free documentation; you can redistribute it and/or
299 modify it under the same terms as Perl itself.
300 .PP
301 See <http://www.perl.com/perl/misc/Artistic.html>