[Bioperl-l] Optional 'circular dependency' ok?
bix at sendu.me.uk
Tue Sep 19 18:25:48 EDT 2006
Mauricio Herrera Cuadra wrote:
> Chris Fields wrote:
>> Sendu Bala wrote:
>>> Well, the issue here is that doing that would create a circular
>>> dependency; Ensembl Perl API requires Bioperl. Do the various ways of
>>> installing Bioperl not 'care' about circular dependencies?
> My questions here would be:
> 1) Will your methods be fully functional/compatible with the current
> Bioperl branch? What I try to say here is that in your particular case,
> won't the use of the Ensembl Perl API introduce the need of older
> Bioperl code? Something like a 'backwards dependency' at code level (the
> arrows mean 'requires'):
> bioperl-1-5-2 method -> ensembl-40 method -> bioperl-1-2-3 method
> Here I'm assuming that you're prototyping this by using the latest
> Bioperl and Ensembl versions from CVS (*almost* every developer lives on
> the bleeding edge :)).
Yes, so the method would work with latest bioperl and ensembl, no need
for bioperl 1.2.3.
> 2) Depending on the amount of code you will use from Ensembl, why
> introducing its whole API into Bioperl? Maybe you can borrow only what
> you need from Ensembl and give credit for that.
I'm not really putting any of Ensembl in Bioperl, I'm just using it, in
the same way methods are implemented using any other external module. It
isn't feasible to extract the code that does the job from Ensembl,
especially given that the underlying code could change on their next
release; I need to make use of the API.
> On the other hand, I support Chris' idea of adding your module into the
> bioperl-ext or bioperl-run packages. To me it sounds good for avoiding a
> circular dependency problem.
Well, bioperl-ext is described as being for Bioperl C compiled
extensions. I suppose that instead of being a simple method in my
module, I could create a whole new module in bioperl-run that was
essentially a simplified front-end to what I needed Ensembl for,
treating it like an external application?
I don't think either is really an appropriate 'fit'; what is wrong with
simply not listing the Ensembl API as a dependency in Makefile.PL?
Aren't there already optional things in Bioperl that only begin to work
after you read the instructions and manually install something? Well,
there must be, since I've had to do exactly that to get all tests in the
suite to run (and not just skip).
More information about the Bioperl-l