2008Q3 Grant Proposal: Extending BSDPAN

  • Author: Colin Smith
  • Title: Extending BSDPAN
  • Synopsis: Refactor the BSDPAN module into a generic and extensible solution for bridging CPAN with UNIX packaging systems.

Colin Smith

Extending BSDPAN

Refactor the BSDPAN module into a generic and extensible solution for bridging CPAN with UNIX packaging systems.

Benefits to the Perl Community
The wealth of freely available code CPAN represents is one of the Perl language's greatest strengths. Tighter integration of this resource with a given operating system's native packaging system would give Perl a unique advantage over Ruby, Python, etc. while making it more accessible (and maintainable) to users.


  • refactored and fully-documented version of the BSDPAN module
  • dependency tracking across all operating systems
  • Module::Build support
  • OpenBSD support
  • more robust FreeBSD support (esp. rewrite of Packlist.pm)
  • time permitting, support for pkgsrc and at least one Linux package system
  • time permitting, explore options for BSDPAN integration without a customized Perl build (for existing systems)

Project Details
BSDPAN was conceived (and written) as a glue module for interfacing CPAN module installation with the FreeBSD operating system's native package database. Blurring the distinction between CPAN and the FreeBSD `ports tree' in this fashion offers several advantages: modules honor environment variables such as $PREFIX automatically, and the user can query and manipulate them as they would any other software package.

I propose to expand BSDPAN into a more generic solution for bridging the gap between CPAN and the myriad of packaging systems in use today. This would include fleshing out BSDPAN's nearly nonexistent body of documentation, factoring out FreeBSD-specific code to a submodule accessed through a consistent interface, and adding support for

Project Schedule

Expected timeline: Approximately three months, or the duration of my summer holiday, whichever comes first. Work will begin the week of May 26th (firm date to be decided upon receipt of finals schedule).

I've worked with Perl in some capacity for a little over eight months, and have dabbled in projects such as Catalyst and POE. I have significant prior experience in this problem domain, having the pfSense project's package system virtually from scratch several years ago. This system, written in PHP, ``wrapped'' FreeBSD package files for integration with a pfSense firewall's online administration interface, logging, remote administration tools, etc.

Amount Requested
My work as funded by this grant would constitute at least some part of my summer employment, and as such I feel proposing an hourly wage rather than set milestones would be most prudent. Assuming an average of 15 hours of work per week at $15 per hour, two months of work could be funded for $1800.

Anton Berezin, BSDPAN's maintainer, was contacted over IRC and gave his consent for the project.


This seems like a project with immediate benefit as well as future benefit. For greatest future benefit my opinion is that the initial Linux packaging system to hit is RPM. As you no doubt know, there are a number of ways of converting Linux packages from form to form, and RPM is well-supported as a source format.

If I may toss in a frivolous "and it would be nice if" comment...

It would be nice if BSDPAN could be hooked into the CPAN testers framework. People who opt in would have the test suite run, and the results sent to reports database.

The lack of this functionality at the present time is one of the main reasons I leave the system Perl alone, and run my own in /usr/local.

This is a worthy goal, but may be harder than you think. Plus, some of the work has already be done for you, look at CPANPLUS which can build debs and other packages for example (CPANPLUS::Dist::*).

You may also want to look at alien which can create debs from RPMs and vice versa.

Lastly, I think that RPM is not as widely used as the .deb package format. Ubuntu is the most widely used linux distro and it is based on debian's .deb package format - as are Xandros, Mepis, et. al.

Sounds very good - if it's a complete solution. I don't really like the "time permitting" part of the proposal :), I think either RPM or .deb must be supported and should be a nonconditional part of the deliverables.

As jeremiah said, we've done a lot of work on this already to make sure CPAN packages can be converted to local package managers. You definitely want to look at CPANPLUS::Dist::* to do the CPAN side of things for you.

In the past, we've had a working ports implementation and I'd be happy to work with you to get it up and running again.

Leave a comment

About this Entry

This page contains a single entry by Alberto Simões published on August 1, 2008 12:00 PM.

2008Q3 Grant Proposal: Bavl was the previous entry in this blog.

2008Q3 Grant Proposal: Improve POE::Component::IRC is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.