This section describes my personal philosophy behind creating CPAN::MakeMaker. The views expressed here are my own, and do not necessarily reflect the views of my sponsors. If my philosophies are not of interest to you, you can safely ignore this manpage.


I say to you today, my friends, that in spite of the difficulties and frustrations of the moment, I still have a dream. It is a dream deeply rooted in the Perl CPAN dream.

I have a dream that one day this community will rise up and live out the true meaning of its creed: ``We hold these truths to be self-evident: that all Perl authors are created equal.''

I have a dream that one day even the state of the CGI:: namespace, a desert state, sweltering with the heat of injustice and oppression, will be transformed into an oasis of freedom and justice.

I have a dream that my four modules will one day live in a CPAN where they will not be judged by the number of their prerequisites but by the content of their source code.

I have a dream today.

The above is obviously a mutation of the monumental speech by great Martin Luther King ( While the contexts are vastly different, I feel that there are some serious parallelisms.

The CPAN has become a place that is not free of injustice. This situation has arisen not out of directed oppression, but from a failure of our community to keep its tools sharp. It is the culmination of many small decisions made in the name of practicality. This is a sad state for an institution that was created to allow all interested people to contribute equally to the best of their ability.

This assertion is rooted in my personal experience as an author. When I created my first Perl module,, I knew that I had done something important. But how was I to make a dent in vast Perl community?

As a complete unknown in the Perl community, my voice did not travel far. I repeatedly tryed to get even an acknowledgement from the gurus familiar with XS. No success. I resorted to sending messages with ridiculous subjects to ( No response. Through sheer determination and shameless self-promotion I eventually got the word out, and I hope the world is a slightly better place for it.

Since then, Inline was won awards and I have had the privledge to meet almost all of Perl's finest. But I still remember the pain of starting out, and want to help invite more people into this wonderful world.

One thing I have learned from experience is that the Perl community (and throw in the Python and Ruby people as well) is a small drop in the vast ocean of programming. It's a giant pot of Java out there; and a sea of C. Perl may not be the biggest fish, but with some care and cunning we could become a much bigger school.

These are the current problems that I see with CPAN and the core modules:

I initially formalized these opinions at the YAPC (Yet Another Perl Conference) in June 2001. Since then I have been trying to think of technological solutions to fix these social problems.

One idea was dubbed NAPC. NAPC is CPAN backwards. It is a large system of precompiled modules that can be installed on the fly, with the goal of reducing the number of modules in the core. NAPC hasn't got started yet. I'd still like to do it someday, but it's a big problem with a lot of issues.

CPAN::MakeMaker on the other hand, is simple and ultimately flexible. It should work with all of the existing CPAN processes without requiring any changes from them. And new features can be continuously added. Even though it doesn't scratch all of my philosophical CPAN itches, it's a good start.


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


Brian Ingerson <>


Copyright (c) 2002. Brian Ingerson. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.