1Module::Install::PhilosUospehry(C3o)ntributed Perl DocumMeondtualtei:o:nInstall::Philosophy(3)
2
3
4

NAME

6       Module::Install::Philosophy - The concepts behind Module::Install
7

SYNOPSIS

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

I HAVE A DREAM

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-evi‐
21       dent: 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

DESCRIPTION

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 situa‐
40       tion has arisen not out of directed oppression, but from a failure of
41       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 some‐
48       thing important. But how was I to make a dent in vast Perl community?
49
50       As a complete unknown in the Perl community, my voice did not travel
51       far. I repeatedly tried to get even an acknowledgment from the gurus
52       familiar with XS. No success. I resorted to sending messages with
53       ridiculous subjects to "modules@perl.org".
54       (<http://www.xray.mpe.mpg.de/mailing-lists/mod
55       ules/2000-08/msg00078.html>) No response. Through sheer determination
56       and shameless self-promotion I eventually got the word out, and I hope
57       the world is a slightly better place for it.
58
59       Since then, Inline has won awards and I have had the privilege to meet
60       almost all of Perl's finest. But I still remember the pain of starting
61       out, and want to help invite more people into this wonderful world.
62
63       One thing I have learned from experience is that the Perl community
64       (and throw in the Python and Ruby people as well) is a small drop in
65       the vast ocean of programming. It's a giant pot of Java out there; and
66       a sea of C. Perl may not be the biggest fish, but with some care and
67       cunning we could become a much bigger school.
68
69       These are the current problems that I see with CPAN and the core mod‐
70       ules:
71
72       * New Modules don't help Older Perls
73           If I were to guess what percent of all Perl5 installations were at
74           the current release level (5.8.0 in October 2002) I would say 3-5%.
75           That may even be generous. I'd say that over 40% of installations
76           might still be at 5.005 or earlier.
77
78           The biggest problem with adding a module to the core is that it
79           only helps a small subset of Perl users for a long long time. Worse
80           yet, a good module author will still probably avoid using the core
81           additions as prerequisites, because they want their new module to
82           work as well on 5.005 as on 5.8.
83
84           CPAN::MakeMaker should be able to help in this regard. For example,
85           instead of putting Inline.pm into the core for 5.9, I can now
86           effectively get it into the core for every version of Perl that
87           Inline supports.
88
89       * Author Exclusiveness
90           Not just anybody can get a module into the core. It seems you have
91           to know people in high places. If I were a brilliant new talent
92           with a great new module, it would have a harder time getting the
93           ear of the pumpking, then if I were, say, Damian Conway. In fact, I
94           probably wouldn't even know where to start.
95
96       * Reduced Competition
97           One comment I've heard from some very good Perl programmers is
98           "Everything important has already been done". Their feeling is that
99           even though a module is suboptimal, it would be a waste of time to
100           write a competing module. Who would use it instead of the one
101           already in the core?
102
103           When I write a competing module, I know that I have to make it at
104           least twice as good as the existing one to even get noticed. That's
105           not a bad thing, but should everybody be forced into that situa‐
106           tion?
107
108           For example, let's say that you have created a really useful CGI
109           script.  Let's also say that it makes use of your own CGI::Special
110           module, because CGI.pm doesn't meet your needs. Even though your
111           script might be generally useful and worth sharing, the fact that
112           it requires a non-standard module can only negatively affect its
113           acceptance. Trying to get general acceptance for the superior
114           CGI::Special module will be harder still.
115
116           Core modules are assumed by the general public to be "Best of
117           Breed".  While this may be true for some modules at some point in
118           time, it keeps talented people from attempting to "breed" something
119           better.
120
121       * Core Bloat
122           Every time we add a module to the core it gets bigger and bigger.
123           And we can't ever remove modules from the core, once they've been
124           added.
125
126           If I had my druthers, we'd remove all modules from the core that
127           weren't necessary for either running Perl or installing modules. Of
128           course, we'd need to set things up so that installing modules was
129           so easy, that it could be done on the fly if necessary. Is this
130           easily accomplishable?  Nope. Is it impossible? Nope. We have the
131           best language in the world to help us do it!
132
133       * Maintenance Bitrot
134           Believe it or not, Perl authors can sometimes acquire a "Life
135           Beyond Perl". They get families or new hobbies or even hit by a
136           bus. (This would be a "Death Beyond Perl".) The fact is, that once
137           somebody writes a piece of code and shares it with the world, they
138           are expected to maintain it for all time.
139
140           That is being generous. There are others that think that once their
141           module has become popular or made it into the core, they don't need
142           to keep fixing and improving it. I have personally been guilty of
143           this sin.
144
145           And then there's the Damian Conway Effect. This plagues the excep‐
146           tional authors who are so innovative and prolific they simply don't
147           have time to maintain everything they have written.
148
149       I initially formalized these opinions at the YAPC (Yet Another Perl
150       Conference) in June 2001. Since then I have been trying to think of
151       technological solutions to fix these social problems.
152
153       One idea was dubbed NAPC. NAPC is CPAN backwards. It is a large system
154       of precompiled modules that can be installed on the fly, with the goal
155       of reducing the number of modules in the core. NAPC hasn't got started
156       yet. I'd still like to do it someday, but it's a big problem with a lot
157       of issues.
158
159       CPAN::MakeMaker (and now Module::Install) on the other hand, is simple
160       and ultimately flexible.  It should work with all of the existing CPAN
161       processes without requiring any changes from them. And new features can
162       be continuously added. Even though it doesn't scratch all of my philo‐
163       sophical CPAN itches, it's a good start.
164

CONCLUSION

166       This is all just food for thought. Take it with a pinch of salt.
167

AUTHOR

169       Brian Ingerson <INGY@cpan.org>
170
172       Copyright (c) 2002. Brian Ingerson. All rights reserved.
173
174       This document is free documentation; you can redistribute it and/or
175       modify it under the same terms as Perl itself.
176
177       See <http://www.perl.com/perl/misc/Artistic.html>
178
179
180
181perl v5.8.8                       2007-03-05    Module::Install::Philosophy(3)
Impressum