NOTE: This was also posted on perlmonks at http://perlmonks.org/?node_id=905878. I'm trying to reach a wide audience, so I'm posting it here too.
Over the last few years, I've helped build private CPANs (DarkPANs or DPANs as brian d foy calls them) for 3 different organizations. Each time I cobbled together some combination of different CPAN::Site, CPAN::Mini::Inject and CPAN modules with various shell scripts, commit hooks, and cron jobs. Although they were generally effective, I feel they were clunky, highly specialized, and hard to maintain. Once again, I'm faced with building another private CPAN. But this time, I have an opportunity to build something that could have broader appeal in the Perl community. In fact, the explicit goal is to produce an open source, turnkey framework for creating, deploying, and maintaining a private CPAN. So with that in mind, I'm looking for feedback on what you might want from such a framework. Here are some questions I've been asking myself -- hopefully they will help stir your mind: How would it provide an identifiable & reproducible stack of dependencies that developers can use to write, test, and deploy their code against? How would it allow one to define and deliver a standardized set of dependencies to all your environments? How would it enable developers to experiment with dependencies that are not part of the standard environment? How would it enable different teams to work against different versions of their dependencies? How would it enable teams to independently upgrade, add, and remove their dependencies in a controlled, reproducible manner? How would teams use it to distribute and share their own modules and applications within the organization? Which parts of the larger CPAN ecosystem would be most valuable in a private CPAN (e.g. CPAN Testers, AnnoCPAN, search.cpan.org, CPAN Ratings)? How would one migrate their legacy code into CPAN-style distributions? How would one migrate from their existing dependency management infrastructure to a private CPAN? How might one want incorporate a private CPAN with their other development infrastructure, such as bug trackers & continuous integration servers? Thanks for sharing your thoughts! -Jef