Skip to end of metadata
Go to start of metadata

Task::BeLike::JONASBN

Collection of CPAN distributions often used by jonasbn

Bundle::JONASBN is deprecated

Icon

Please use Task::BeLike::JONASBN instead. This space will be used for Task::BeLike::JONASBN in the future, which has been implemented based on a refactoring of Bundle::JONASBN

Roadmap

History

Bundles have been around for some time on the CPAN. The idea behind bundles are that you can create a meta-distribution containing references to other modules. The reasons for making a meta-distribution are many, but here are some common motivations:

  • Easy installation of all the distributions you normally install and use
  • A bundle representing the distributions you need in your stack
  • A bundle with all of your own modules for easy handling

Bundles are easy to make. You create a standard Perl package

In that package you create a POD section with the heading 'CONTENTS'

Under this heading you simply list your requested bundle contents.

Bundles require some special magic on the client side to parse the CONTENTS section, in this case primarily the CPAN client and the requirements for developing a bundle are quite special and IMHO error prone. Well it took me 4 releases to get it right, I was simply not grasping the magic part.

Adam Kennedy at some point recognized this weakness in the tool chain and introduced Task, a new much simpler approach. Task is based simply on writing up the requirements in the build file, whether you use Module::Build, ExtUtils::MakeMaker or Module::Install.

Tasks are easier to maintain and validate.

I was in that lucky position that I had put all my requirements in my Build.PL from day release 0.01. So when I choose to migrate to a Task based approach it was just a matter of renaming packages etc.

Much of all my trouble was due to the fact that I had thought that the approach would be the approach used in Task. But AFAIK it is a combination of package name: Bundle:: and the CONTENTS section.

My original idea was to have the list in Build.PL and the let the CONTENTS section, be auto-generated. So Bundle::JONASBN and Task::BeLike::JONASBN contain it's own custom build system, based on a sub class of Module::Build. The build system (Module::Build::Bundle) read the requirements from Build.PL and inserts this in the CONTENTS section, alphabetized.

I attempted to let the build system create beautiful POD, instead of the standardized used in bundles. It took me several attempts to figure out that it was the reason my particular bundle was not working as expected.

I have now migrated to the Task approach and reinstated the beautification of the POD and everything works well and looks nice.

Contents

These are the distributions I use, which are also mentioned in this Wiki and have the proper label.

Components

Resources

Recently Updated

 
Navigate space
  • No labels

2 Comments

  1. Installed Task::BeLike::JONASBN on new workstation, only experienced two minor things. One was Perl::Critic having issues with default system Perl (5.10.0) on OSX (10.6) this seem to be fixed in an upcoming release:

    https://rt.cpan.org/Public/Bug/Display.html?id=60510

    The other was WWW::Mechanize::Cached, I do not really now what this issue was, will investigate if I get the time.

    1. WWW::Mechanize::Cached's issue might have related to a requirement for: Test::Perl::Critic. Since my Perl::Critic installation failed due to the issue described above, requiring a manual update of version, Test::Perl::Critic could be installed afterwards and same goes for WWW::Mechanize::Cached.