Hi folks,

I finally got a chance to get back to the effort of making Storage a trait
— thanks again for all the valuable feedback!

It looks like we’re aligned on Option 2 from the initial draft: making
Storage the centralized place for I/O, with other components like FileIO
and Input/OutputFile delegating their operations to it.

I’ve posted another revision of the design doc
<https://docs.google.com/document/d/1-CEvRvb52vPTDLnzwJRBx5KLpej7oSlTu_rg0qKEGZ8/edit?tab=t.dgr4vjtmzh92>
to reflect our discussions so far — please feel free to take a look and
share any additional thoughts.
Also, the POC code has been posted here:
https://github.com/apache/iceberg-rust/pull/1755

Thanks again for everyone’s input!

Best,
Shawn

On Thu, Sep 18, 2025 at 11:52 AM Shawn Chang <[email protected]> wrote:

> Hi all,
>
> Iceberg-rust currently has a static FileIO implementation backed by
> OpenDAL, and the discussion around making FileIO a trait has been ongoing
> in the Iceberg Rust community, and we’ve recently reached consensus in the 
> GitHub
> issue <https://github.com/apache/iceberg-rust/issues/1314> to instead
> make the underlying Storage a trait while keeping FileIO as a struct. This
> change should give users the flexibility to customize FileIO behavior,
> similar to how FileIO works in Iceberg Java.
>
> I’ve put together a design doc that outlines the problem, proposed design,
> and some code snippets from my exploration of different approaches. You can
> find it here:
> 👉
> https://docs.google.com/document/d/1-CEvRvb52vPTDLnzwJRBx5KLpej7oSlTu_rg0qKEGZ8/edit?usp=sharing
>
> Please feel free to join the discussion. Would love your feedback on it!
>
> Best,
> Shawn
>

Reply via email to