You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by GitBox <gi...@apache.org> on 2021/05/07 04:37:19 UTC

[GitHub] [arrow-rs] jorgecarleitao commented on pull request #261: re-export parquet-format

jorgecarleitao commented on pull request #261:
URL: https://github.com/apache/arrow-rs/pull/261#issuecomment-834058292


   Let me try to give an example:
   
   Say we expose all interfaces (`A`, `B`, `C`) from `parquet-format`, and that the `parquet`  crate only has public interfaces that consume `A` and `B` (e.g. the `FileMetadata` bit and something else).
   
   Some time later, `parquet-format` bumps major and breaks backward compatibility over `C`. Because we expose `C`, someone may be using `parquet::format::C` and thus if we bump `parquet-format` in our library, anyone using `C` will suffer, even if we do not care about `C`.
   
   If we had only exposed what our users do require to interact with our crate `parquet` e.g., `A` and `B`, we could have bumped the patch version to catch up with `parquet-format`, because there was no API changes from our users' perspective.
   
   This is what I was trying to say with the "public surface": my opinion is that if we need ABI compatibility over some dependency, because we consume that ABI, then we should definitely export that, like this PR is proposing, so that the consumers do not have depend on the same version of `parquet-format`. However, if we do not depend on a given `ABI` (the `C` above), then imo we should not expose it in our crate.
   
   Does this make sense?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org