-
Notifications
You must be signed in to change notification settings - Fork 149
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
chore: Change iceberg into workspace #15
Conversation
Signed-off-by: Xuanwo <github@xuanwo.io>
cc @Fokko, @JanKaul, @liurenjie1024 & @ZENOTME to take a look. Thanks. |
The problem is the release process.
Need more input from @Fokko. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, we will eventually have different feature in different crate, so separating it early is better
I prefer small crates have several advantages:
For example I want to put datafusion integration in another crate.
I think it's better to make it part of core crate? |
Both LGTM. My motivation is to release it sooner, allowing us to involve more users and developers in our project. |
Releasing takes some effort, but if everything is well automated, and there are folks around to test and validate the release, then it is a quick process. Even if it is not a lot of effort, it takes 3 days because everyone needs to be able to chime in and test the release. It would be great to set up a how-to-release guide, examples for Java and Python can be used for inspiration :) What I think would be easiest, but correct me if I'm wrong here. Just release all the crates every time with the same version, so the versions of the crates don't diverge. WDYT? |
Agree. |
I'm not sure about that. Maybe we can release If we are going to release everything in the same version, it's better to put them in the same crate with diffent feature flag instead.
|
There is a discussion about feature vs crates here: https://users.rust-lang.org/t/guidance-on-optional-functionality-crates-vs-features/85694 Personally, I prefer to put standalone things in crates for better structure and maintainability, also better documentation. |
I'm definitely in favor of small crates compared to using features. From my perspective features can get really messy when there is a hierarchy of crates depending on each other (Crate A uses feature 1 of There is one downside. You cannot implement traits for structs defined outside of your crate. So if you want to implement Datafusions
Reagrding the release cadence, I have no preference. We could release the small crates all with the same version number or release them separately. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, Thank you.
This PR will change iceberg into workspace. I feel like it's better to split iceberg features into different crates so that we can work (and release) concurrently instead of waiting for the release of a whole iceberg.
For example, we can add iceberg rest api client first which could be generated from OpenAPI Specs and less related to iceberg core itself.