Skip to content

Commit ac26fce

Browse files
committed
Squash history
0 parents  commit ac26fce

363 files changed

Lines changed: 85960 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CODE_OF_CONDUCT.md

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
2+
# Contributor Covenant Code of Conduct
3+
4+
## Our Pledge
5+
6+
We as members, contributors, and leaders pledge to make participation in our
7+
community a harassment-free experience for everyone, regardless of age, body
8+
size, visible or invisible disability, ethnicity, sex characteristics, gender
9+
identity and expression, level of experience, education, socio-economic status,
10+
nationality, personal appearance, race, religion, or sexual identity
11+
and orientation.
12+
13+
We pledge to act and interact in ways that contribute to an open, welcoming,
14+
diverse, inclusive, and healthy community.
15+
16+
## Our Standards
17+
18+
Examples of behavior that contributes to a positive environment for our
19+
community include:
20+
21+
* Demonstrating empathy and kindness toward other people
22+
* Being respectful of differing opinions, viewpoints, and experiences
23+
* Giving and gracefully accepting constructive feedback
24+
* Accepting responsibility and apologizing to those affected by our mistakes,
25+
and learning from the experience
26+
* Focusing on what is best not just for us as individuals, but for the
27+
overall community
28+
29+
Examples of unacceptable behavior include:
30+
31+
* The use of sexualized language or imagery, and sexual attention or
32+
advances of any kind
33+
* Trolling, insulting or derogatory comments, and personal or political attacks
34+
* Public or private harassment
35+
* Publishing others' private information, such as a physical or email
36+
address, without their explicit permission
37+
* Other conduct which could reasonably be considered inappropriate in a
38+
professional setting
39+
40+
## Enforcement Responsibilities
41+
42+
Community leaders are responsible for clarifying and enforcing our standards of
43+
acceptable behavior and will take appropriate and fair corrective action in
44+
response to any behavior that they deem inappropriate, threatening, offensive,
45+
or harmful.
46+
47+
Community leaders have the right and responsibility to remove, edit, or reject
48+
comments, commits, code, wiki edits, issues, and other contributions that are
49+
not aligned to this Code of Conduct, and will communicate reasons for moderation
50+
decisions when appropriate.
51+
52+
## Scope
53+
54+
This Code of Conduct applies within all community spaces, and also applies when
55+
an individual is officially representing the community in public spaces.
56+
Examples of representing our community include using an official email address,
57+
posting via an official social media account, or acting as an appointed
58+
representative at an online or offline event.
59+
60+
## Enforcement
61+
62+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
63+
reported to the community leaders responsible for enforcement at
64+
[INSERT CONTACT METHOD].
65+
All complaints will be reviewed and investigated promptly and fairly.
66+
67+
All community leaders are obligated to respect the privacy and security of the
68+
reporter of any incident.
69+
70+
## Enforcement Guidelines
71+
72+
Community leaders will follow these Community Impact Guidelines in determining
73+
the consequences for any action they deem in violation of this Code of Conduct:
74+
75+
### 1. Correction
76+
77+
**Community Impact**: Use of inappropriate language or other behavior deemed
78+
unprofessional or unwelcome in the community.
79+
80+
**Consequence**: A private, written warning from community leaders, providing
81+
clarity around the nature of the violation and an explanation of why the
82+
behavior was inappropriate. A public apology may be requested.
83+
84+
### 2. Warning
85+
86+
**Community Impact**: A violation through a single incident or series
87+
of actions.
88+
89+
**Consequence**: A warning with consequences for continued behavior. No
90+
interaction with the people involved, including unsolicited interaction with
91+
those enforcing the Code of Conduct, for a specified period of time. This
92+
includes avoiding interactions in community spaces as well as external channels
93+
like social media. Violating these terms may lead to a temporary or
94+
permanent ban.
95+
96+
### 3. Temporary Ban
97+
98+
**Community Impact**: A serious violation of community standards, including
99+
sustained inappropriate behavior.
100+
101+
**Consequence**: A temporary ban from any sort of interaction or public
102+
communication with the community for a specified period of time. No public or
103+
private interaction with the people involved, including unsolicited interaction
104+
with those enforcing the Code of Conduct, is allowed during this period.
105+
Violating these terms may lead to a permanent ban.
106+
107+
### 4. Permanent Ban
108+
109+
**Community Impact**: Demonstrating a pattern of violation of community
110+
standards, including sustained inappropriate behavior, harassment of an
111+
individual, or aggression toward or disparagement of classes of individuals.
112+
113+
**Consequence**: A permanent ban from any sort of public interaction within
114+
the community.
115+
116+
## Attribution
117+
118+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
119+
version 2.0, available at
120+
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
121+
122+
Community Impact Guidelines were inspired by
123+
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
124+
125+
For answers to common questions about this code of conduct, see the FAQ at
126+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
127+
at [https://www.contributor-covenant.org/translations][translations].
128+
129+
[homepage]: https://www.contributor-covenant.org
130+
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
131+
[Mozilla CoC]: https://github.com/mozilla/diversity
132+
[FAQ]: https://www.contributor-covenant.org/faq
133+
[translations]: https://www.contributor-covenant.org/translations

CODING_CONVENTIONS.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Coding Conventions used in Rust codebase of Embucket project
2+
3+
## Design Conventions
4+
* Define errors with display messages in dedicated `errors.rs` files. Avoid inlining error texts outside of those files
5+
* Define `Error` enum and `Result<T>` types per crate, with public visibility
6+
* Implement `IntoResponse` trait for top-level error for API crates
7+
* Errors appeared in logs and tracing spans/events should also bring an error stack trace
8+
9+
## Error Handling Conventions
10+
These conventions establish consistent practices for defining and handling errors in Rust crates using the [Snafu](https://docs.rs/snafu) error library, and `error_stack_trace::debug` proc macro enabling error stack trace.
11+
12+
### Error Construction and Propagation
13+
* Derive from `Snafu` when defining error enums
14+
* Use proc macro `error_stack_trace::debug` to enable error stack traces
15+
* Restrict generated Snafu selectors' visibility to crate level: `#[snafu(visibility(pub(crate)))]`
16+
* Avoid constructing errors manually except in rare edge cases (e.g. boxed, non-Snafu, or external errors). Always document the reason when doing so.
17+
* Use Snafu’s helpers doing implicit error conversions under the hood:
18+
* `.context(...)`, also supports chaining
19+
* `.build()`
20+
* `.fail()`
21+
* `.into_error()`
22+
* Do implicit error conversions when propagate errors with `?` operator
23+
* These are preferred over `.map_err(...)` which is generally considered an anti-pattern due to loss of context and less ergonomic traceability
24+
25+
### Defining Errors
26+
Define error enum with `#[derive(Snafu)]` and `#[error_stack_trace::debug]`:
27+
```
28+
#[derive(Snafu)]
29+
#[error_stack_trace::debug]
30+
pub enum Error {...}
31+
```
32+
### Non-Snafu foreign errors
33+
When nesting a non-Snafu foreign error - rename its field from `source` to `error`, and add `#[snafu(source)]` for Snafu context as shown below:
34+
```
35+
#[snafu(source)]
36+
error: ObjectStoreError,
37+
```
38+
### Boxing Large Errors
39+
When `clippy::result_large_err` is triggered, you may box the error variant. Put error into `Box<>` and add `From` trait implementation using:
40+
```
41+
#[snafu(source(from(S3tablesError, Box::new)))]
42+
source: Box<S3tablesError>,
43+
```
44+
Note: With Snafu, most use cases do not require manual boxing or unboxing. Let Snafu manage implicit conversions where possible.
45+
### Transparent Errors
46+
Define transparent error variant to re-use context and display message from the underlying error. No context selectors are generated for transparent errors, as error has no own context. And thus no `.context(...)` call can be used, but it still supports implicit `.into()` conversion, when used with `?`:
47+
```
48+
#[snafu(transparent)]
49+
error: SomeError,
50+
```

CONTRIBUTING.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Contributing
2+
Embucket is a streamlined solution for building and managing an open lakehouse platform based on the Apache Iceberg open table format. This project is designed to be radically simple, focusing on ease of deployment, operation, and maintenance.
3+
4+
5+
When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.
6+
Please note we have a [code of conduct](CODE_OF_CONDUCT.md), please follow it in all your interactions with the project.
7+
8+
We appreciate every contribution, whether it's fixing bugs, improving documentation, or adding new features — your efforts help make this project better for everyone.
9+
10+
11+
## Development environment setup
12+
13+
To set up a development environment, please follow these steps:
14+
15+
1. Clone the Embucket/embucket repository
16+
17+
```sh
18+
git clone https://github.com/Embucket/embucket.git
19+
cd embucket/
20+
```
21+
22+
2. Build the project
23+
```sh
24+
cargo build
25+
```
26+
27+
28+
## Issues and feature requests
29+
30+
You've found a bug in the source code, a mistake in the documentation or maybe you'd like a new feature? You can help us by. Before you create an issue, make sure to search the issue archive [GithubIssues](https://github.com/Embucket/embucket/issues?q=is%3Aissue) your issue may have already been addressed!
31+
32+
Please try to create bug reports that are:
33+
34+
- _Reproducible._ Include steps to reproduce the problem.
35+
- _Specific._ Include as much detail as possible: which version, what environment, etc.
36+
- _Unique._ Do not duplicate existing opened issues.
37+
- _Scoped to a Single Bug._ One bug per report.
38+
39+
**Even better: Submit a pull request with a fix or new feature!**
40+
41+
### How to submit a Pull Request
42+
43+
1. Search our repository for open or closed
44+
[Pull Requests](https://github.com/Embucket/embucket/pulls)
45+
that relate to your submission. You don't want to duplicate effort.
46+
2. Fork the project
47+
3. Create your feature branch (`git checkout -b issueID/new_feature`)
48+
4. Commit your changes (`git commit -m 'issue id: New Feature'`)
49+
5. Push to the branch (`git push origin issueID/new_feature`)
50+
6. [Open a Pull Request](https://github.com/Embucket/embucket/compare?expand=1)
51+
7. Your pull request build must pass (the build will run automatically).
52+
53+
54+
## Coding conventions
55+
56+
When coding in Rust, please follow the [coding conventions](CODING_CONVENTIONS.md).
57+
58+
59+
## Getting Help
60+
For discussions, questions, or collaboration, feel free to reach out via [GitHub Discussions](https://github.com/Embucket/embucket/discussions). We appreciate your contributions and look forward to working with you!

0 commit comments

Comments
 (0)