home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / perl / Install-Philosophy.pod < prev    next >
Encoding:
Text File  |  2003-12-17  |  7.9 KB  |  191 lines

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