A few days ago, brian d foy wrote a journal entry asking for example of end-user applications written in Perl. He got a number of responses, but most of the apps that people came up with were aimed at developers. Very few of them were the kind of thing that users would... er... use. Why is that?
I think that one of the major reasons is CPAN. Don't get me wrong. Obviously I think that CPAN is great. It's one of Perl's greatest strengths. But I also think it's preventing people from writing applications written in Perl that are aimed at end-users - because end-users won't be installing CPAN modules in order to run their applications.
Looking back, I see that this isn't news - even to me. I made a decision that the nms programs would only use standard modules as we wanted to make things as easy as possible for people to install them. We realised that most people using the programs wouldn't want to get involved in all that. Even tho' things like CPANPLUS make installing modules really easy, it's still a step that end-users typically won't want to take.
Just this morning I saw someone on PerlMonks say that they wouldn't use a particular module in their application as it needed about 15 other modules from CPAN in order to work and they couldn't expect their customers to do that.
So what do we need to do? Well, we need to make it easier to bundle up an application with all of it's required modules. We then need to come up with some way to install an application which also installs the bundled modules (but only if they aren't already installed - and taking into account things like version numbers). Oh, and it needs to be able to install them in such a way that you don't need to be root in order to install them.
There's a lot to think about. But the Perl community has done already achieved something like this. The standards for CPAN module installation make it very simple for a developer to install modules. We need to enhance and simplify this process so that it can handle application installation.
Has anyone already been thinking along these lines? Will Perl 6 help us solve any of these problems?