What should be in core?
How should we figure out what should be in core? Florian floated some ideas for removing some crufty modules from Perl 5.16. Some of these I don't care about, some of these I never knew about, and at least one I'd like to see in the standard distribution:
There are several camps in this little battle, and people tend to stay in their camp. I think all of them have at least threads of validity.
- We're stuck with everything already in there because we don't know who depends on it
- Make everything an additional installation, like Task::Kensho
- Have the minimum you need to install modules from CPAN. (This is getting much leaner).
- Include a superset of the Standard Library distribution, like Strawberry Perl or ActivePerl does.
- pragmas (like autouse) are part of the language, different from a module (such as Text::Soundex).
When people say that we suck at marketing, this is what they should be talking about. Perl is not one thing to all people and there are interesting use cases for each of those camps. Instead of calling that a camp though, lets call it a market segment. But, we have no idea how important any of those market segments are. I'm not even going to guess. You shouldn't guess. We should identify them
Consider another question we probably can't answer, as a demonstration of our ignorance about the grand scheme of things. We know what's important to us, but we don't know what's important overall. Ask a techie "Which computer sells the most units?". Most can't actually give you an evidential answer. Some will confuse it with the operating system, and even then won't get the right answer. Some will limit themselves to personal computers, the sort that we expect to see with a separate display and a separate keyboard. What about smart (or dumb) phones? I'd be willing to bet that more people have cell phones than computers. In 2009, the Guardian reported that there are over 4 billion cell phone subscriptions. That was just active subscriptions.
Knowing that you don't know (the known unknowns), what do you do about it? Can you do anything about it? Let's say we knew the market sizes, 40% are sysadmins, 20% web programmers, and so on. Can we make any decision based on that? What if there was a 1% market segment whose disappearance or failure would be catastrophic?
What if we made Perl so bad that Booking.com or cPanel, both of whom just gave $10,000 to the Perl Core Maintenance Fund, decided to switch? Besides making it much easier for everyone else to hire a Perl programmer all of a sudden, what else might happen, or not happen? Or, what if the next perls break the sysadmin tools to the point where the Linux distros rewrite everything in Python and stop shipping perl? That doesn't matter to someone like me who compiles perls from source. Or does it? I make most of my money from people who don't compile perl from source, so maybe I'd have to become a cranky barista.
I don't know what should be in core. Putting philosophy and marketing aside, there are some things we can do (and you can help):
- What do the various OS distributions actually need in core? What modules are they using for their hidden scripts and OS maintenance (and, which versions?) Who wants to find out? Along with that, how many are replacing core modules with local versions?
- What extra modules do other distributions include?
- What's the reason anything in core now is in the core? Some are there because they are useful and some because they are dependencies.