Skip to content

Commit b875a98

Browse files
Xuanwonastra
andauthored
docs: Add CONTRIBUTING and finish project setup (#7)
* docs: Add CONTRIBUTING and finish project setup Signed-off-by: Xuanwo <[email protected]> * Fix license Signed-off-by: Xuanwo <[email protected]> * Update notice Signed-off-by: Xuanwo <[email protected]> * Remove the requirement of issues Signed-off-by: Xuanwo <[email protected]> * chore: Add licenses for markdown files Signed-off-by: Xuanwo <[email protected]> * Add licenses for md Signed-off-by: Xuanwo <[email protected]> * Update CONTRIBUTING.md Co-authored-by: Eduard Tudenhoefner <[email protected]> * Add link to slack Signed-off-by: Xuanwo <[email protected]> * polish Signed-off-by: Xuanwo <[email protected]> --------- Signed-off-by: Xuanwo <[email protected]> Co-authored-by: Eduard Tudenhoefner <[email protected]>
1 parent 1c7a93d commit b875a98

File tree

8 files changed

+264
-2
lines changed

8 files changed

+264
-2
lines changed

.devcontainer/devcontainer.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "Iceberg Rust",
3+
"image": "mcr.microsoft.com/devcontainers/rust:bullseye",
4+
"customizations": {
5+
"vscode": {
6+
"extensions": [
7+
"rust-lang.rust-analyzer"
8+
],
9+
"settings": {
10+
"editor.formatOnSave": true,
11+
"files.exclude": {
12+
"**/LICENSE": true
13+
}
14+
}
15+
}
16+
}
17+
}

.github/workflows/ci_typos.yml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
name: Typos Check
19+
20+
on:
21+
push:
22+
branches:
23+
- main
24+
pull_request:
25+
branches:
26+
- main
27+
28+
concurrency:
29+
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
30+
cancel-in-progress: true
31+
32+
env:
33+
RUST_BACKTRACE: 1
34+
35+
jobs:
36+
typos-check:
37+
name: typos check
38+
runs-on: ubuntu-latest
39+
timeout-minutes: 10
40+
env:
41+
FORCE_COLOR: 1
42+
steps:
43+
- uses: actions/checkout@v3
44+
- run: curl -LsSf https://github.com/crate-ci/typos/releases/download/v1.14.8/typos-v1.14.8-x86_64-unknown-linux-musl.tar.gz | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin
45+
46+
- name: do typos check with typos-cli
47+
run: typos

.licenserc.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@ header:
2323
paths-ignore:
2424
- 'LICENSE'
2525
- 'NOTICE'
26-
- '**/*.md'
26+
- '**/*.json'
2727

2828
comment: on-failure

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<!--
2+
~ Licensed to the Apache Software Foundation (ASF) under one
3+
~ or more contributor license agreements. See the NOTICE file
4+
~ distributed with this work for additional information
5+
~ regarding copyright ownership. The ASF licenses this file
6+
~ to you under the Apache License, Version 2.0 (the
7+
~ "License"); you may not use this file except in compliance
8+
~ with the License. You may obtain a copy of the License at
9+
~
10+
~ http://www.apache.org/licenses/LICENSE-2.0
11+
~
12+
~ Unless required by applicable law or agreed to in writing,
13+
~ software distributed under the License is distributed on an
14+
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
~ KIND, either express or implied. See the License for the
16+
~ specific language governing permissions and limitations
17+
~ under the License.
18+
-->
19+
20+
# Change Log
21+
22+
All notable changes to this project will be documented in this file.
23+
24+
The format is based on [Keep a Changelog](https://keepachangelog.com/)
25+
and this project adheres to [Semantic Versioning](https://semver.org/).
26+
27+
## Unreleased

CONTRIBUTING.md

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
<!--
2+
~ Licensed to the Apache Software Foundation (ASF) under one
3+
~ or more contributor license agreements. See the NOTICE file
4+
~ distributed with this work for additional information
5+
~ regarding copyright ownership. The ASF licenses this file
6+
~ to you under the Apache License, Version 2.0 (the
7+
~ "License"); you may not use this file except in compliance
8+
~ with the License. You may obtain a copy of the License at
9+
~
10+
~ http://www.apache.org/licenses/LICENSE-2.0
11+
~
12+
~ Unless required by applicable law or agreed to in writing,
13+
~ software distributed under the License is distributed on an
14+
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
~ KIND, either express or implied. See the License for the
16+
~ specific language governing permissions and limitations
17+
~ under the License.
18+
-->
19+
20+
# Contributing
21+
22+
First, thank you for contributing to Iceberg Rust! The goal of this document is to provide everything you need to start contributing to iceberg-rust. The following TOC is sorted progressively, starting with the basics and expanding into more specifics.
23+
24+
- [Your First Contribution](#your-first-contribution)
25+
- [Workflow](#workflow)
26+
- [Git Branches](#git-branches)
27+
- [GitHub Pull Requests](#github-pull-requests)
28+
- [Title](#title)
29+
- [Reviews & Approvals](#reviews--approvals)
30+
- [Merge Style](#merge-style)
31+
- [CI](#ci)
32+
- [Setup](#setup)
33+
- [Using a dev container environment](#using-a-dev-container-environment)
34+
- [Bring your own toolbox](#bring-your-own-toolbox)
35+
- [Code of Conduct](#code-of-conduct)
36+
37+
## Your First Contribution
38+
39+
1. [Fork the iceberg-rust repository](https://github.com/apache/iceberg-rust/fork) into your own GitHub account.
40+
1. [Create a new Git branch](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository).
41+
1. Make your changes.
42+
1. [Submit the branch as a pull request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork) to the main iceberg-rust repo. An iceberg-rust team member should comment and/or review your pull request within a few days. Although, depending on the circumstances, it may take longer.
43+
44+
## Workflow
45+
46+
### Git Branches
47+
48+
*All* changes must be made in a branch and submitted as [pull requests](#github-pull-requests). iceberg-rust does not adopt any type of branch naming style, but please use something descriptive of your changes.
49+
50+
### GitHub Pull Requests
51+
52+
Once your changes are ready you must submit your branch as a [pull request](https://github.com/apache/iceberg-rust/pulls).
53+
54+
#### Title
55+
56+
The pull request title must follow the format outlined in the [conventional commits spec](https://www.conventionalcommits.org). [Conventional commits](https://www.conventionalcommits.org) is a standardized format for commit messages. iceberg-rust only requires this format for commits on the `main` branch. And because iceberg-rust squashes commits before merging branches, this means that only the pull request title must conform to this format.
57+
58+
The following are all good examples of pull request titles:
59+
60+
```text
61+
feat(schema): Add last_updated_ms in schema
62+
docs: add hdfs classpath related troubleshoot
63+
ci: Mark job as skipped if owner is not apache
64+
fix(schema): Ignore prefix if it's empty
65+
refactor: Polish the implementation of read parquet
66+
```
67+
68+
#### Reviews & Approvals
69+
70+
All pull requests should be reviewed by at least one iceberg-rust committer.
71+
72+
#### Merge Style
73+
74+
All pull requests are squash merged. We generally discourage large pull requests that are over 300-500 lines of diff. If you would like to propose a change that is larger we suggest coming onto [Iceberg's DEV mailing list](mailto:[email protected]) or [Slack #rust Channel](https://join.slack.com/t/apache-iceberg/shared_invite/zt-1zbov3k6e-KtJfoaxp97YfX6dPz1Bk7A) and discuss it with us. This way we can talk through the solution and discuss if a change that large is even needed! This will produce a quicker response to the change and likely produce code that aligns better with our process.
75+
76+
### CI
77+
78+
Currently, iceberg-rust uses GitHub Actions to run tests. The workflows are defined in `.github/workflows`.
79+
80+
## Setup
81+
82+
For small or first-time contributions, we recommend the dev container method. Prefer to do it yourself? That's fine too!
83+
84+
### Using a dev container environment
85+
86+
iceberg-rust provides a pre-configured [dev container](https://containers.dev/) that could be used in [Github Codespaces](https://github.com/features/codespaces), [VSCode](https://code.visualstudio.com/), [JetBrains](https://www.jetbrains.com/remote-development/gateway/), [JuptyerLab](https://jupyterlab.readthedocs.io/en/stable/). Please pick up your favourite runtime environment.
87+
88+
The fastest way is:
89+
90+
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/apache/iceberg-rust?quickstart=1&machine=standardLinux32gb)
91+
92+
### Bring your own toolbox
93+
94+
iceberg-rust is primarily a Rust project. To build iceberg-rust, you will need to set up Rust development first. We highly recommend using [rustup](https://rustup.rs/) for the setup process.
95+
96+
For Linux or MacOS, use the following command:
97+
98+
```shell
99+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
100+
```
101+
102+
For Windows, download `rustup-init.exe` from [here](https://win.rustup.rs/x86_64) instead.
103+
104+
Rustup will read iceberg-rust's `rust-toolchain.toml` and set up everything else automatically. To ensure that everything works correctly, run `cargo version` under iceberg-rust's root directory:
105+
106+
```shell
107+
$ cargo version
108+
cargo 1.69.0 (6e9a83356 2023-04-12)
109+
```
110+
111+
## Code of Conduct
112+
113+
We expect all community members to follow our [Code of Conduct](https://www.apache.org/foundation/policies/conduct.html).

NOTICE

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Apache Iceberg Rust
2+
Copyright 2023 The Apache Software Foundation
3+
4+
This product includes software developed at
5+
The Apache Software Foundation (http://www.apache.org/).

README.md

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,35 @@
1-
# Native Rust implementation of Apache Iceberg
1+
<!--
2+
~ Licensed to the Apache Software Foundation (ASF) under one
3+
~ or more contributor license agreements. See the NOTICE file
4+
~ distributed with this work for additional information
5+
~ regarding copyright ownership. The ASF licenses this file
6+
~ to you under the Apache License, Version 2.0 (the
7+
~ "License"); you may not use this file except in compliance
8+
~ with the License. You may obtain a copy of the License at
9+
~
10+
~ http://www.apache.org/licenses/LICENSE-2.0
11+
~
12+
~ Unless required by applicable law or agreed to in writing,
13+
~ software distributed under the License is distributed on an
14+
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
~ KIND, either express or implied. See the License for the
16+
~ specific language governing permissions and limitations
17+
~ under the License.
18+
-->
19+
20+
# Apache Iceberg Rust
21+
22+
Native Rust implementation of [Apache Iceberg](https://iceberg.apache.org/).
23+
24+
## Contribute
25+
26+
Iceberg is an active open-source project. We are always open to people who want to use it or contribute to it. Here are some ways to go.
27+
28+
- Start with [Contributing Guide](CONTRIBUTING.md).
29+
- Submit [Issues](https://github.com/apache/iceberg-rust/issues/new) for bug report or feature requests.
30+
- Discuss at [dev mailing list](mailto:[email protected]) ([subscribe](mailto:[email protected]?subject=(send%20this%20email%20to%20subscribe)) / [unsubscribe](mailto:[email protected]?subject=(send%20this%20email%20to%20unsubscribe)) / [archives](https://lists.apache.org/[email protected]))
31+
- Talk to community directly at [Slack #rust channel](https://join.slack.com/t/apache-iceberg/shared_invite/zt-1zbov3k6e-KtJfoaxp97YfX6dPz1Bk7A).
32+
33+
## License
34+
35+
Licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)

rustfmt.toml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
edition = "2021"
19+
reorder_imports = true

0 commit comments

Comments
 (0)