Hi IPMC,

I would like to propose OpenDAL[1] as a new apache incubator project, you
can find the proposal[2] of OpenDAL for more detail.

[1] https://github.com/datafuselabs/opendal
[2] https://cwiki.apache.org/confluence/display/INCUBATOR/OpenDAL+Proposal

Best,
tison.

Full text of the proposal below:

## Abstract

OpenDAL means “Open Data Access Layer”. It’s a Rust library that helps
developers access data freely, painlessly, and efficiently over multiple
services, including AWS S3, HDFS, POSIX-compatible file systems, and so on.

## Proposal

OpenDAL provides the following features to support developers accessing
data freely, painlessly, and efficiently:

- Freely
    - Access different storage services in the same way
    - Behavior tests for all services
    - Cross-language/project bindings (working in progress)
- Painlessly
    - **100%** of documents covered
    - Powerful [Layers](
https://opendal.databend.rs/opendal/layers/index.html)
    - Automatic [retry](
https://opendal.databend.rs/opendal/layers/struct.RetryLayer.html) support
    - Full observability support: [logging](
https://opendal.databend.rs/opendal/layers/struct.LoggingLayer.html
), [tracing](
https://opendal.databend.rs/opendal/layers/struct.TracingLayer.html), and
[metrics](
https://opendal.databend.rs/opendal/layers/struct.MetricsLayer.html).
    - Native chaos testing
    - Native service-side encryption support
- Efficiently
    - Zero cost: mapping to underlying API calls directly
    - Best effort: auto-pick the best `read`/`seek`/`next` implementations
based on services
    - [Auto metadata reuse](
https://opendal.databend.rs/rfcs/0561-list-metadata-reuse.html): avoid
extra `metadata` calls

OpenDAL was originally designed to be used by the Databend project but is
now being used by Mozilla's sccache, DeepETH's mars, and several database
startups.

We believe that the OpenDAL project will provide diversity value to the
community if OpenDAL is brought into the Apache incubator.

## Background

OpenDAL is being developed by an open-source community from day one and is
owned by DatafuseLabs. The project has been launched in February 2022.

## Rationale

OpenDAL provides a unified storage abstraction layer that simplifies the
interfacing of different storage services. In addition, OpenDAL provides
further advanced storage encapsulation, enabling enhancements such as
automatic retry, request optimization, and observability. OpenDAL makes it
possible to develop once and run on any storage service.

## Initial Goals

By transferring ownership of the project to the ASF, OpenDAL expects to
ensure its neutrality and further encourage and facilitate the adoption of
OpenDAL by the community.

Some of the areas we would like to focus on during the Apache incubation
phase include:

- A healthier community: more maintainers and contributors will be able to
participate in OpenDAL and own different modules.
- Wider adoption: OpenDAL can be adopted by more open source/commercial
projects, which in turn drives its own functionality.
- Richer integration: OpenDAL enables greater integration of storage
services and offers a wider range of language bindings.

## Current Status

### Meritocracy

We intend to radically expand the initial developer and user community by
running the project the 'Apache way'. Users and new contributors will be
respected and welcomed. They will earn credit by participating in the
community and providing quality patches/support to move the project
forward. They will also be encouraged to provide non-code contributions
(documentation, events, community management, etc.) and will be rewarded
accordingly. Those with a proven track record of support and quality will
be encouraged to become committers.

### Community

Contributors: 37

Users:

- Databend: A cloud data warehouse
- GreptimeDB: A time-series database
- Sccache: ccache with cloud storage
- RisingWave: A Distributed SQL Database for Stream Processing

### Core Developers

The core developers are all experienced open-source developers. They have
been running the OpenDAL community for 1 year.

### Alignment

## Known Risks

### Project Name

We have checked and believe that the name is appropriate and that the
project has legal permission to continue using its current name. There are
no other projects with this name found in a Google search.

### Orphan Products

### Inexperience with Open Source

OpenDAL's core developers are all experienced open source contributors, and
its main maintainer Xuanwo has 10 years of open source experience, having
worked on a number of open source projects including Hexo, TiDB, TiKV,
Databend, Sccache, and others.

### Length of Incubation

Expect to enter incubation in two months and graduate in about two years.

### Homogenous Developers

OpenDAL developers come from a variety of backgrounds and contribute to the
OpenDAL project for different usage scenarios.

### Reliance on Salaried Developers

Most developers are paid by their employers to contribute to this project.
It's a big risk indeed, we expect to attract more maintainers and
contributors from outside the DatafuseLabs to address this.

### Relationships with Other Apache Products

- OpenDAL can be used to operate files such as parquet, avro, …
- OpenDAL provides a shim that can be used with arrow object_store

### An Excessive Fascination with the Apache Brand

## Documentation

The document of OpenDAL is hosted at [
https://opendal.databend.rs/](https://opendal.databend.rs/). And opendal’s
document is self-contained, all its current and historical versions could
be found at [
https://docs.rs/opendal/latest/opendal/](https://docs.rs/opendal/latest/opendal/)
.

## Initial Source

The project currently holds a GitHub repository and a Cargo crate:

- [
https://github.com/datafuselabs/opendal](https://github.com/datafuselabs/opendal)
- [https://crates.io/crates/opendal](https://crates.io/crates/opendal)
- [https://opendal.databend.rs/](https://opendal.databend.rs/)

The crate will retain its name, while the repository will be moved to
apache org, and the website will be permanently moved to [opendal.apache.org
](http://opendal.apache.org) if the proposal gets accepted.

## Source and Intellectual Property Submission Plan

### External Dependencies

> Generated by `cargo deny list`

- Apache-2.0 (192):
    - ahash@0.7.6
    - anes@0.1.6
    - anyhow@1.0.68
    - async-channel@1.8.0
    - async-compat@0.2.1
    - async-trait@0.1.60
    - autocfg@1.1.0
    - backon@0.2.0
    - base64@0.13.1
    - base64@0.21.0
    - bitflags@1.3.2
    - block-buffer@0.10.3
    - bumpalo@3.11.1
    - cast@0.3.0
    - cc@1.0.78
    - cfg-if@1.0.0
    - ciborium@0.2.0
    - ciborium-io@0.2.0
    - ciborium-ll@0.2.0
    - clap@3.2.23
    - clap_lex@0.2.4
    - concurrent-queue@2.0.0
    - core-foundation@0.9.3
    - core-foundation-sys@0.8.3
    - cpufeatures@0.2.5
    - criterion@0.4.0
    - criterion-plot@0.5.0
    - crossbeam-channel@0.5.6
    - crossbeam-deque@0.8.2
    - crossbeam-epoch@0.9.13
    - crossbeam-utils@0.8.14
    - crypto-common@0.1.6
    - ctor@0.1.26
    - deadpool@0.9.5
    - deadpool-runtime@0.1.2
    - diff@0.1.13
    - digest@0.10.6
    - dirs@4.0.0
    - dirs-sys@0.3.7
    - either@1.8.0
    - encoding_rs@0.8.31
    - env_logger@0.10.0
    - event-listener@2.5.3
    - fastrand@1.8.0
    - flagset@0.4.3
    - fnv@1.0.7
    - form_urlencoded@1.1.0
    - futures@0.3.25
    - futures-channel@0.3.25
    - futures-core@0.3.25
    - futures-executor@0.3.25
    - futures-io@0.3.25
    - futures-lite@1.12.0
    - futures-macro@0.3.25
    - futures-sink@0.3.25
    - futures-task@0.3.25
    - futures-timer@3.0.2
    - futures-util@0.3.25
    - getrandom@0.1.16
    - getrandom@0.2.8
    - half@1.8.2
    - hashbrown@0.12.3
    - hermit-abi@0.1.19
    - hermit-abi@0.2.6
    - hex@0.4.3
    - hmac@0.12.1
    - http@0.2.8
    - http-types@2.12.0
    - httparse@1.8.0
    - httpdate@1.0.2
    - humantime@2.1.0
    - hyper-rustls@0.23.2
    - idna@0.3.0
    - indexmap@1.9.2
    - io-lifetimes@1.0.3
    - ipnet@2.7.0
    - itertools@0.10.5
    - itoa@1.0.5
    - js-sys@0.3.60
    - lazy_static@1.4.0
    - libc@0.2.139
    - linux-raw-sys@0.1.4
    - lock_api@0.4.9
    - log@0.4.17
    - md-5@0.10.5
    - mime@0.3.16
    - num-bigint@0.4.3
    - num-integer@0.1.45
    - num-traits@0.2.15
    - num_cpus@1.15.0
    - once_cell@1.17.0
    - opendal@0.25.1
    - openssl-probe@0.1.5
    - opentelemetry@0.17.0
    - opentelemetry-jaeger@0.16.0
    - opentelemetry-semantic-conventions@0.9.0
    - os_str_bytes@6.4.1
    - parking@2.0.0
    - parking_lot@0.12.1
    - parking_lot_core@0.9.5
    - paste@1.0.11
    - percent-encoding@2.2.0
    - pin-project@1.0.12
    - pin-project-internal@1.0.12
    - pin-project-lite@0.2.9
    - pin-utils@0.1.0
    - ppv-lite86@0.2.17
    - pretty_assertions@1.3.0
    - proc-macro2@1.0.49
    - quote@1.0.23
    - rand@0.7.3
    - rand@0.8.5
    - rand_chacha@0.2.2
    - rand_chacha@0.3.1
    - rand_core@0.5.1
    - rand_core@0.6.4
    - rand_hc@0.2.0
    - rayon@1.6.1
    - rayon-core@1.10.1
    - regex@1.7.0
    - regex-syntax@0.6.28
    - reqsign@0.8.1
    - reqwest@0.11.13
    - rustix@0.36.6
    - rustls@0.20.7
    - rustls-native-certs@0.6.2
    - rustls-pemfile@1.0.1
    - ryu@1.0.12
    - scopeguard@1.1.0
    - sct@0.7.0
    - security-framework@2.7.0
    - security-framework-sys@2.6.1
    - serde@1.0.152
    - serde_derive@1.0.152
    - serde_json@1.0.91
    - serde_qs@0.8.5
    - serde_urlencoded@0.7.1
    - sha1@0.10.5
    - sha2@0.10.6
    - smallvec@1.10.0
    - socket2@0.4.7
    - syn@1.0.107
    - thiserror@1.0.38
    - thiserror-impl@1.0.38
    - thread_local@1.1.4
    - threadpool@1.8.1
    - thrift@0.15.0
    - time@0.3.17
    - time-core@0.1.0
    - time-macros@0.2.6
    - tinytemplate@1.2.1
    - tinyvec@1.6.0
    - tinyvec_macros@0.1.0
    - tokio-rustls@0.23.4
    - typenum@1.16.0
    - unicase@2.6.0
    - unicode-bidi@0.3.8
    - unicode-ident@1.0.6
    - unicode-normalization@0.1.22
    - ureq@2.6.1
    - url@2.3.1
    - uuid@1.2.2
    - version_check@0.9.4
    - waker-fn@1.1.0
    - wasi@0.11.0+wasi-snapshot-preview1
    - wasi@0.9.0+wasi-snapshot-preview1
    - wasm-bindgen@0.2.83
    - wasm-bindgen-backend@0.2.83
    - wasm-bindgen-futures@0.4.33
    - wasm-bindgen-macro@0.2.83
    - wasm-bindgen-macro-support@0.2.83
    - wasm-bindgen-shared@0.2.83
    - web-sys@0.3.60
    - winapi@0.3.9
    - winapi-i686-pc-windows-gnu@0.4.0
    - winapi-x86_64-pc-windows-gnu@0.4.0
    - windows-sys@0.36.1
    - windows-sys@0.42.0
    - windows_aarch64_gnullvm@0.42.0
    - windows_aarch64_msvc@0.36.1
    - windows_aarch64_msvc@0.42.0
    - windows_i686_gnu@0.36.1
    - windows_i686_gnu@0.42.0
    - windows_i686_msvc@0.36.1
    - windows_i686_msvc@0.42.0
    - windows_x86_64_gnu@0.36.1
    - windows_x86_64_gnu@0.42.0
    - windows_x86_64_gnullvm@0.42.0
    - windows_x86_64_msvc@0.36.1
    - windows_x86_64_msvc@0.42.0
    - wiremock@0.5.16
    - yansi@0.5.1
- Apache-2.0 WITH LLVM-exception (5)
    - io-lifetimes@1.0.3
    - linux-raw-sys@0.1.4
    - rustix@0.36.6
    - wasi@0.11.0+wasi-snapshot-preview1
    - wasi@0.9.0+wasi-snapshot-preview1
- BSD-3-Clause (3)
    - encoding_rs@0.8.31
    - instant@0.1.12
    - subtle@2.4.1
- BSL-1.0 (1):
    - ryu@1.0.12
- ISC (8):
    - hyper-rustls@0.23.2
    - rustls@0.20.7
    - rustls-native-certs@0.6.2
    - rustls-pemfile@1.0.1
    - sct@0.7.0
    - simple_asn1@0.6.2
    - untrusted@0.7.1
    - webpki@0.22.0
- MIT (242)
    - ahash@0.7.6
    - aho-corasick@0.7.20
    - anes@0.1.6
    - anyhow@1.0.68
    - assert-json-diff@2.0.2
    - async-channel@1.8.0
    - async-compat@0.2.1
    - async-trait@0.1.60
    - atty@0.2.14
    - autocfg@1.1.0
    - base64@0.13.1
    - base64@0.21.0
    - bincode@2.0.0-rc.2
    - bincode_derive@2.0.0-rc.2
    - bitflags@1.3.2
    - block-buffer@0.10.3
    - bumpalo@3.11.1
    - byteorder@1.4.3
    - bytes@1.3.0
    - cast@0.3.0
    - cc@1.0.78
    - cfg-if@1.0.0
    - clap@3.2.23
    - clap_lex@0.2.4
    - concurrent-queue@2.0.0
    - core-foundation@0.9.3
    - core-foundation-sys@0.8.3
    - cpufeatures@0.2.5
    - criterion@0.4.0
    - criterion-plot@0.5.0
    - crossbeam-channel@0.5.6
    - crossbeam-deque@0.8.2
    - crossbeam-epoch@0.9.13
    - crossbeam-utils@0.8.14
    - crypto-common@0.1.6
    - ctor@0.1.26
    - deadpool@0.9.5
    - deadpool-runtime@0.1.2
    - diff@0.1.13
    - digest@0.10.6
    - dirs@4.0.0
    - dirs-sys@0.3.7
    - dlv-list@0.3.0
    - dotenvy@0.15.6
    - either@1.8.0
    - encoding_rs@0.8.31
    - env_logger@0.10.0
    - event-listener@2.5.3
    - fastrand@1.8.0
    - fnv@1.0.7
    - form_urlencoded@1.1.0
    - futures@0.3.25
    - futures-channel@0.3.25
    - futures-core@0.3.25
    - futures-executor@0.3.25
    - futures-io@0.3.25
    - futures-lite@1.12.0
    - futures-macro@0.3.25
    - futures-sink@0.3.25
    - futures-task@0.3.25
    - futures-timer@3.0.2
    - futures-util@0.3.25
    - generic-array@0.14.6
    - getrandom@0.1.16
    - getrandom@0.2.8
    - h2@0.3.15
    - half@1.8.2
    - hashbrown@0.12.3
    - hermit-abi@0.1.19
    - hermit-abi@0.2.6
    - hex@0.4.3
    - hmac@0.12.1
    - http@0.2.8
    - http-body@0.4.5
    - http-types@2.12.0
    - httparse@1.8.0
    - httpdate@1.0.2
    - humantime@2.1.0
    - hyper@0.14.23
    - hyper-rustls@0.23.2
    - idna@0.3.0
    - indexmap@1.9.2
    - infer@0.2.3
    - integer-encoding@3.0.4
    - io-lifetimes@1.0.3
    - ipnet@2.7.0
    - is-terminal@0.4.2
    - itertools@0.10.5
    - itoa@1.0.5
    - js-sys@0.3.60
    - jsonwebtoken@8.2.0
    - lazy_static@1.4.0
    - libc@0.2.139
    - linux-raw-sys@0.1.4
    - lock_api@0.4.9
    - log@0.4.17
    - matchers@0.1.0
    - md-5@0.10.5
    - memchr@2.5.0
    - memoffset@0.7.1
    - mime@0.3.16
    - mime_guess@2.0.4
    - mio@0.8.5
    - nu-ansi-term@0.46.0
    - num-bigint@0.4.3
    - num-integer@0.1.45
    - num-traits@0.2.15
    - num_cpus@1.15.0
    - once_cell@1.17.0
    - oorandom@11.1.3
    - openssl-probe@0.1.5
    - ordered-float@1.1.1
    - ordered-multimap@0.4.3
    - os_str_bytes@6.4.1
    - output_vt100@0.1.3
    - overload@0.1.1
    - parking@2.0.0
    - parking_lot@0.12.1
    - parking_lot_core@0.9.5
    - paste@1.0.11
    - pem@1.1.0
    - percent-encoding@2.2.0
    - pin-project@1.0.12
    - pin-project-internal@1.0.12
    - pin-project-lite@0.2.9
    - pin-utils@0.1.0
    - plotters@0.3.4
    - plotters-backend@0.3.4
    - plotters-svg@0.3.3
    - ppv-lite86@0.2.17
    - pretty_assertions@1.3.0
    - proc-macro2@1.0.49
    - quick-xml@0.27.1
    - quote@1.0.23
    - rand@0.7.3
    - rand@0.8.5
    - rand_chacha@0.2.2
    - rand_chacha@0.3.1
    - rand_core@0.5.1
    - rand_core@0.6.4
    - rand_hc@0.2.0
    - rayon@1.6.1
    - rayon-core@1.10.1
    - redox_syscall@0.2.16
    - redox_users@0.4.3
    - regex@1.7.0
    - regex-automata@0.1.10
    - regex-syntax@0.6.28
    - reqwest@0.11.13
    - retain_mut@0.1.9
    - rust-ini@0.18.0
    - rustix@0.36.6
    - rustls@0.20.7
    - rustls-native-certs@0.6.2
    - rustls-pemfile@1.0.1
    - same-file@1.0.6
    - schannel@0.1.20
    - scopeguard@1.1.0
    - sct@0.7.0
    - security-framework@2.7.0
    - security-framework-sys@2.6.1
    - serde@1.0.152
    - serde_derive@1.0.152
    - serde_json@1.0.91
    - serde_qs@0.8.5
    - serde_urlencoded@0.7.1
    - sha1@0.10.5
    - sha2@0.10.6
    - sharded-slab@0.1.4
    - size@0.4.1
    - slab@0.4.7
    - smallvec@1.10.0
    - socket2@0.4.7
    - spin@0.5.2
    - syn@1.0.107
    - termcolor@1.1.3
    - textwrap@0.16.0
    - thiserror@1.0.38
    - thiserror-impl@1.0.38
    - thread_local@1.1.4
    - threadpool@1.8.1
    - time@0.3.17
    - time-core@0.1.0
    - time-macros@0.2.6
    - tinytemplate@1.2.1
    - tinyvec@1.6.0
    - tinyvec_macros@0.1.0
    - tokio@1.23.1
    - tokio-macros@1.8.2
    - tokio-rustls@0.23.4
    - tokio-util@0.7.4
    - tower-service@0.3.2
    - tracing@0.1.37
    - tracing-core@0.1.30
    - tracing-log@0.1.3
    - tracing-opentelemetry@0.17.4
    - tracing-subscriber@0.3.16
    - try-lock@0.2.3
    - typenum@1.16.0
    - unicase@2.6.0
    - unicode-bidi@0.3.8
    - unicode-ident@1.0.6
    - unicode-normalization@0.1.22
    - ureq@2.6.1
    - url@2.3.1
    - uuid@1.2.2
    - valuable@0.1.0
    - version_check@0.9.4
    - virtue@0.0.8
    - waker-fn@1.1.0
    - walkdir@2.3.2
    - want@0.3.0
    - wasi@0.11.0+wasi-snapshot-preview1
    - wasi@0.9.0+wasi-snapshot-preview1
    - wasm-bindgen@0.2.83
    - wasm-bindgen-backend@0.2.83
    - wasm-bindgen-futures@0.4.33
    - wasm-bindgen-macro@0.2.83
    - wasm-bindgen-macro-support@0.2.83
    - wasm-bindgen-shared@0.2.83
    - web-sys@0.3.60
    - winapi@0.3.9
    - winapi-i686-pc-windows-gnu@0.4.0
    - winapi-util@0.1.5
    - winapi-x86_64-pc-windows-gnu@0.4.0
    - windows-sys@0.36.1
    - windows-sys@0.42.0
    - windows_aarch64_gnullvm@0.42.0
    - windows_aarch64_msvc@0.36.1
    - windows_aarch64_msvc@0.42.0
    - windows_i686_gnu@0.36.1
    - windows_i686_gnu@0.42.0
    - windows_i686_msvc@0.36.1
    - windows_i686_msvc@0.42.0
    - windows_x86_64_gnu@0.36.1
    - windows_x86_64_gnu@0.42.0
    - windows_x86_64_gnullvm@0.42.0
    - windows_x86_64_msvc@0.36.1
    - windows_x86_64_msvc@0.42.0
    - winreg@0.10.1
    - wiremock@0.5.16
    - yansi@0.5.1
- MPL-2.0 (1):
    - webpki-roots@0.22.6
- Unicode-DFS-2016 (1):
    - unicode-ident@1.0.6
- Unlicense (8):
    - aho-corasick@0.7.20
    - byteorder@1.4.3
    - memchr@2.5.0
    - regex-automata@0.1.10
    - same-file@1.0.6
    - termcolor@1.1.3
    - walkdir@2.3.2
    - winapi-util@0.1.5
- Zlib (2):
    - tinyvec@1.6.0
    - tinyvec_macros@0.1.0
- Unlicensed (1):
    - ring@0.16.20

        ring is licensed under a mix of [MIT, ISC, and OpenSSL’s licenses](
https://github.com/briansmith/ring/blob/main/LICENSE). OpenSSL itself is
licensed under [Apache 2.0](
https://www.openssl.org/source/apache-license-2.0.txt). So ring is Apache
2.0 compatible.


### Cryptography

N/A

## Required Resources

### Mailing Lists

- priv...@opendal.apache.org
- d...@opendal.apache.org
- comm...@opendal.apache.org
- iss...@opendal.apache.org
- bu...@opendal.apache.org

### Subversion Directory

N/A

### Git Repositories

>From [
https://github.com/datafuselabs/opendal](https://github.com/datafuselabs/opendal)

- [
https://gitbox.apache.org/asf/repos/incubator-opendal](https://gitbox.apache.org/asf/repos/incubator-opendal)
- [
https://github.com/apache/incubator-opendal](https://github.com/apache/incubator-opendal)

### Issue Tracking

The community would like to continue using GitHub Issues.

### Other Resources

The community has already chosen GitHub actions as continuous integration
tools.

## Initial Committers

- Hao Ding [[git...@xuanwo.io](mailto:git...@xuanwo.io)]
- Lue Cai [[cai...@bupt.edu.cn](mailto:cai...@bupt.edu.cn)]
- Zhuoran Shang [[psi...@outlook.com](mailto:psi...@outlook.com)]
- Benwang Li [[libenw1...@gmail.com](mailto:libenw1...@gmail.com)]

## Sponsors

### Champion

- tison [ti...@apache.org]

### Nominated Mentors

- hexiaoqiao [hexiaoq...@apache.org]
- tedliu [ted...@apache.org]
- tison [ti...@apache.org]
- wusheng [wush...@apache.org]

### Sponsor Entity

The Incubator

Reply via email to