On 06/28/2012 09:51 PM, Roman Shaposhnik wrote: > Hi! > > On Wed, Jun 27, 2012 at 9:12 PM, Bruno Mahé <[email protected]> wrote: >> Hi, >> >> Through https://issues.apache.org/jira/browse/BIGTOP-658 Roman came up >> with a question and wants to discuss about it. > Since I was the one who suggested bringing this to the list > let me explain some of the concerns as I remember them > (I can swear having a discussion on this at some point ;-)). > >> How do you people feel about optional dependencies? >> >> Most distributions put them in subpackages since: >> * It is optional and therefore not everyone wants to pull all the >> optional dependencies >> * It is easy to find out >> * It is easy to install >> * Optional dependencies know what to install. Without it, users would be >> left alone and would have to figure out by themselves and then do all >> the work by themselves to download all the additional dependencies > To make the conversation a bit more practical let me give others > an example with Hive. Hive currently has support for HBase, > but strictly speaking it is an "optional" feature. IOW, hive can > function ok without HBase jars on the system (but of course > you can't access HBase data). > > The choices we've got in packaging Hive are: > #1 hive package does NOT t have a dependency on hbase package > #2 hive package DOES have a dependency on HBase package > (and all the other optional features to go with it, which is > kind of nuts) > #3 hive package doesn't have a dependency on HBase but we > have an extra package called hive-hbase that does. > > Personally, I think I'm reasonably fine with #3 (after all it kind of combines > #1 with an extra package) with the only concern that I remember > being potential combinatoric explosion of these helper packages > (e.g. hive-hbase, hive-cassandra, hive-hbase-cassandra, etc). > > Thanks, > Roman.
I am not sure to follow why you would have a combinatorial explosion? Following your example you would have the following packages: * hive which provides the main non-optional features * hive-hbase which provides and pulls everything necessary for an integration with hbase. hive-hbase depending on hive * hive-cassandra which provides and pulls everything necessary for an integration with cassandra. hive-cassandra depending on hive So then depending on your needs you could install (hive), (hive and hive-hbase), (hive and hive-cassandra) or (hive and hive-hbase and hive-cassandra) if you need both. You want subpackages as orthogonal as possible rather than per use cases. Thanks, Bruno
