[Bioperl-l] Optional 'circular dependency' ok?

Sendu Bala 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?
[snip]
> 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 mailing list