You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2023/03/17 18:59:20 UTC

[incubator-opendal] branch main updated: chore: Move opendal related staffs to core (#1673)

This is an automated email from the ASF dual-hosted git repository.

xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git


The following commit(s) were added to refs/heads/main by this push:
     new 2d04ce35 chore: Move opendal related staffs to core (#1673)
2d04ce35 is described below

commit 2d04ce35d4ccbd6ab6e022fdbe3accc2427f0439
Author: Xuanwo <gi...@xuanwo.io>
AuthorDate: Sat Mar 18 02:59:14 2023 +0800

    chore: Move opendal related staffs to core (#1673)
    
    * chore: Move opendal related staffs to core
    
    Signed-off-by: Xuanwo <gi...@xuanwo.io>
    
    * Fix working dir
    
    Signed-off-by: Xuanwo <gi...@xuanwo.io>
    
    * fix caddy
    
    Signed-off-by: Xuanwo <gi...@xuanwo.io>
    
    * fix webdav
    
    Signed-off-by: Xuanwo <gi...@xuanwo.io>
    
    ---------
    
    Signed-off-by: Xuanwo <gi...@xuanwo.io>
---
 .github/workflows/publish.yml                      |   3 +-
 .github/workflows/service_test_azblob.yml          |   1 +
 .github/workflows/service_test_azdfs.yml           |   1 +
 .github/workflows/service_test_dashmap.yml         |   1 +
 .github/workflows/service_test_fs.yml              |   1 +
 .github/workflows/service_test_ftp.yml             |   1 +
 .github/workflows/service_test_gcs.yml             |   1 +
 .github/workflows/service_test_ghac.yml            |   1 +
 .github/workflows/service_test_hdfs.yml            |   1 +
 .github/workflows/service_test_http.yml            |   4 +
 .github/workflows/service_test_ipfs.yml            |   1 +
 .github/workflows/service_test_ipmfs.yml           |   1 +
 .github/workflows/service_test_memcached.yml       |   1 +
 .github/workflows/service_test_memory.yml          |   1 +
 .github/workflows/service_test_moka.yml            |   1 +
 .github/workflows/service_test_obs.yml             |   1 +
 .github/workflows/service_test_oss.yml             |   1 +
 .github/workflows/service_test_redis.yml           |   1 +
 .github/workflows/service_test_rocksdb.yml         |   1 +
 .github/workflows/service_test_s3.yml              |   5 +
 .github/workflows/service_test_sled.yml            |   1 +
 .github/workflows/service_test_webdav.yml          |   5 +
 .github/workflows/service_test_webhdfs.yml         |   1 +
 Cargo.toml                                         | 150 +--------------------
 binaries/oli/Cargo.toml                            |   2 +-
 bindings/c/Cargo.toml                              |   2 +-
 bindings/nodejs/Cargo.toml                         |   2 +-
 bindings/object_store/Cargo.toml                   |   2 +-
 bindings/python/Cargo.toml                         |   2 +-
 Cargo.toml => core/Cargo.toml                      |  15 +--
 {benches => core/benches}/README.md                |   0
 {benches => core/benches}/ops/README.md            |   0
 {benches => core/benches}/ops/main.rs              |   0
 {benches => core/benches}/ops/read.rs              |   0
 {benches => core/benches}/ops/utils.rs             |   0
 {benches => core/benches}/ops/write.rs             |   0
 {examples => core/examples}/object.rs              |   0
 {src => core/src}/docs/comparisons/mod.rs          |   0
 .../src}/docs/comparisons/vs_object_store.md       |   0
 {src => core/src}/docs/concepts.rs                 |   0
 {src => core/src}/docs/features.md                 |   0
 {src => core/src}/docs/internals/accessor.rs       |   0
 {src => core/src}/docs/internals/layer.rs          |   0
 {src => core/src}/docs/internals/mod.rs            |   0
 {src => core/src}/docs/mod.rs                      |   2 +-
 {src => core/src}/docs/rfcs/0000_example.md        |   0
 .../src}/docs/rfcs/0041_object_native_api.md       |   0
 {src => core/src}/docs/rfcs/0044_error_handle.md   |   0
 {src => core/src}/docs/rfcs/0057_auto_region.md    |   0
 {src => core/src}/docs/rfcs/0069_object_stream.md  |   0
 {src => core/src}/docs/rfcs/0090_limited_reader.md |   0
 .../src}/docs/rfcs/0112_path_normalization.md      |   0
 .../src}/docs/rfcs/0191_async_streaming_io.md      |   0
 .../src}/docs/rfcs/0203_remove_credential.md       |   0
 {src => core/src}/docs/rfcs/0221_create_dir.md     |   0
 .../src}/docs/rfcs/0247_retryable_error.md         |   0
 {src => core/src}/docs/rfcs/0293_object_id.md      |   0
 {src => core/src}/docs/rfcs/0337_dir_entry.md      |   0
 .../src}/docs/rfcs/0409_accessor_capabilities.md   |   0
 {src => core/src}/docs/rfcs/0413_presign.md        |   0
 .../src}/docs/rfcs/0423_command_line_interface.md  |   0
 {src => core/src}/docs/rfcs/0429_init_from_iter.md |   0
 {src => core/src}/docs/rfcs/0438_multipart.md      |   0
 {src => core/src}/docs/rfcs/0443_gateway.md        |   0
 {src => core/src}/docs/rfcs/0501_new_builder.md    |   0
 {src => core/src}/docs/rfcs/0554_write_refactor.md |   0
 .../src}/docs/rfcs/0561_list_metadata_reuse.md     |   0
 {src => core/src}/docs/rfcs/0599_blocking_api.md   |   0
 {src => core/src}/docs/rfcs/0623_redis_service.md  |   0
 .../src}/docs/rfcs/0627_split_capabilities.md      |   0
 .../src}/docs/rfcs/0661_path_in_accessor.md        |   0
 .../src}/docs/rfcs/0793_generic_kv_services.md     |   0
 {src => core/src}/docs/rfcs/0926_object_reader.md  |   0
 {src => core/src}/docs/rfcs/0977_refactor_error.md |   0
 {src => core/src}/docs/rfcs/1085_object_handler.md |   0
 .../src}/docs/rfcs/1391_object_metadataer.md       |   0
 .../src}/docs/rfcs/1398_query_based_metadata.md    |   0
 {src => core/src}/docs/rfcs/1420_object_writer.md  |   0
 .../src}/docs/rfcs/1477_remove_object_concept.md   |   0
 {src => core/src}/docs/rfcs/mod.rs                 |   0
 {src => core/src}/docs/upgrade.md                  |   0
 {src => core/src}/layers/chaos.rs                  |   0
 {src => core/src}/layers/complete.rs               |   0
 {src => core/src}/layers/concurrent_limit.rs       |   0
 {src => core/src}/layers/error_context.rs          |   0
 {src => core/src}/layers/immutable_index.rs        |   0
 {src => core/src}/layers/logging.rs                |   0
 {src => core/src}/layers/metrics.rs                |   0
 {src => core/src}/layers/mod.rs                    |   0
 {src => core/src}/layers/retry.rs                  |   0
 {src => core/src}/layers/tracing.rs                |   0
 {src => core/src}/layers/type_eraser.rs            |   0
 {src => core/src}/lib.rs                           |   0
 {src => core/src}/raw/accessor.rs                  |   0
 {src => core/src}/raw/adapters/kv/api.rs           |   0
 {src => core/src}/raw/adapters/kv/backend.rs       |   0
 {src => core/src}/raw/adapters/kv/mod.rs           |   0
 {src => core/src}/raw/adapters/mod.rs              |   0
 {src => core/src}/raw/http_util/body.rs            |   0
 .../src}/raw/http_util/bytes_content_range.rs      |   0
 {src => core/src}/raw/http_util/bytes_range.rs     |   0
 {src => core/src}/raw/http_util/client.rs          |   0
 {src => core/src}/raw/http_util/dns.rs             |   0
 {src => core/src}/raw/http_util/error.rs           |   0
 {src => core/src}/raw/http_util/header.rs          |   0
 {src => core/src}/raw/http_util/mod.rs             |   0
 {src => core/src}/raw/http_util/uri.rs             |   0
 {src => core/src}/raw/layer.rs                     |   0
 {src => core/src}/raw/mod.rs                       |   0
 {src => core/src}/raw/oio/cursor.rs                |   0
 {src => core/src}/raw/oio/entry.rs                 |   0
 .../src}/raw/oio/into_blocking_reader/from_fd.rs   |   0
 .../src}/raw/oio/into_blocking_reader/mod.rs       |   0
 {src => core/src}/raw/oio/into_reader/by_range.rs  |   0
 {src => core/src}/raw/oio/into_reader/from_fd.rs   |   0
 {src => core/src}/raw/oio/into_reader/mod.rs       |   0
 {src => core/src}/raw/oio/into_streamable.rs       |   0
 {src => core/src}/raw/oio/mod.rs                   |   0
 {src => core/src}/raw/oio/page.rs                  |   0
 {src => core/src}/raw/oio/read.rs                  |   0
 {src => core/src}/raw/oio/to_flat_pager.rs         |   0
 {src => core/src}/raw/oio/to_hierarchy_pager.rs    |   0
 {src => core/src}/raw/oio/write.rs                 |   0
 {src => core/src}/raw/operation.rs                 |   0
 {src => core/src}/raw/path.rs                      |   0
 {src => core/src}/raw/rps.rs                       |   0
 {src => core/src}/raw/serde_util.rs                |   0
 {src => core/src}/raw/version.rs                   |   0
 {src => core/src}/services/azblob/backend.rs       |   0
 {src => core/src}/services/azblob/batch.rs         |   0
 {src => core/src}/services/azblob/error.rs         |   0
 {src => core/src}/services/azblob/mod.rs           |   0
 {src => core/src}/services/azblob/pager.rs         |   0
 {src => core/src}/services/azblob/writer.rs        |   0
 {src => core/src}/services/azdfs/backend.rs        |   0
 {src => core/src}/services/azdfs/error.rs          |   0
 {src => core/src}/services/azdfs/mod.rs            |   0
 {src => core/src}/services/azdfs/pager.rs          |   0
 {src => core/src}/services/azdfs/writer.rs         |   0
 {src => core/src}/services/dashmap/backend.rs      |   0
 {src => core/src}/services/dashmap/mod.rs          |   0
 {src => core/src}/services/fs/backend.rs           |   0
 {src => core/src}/services/fs/error.rs             |   0
 {src => core/src}/services/fs/mod.rs               |   0
 {src => core/src}/services/fs/pager.rs             |   0
 {src => core/src}/services/fs/writer.rs            |   0
 {src => core/src}/services/ftp/backend.rs          |   0
 {src => core/src}/services/ftp/err.rs              |   0
 {src => core/src}/services/ftp/mod.rs              |   0
 {src => core/src}/services/ftp/pager.rs            |   0
 {src => core/src}/services/ftp/util.rs             |   0
 {src => core/src}/services/ftp/writer.rs           |   0
 {src => core/src}/services/gcs/backend.rs          |   0
 {src => core/src}/services/gcs/error.rs            |   0
 {src => core/src}/services/gcs/mod.rs              |   0
 {src => core/src}/services/gcs/pager.rs            |   0
 {src => core/src}/services/gcs/uri.rs              |   0
 {src => core/src}/services/gcs/writer.rs           |   0
 {src => core/src}/services/ghac/backend.rs         |   0
 {src => core/src}/services/ghac/error.rs           |   0
 {src => core/src}/services/ghac/mod.rs             |   0
 {src => core/src}/services/ghac/writer.rs          |   0
 {src => core/src}/services/hdfs/backend.rs         |   0
 {src => core/src}/services/hdfs/error.rs           |   0
 {src => core/src}/services/hdfs/mod.rs             |   0
 {src => core/src}/services/hdfs/pager.rs           |   0
 {src => core/src}/services/hdfs/writer.rs          |   0
 {src => core/src}/services/http/backend.rs         |   0
 {src => core/src}/services/http/error.rs           |   0
 .../src}/services/http/fixtures/nginx.conf         |   0
 {src => core/src}/services/http/mod.rs             |   0
 {src => core/src}/services/ipfs/backend.rs         |   0
 {src => core/src}/services/ipfs/error.rs           |   0
 {src => core/src}/services/ipfs/ipld.rs            |   0
 {src => core/src}/services/ipfs/mod.rs             |   0
 {src => core/src}/services/ipmfs/backend.rs        |   0
 {src => core/src}/services/ipmfs/builder.rs        |   0
 {src => core/src}/services/ipmfs/error.rs          |   0
 {src => core/src}/services/ipmfs/mod.rs            |   0
 {src => core/src}/services/ipmfs/pager.rs          |   0
 {src => core/src}/services/ipmfs/writer.rs         |   0
 {src => core/src}/services/memcached/MIT-ascii.txt |   0
 {src => core/src}/services/memcached/ascii.rs      |   0
 {src => core/src}/services/memcached/backend.rs    |   0
 {src => core/src}/services/memcached/mod.rs        |   0
 {src => core/src}/services/memory/backend.rs       |   0
 {src => core/src}/services/memory/mod.rs           |   0
 {src => core/src}/services/mod.rs                  |   0
 {src => core/src}/services/moka/backend.rs         |   0
 {src => core/src}/services/moka/mod.rs             |   0
 {src => core/src}/services/obs/backend.rs          |   0
 {src => core/src}/services/obs/error.rs            |   0
 {src => core/src}/services/obs/mod.rs              |   0
 {src => core/src}/services/obs/pager.rs            |   0
 {src => core/src}/services/obs/writer.rs           |   0
 {src => core/src}/services/oss/backend.rs          |   0
 {src => core/src}/services/oss/error.rs            |   0
 {src => core/src}/services/oss/mod.rs              |   0
 {src => core/src}/services/oss/pager.rs            |   0
 {src => core/src}/services/oss/writer.rs           |   0
 {src => core/src}/services/redis/backend.rs        |   0
 {src => core/src}/services/redis/mod.rs            |   0
 {src => core/src}/services/rocksdb/backend.rs      |   0
 {src => core/src}/services/rocksdb/mod.rs          |   0
 {src => core/src}/services/s3/backend.rs           |   0
 .../src}/services/s3/compatible_services.md        |   0
 {src => core/src}/services/s3/error.rs             |   0
 {src => core/src}/services/s3/mod.rs               |   0
 {src => core/src}/services/s3/pager.rs             |   0
 {src => core/src}/services/s3/writer.rs            |   0
 {src => core/src}/services/sled/backend.rs         |   0
 {src => core/src}/services/sled/mod.rs             |   0
 {src => core/src}/services/webdav/backend.rs       |   0
 {src => core/src}/services/webdav/error.rs         |   0
 .../src}/services/webdav/fixtures/htpasswd         |   0
 .../webdav/fixtures/nginx-with-basic-auth.conf     |   0
 .../src}/services/webdav/fixtures/nginx.conf       |   0
 {src => core/src}/services/webdav/list_response.rs |   0
 {src => core/src}/services/webdav/mod.rs           |   0
 {src => core/src}/services/webdav/pager.rs         |   0
 {src => core/src}/services/webdav/writer.rs        |   0
 {src => core/src}/services/webhdfs/backend.rs      |   0
 {src => core/src}/services/webhdfs/error.rs        |   0
 {src => core/src}/services/webhdfs/message.rs      |   0
 {src => core/src}/services/webhdfs/mod.rs          |   0
 {src => core/src}/services/webhdfs/pager.rs        |   0
 {src => core/src}/services/webhdfs/writer.rs       |   0
 {src => core/src}/types/builder.rs                 |   0
 {src => core/src}/types/entry.rs                   |   0
 {src => core/src}/types/error.rs                   |   0
 {src => core/src}/types/list.rs                    |   0
 {src => core/src}/types/metadata.rs                |   0
 {src => core/src}/types/mod.rs                     |   0
 {src => core/src}/types/mode.rs                    |   0
 .../src}/types/operator/blocking_operator.rs       |   0
 {src => core/src}/types/operator/builder.rs        |   0
 {src => core/src}/types/operator/metadata.rs       |   0
 {src => core/src}/types/operator/mod.rs            |   0
 {src => core/src}/types/operator/operator.rs       |   0
 {src => core/src}/types/ops.rs                     |   0
 {src => core/src}/types/reader.rs                  |   0
 {src => core/src}/types/scheme.rs                  |   0
 {src => core/src}/types/writer.rs                  |   0
 {tests => core/tests}/behavior/README.md           |   0
 {tests => core/tests}/behavior/blocking_list.rs    |   0
 {tests => core/tests}/behavior/blocking_read.rs    |   0
 {tests => core/tests}/behavior/blocking_write.rs   |   0
 {tests => core/tests}/behavior/list.rs             |   0
 {tests => core/tests}/behavior/list_only.rs        |   0
 {tests => core/tests}/behavior/main.rs             |   0
 {tests => core/tests}/behavior/presign.rs          |   0
 {tests => core/tests}/behavior/read_only.rs        |   0
 {tests => core/tests}/behavior/utils.rs            |   0
 {tests => core/tests}/behavior/write.rs            |   0
 {tests => core/tests}/data/normal_dir/.gitkeep     |   0
 {tests => core/tests}/data/normal_file             | Bin
 .../data/special_dir  !@#$%^&()_+-=;',/.gitkeep    |   0
 .../tests}/data/special_file  !@#$%^&()_+-=;',     | Bin
 258 files changed, 44 insertions(+), 169 deletions(-)

diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 519792dc..e7fb9cd5 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -44,6 +44,7 @@ jobs:
         uses: ./.github/actions/setup
 
       - name: Publish opendal
+        working-directory: "core"
         run: cargo publish --all-features
         env:
           LD_LIBRARY_PATH: ${{ env.JAVA_HOME }}/lib/server:${{ env.LD_LIBRARY_PATH }}
@@ -51,8 +52,8 @@ jobs:
           ROCKSDB_LIB_DIR: /usr/lib
 
       - name: Publish object_store_opendal
-        run: cargo publish
         working-directory: "bindings/object_store"
+        run: cargo publish
         env:
           LD_LIBRARY_PATH: ${{ env.JAVA_HOME }}/lib/server:${{ env.LD_LIBRARY_PATH }}
           CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
diff --git a/.github/workflows/service_test_azblob.yml b/.github/workflows/service_test_azblob.yml
index b4894ea0..d74cfb2d 100644
--- a/.github/workflows/service_test_azblob.yml
+++ b/.github/workflows/service_test_azblob.yml
@@ -59,6 +59,7 @@ jobs:
 
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test azblob -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_azdfs.yml b/.github/workflows/service_test_azdfs.yml
index 176740bf..a6bbf3ea 100644
--- a/.github/workflows/service_test_azdfs.yml
+++ b/.github/workflows/service_test_azdfs.yml
@@ -45,6 +45,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test azdfs -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_dashmap.yml b/.github/workflows/service_test_dashmap.yml
index 9d04546b..70b95777 100644
--- a/.github/workflows/service_test_dashmap.yml
+++ b/.github/workflows/service_test_dashmap.yml
@@ -48,6 +48,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test dashmap --features services-dashmap -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_fs.yml b/.github/workflows/service_test_fs.yml
index f3cbd867..fb347393 100644
--- a/.github/workflows/service_test_fs.yml
+++ b/.github/workflows/service_test_fs.yml
@@ -49,6 +49,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test fs -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_ftp.yml b/.github/workflows/service_test_ftp.yml
index 2762a528..674caa2e 100644
--- a/.github/workflows/service_test_ftp.yml
+++ b/.github/workflows/service_test_ftp.yml
@@ -78,6 +78,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test ftp --features services-ftp -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_gcs.yml b/.github/workflows/service_test_gcs.yml
index 862af6fc..656b23b5 100644
--- a/.github/workflows/service_test_gcs.yml
+++ b/.github/workflows/service_test_gcs.yml
@@ -44,6 +44,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test gcs -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_ghac.yml b/.github/workflows/service_test_ghac.yml
index 949d0f00..51fc4149 100644
--- a/.github/workflows/service_test_ghac.yml
+++ b/.github/workflows/service_test_ghac.yml
@@ -52,6 +52,7 @@ jobs:
 
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test ghac -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_hdfs.yml b/.github/workflows/service_test_hdfs.yml
index 0cc1131d..df9f9682 100644
--- a/.github/workflows/service_test_hdfs.yml
+++ b/.github/workflows/service_test_hdfs.yml
@@ -62,6 +62,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         continue-on-error: true
         run: cargo test hdfs --features services-hdfs -- --show-output
         env:
diff --git a/.github/workflows/service_test_http.yml b/.github/workflows/service_test_http.yml
index c1581827..5cf032ce 100644
--- a/.github/workflows/service_test_http.yml
+++ b/.github/workflows/service_test_http.yml
@@ -47,6 +47,7 @@ jobs:
 
       - name: Start nginx
         shell: bash
+        working-directory: core
         run: |
           mkdir /tmp/static
           cp -r tests/data/* /tmp/static
@@ -57,6 +58,7 @@ jobs:
 
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test http -- --show-output
         env:
           RUST_BACKTRACE: full
@@ -77,6 +79,7 @@ jobs:
       # Use the latest beta version instead
       - name: Start caddy
         shell: bash
+        working-directory: core
         run: |
           VERSION="2.6.0-beta.3"
 
@@ -91,6 +94,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test http -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_ipfs.yml b/.github/workflows/service_test_ipfs.yml
index de50683a..ee9f76ec 100644
--- a/.github/workflows/service_test_ipfs.yml
+++ b/.github/workflows/service_test_ipfs.yml
@@ -54,6 +54,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test ipfs --features services-ipfs -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_ipmfs.yml b/.github/workflows/service_test_ipmfs.yml
index 2e60de80..4c7814f7 100644
--- a/.github/workflows/service_test_ipmfs.yml
+++ b/.github/workflows/service_test_ipmfs.yml
@@ -49,6 +49,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test ipmfs -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_memcached.yml b/.github/workflows/service_test_memcached.yml
index 91ace58f..1ea0d37c 100644
--- a/.github/workflows/service_test_memcached.yml
+++ b/.github/workflows/service_test_memcached.yml
@@ -58,6 +58,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test memcached --features services-memcached -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_memory.yml b/.github/workflows/service_test_memory.yml
index 875391d4..614570cf 100644
--- a/.github/workflows/service_test_memory.yml
+++ b/.github/workflows/service_test_memory.yml
@@ -48,6 +48,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test memory -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_moka.yml b/.github/workflows/service_test_moka.yml
index 2aad89d4..5b17b2f8 100644
--- a/.github/workflows/service_test_moka.yml
+++ b/.github/workflows/service_test_moka.yml
@@ -48,6 +48,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test moka --features services-moka -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_obs.yml b/.github/workflows/service_test_obs.yml
index f5e40454..d41a0f91 100644
--- a/.github/workflows/service_test_obs.yml
+++ b/.github/workflows/service_test_obs.yml
@@ -44,6 +44,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test obs -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_oss.yml b/.github/workflows/service_test_oss.yml
index 9ca1236a..4f474f4c 100644
--- a/.github/workflows/service_test_oss.yml
+++ b/.github/workflows/service_test_oss.yml
@@ -44,6 +44,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test oss -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_redis.yml b/.github/workflows/service_test_redis.yml
index 0f0ed19f..bbe1cf05 100644
--- a/.github/workflows/service_test_redis.yml
+++ b/.github/workflows/service_test_redis.yml
@@ -49,6 +49,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test redis --features services-redis -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_rocksdb.yml b/.github/workflows/service_test_rocksdb.yml
index 64415463..6a855827 100644
--- a/.github/workflows/service_test_rocksdb.yml
+++ b/.github/workflows/service_test_rocksdb.yml
@@ -44,6 +44,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test rocksdb --features services-rocksdb -- --show-output --test-threads=1
         env:
           ROCKSDB_LIB_DIR: /usr/lib
diff --git a/.github/workflows/service_test_s3.yml b/.github/workflows/service_test_s3.yml
index 42b2bc1d..d60cbf2c 100644
--- a/.github/workflows/service_test_s3.yml
+++ b/.github/workflows/service_test_s3.yml
@@ -44,6 +44,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test s3 -- --show-output
         env:
           RUST_BACKTRACE: full
@@ -63,6 +64,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test s3 -- --show-output
         env:
           RUST_BACKTRACE: full
@@ -83,6 +85,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test s3 -- --show-output
         env:
           RUST_BACKTRACE: full
@@ -122,6 +125,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test s3 -- --show-output
         env:
           RUST_BACKTRACE: full
@@ -158,6 +162,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test s3 -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_sled.yml b/.github/workflows/service_test_sled.yml
index 84c447de..6ac54b08 100644
--- a/.github/workflows/service_test_sled.yml
+++ b/.github/workflows/service_test_sled.yml
@@ -44,6 +44,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test sled --features services-sled -- --show-output --test-threads=1
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_webdav.yml b/.github/workflows/service_test_webdav.yml
index 870ab86e..dfb82b78 100644
--- a/.github/workflows/service_test_webdav.yml
+++ b/.github/workflows/service_test_webdav.yml
@@ -52,12 +52,14 @@ jobs:
 
       - name: Start nginx
         shell: bash
+        working-directory: core
         run: |
           mkdir -p /tmp/static
           nginx -c `pwd`/src/services/webdav/fixtures/nginx.conf
 
       - name: Test
         shell: bash
+        working-directory: core
         run: cargo test webdav -- --show-output
         env:
           RUST_BACKTRACE: full
@@ -81,6 +83,7 @@ jobs:
 
       - name: Start nginx
         shell: bash
+        working-directory: core
         run: |
           mkdir -p /tmp/static
           cp `pwd`/src/services/webdav/fixtures/htpasswd /tmp/htpasswd
@@ -88,6 +91,7 @@ jobs:
 
       - name: Test empty password
         shell: bash
+        working-directory: core
         run: cargo test webdav -- --show-output
         env:
           RUST_BACKTRACE: full
@@ -98,6 +102,7 @@ jobs:
 
       - name: Test with password
         shell: bash
+        working-directory: core
         run: cargo test webdav -- --show-output
         env:
           RUST_BACKTRACE: full
diff --git a/.github/workflows/service_test_webhdfs.yml b/.github/workflows/service_test_webhdfs.yml
index 0b780889..eadd2dab 100644
--- a/.github/workflows/service_test_webhdfs.yml
+++ b/.github/workflows/service_test_webhdfs.yml
@@ -53,6 +53,7 @@ jobs:
         uses: ./.github/actions/setup
       - name: Test
         shell: bash
+        working-directory: core
         continue-on-error: true
         run: cargo test webhdfs -- --show-output
         env:
diff --git a/Cargo.toml b/Cargo.toml
index ac3905ae..00c970c1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -15,28 +15,13 @@
 # specific language governing permissions and limitations
 # under the License.
 
-[package]
-authors = ["OpenDAL Contributors <de...@opendal.apache.org>"]
-categories = ["filesystem"]
-description = "OpenDAL: Access data freely, painlessly, and efficiently."
-edition = "2021"
-exclude = [".github/", "binaries/", "bindings/", "profiles/", "tests/"]
-homepage = "https://opendal.apache.org/"
-keywords = ["storage", "fs", "s3", "azblob", "gcs"]
-license = "Apache-2.0"
-name = "opendal"
-repository = "https://github.com/apache/incubator-opendal"
-rust-version = "1.60"                                                     # MSRV for this project - please update while bump versions
-version = "0.30.3"
-
-[package.metadata.docs.rs]
-all-features = true
-
 [profile.bench]
 debug = true
 
 [workspace]
 members = [
+  "core",
+
   "bindings/c",
   "bindings/nodejs",
   "bindings/object_store",
@@ -44,134 +29,3 @@ members = [
 
   "binaries/oli",
 ]
-
-[features]
-default = ["rustls"]
-
-# Build docs or not.
-#
-# This features is used to control whether or not to build opendal's docs.
-# And doesn't have any other effects.
-docs = []
-
-# Enable trust-dns for pure rust dns cache.
-trust-dns = ["reqwest/trust-dns", "dep:trust-dns-resolver"]
-
-# Enable rustls for TLS support
-rustls = ["reqwest/rustls-tls-native-roots", "ureq/tls", "ureq/native-certs"]
-# Enable native-tls for TLS support
-native-tls = ["reqwest/native-tls", "ureq/native-tls"]
-# Enable vendored native-tls for TLS support
-native-tls-vendored = ["reqwest/native-tls-vendored", "ureq/native-tls"]
-
-# Enable all layers.
-layers-all = ["layers-chaos", "layers-metrics", "layers-tracing"]
-# Enable layers chaos support
-layers-chaos = ["dep:rand"]
-# Enable layers metrics support
-layers-metrics = ["dep:metrics"]
-# Enable layers tracing support.
-layers-tracing = ["dep:tracing"]
-
-# Enable services dashmap support
-services-dashmap = ["dep:dashmap"]
-# Enable services ftp support
-services-ftp = ["dep:suppaftp", "dep:lazy-regex", "dep:bb8", "dep:async-tls"]
-# Enable services hdfs support
-services-hdfs = ["dep:hdrs"]
-# Enable services ipfs support
-services-ipfs = ["dep:prost"]
-# Enable services memcached support
-services-memcached = ["dep:bb8"]
-# Enable services moka support
-services-moka = ["dep:moka"]
-# Enable services redis support
-services-redis = ["dep:redis"]
-# Enable services rocksdb support
-services-rocksdb = ["dep:rocksdb", "dep:librocksdb-sys"]
-# Enable services sled support
-services-sled = ["dep:sled"]
-
-[lib]
-bench = false
-
-[[bench]]
-harness = false
-name = "ops"
-
-[dependencies]
-anyhow = { version = "1.0.30", features = ["std"] }
-async-compat = "0.2"
-async-tls = { version = "0.11", optional = true }
-async-trait = "0.1.66"
-backon = "0.4.0"
-base64 = "0.21"
-bb8 = { version = "0.8", optional = true }
-bytes = "1.2"
-dashmap = { version = "5.4", optional = true }
-flagset = "0.4"
-futures = { version = "0.3", features = ["alloc"] }
-hdrs = { version = "0.2", optional = true, features = ["async_file"] }
-http = "0.2.5"
-hyper = "0.14"
-lazy-regex = { version = "2.5.0", optional = true }
-# Notes:
-# pin to 6.11 to allow we can use rocksdb 6.11 which is more widely used.
-librocksdb-sys = { version = "=6.11", optional = true }
-log = "0.4"
-md-5 = "0.10"
-metrics = { version = "0.20", optional = true }
-moka = { version = "0.10", optional = true, features = ["future"] }
-once_cell = "1"
-parking_lot = "0.12"
-percent-encoding = "2"
-pin-project = "1"
-prost = { version = "0.11", optional = true }
-quick-xml = { version = "0.27", features = ["serialize", "overlapped-lists"] }
-rand = { version = "0.8", optional = true }
-redis = { version = "0.22", features = [
-  "tokio-comp",
-  "connection-manager",
-], optional = true }
-reqsign = "0.8.5"
-reqwest = { version = "0.11.13", features = [
-  "multipart",
-  "stream",
-], default-features = false }
-# Notes:
-# pin to 0.15 to allow we can use rocksdb 6.x which is more widely used.
-rocksdb = { version = "0.15", default-features = false, optional = true }
-serde = { version = "1", features = ["derive"] }
-serde_json = "1"
-sled = { version = "0.34.7", optional = true }
-suppaftp = { version = "4.5", default-features = false, features = [
-  "async-secure",
-  "async-rustls",
-], optional = true }
-# time 0.3.18 bump MSRV to 1.62, let's pin to 0.3.17 until we decide
-# to bump ours
-time = { version = ">=0.3.10, <=0.3.17", features = ["serde"] }
-tokio = { version = "1.26", features = ["fs"] }
-tracing = { version = "0.1", optional = true }
-trust-dns-resolver = { version = "0.22", optional = true }
-ureq = { version = "2", default-features = false }
-uuid = { version = "1", features = ["serde", "v4"] }
-
-[dev-dependencies]
-cfg-if = "1"
-criterion = { version = "0.4", features = ["async", "async_tokio"] }
-dotenvy = "0.15"
-env_logger = "0.10"
-opentelemetry = { version = "0.17", default-features = false, features = [
-  "trace",
-] }
-opentelemetry-jaeger = "0.16"
-paste = "1"
-pretty_assertions = "1"
-rand = "0.8"
-sha2 = "0.10"
-size = "0.4"
-tokio = { version = "1.26", features = ["fs", "macros", "rt-multi-thread"] }
-tracing-opentelemetry = "0.17"
-tracing-subscriber = { version = "0.3", features = ["env-filter"] }
-wiremock = "0.5"
diff --git a/binaries/oli/Cargo.toml b/binaries/oli/Cargo.toml
index f5afaca3..dadd05bd 100644
--- a/binaries/oli/Cargo.toml
+++ b/binaries/oli/Cargo.toml
@@ -34,7 +34,7 @@ clap = { version = "4", features = ["cargo", "string"] }
 env_logger = "0.10"
 futures = "0.3"
 log = "0.4"
-opendal = { version = "0.30", path = "../../" }
+opendal = { version = "0.30", path = "../../core" }
 tokio = { version = "1.26", features = ["fs", "macros", "rt-multi-thread"] }
 
 [dev-dependencies]
diff --git a/bindings/c/Cargo.toml b/bindings/c/Cargo.toml
index 215f6ea7..44285f6e 100644
--- a/bindings/c/Cargo.toml
+++ b/bindings/c/Cargo.toml
@@ -30,4 +30,4 @@ crate-type = ["cdylib"]
 name = "opendal"
 
 [dependencies]
-opendal = { version = "0.30", path = "../../" }
+opendal = { version = "0.30", path = "../../core" }
diff --git a/bindings/nodejs/Cargo.toml b/bindings/nodejs/Cargo.toml
index d448df3f..9f523cf1 100644
--- a/bindings/nodejs/Cargo.toml
+++ b/bindings/nodejs/Cargo.toml
@@ -35,7 +35,7 @@ napi = { version = "2.11.3", default-features = false, features = [
   "async",
 ] }
 napi-derive = "2.11.1"
-opendal = { version = "0.30", path = "../../" }
+opendal = { version = "0.30", path = "../../core" }
 time = { version = "0.3.17", features = ["formatting"] }
 
 [build-dependencies]
diff --git a/bindings/object_store/Cargo.toml b/bindings/object_store/Cargo.toml
index 9d60a1f7..94a74222 100644
--- a/bindings/object_store/Cargo.toml
+++ b/bindings/object_store/Cargo.toml
@@ -32,7 +32,7 @@ bytes = "1"
 chrono = "0.4.23"
 futures = "0.3"
 object_store = "0.5"
-opendal = { version = "0.30", path = "../../" }
+opendal = { version = "0.30", path = "../../core" }
 tokio = "1"
 
 [dev-dependencies]
diff --git a/bindings/python/Cargo.toml b/bindings/python/Cargo.toml
index 9ba79afe..418afc05 100644
--- a/bindings/python/Cargo.toml
+++ b/bindings/python/Cargo.toml
@@ -32,7 +32,7 @@ name = "opendal"
 [dependencies]
 chrono = { version = "0.4.24", default-features = false, features = ["std"] }
 futures = "0.3.27"
-opendal = { version = "0.30", path = "../../" }
+opendal = { version = "0.30", path = "../../core" }
 pyo3 = { version = "0.18", features = ["extension-module", "chrono"] }
 pyo3-asyncio = { version = "0.18", features = ["tokio-runtime"] }
 tokio = "1"
diff --git a/Cargo.toml b/core/Cargo.toml
similarity index 95%
copy from Cargo.toml
copy to core/Cargo.toml
index ac3905ae..20f1b426 100644
--- a/Cargo.toml
+++ b/core/Cargo.toml
@@ -20,7 +20,7 @@ authors = ["OpenDAL Contributors <de...@opendal.apache.org>"]
 categories = ["filesystem"]
 description = "OpenDAL: Access data freely, painlessly, and efficiently."
 edition = "2021"
-exclude = [".github/", "binaries/", "bindings/", "profiles/", "tests/"]
+exclude = ["tests/"]
 homepage = "https://opendal.apache.org/"
 keywords = ["storage", "fs", "s3", "azblob", "gcs"]
 license = "Apache-2.0"
@@ -32,19 +32,6 @@ version = "0.30.3"
 [package.metadata.docs.rs]
 all-features = true
 
-[profile.bench]
-debug = true
-
-[workspace]
-members = [
-  "bindings/c",
-  "bindings/nodejs",
-  "bindings/object_store",
-  "bindings/python",
-
-  "binaries/oli",
-]
-
 [features]
 default = ["rustls"]
 
diff --git a/benches/README.md b/core/benches/README.md
similarity index 100%
rename from benches/README.md
rename to core/benches/README.md
diff --git a/benches/ops/README.md b/core/benches/ops/README.md
similarity index 100%
rename from benches/ops/README.md
rename to core/benches/ops/README.md
diff --git a/benches/ops/main.rs b/core/benches/ops/main.rs
similarity index 100%
rename from benches/ops/main.rs
rename to core/benches/ops/main.rs
diff --git a/benches/ops/read.rs b/core/benches/ops/read.rs
similarity index 100%
rename from benches/ops/read.rs
rename to core/benches/ops/read.rs
diff --git a/benches/ops/utils.rs b/core/benches/ops/utils.rs
similarity index 100%
rename from benches/ops/utils.rs
rename to core/benches/ops/utils.rs
diff --git a/benches/ops/write.rs b/core/benches/ops/write.rs
similarity index 100%
rename from benches/ops/write.rs
rename to core/benches/ops/write.rs
diff --git a/examples/object.rs b/core/examples/object.rs
similarity index 100%
rename from examples/object.rs
rename to core/examples/object.rs
diff --git a/src/docs/comparisons/mod.rs b/core/src/docs/comparisons/mod.rs
similarity index 100%
rename from src/docs/comparisons/mod.rs
rename to core/src/docs/comparisons/mod.rs
diff --git a/src/docs/comparisons/vs_object_store.md b/core/src/docs/comparisons/vs_object_store.md
similarity index 100%
rename from src/docs/comparisons/vs_object_store.md
rename to core/src/docs/comparisons/vs_object_store.md
diff --git a/src/docs/concepts.rs b/core/src/docs/concepts.rs
similarity index 100%
rename from src/docs/concepts.rs
rename to core/src/docs/concepts.rs
diff --git a/src/docs/features.md b/core/src/docs/features.md
similarity index 100%
rename from src/docs/features.md
rename to core/src/docs/features.md
diff --git a/src/docs/internals/accessor.rs b/core/src/docs/internals/accessor.rs
similarity index 100%
rename from src/docs/internals/accessor.rs
rename to core/src/docs/internals/accessor.rs
diff --git a/src/docs/internals/layer.rs b/core/src/docs/internals/layer.rs
similarity index 100%
rename from src/docs/internals/layer.rs
rename to core/src/docs/internals/layer.rs
diff --git a/src/docs/internals/mod.rs b/core/src/docs/internals/mod.rs
similarity index 100%
rename from src/docs/internals/mod.rs
rename to core/src/docs/internals/mod.rs
diff --git a/src/docs/mod.rs b/core/src/docs/mod.rs
similarity index 96%
rename from src/docs/mod.rs
rename to core/src/docs/mod.rs
index bb11b085..64d66f50 100644
--- a/src/docs/mod.rs
+++ b/core/src/docs/mod.rs
@@ -26,7 +26,7 @@ pub mod concepts;
 pub mod internals;
 
 /// Changes log for all OpenDAL released versions.
-#[doc = include_str!("../../CHANGELOG.md")]
+#[doc = include_str!("../../../CHANGELOG.md")]
 pub mod changelog {}
 
 /// All features that provided by OpenDAL.
diff --git a/src/docs/rfcs/0000_example.md b/core/src/docs/rfcs/0000_example.md
similarity index 100%
rename from src/docs/rfcs/0000_example.md
rename to core/src/docs/rfcs/0000_example.md
diff --git a/src/docs/rfcs/0041_object_native_api.md b/core/src/docs/rfcs/0041_object_native_api.md
similarity index 100%
rename from src/docs/rfcs/0041_object_native_api.md
rename to core/src/docs/rfcs/0041_object_native_api.md
diff --git a/src/docs/rfcs/0044_error_handle.md b/core/src/docs/rfcs/0044_error_handle.md
similarity index 100%
rename from src/docs/rfcs/0044_error_handle.md
rename to core/src/docs/rfcs/0044_error_handle.md
diff --git a/src/docs/rfcs/0057_auto_region.md b/core/src/docs/rfcs/0057_auto_region.md
similarity index 100%
rename from src/docs/rfcs/0057_auto_region.md
rename to core/src/docs/rfcs/0057_auto_region.md
diff --git a/src/docs/rfcs/0069_object_stream.md b/core/src/docs/rfcs/0069_object_stream.md
similarity index 100%
rename from src/docs/rfcs/0069_object_stream.md
rename to core/src/docs/rfcs/0069_object_stream.md
diff --git a/src/docs/rfcs/0090_limited_reader.md b/core/src/docs/rfcs/0090_limited_reader.md
similarity index 100%
rename from src/docs/rfcs/0090_limited_reader.md
rename to core/src/docs/rfcs/0090_limited_reader.md
diff --git a/src/docs/rfcs/0112_path_normalization.md b/core/src/docs/rfcs/0112_path_normalization.md
similarity index 100%
rename from src/docs/rfcs/0112_path_normalization.md
rename to core/src/docs/rfcs/0112_path_normalization.md
diff --git a/src/docs/rfcs/0191_async_streaming_io.md b/core/src/docs/rfcs/0191_async_streaming_io.md
similarity index 100%
rename from src/docs/rfcs/0191_async_streaming_io.md
rename to core/src/docs/rfcs/0191_async_streaming_io.md
diff --git a/src/docs/rfcs/0203_remove_credential.md b/core/src/docs/rfcs/0203_remove_credential.md
similarity index 100%
rename from src/docs/rfcs/0203_remove_credential.md
rename to core/src/docs/rfcs/0203_remove_credential.md
diff --git a/src/docs/rfcs/0221_create_dir.md b/core/src/docs/rfcs/0221_create_dir.md
similarity index 100%
rename from src/docs/rfcs/0221_create_dir.md
rename to core/src/docs/rfcs/0221_create_dir.md
diff --git a/src/docs/rfcs/0247_retryable_error.md b/core/src/docs/rfcs/0247_retryable_error.md
similarity index 100%
rename from src/docs/rfcs/0247_retryable_error.md
rename to core/src/docs/rfcs/0247_retryable_error.md
diff --git a/src/docs/rfcs/0293_object_id.md b/core/src/docs/rfcs/0293_object_id.md
similarity index 100%
rename from src/docs/rfcs/0293_object_id.md
rename to core/src/docs/rfcs/0293_object_id.md
diff --git a/src/docs/rfcs/0337_dir_entry.md b/core/src/docs/rfcs/0337_dir_entry.md
similarity index 100%
rename from src/docs/rfcs/0337_dir_entry.md
rename to core/src/docs/rfcs/0337_dir_entry.md
diff --git a/src/docs/rfcs/0409_accessor_capabilities.md b/core/src/docs/rfcs/0409_accessor_capabilities.md
similarity index 100%
rename from src/docs/rfcs/0409_accessor_capabilities.md
rename to core/src/docs/rfcs/0409_accessor_capabilities.md
diff --git a/src/docs/rfcs/0413_presign.md b/core/src/docs/rfcs/0413_presign.md
similarity index 100%
rename from src/docs/rfcs/0413_presign.md
rename to core/src/docs/rfcs/0413_presign.md
diff --git a/src/docs/rfcs/0423_command_line_interface.md b/core/src/docs/rfcs/0423_command_line_interface.md
similarity index 100%
rename from src/docs/rfcs/0423_command_line_interface.md
rename to core/src/docs/rfcs/0423_command_line_interface.md
diff --git a/src/docs/rfcs/0429_init_from_iter.md b/core/src/docs/rfcs/0429_init_from_iter.md
similarity index 100%
rename from src/docs/rfcs/0429_init_from_iter.md
rename to core/src/docs/rfcs/0429_init_from_iter.md
diff --git a/src/docs/rfcs/0438_multipart.md b/core/src/docs/rfcs/0438_multipart.md
similarity index 100%
rename from src/docs/rfcs/0438_multipart.md
rename to core/src/docs/rfcs/0438_multipart.md
diff --git a/src/docs/rfcs/0443_gateway.md b/core/src/docs/rfcs/0443_gateway.md
similarity index 100%
rename from src/docs/rfcs/0443_gateway.md
rename to core/src/docs/rfcs/0443_gateway.md
diff --git a/src/docs/rfcs/0501_new_builder.md b/core/src/docs/rfcs/0501_new_builder.md
similarity index 100%
rename from src/docs/rfcs/0501_new_builder.md
rename to core/src/docs/rfcs/0501_new_builder.md
diff --git a/src/docs/rfcs/0554_write_refactor.md b/core/src/docs/rfcs/0554_write_refactor.md
similarity index 100%
rename from src/docs/rfcs/0554_write_refactor.md
rename to core/src/docs/rfcs/0554_write_refactor.md
diff --git a/src/docs/rfcs/0561_list_metadata_reuse.md b/core/src/docs/rfcs/0561_list_metadata_reuse.md
similarity index 100%
rename from src/docs/rfcs/0561_list_metadata_reuse.md
rename to core/src/docs/rfcs/0561_list_metadata_reuse.md
diff --git a/src/docs/rfcs/0599_blocking_api.md b/core/src/docs/rfcs/0599_blocking_api.md
similarity index 100%
rename from src/docs/rfcs/0599_blocking_api.md
rename to core/src/docs/rfcs/0599_blocking_api.md
diff --git a/src/docs/rfcs/0623_redis_service.md b/core/src/docs/rfcs/0623_redis_service.md
similarity index 100%
rename from src/docs/rfcs/0623_redis_service.md
rename to core/src/docs/rfcs/0623_redis_service.md
diff --git a/src/docs/rfcs/0627_split_capabilities.md b/core/src/docs/rfcs/0627_split_capabilities.md
similarity index 100%
rename from src/docs/rfcs/0627_split_capabilities.md
rename to core/src/docs/rfcs/0627_split_capabilities.md
diff --git a/src/docs/rfcs/0661_path_in_accessor.md b/core/src/docs/rfcs/0661_path_in_accessor.md
similarity index 100%
rename from src/docs/rfcs/0661_path_in_accessor.md
rename to core/src/docs/rfcs/0661_path_in_accessor.md
diff --git a/src/docs/rfcs/0793_generic_kv_services.md b/core/src/docs/rfcs/0793_generic_kv_services.md
similarity index 100%
rename from src/docs/rfcs/0793_generic_kv_services.md
rename to core/src/docs/rfcs/0793_generic_kv_services.md
diff --git a/src/docs/rfcs/0926_object_reader.md b/core/src/docs/rfcs/0926_object_reader.md
similarity index 100%
rename from src/docs/rfcs/0926_object_reader.md
rename to core/src/docs/rfcs/0926_object_reader.md
diff --git a/src/docs/rfcs/0977_refactor_error.md b/core/src/docs/rfcs/0977_refactor_error.md
similarity index 100%
rename from src/docs/rfcs/0977_refactor_error.md
rename to core/src/docs/rfcs/0977_refactor_error.md
diff --git a/src/docs/rfcs/1085_object_handler.md b/core/src/docs/rfcs/1085_object_handler.md
similarity index 100%
rename from src/docs/rfcs/1085_object_handler.md
rename to core/src/docs/rfcs/1085_object_handler.md
diff --git a/src/docs/rfcs/1391_object_metadataer.md b/core/src/docs/rfcs/1391_object_metadataer.md
similarity index 100%
rename from src/docs/rfcs/1391_object_metadataer.md
rename to core/src/docs/rfcs/1391_object_metadataer.md
diff --git a/src/docs/rfcs/1398_query_based_metadata.md b/core/src/docs/rfcs/1398_query_based_metadata.md
similarity index 100%
rename from src/docs/rfcs/1398_query_based_metadata.md
rename to core/src/docs/rfcs/1398_query_based_metadata.md
diff --git a/src/docs/rfcs/1420_object_writer.md b/core/src/docs/rfcs/1420_object_writer.md
similarity index 100%
rename from src/docs/rfcs/1420_object_writer.md
rename to core/src/docs/rfcs/1420_object_writer.md
diff --git a/src/docs/rfcs/1477_remove_object_concept.md b/core/src/docs/rfcs/1477_remove_object_concept.md
similarity index 100%
rename from src/docs/rfcs/1477_remove_object_concept.md
rename to core/src/docs/rfcs/1477_remove_object_concept.md
diff --git a/src/docs/rfcs/mod.rs b/core/src/docs/rfcs/mod.rs
similarity index 100%
rename from src/docs/rfcs/mod.rs
rename to core/src/docs/rfcs/mod.rs
diff --git a/src/docs/upgrade.md b/core/src/docs/upgrade.md
similarity index 100%
rename from src/docs/upgrade.md
rename to core/src/docs/upgrade.md
diff --git a/src/layers/chaos.rs b/core/src/layers/chaos.rs
similarity index 100%
rename from src/layers/chaos.rs
rename to core/src/layers/chaos.rs
diff --git a/src/layers/complete.rs b/core/src/layers/complete.rs
similarity index 100%
rename from src/layers/complete.rs
rename to core/src/layers/complete.rs
diff --git a/src/layers/concurrent_limit.rs b/core/src/layers/concurrent_limit.rs
similarity index 100%
rename from src/layers/concurrent_limit.rs
rename to core/src/layers/concurrent_limit.rs
diff --git a/src/layers/error_context.rs b/core/src/layers/error_context.rs
similarity index 100%
rename from src/layers/error_context.rs
rename to core/src/layers/error_context.rs
diff --git a/src/layers/immutable_index.rs b/core/src/layers/immutable_index.rs
similarity index 100%
rename from src/layers/immutable_index.rs
rename to core/src/layers/immutable_index.rs
diff --git a/src/layers/logging.rs b/core/src/layers/logging.rs
similarity index 100%
rename from src/layers/logging.rs
rename to core/src/layers/logging.rs
diff --git a/src/layers/metrics.rs b/core/src/layers/metrics.rs
similarity index 100%
rename from src/layers/metrics.rs
rename to core/src/layers/metrics.rs
diff --git a/src/layers/mod.rs b/core/src/layers/mod.rs
similarity index 100%
rename from src/layers/mod.rs
rename to core/src/layers/mod.rs
diff --git a/src/layers/retry.rs b/core/src/layers/retry.rs
similarity index 100%
rename from src/layers/retry.rs
rename to core/src/layers/retry.rs
diff --git a/src/layers/tracing.rs b/core/src/layers/tracing.rs
similarity index 100%
rename from src/layers/tracing.rs
rename to core/src/layers/tracing.rs
diff --git a/src/layers/type_eraser.rs b/core/src/layers/type_eraser.rs
similarity index 100%
rename from src/layers/type_eraser.rs
rename to core/src/layers/type_eraser.rs
diff --git a/src/lib.rs b/core/src/lib.rs
similarity index 100%
rename from src/lib.rs
rename to core/src/lib.rs
diff --git a/src/raw/accessor.rs b/core/src/raw/accessor.rs
similarity index 100%
rename from src/raw/accessor.rs
rename to core/src/raw/accessor.rs
diff --git a/src/raw/adapters/kv/api.rs b/core/src/raw/adapters/kv/api.rs
similarity index 100%
rename from src/raw/adapters/kv/api.rs
rename to core/src/raw/adapters/kv/api.rs
diff --git a/src/raw/adapters/kv/backend.rs b/core/src/raw/adapters/kv/backend.rs
similarity index 100%
rename from src/raw/adapters/kv/backend.rs
rename to core/src/raw/adapters/kv/backend.rs
diff --git a/src/raw/adapters/kv/mod.rs b/core/src/raw/adapters/kv/mod.rs
similarity index 100%
rename from src/raw/adapters/kv/mod.rs
rename to core/src/raw/adapters/kv/mod.rs
diff --git a/src/raw/adapters/mod.rs b/core/src/raw/adapters/mod.rs
similarity index 100%
rename from src/raw/adapters/mod.rs
rename to core/src/raw/adapters/mod.rs
diff --git a/src/raw/http_util/body.rs b/core/src/raw/http_util/body.rs
similarity index 100%
rename from src/raw/http_util/body.rs
rename to core/src/raw/http_util/body.rs
diff --git a/src/raw/http_util/bytes_content_range.rs b/core/src/raw/http_util/bytes_content_range.rs
similarity index 100%
rename from src/raw/http_util/bytes_content_range.rs
rename to core/src/raw/http_util/bytes_content_range.rs
diff --git a/src/raw/http_util/bytes_range.rs b/core/src/raw/http_util/bytes_range.rs
similarity index 100%
rename from src/raw/http_util/bytes_range.rs
rename to core/src/raw/http_util/bytes_range.rs
diff --git a/src/raw/http_util/client.rs b/core/src/raw/http_util/client.rs
similarity index 100%
rename from src/raw/http_util/client.rs
rename to core/src/raw/http_util/client.rs
diff --git a/src/raw/http_util/dns.rs b/core/src/raw/http_util/dns.rs
similarity index 100%
rename from src/raw/http_util/dns.rs
rename to core/src/raw/http_util/dns.rs
diff --git a/src/raw/http_util/error.rs b/core/src/raw/http_util/error.rs
similarity index 100%
rename from src/raw/http_util/error.rs
rename to core/src/raw/http_util/error.rs
diff --git a/src/raw/http_util/header.rs b/core/src/raw/http_util/header.rs
similarity index 100%
rename from src/raw/http_util/header.rs
rename to core/src/raw/http_util/header.rs
diff --git a/src/raw/http_util/mod.rs b/core/src/raw/http_util/mod.rs
similarity index 100%
rename from src/raw/http_util/mod.rs
rename to core/src/raw/http_util/mod.rs
diff --git a/src/raw/http_util/uri.rs b/core/src/raw/http_util/uri.rs
similarity index 100%
rename from src/raw/http_util/uri.rs
rename to core/src/raw/http_util/uri.rs
diff --git a/src/raw/layer.rs b/core/src/raw/layer.rs
similarity index 100%
rename from src/raw/layer.rs
rename to core/src/raw/layer.rs
diff --git a/src/raw/mod.rs b/core/src/raw/mod.rs
similarity index 100%
rename from src/raw/mod.rs
rename to core/src/raw/mod.rs
diff --git a/src/raw/oio/cursor.rs b/core/src/raw/oio/cursor.rs
similarity index 100%
rename from src/raw/oio/cursor.rs
rename to core/src/raw/oio/cursor.rs
diff --git a/src/raw/oio/entry.rs b/core/src/raw/oio/entry.rs
similarity index 100%
rename from src/raw/oio/entry.rs
rename to core/src/raw/oio/entry.rs
diff --git a/src/raw/oio/into_blocking_reader/from_fd.rs b/core/src/raw/oio/into_blocking_reader/from_fd.rs
similarity index 100%
rename from src/raw/oio/into_blocking_reader/from_fd.rs
rename to core/src/raw/oio/into_blocking_reader/from_fd.rs
diff --git a/src/raw/oio/into_blocking_reader/mod.rs b/core/src/raw/oio/into_blocking_reader/mod.rs
similarity index 100%
rename from src/raw/oio/into_blocking_reader/mod.rs
rename to core/src/raw/oio/into_blocking_reader/mod.rs
diff --git a/src/raw/oio/into_reader/by_range.rs b/core/src/raw/oio/into_reader/by_range.rs
similarity index 100%
rename from src/raw/oio/into_reader/by_range.rs
rename to core/src/raw/oio/into_reader/by_range.rs
diff --git a/src/raw/oio/into_reader/from_fd.rs b/core/src/raw/oio/into_reader/from_fd.rs
similarity index 100%
rename from src/raw/oio/into_reader/from_fd.rs
rename to core/src/raw/oio/into_reader/from_fd.rs
diff --git a/src/raw/oio/into_reader/mod.rs b/core/src/raw/oio/into_reader/mod.rs
similarity index 100%
rename from src/raw/oio/into_reader/mod.rs
rename to core/src/raw/oio/into_reader/mod.rs
diff --git a/src/raw/oio/into_streamable.rs b/core/src/raw/oio/into_streamable.rs
similarity index 100%
rename from src/raw/oio/into_streamable.rs
rename to core/src/raw/oio/into_streamable.rs
diff --git a/src/raw/oio/mod.rs b/core/src/raw/oio/mod.rs
similarity index 100%
rename from src/raw/oio/mod.rs
rename to core/src/raw/oio/mod.rs
diff --git a/src/raw/oio/page.rs b/core/src/raw/oio/page.rs
similarity index 100%
rename from src/raw/oio/page.rs
rename to core/src/raw/oio/page.rs
diff --git a/src/raw/oio/read.rs b/core/src/raw/oio/read.rs
similarity index 100%
rename from src/raw/oio/read.rs
rename to core/src/raw/oio/read.rs
diff --git a/src/raw/oio/to_flat_pager.rs b/core/src/raw/oio/to_flat_pager.rs
similarity index 100%
rename from src/raw/oio/to_flat_pager.rs
rename to core/src/raw/oio/to_flat_pager.rs
diff --git a/src/raw/oio/to_hierarchy_pager.rs b/core/src/raw/oio/to_hierarchy_pager.rs
similarity index 100%
rename from src/raw/oio/to_hierarchy_pager.rs
rename to core/src/raw/oio/to_hierarchy_pager.rs
diff --git a/src/raw/oio/write.rs b/core/src/raw/oio/write.rs
similarity index 100%
rename from src/raw/oio/write.rs
rename to core/src/raw/oio/write.rs
diff --git a/src/raw/operation.rs b/core/src/raw/operation.rs
similarity index 100%
rename from src/raw/operation.rs
rename to core/src/raw/operation.rs
diff --git a/src/raw/path.rs b/core/src/raw/path.rs
similarity index 100%
rename from src/raw/path.rs
rename to core/src/raw/path.rs
diff --git a/src/raw/rps.rs b/core/src/raw/rps.rs
similarity index 100%
rename from src/raw/rps.rs
rename to core/src/raw/rps.rs
diff --git a/src/raw/serde_util.rs b/core/src/raw/serde_util.rs
similarity index 100%
rename from src/raw/serde_util.rs
rename to core/src/raw/serde_util.rs
diff --git a/src/raw/version.rs b/core/src/raw/version.rs
similarity index 100%
rename from src/raw/version.rs
rename to core/src/raw/version.rs
diff --git a/src/services/azblob/backend.rs b/core/src/services/azblob/backend.rs
similarity index 100%
rename from src/services/azblob/backend.rs
rename to core/src/services/azblob/backend.rs
diff --git a/src/services/azblob/batch.rs b/core/src/services/azblob/batch.rs
similarity index 100%
rename from src/services/azblob/batch.rs
rename to core/src/services/azblob/batch.rs
diff --git a/src/services/azblob/error.rs b/core/src/services/azblob/error.rs
similarity index 100%
rename from src/services/azblob/error.rs
rename to core/src/services/azblob/error.rs
diff --git a/src/services/azblob/mod.rs b/core/src/services/azblob/mod.rs
similarity index 100%
rename from src/services/azblob/mod.rs
rename to core/src/services/azblob/mod.rs
diff --git a/src/services/azblob/pager.rs b/core/src/services/azblob/pager.rs
similarity index 100%
rename from src/services/azblob/pager.rs
rename to core/src/services/azblob/pager.rs
diff --git a/src/services/azblob/writer.rs b/core/src/services/azblob/writer.rs
similarity index 100%
rename from src/services/azblob/writer.rs
rename to core/src/services/azblob/writer.rs
diff --git a/src/services/azdfs/backend.rs b/core/src/services/azdfs/backend.rs
similarity index 100%
rename from src/services/azdfs/backend.rs
rename to core/src/services/azdfs/backend.rs
diff --git a/src/services/azdfs/error.rs b/core/src/services/azdfs/error.rs
similarity index 100%
rename from src/services/azdfs/error.rs
rename to core/src/services/azdfs/error.rs
diff --git a/src/services/azdfs/mod.rs b/core/src/services/azdfs/mod.rs
similarity index 100%
rename from src/services/azdfs/mod.rs
rename to core/src/services/azdfs/mod.rs
diff --git a/src/services/azdfs/pager.rs b/core/src/services/azdfs/pager.rs
similarity index 100%
rename from src/services/azdfs/pager.rs
rename to core/src/services/azdfs/pager.rs
diff --git a/src/services/azdfs/writer.rs b/core/src/services/azdfs/writer.rs
similarity index 100%
rename from src/services/azdfs/writer.rs
rename to core/src/services/azdfs/writer.rs
diff --git a/src/services/dashmap/backend.rs b/core/src/services/dashmap/backend.rs
similarity index 100%
rename from src/services/dashmap/backend.rs
rename to core/src/services/dashmap/backend.rs
diff --git a/src/services/dashmap/mod.rs b/core/src/services/dashmap/mod.rs
similarity index 100%
rename from src/services/dashmap/mod.rs
rename to core/src/services/dashmap/mod.rs
diff --git a/src/services/fs/backend.rs b/core/src/services/fs/backend.rs
similarity index 100%
rename from src/services/fs/backend.rs
rename to core/src/services/fs/backend.rs
diff --git a/src/services/fs/error.rs b/core/src/services/fs/error.rs
similarity index 100%
rename from src/services/fs/error.rs
rename to core/src/services/fs/error.rs
diff --git a/src/services/fs/mod.rs b/core/src/services/fs/mod.rs
similarity index 100%
rename from src/services/fs/mod.rs
rename to core/src/services/fs/mod.rs
diff --git a/src/services/fs/pager.rs b/core/src/services/fs/pager.rs
similarity index 100%
rename from src/services/fs/pager.rs
rename to core/src/services/fs/pager.rs
diff --git a/src/services/fs/writer.rs b/core/src/services/fs/writer.rs
similarity index 100%
rename from src/services/fs/writer.rs
rename to core/src/services/fs/writer.rs
diff --git a/src/services/ftp/backend.rs b/core/src/services/ftp/backend.rs
similarity index 100%
rename from src/services/ftp/backend.rs
rename to core/src/services/ftp/backend.rs
diff --git a/src/services/ftp/err.rs b/core/src/services/ftp/err.rs
similarity index 100%
rename from src/services/ftp/err.rs
rename to core/src/services/ftp/err.rs
diff --git a/src/services/ftp/mod.rs b/core/src/services/ftp/mod.rs
similarity index 100%
rename from src/services/ftp/mod.rs
rename to core/src/services/ftp/mod.rs
diff --git a/src/services/ftp/pager.rs b/core/src/services/ftp/pager.rs
similarity index 100%
rename from src/services/ftp/pager.rs
rename to core/src/services/ftp/pager.rs
diff --git a/src/services/ftp/util.rs b/core/src/services/ftp/util.rs
similarity index 100%
rename from src/services/ftp/util.rs
rename to core/src/services/ftp/util.rs
diff --git a/src/services/ftp/writer.rs b/core/src/services/ftp/writer.rs
similarity index 100%
rename from src/services/ftp/writer.rs
rename to core/src/services/ftp/writer.rs
diff --git a/src/services/gcs/backend.rs b/core/src/services/gcs/backend.rs
similarity index 100%
rename from src/services/gcs/backend.rs
rename to core/src/services/gcs/backend.rs
diff --git a/src/services/gcs/error.rs b/core/src/services/gcs/error.rs
similarity index 100%
rename from src/services/gcs/error.rs
rename to core/src/services/gcs/error.rs
diff --git a/src/services/gcs/mod.rs b/core/src/services/gcs/mod.rs
similarity index 100%
rename from src/services/gcs/mod.rs
rename to core/src/services/gcs/mod.rs
diff --git a/src/services/gcs/pager.rs b/core/src/services/gcs/pager.rs
similarity index 100%
rename from src/services/gcs/pager.rs
rename to core/src/services/gcs/pager.rs
diff --git a/src/services/gcs/uri.rs b/core/src/services/gcs/uri.rs
similarity index 100%
rename from src/services/gcs/uri.rs
rename to core/src/services/gcs/uri.rs
diff --git a/src/services/gcs/writer.rs b/core/src/services/gcs/writer.rs
similarity index 100%
rename from src/services/gcs/writer.rs
rename to core/src/services/gcs/writer.rs
diff --git a/src/services/ghac/backend.rs b/core/src/services/ghac/backend.rs
similarity index 100%
rename from src/services/ghac/backend.rs
rename to core/src/services/ghac/backend.rs
diff --git a/src/services/ghac/error.rs b/core/src/services/ghac/error.rs
similarity index 100%
rename from src/services/ghac/error.rs
rename to core/src/services/ghac/error.rs
diff --git a/src/services/ghac/mod.rs b/core/src/services/ghac/mod.rs
similarity index 100%
rename from src/services/ghac/mod.rs
rename to core/src/services/ghac/mod.rs
diff --git a/src/services/ghac/writer.rs b/core/src/services/ghac/writer.rs
similarity index 100%
rename from src/services/ghac/writer.rs
rename to core/src/services/ghac/writer.rs
diff --git a/src/services/hdfs/backend.rs b/core/src/services/hdfs/backend.rs
similarity index 100%
rename from src/services/hdfs/backend.rs
rename to core/src/services/hdfs/backend.rs
diff --git a/src/services/hdfs/error.rs b/core/src/services/hdfs/error.rs
similarity index 100%
rename from src/services/hdfs/error.rs
rename to core/src/services/hdfs/error.rs
diff --git a/src/services/hdfs/mod.rs b/core/src/services/hdfs/mod.rs
similarity index 100%
rename from src/services/hdfs/mod.rs
rename to core/src/services/hdfs/mod.rs
diff --git a/src/services/hdfs/pager.rs b/core/src/services/hdfs/pager.rs
similarity index 100%
rename from src/services/hdfs/pager.rs
rename to core/src/services/hdfs/pager.rs
diff --git a/src/services/hdfs/writer.rs b/core/src/services/hdfs/writer.rs
similarity index 100%
rename from src/services/hdfs/writer.rs
rename to core/src/services/hdfs/writer.rs
diff --git a/src/services/http/backend.rs b/core/src/services/http/backend.rs
similarity index 100%
rename from src/services/http/backend.rs
rename to core/src/services/http/backend.rs
diff --git a/src/services/http/error.rs b/core/src/services/http/error.rs
similarity index 100%
rename from src/services/http/error.rs
rename to core/src/services/http/error.rs
diff --git a/src/services/http/fixtures/nginx.conf b/core/src/services/http/fixtures/nginx.conf
similarity index 100%
rename from src/services/http/fixtures/nginx.conf
rename to core/src/services/http/fixtures/nginx.conf
diff --git a/src/services/http/mod.rs b/core/src/services/http/mod.rs
similarity index 100%
rename from src/services/http/mod.rs
rename to core/src/services/http/mod.rs
diff --git a/src/services/ipfs/backend.rs b/core/src/services/ipfs/backend.rs
similarity index 100%
rename from src/services/ipfs/backend.rs
rename to core/src/services/ipfs/backend.rs
diff --git a/src/services/ipfs/error.rs b/core/src/services/ipfs/error.rs
similarity index 100%
rename from src/services/ipfs/error.rs
rename to core/src/services/ipfs/error.rs
diff --git a/src/services/ipfs/ipld.rs b/core/src/services/ipfs/ipld.rs
similarity index 100%
rename from src/services/ipfs/ipld.rs
rename to core/src/services/ipfs/ipld.rs
diff --git a/src/services/ipfs/mod.rs b/core/src/services/ipfs/mod.rs
similarity index 100%
rename from src/services/ipfs/mod.rs
rename to core/src/services/ipfs/mod.rs
diff --git a/src/services/ipmfs/backend.rs b/core/src/services/ipmfs/backend.rs
similarity index 100%
rename from src/services/ipmfs/backend.rs
rename to core/src/services/ipmfs/backend.rs
diff --git a/src/services/ipmfs/builder.rs b/core/src/services/ipmfs/builder.rs
similarity index 100%
rename from src/services/ipmfs/builder.rs
rename to core/src/services/ipmfs/builder.rs
diff --git a/src/services/ipmfs/error.rs b/core/src/services/ipmfs/error.rs
similarity index 100%
rename from src/services/ipmfs/error.rs
rename to core/src/services/ipmfs/error.rs
diff --git a/src/services/ipmfs/mod.rs b/core/src/services/ipmfs/mod.rs
similarity index 100%
rename from src/services/ipmfs/mod.rs
rename to core/src/services/ipmfs/mod.rs
diff --git a/src/services/ipmfs/pager.rs b/core/src/services/ipmfs/pager.rs
similarity index 100%
rename from src/services/ipmfs/pager.rs
rename to core/src/services/ipmfs/pager.rs
diff --git a/src/services/ipmfs/writer.rs b/core/src/services/ipmfs/writer.rs
similarity index 100%
rename from src/services/ipmfs/writer.rs
rename to core/src/services/ipmfs/writer.rs
diff --git a/src/services/memcached/MIT-ascii.txt b/core/src/services/memcached/MIT-ascii.txt
similarity index 100%
rename from src/services/memcached/MIT-ascii.txt
rename to core/src/services/memcached/MIT-ascii.txt
diff --git a/src/services/memcached/ascii.rs b/core/src/services/memcached/ascii.rs
similarity index 100%
rename from src/services/memcached/ascii.rs
rename to core/src/services/memcached/ascii.rs
diff --git a/src/services/memcached/backend.rs b/core/src/services/memcached/backend.rs
similarity index 100%
rename from src/services/memcached/backend.rs
rename to core/src/services/memcached/backend.rs
diff --git a/src/services/memcached/mod.rs b/core/src/services/memcached/mod.rs
similarity index 100%
rename from src/services/memcached/mod.rs
rename to core/src/services/memcached/mod.rs
diff --git a/src/services/memory/backend.rs b/core/src/services/memory/backend.rs
similarity index 100%
rename from src/services/memory/backend.rs
rename to core/src/services/memory/backend.rs
diff --git a/src/services/memory/mod.rs b/core/src/services/memory/mod.rs
similarity index 100%
rename from src/services/memory/mod.rs
rename to core/src/services/memory/mod.rs
diff --git a/src/services/mod.rs b/core/src/services/mod.rs
similarity index 100%
rename from src/services/mod.rs
rename to core/src/services/mod.rs
diff --git a/src/services/moka/backend.rs b/core/src/services/moka/backend.rs
similarity index 100%
rename from src/services/moka/backend.rs
rename to core/src/services/moka/backend.rs
diff --git a/src/services/moka/mod.rs b/core/src/services/moka/mod.rs
similarity index 100%
rename from src/services/moka/mod.rs
rename to core/src/services/moka/mod.rs
diff --git a/src/services/obs/backend.rs b/core/src/services/obs/backend.rs
similarity index 100%
rename from src/services/obs/backend.rs
rename to core/src/services/obs/backend.rs
diff --git a/src/services/obs/error.rs b/core/src/services/obs/error.rs
similarity index 100%
rename from src/services/obs/error.rs
rename to core/src/services/obs/error.rs
diff --git a/src/services/obs/mod.rs b/core/src/services/obs/mod.rs
similarity index 100%
rename from src/services/obs/mod.rs
rename to core/src/services/obs/mod.rs
diff --git a/src/services/obs/pager.rs b/core/src/services/obs/pager.rs
similarity index 100%
rename from src/services/obs/pager.rs
rename to core/src/services/obs/pager.rs
diff --git a/src/services/obs/writer.rs b/core/src/services/obs/writer.rs
similarity index 100%
rename from src/services/obs/writer.rs
rename to core/src/services/obs/writer.rs
diff --git a/src/services/oss/backend.rs b/core/src/services/oss/backend.rs
similarity index 100%
rename from src/services/oss/backend.rs
rename to core/src/services/oss/backend.rs
diff --git a/src/services/oss/error.rs b/core/src/services/oss/error.rs
similarity index 100%
rename from src/services/oss/error.rs
rename to core/src/services/oss/error.rs
diff --git a/src/services/oss/mod.rs b/core/src/services/oss/mod.rs
similarity index 100%
rename from src/services/oss/mod.rs
rename to core/src/services/oss/mod.rs
diff --git a/src/services/oss/pager.rs b/core/src/services/oss/pager.rs
similarity index 100%
rename from src/services/oss/pager.rs
rename to core/src/services/oss/pager.rs
diff --git a/src/services/oss/writer.rs b/core/src/services/oss/writer.rs
similarity index 100%
rename from src/services/oss/writer.rs
rename to core/src/services/oss/writer.rs
diff --git a/src/services/redis/backend.rs b/core/src/services/redis/backend.rs
similarity index 100%
rename from src/services/redis/backend.rs
rename to core/src/services/redis/backend.rs
diff --git a/src/services/redis/mod.rs b/core/src/services/redis/mod.rs
similarity index 100%
rename from src/services/redis/mod.rs
rename to core/src/services/redis/mod.rs
diff --git a/src/services/rocksdb/backend.rs b/core/src/services/rocksdb/backend.rs
similarity index 100%
rename from src/services/rocksdb/backend.rs
rename to core/src/services/rocksdb/backend.rs
diff --git a/src/services/rocksdb/mod.rs b/core/src/services/rocksdb/mod.rs
similarity index 100%
rename from src/services/rocksdb/mod.rs
rename to core/src/services/rocksdb/mod.rs
diff --git a/src/services/s3/backend.rs b/core/src/services/s3/backend.rs
similarity index 100%
rename from src/services/s3/backend.rs
rename to core/src/services/s3/backend.rs
diff --git a/src/services/s3/compatible_services.md b/core/src/services/s3/compatible_services.md
similarity index 100%
rename from src/services/s3/compatible_services.md
rename to core/src/services/s3/compatible_services.md
diff --git a/src/services/s3/error.rs b/core/src/services/s3/error.rs
similarity index 100%
rename from src/services/s3/error.rs
rename to core/src/services/s3/error.rs
diff --git a/src/services/s3/mod.rs b/core/src/services/s3/mod.rs
similarity index 100%
rename from src/services/s3/mod.rs
rename to core/src/services/s3/mod.rs
diff --git a/src/services/s3/pager.rs b/core/src/services/s3/pager.rs
similarity index 100%
rename from src/services/s3/pager.rs
rename to core/src/services/s3/pager.rs
diff --git a/src/services/s3/writer.rs b/core/src/services/s3/writer.rs
similarity index 100%
rename from src/services/s3/writer.rs
rename to core/src/services/s3/writer.rs
diff --git a/src/services/sled/backend.rs b/core/src/services/sled/backend.rs
similarity index 100%
rename from src/services/sled/backend.rs
rename to core/src/services/sled/backend.rs
diff --git a/src/services/sled/mod.rs b/core/src/services/sled/mod.rs
similarity index 100%
rename from src/services/sled/mod.rs
rename to core/src/services/sled/mod.rs
diff --git a/src/services/webdav/backend.rs b/core/src/services/webdav/backend.rs
similarity index 100%
rename from src/services/webdav/backend.rs
rename to core/src/services/webdav/backend.rs
diff --git a/src/services/webdav/error.rs b/core/src/services/webdav/error.rs
similarity index 100%
rename from src/services/webdav/error.rs
rename to core/src/services/webdav/error.rs
diff --git a/src/services/webdav/fixtures/htpasswd b/core/src/services/webdav/fixtures/htpasswd
similarity index 100%
rename from src/services/webdav/fixtures/htpasswd
rename to core/src/services/webdav/fixtures/htpasswd
diff --git a/src/services/webdav/fixtures/nginx-with-basic-auth.conf b/core/src/services/webdav/fixtures/nginx-with-basic-auth.conf
similarity index 100%
rename from src/services/webdav/fixtures/nginx-with-basic-auth.conf
rename to core/src/services/webdav/fixtures/nginx-with-basic-auth.conf
diff --git a/src/services/webdav/fixtures/nginx.conf b/core/src/services/webdav/fixtures/nginx.conf
similarity index 100%
rename from src/services/webdav/fixtures/nginx.conf
rename to core/src/services/webdav/fixtures/nginx.conf
diff --git a/src/services/webdav/list_response.rs b/core/src/services/webdav/list_response.rs
similarity index 100%
rename from src/services/webdav/list_response.rs
rename to core/src/services/webdav/list_response.rs
diff --git a/src/services/webdav/mod.rs b/core/src/services/webdav/mod.rs
similarity index 100%
rename from src/services/webdav/mod.rs
rename to core/src/services/webdav/mod.rs
diff --git a/src/services/webdav/pager.rs b/core/src/services/webdav/pager.rs
similarity index 100%
rename from src/services/webdav/pager.rs
rename to core/src/services/webdav/pager.rs
diff --git a/src/services/webdav/writer.rs b/core/src/services/webdav/writer.rs
similarity index 100%
rename from src/services/webdav/writer.rs
rename to core/src/services/webdav/writer.rs
diff --git a/src/services/webhdfs/backend.rs b/core/src/services/webhdfs/backend.rs
similarity index 100%
rename from src/services/webhdfs/backend.rs
rename to core/src/services/webhdfs/backend.rs
diff --git a/src/services/webhdfs/error.rs b/core/src/services/webhdfs/error.rs
similarity index 100%
rename from src/services/webhdfs/error.rs
rename to core/src/services/webhdfs/error.rs
diff --git a/src/services/webhdfs/message.rs b/core/src/services/webhdfs/message.rs
similarity index 100%
rename from src/services/webhdfs/message.rs
rename to core/src/services/webhdfs/message.rs
diff --git a/src/services/webhdfs/mod.rs b/core/src/services/webhdfs/mod.rs
similarity index 100%
rename from src/services/webhdfs/mod.rs
rename to core/src/services/webhdfs/mod.rs
diff --git a/src/services/webhdfs/pager.rs b/core/src/services/webhdfs/pager.rs
similarity index 100%
rename from src/services/webhdfs/pager.rs
rename to core/src/services/webhdfs/pager.rs
diff --git a/src/services/webhdfs/writer.rs b/core/src/services/webhdfs/writer.rs
similarity index 100%
rename from src/services/webhdfs/writer.rs
rename to core/src/services/webhdfs/writer.rs
diff --git a/src/types/builder.rs b/core/src/types/builder.rs
similarity index 100%
rename from src/types/builder.rs
rename to core/src/types/builder.rs
diff --git a/src/types/entry.rs b/core/src/types/entry.rs
similarity index 100%
rename from src/types/entry.rs
rename to core/src/types/entry.rs
diff --git a/src/types/error.rs b/core/src/types/error.rs
similarity index 100%
rename from src/types/error.rs
rename to core/src/types/error.rs
diff --git a/src/types/list.rs b/core/src/types/list.rs
similarity index 100%
rename from src/types/list.rs
rename to core/src/types/list.rs
diff --git a/src/types/metadata.rs b/core/src/types/metadata.rs
similarity index 100%
rename from src/types/metadata.rs
rename to core/src/types/metadata.rs
diff --git a/src/types/mod.rs b/core/src/types/mod.rs
similarity index 100%
rename from src/types/mod.rs
rename to core/src/types/mod.rs
diff --git a/src/types/mode.rs b/core/src/types/mode.rs
similarity index 100%
rename from src/types/mode.rs
rename to core/src/types/mode.rs
diff --git a/src/types/operator/blocking_operator.rs b/core/src/types/operator/blocking_operator.rs
similarity index 100%
rename from src/types/operator/blocking_operator.rs
rename to core/src/types/operator/blocking_operator.rs
diff --git a/src/types/operator/builder.rs b/core/src/types/operator/builder.rs
similarity index 100%
rename from src/types/operator/builder.rs
rename to core/src/types/operator/builder.rs
diff --git a/src/types/operator/metadata.rs b/core/src/types/operator/metadata.rs
similarity index 100%
rename from src/types/operator/metadata.rs
rename to core/src/types/operator/metadata.rs
diff --git a/src/types/operator/mod.rs b/core/src/types/operator/mod.rs
similarity index 100%
rename from src/types/operator/mod.rs
rename to core/src/types/operator/mod.rs
diff --git a/src/types/operator/operator.rs b/core/src/types/operator/operator.rs
similarity index 100%
rename from src/types/operator/operator.rs
rename to core/src/types/operator/operator.rs
diff --git a/src/types/ops.rs b/core/src/types/ops.rs
similarity index 100%
rename from src/types/ops.rs
rename to core/src/types/ops.rs
diff --git a/src/types/reader.rs b/core/src/types/reader.rs
similarity index 100%
rename from src/types/reader.rs
rename to core/src/types/reader.rs
diff --git a/src/types/scheme.rs b/core/src/types/scheme.rs
similarity index 100%
rename from src/types/scheme.rs
rename to core/src/types/scheme.rs
diff --git a/src/types/writer.rs b/core/src/types/writer.rs
similarity index 100%
rename from src/types/writer.rs
rename to core/src/types/writer.rs
diff --git a/tests/behavior/README.md b/core/tests/behavior/README.md
similarity index 100%
rename from tests/behavior/README.md
rename to core/tests/behavior/README.md
diff --git a/tests/behavior/blocking_list.rs b/core/tests/behavior/blocking_list.rs
similarity index 100%
rename from tests/behavior/blocking_list.rs
rename to core/tests/behavior/blocking_list.rs
diff --git a/tests/behavior/blocking_read.rs b/core/tests/behavior/blocking_read.rs
similarity index 100%
rename from tests/behavior/blocking_read.rs
rename to core/tests/behavior/blocking_read.rs
diff --git a/tests/behavior/blocking_write.rs b/core/tests/behavior/blocking_write.rs
similarity index 100%
rename from tests/behavior/blocking_write.rs
rename to core/tests/behavior/blocking_write.rs
diff --git a/tests/behavior/list.rs b/core/tests/behavior/list.rs
similarity index 100%
rename from tests/behavior/list.rs
rename to core/tests/behavior/list.rs
diff --git a/tests/behavior/list_only.rs b/core/tests/behavior/list_only.rs
similarity index 100%
rename from tests/behavior/list_only.rs
rename to core/tests/behavior/list_only.rs
diff --git a/tests/behavior/main.rs b/core/tests/behavior/main.rs
similarity index 100%
rename from tests/behavior/main.rs
rename to core/tests/behavior/main.rs
diff --git a/tests/behavior/presign.rs b/core/tests/behavior/presign.rs
similarity index 100%
rename from tests/behavior/presign.rs
rename to core/tests/behavior/presign.rs
diff --git a/tests/behavior/read_only.rs b/core/tests/behavior/read_only.rs
similarity index 100%
rename from tests/behavior/read_only.rs
rename to core/tests/behavior/read_only.rs
diff --git a/tests/behavior/utils.rs b/core/tests/behavior/utils.rs
similarity index 100%
rename from tests/behavior/utils.rs
rename to core/tests/behavior/utils.rs
diff --git a/tests/behavior/write.rs b/core/tests/behavior/write.rs
similarity index 100%
rename from tests/behavior/write.rs
rename to core/tests/behavior/write.rs
diff --git a/tests/data/normal_dir/.gitkeep b/core/tests/data/normal_dir/.gitkeep
similarity index 100%
rename from tests/data/normal_dir/.gitkeep
rename to core/tests/data/normal_dir/.gitkeep
diff --git a/tests/data/normal_file b/core/tests/data/normal_file
similarity index 100%
rename from tests/data/normal_file
rename to core/tests/data/normal_file
diff --git a/tests/data/special_dir  !@#$%^&()_+-=;',/.gitkeep b/core/tests/data/special_dir  !@#$%^&()_+-=;',/.gitkeep
similarity index 100%
rename from tests/data/special_dir  !@#$%^&()_+-=;',/.gitkeep
rename to core/tests/data/special_dir  !@#$%^&()_+-=;',/.gitkeep
diff --git a/tests/data/special_file  !@#$%^&()_+-=;', b/core/tests/data/special_file  !@#$%^&()_+-=;',
similarity index 100%
rename from tests/data/special_file  !@#$%^&()_+-=;',
rename to core/tests/data/special_file  !@#$%^&()_+-=;',