1Module::Install::PhilosUospehry(C3o)ntributed Perl DocumMeondtualtei:o:nInstall::Philosophy(3)
2
3
4
6 Module::Install::Philosophy - The concepts behind Module::Install
7
9 This document describes the personal philosophy behind the creation of
10 CPAN::MakeMaker (the predecessor of Module::Install). The views
11 expressed here belong to Brian Ingerson; if they are not of interest to
12 you, you can safely ignore this document.
13
15 I say to you today, my friends, that in spite of the difficulties and
16 frustrations of the moment, I still have a dream. It is a dream deeply
17 rooted in the Perl Module dream.
18
19 I have a dream that one day this community will rise up and live out
20 the true meaning of its creed: "We hold these truths to be self-
21 evident: that all Perl authors are created equal."
22
23 I have a dream that one day even the state of the "CGI::" namespace, a
24 desert state, sweltering with the heat of injustice and oppression,
25 will be transformed into an oasis of freedom and justice.
26
27 I have a dream that my four modules will one day live in an archive
28 where they will not be judged by the number of their prerequisites but
29 by the content of their source code.
30
31 I have a dream today.
32
34 The above is obviously a mutation of the monumental speech by great
35 Martin Luther King (<http://web66.coled.umn.edu/new/MLK/MLK.html>).
36 While the contexts are vastly different, I feel that there are some
37 serious parallelisms.
38
39 The CPAN has become a place that is not free of injustice. This
40 situation has arisen not out of directed oppression, but from a failure
41 of our community to keep its tools sharp. It is the culmination of many
42 small decisions made in the name of practicality. This is a sad state
43 for an institution that was created to allow all interested people to
44 contribute equally to the best of their ability.
45
46 This assertion is rooted in my personal experience as an author. When I
47 created my first Perl module, Inline.pm, I knew that I had done
48 something important. But how was I to make a dent in vast Perl
49 community?
50
51 As a complete unknown in the Perl community, my voice did not travel
52 far. I repeatedly tried to get even an acknowledgment from the gurus
53 familiar with XS. No success. I resorted to sending messages with
54 ridiculous subjects to "modules@perl.org".
55 (http://www.xray.mpe.mpg.de/mailing-lists/modules/2000-08/msg00078.html
56 <http://www.xray.mpe.mpg.de/mailing-
57 lists/modules/2000-08/msg00078.html>) No response. Through sheer
58 determination and shameless self-promotion I eventually got the word
59 out, and I hope the world is a slightly better place for it.
60
61 Since then, Inline has won awards and I have had the privilege to meet
62 almost all of Perl's finest. But I still remember the pain of starting
63 out, and want to help invite more people into this wonderful world.
64
65 One thing I have learned from experience is that the Perl community
66 (and throw in the Python and Ruby people as well) is a small drop in
67 the vast ocean of programming. It's a giant pot of Java out there; and
68 a sea of C. Perl may not be the biggest fish, but with some care and
69 cunning we could become a much bigger school.
70
71 These are the current problems that I see with CPAN and the core
72 modules:
73
74 · New Modules don't help Older Perls
75
76 If I were to guess what percent of all Perl5 installations were at
77 the current release level (5.8.0 in October 2002) I would say 3-5%.
78 That may even be generous. I'd say that over 40% of installations
79 might still be at 5.005 or earlier.
80
81 The biggest problem with adding a module to the core is that it
82 only helps a small subset of Perl users for a long long time. Worse
83 yet, a good module author will still probably avoid using the core
84 additions as prerequisites, because they want their new module to
85 work as well on 5.005 as on 5.8.
86
87 CPAN::MakeMaker should be able to help in this regard. For example,
88 instead of putting Inline.pm into the core for 5.9, I can now
89 effectively get it into the core for every version of Perl that
90 Inline supports.
91
92 · Author Exclusiveness
93
94 Not just anybody can get a module into the core. It seems you have
95 to know people in high places. If I were a brilliant new talent
96 with a great new module, it would have a harder time getting the
97 ear of the pumpking, then if I were, say, Damian Conway. In fact, I
98 probably wouldn't even know where to start.
99
100 · Reduced Competition
101
102 One comment I've heard from some very good Perl programmers is
103 "Everything important has already been done". Their feeling is that
104 even though a module is suboptimal, it would be a waste of time to
105 write a competing module. Who would use it instead of the one
106 already in the core?
107
108 When I write a competing module, I know that I have to make it at
109 least twice as good as the existing one to even get noticed. That's
110 not a bad thing, but should everybody be forced into that
111 situation?
112
113 For example, let's say that you have created a really useful CGI
114 script. Let's also say that it makes use of your own CGI::Special
115 module, because CGI.pm doesn't meet your needs. Even though your
116 script might be generally useful and worth sharing, the fact that
117 it requires a non-standard module can only negatively affect its
118 acceptance. Trying to get general acceptance for the superior
119 CGI::Special module will be harder still.
120
121 Core modules are assumed by the general public to be "Best of
122 Breed". While this may be true for some modules at some point in
123 time, it keeps talented people from attempting to "breed" something
124 better.
125
126 · Core Bloat
127
128 Every time we add a module to the core it gets bigger and bigger.
129 And we can't ever remove modules from the core, once they've been
130 added.
131
132 If I had my druthers, we'd remove all modules from the core that
133 weren't necessary for either running Perl or installing modules. Of
134 course, we'd need to set things up so that installing modules was
135 so easy, that it could be done on the fly if necessary. Is this
136 easily accomplishable? Nope. Is it impossible? Nope. We have the
137 best language in the world to help us do it!
138
139 · Maintenance Bitrot
140
141 Believe it or not, Perl authors can sometimes acquire a "Life
142 Beyond Perl". They get families or new hobbies or even hit by a
143 bus. (This would be a "Death Beyond Perl".) The fact is, that once
144 somebody writes a piece of code and shares it with the world, they
145 are expected to maintain it for all time.
146
147 That is being generous. There are others that think that once their
148 module has become popular or made it into the core, they don't need
149 to keep fixing and improving it. I have personally been guilty of
150 this sin.
151
152 And then there's the Damian Conway Effect. This plagues the
153 exceptional authors who are so innovative and prolific they simply
154 don't have time to maintain everything they have written.
155
156 I initially formalized these opinions at the YAPC (Yet Another Perl
157 Conference) in June 2001. Since then I have been trying to think of
158 technological solutions to fix these social problems.
159
160 One idea was dubbed NAPC. NAPC is CPAN backwards. It is a large system
161 of precompiled modules that can be installed on the fly, with the goal
162 of reducing the number of modules in the core. NAPC hasn't got started
163 yet. I'd still like to do it someday, but it's a big problem with a lot
164 of issues.
165
166 CPAN::MakeMaker (and now Module::Install) on the other hand, is simple
167 and ultimately flexible. It should work with all of the existing CPAN
168 processes without requiring any changes from them. And new features can
169 be continuously added. Even though it doesn't scratch all of my
170 philosophical CPAN itches, it's a good start.
171
173 This is all just food for thought. Take it with a pinch of salt.
174
176 Brian Ingerson <INGY@cpan.org>
177
179 Copyright (c) 2002. Brian Ingerson.
180
181 This document is free documentation; you can redistribute it and/or
182 modify it under the same terms as Perl itself.
183
184 See <http://www.perl.com/perl/misc/Artistic.html>
185
186
187
188perl v5.12.0 2010-03-10 Module::Install::Philosophy(3)