[BioRuby] Proposal: Bioruby modules (the bazaar)

Pjotr Prins pjotr.public14 at thebird.nl
Fri Jan 22 08:55:08 UTC 2010


On Fri, Jan 22, 2010 at 02:54:24AM +0900, Toshiaki Katayama wrote:
> Dear Pj,
> 
> I can understand your frustration and I like your idea of the
> 'module' system, as it reminds me the way how the Linux kernel
> tree is successfully maintained.

Thinking about it there are other good examples. The R language
supports modules in CRAN - similar in many ways to generic Perl CPAN
and Ruby's gems. But, on top of CRAN they also have Bioconductor which
aggregates Bio related modules. The main benefit is that it
pre-packages all Bio related packages and people can load it on the
fly. See http://www.bioconductor.org/

We don't want to replace gems - but I think the gem system is too
loose for most people, and it requires every module to understand and
comply with the gem system.

I think Bioruby can play a role here. We can have modules (or
plugins, like Rails has) that come either with Bioruby's
installation, or get installed on request. If we find a syntax for
that it would be great. E.g.

  Bio::Module.load(:html_alignment)

If it is part of Bioruby, pass. Otherwise throw error: 

"Bio::Module :html_alignment not installed, try Bio::Module.install(:html_alignment)"

  Bio::Module.install(:html_alignment)

will search the definition and install it. Depending on the module it
can be installed as a gem, or fetched through git or a tarball (an
optional parameter can overrule behaviour). On success one can start
as either function will prepare for:

  html_aln = Bio::Html::Alignment.new('my.aln')

The nice thing about this setup is that

(1) It is really easy on the user

(2) Decouples the module from Bioruby - all issues are between the
users and the module maintainer - discussions can still be on the
main mailing list

(3) Retains some control on what modules are allowed in, an what not

(4) Modules can be obsoleted

(5) Modules can be updated outside Bioruby's mainline. e.g. Bio::Module.install(:html_alignment,:development=>true)

Pj.




More information about the BioRuby mailing list