diff --git a/COMMUNITY.md b/COMMUNITY.md index c51d41e9d..8755761d5 100644 --- a/COMMUNITY.md +++ b/COMMUNITY.md @@ -30,7 +30,8 @@ Follow [@ApacheTeaclave](https://twitter.com/ApacheTeaclave). Teaclave is open source in [The Apache Way](https://www.apache.org/theapacheway/), we aim to create a project that is maintained and owned by the community. All -kinds of contributions are welcome. +kinds of contributions are welcome. Read this [document](CONTRIBUTING.md) to +learn more about how to contribute. Huge thanks to our [contributors](CONTRIBUTORS.md). ## Organizations and Projects diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..3a3ea988f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,32 @@ +--- +permalink: /contributing +--- + +# Contributing to Teaclave + +As an open-source community, we welcome all kinds of contributions. You can +contribute to Teaclave in many ways: reporting issues, requesting new features, +proposing better designs, fixing bugs, implementing functions, improving +documents, trying novel research ideas or even by simply using and promoting +this project. + +## Submit Issues + +We prefer to use GitHub issues for almost everything about the project +development such as issues tracking, features, design proposals, announcements, +community communications, etc. Free feel to open an issue if you meet bugs or +want to propose features. + +## Send Pull Requests + +This is a basic instruction to send a pull request to Teaclave. + +1. Fork the repository on GitHub. +2. Create a new branch for the feature or bugfix. +3. Make changes. +4. Test. The `make run-tests` command will run all test case. +5. Make sure to format and lint the code. You can use `make format` to format + code inplace, and `make CLI=1` to lint Rust code with Rust clippy. +6. Commit/push the changes and send a pull request on GitHub. Please kindly + write some background and details for this PR (we also provide a PR template + to guild you with writing a high-quality pull request). diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index d52816fdf..98c06aba1 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -67,6 +67,7 @@ List of external contributors of Teaclave and Teaclave SGX SDK (in alphabetical - [garbageslam](https://github.com/garbageslam) - [lhf](https://github.com/EighteenZi) - [luoyanhua2011](https://github.com/luoyanhua2011) + - [lyj](https://github.com/lengyijun) - [piotr-roslaniec](https://github.com/piotr-roslaniec) - [volcano](https://github.com/volcano0dr) - [zEqueue](https://github.com/z1queue) diff --git a/README.md b/README.md index 56774d13f..2dbb2f7dd 100644 --- a/README.md +++ b/README.md @@ -47,11 +47,13 @@ platform, making computation on privacy-sensitive data safe and simple. - [Attestation](attestation) - [Built-in Functions](function) +- [Client SDK](sdk) - [Command Line Tool](cli) - [Configurations in Teaclave](config) - [Data Center Attestation Service](dcap) - [Dockerfile and Compose File](docker) - [Examples](examples) +- [Executor Runtime](runtime) - [File Agent](file_agent) - [Function Executors](executor) - [Keys and Certificates](keys) @@ -65,7 +67,8 @@ platform, making computation on privacy-sensitive data safe and simple. Teaclave is open source in [The Apache Way](https://www.apache.org/theapacheway/), we aim to create a project that is maintained and owned by the community. All -kinds of contributions are welcome. Thanks to our [contributors](CONTRIBUTORS.md). +kinds of contributions are welcome. Read this [document](CONTRIBUTING.md) to +learn more about how to contribute. Thanks to our [contributors](CONTRIBUTORS.md). ## Community diff --git a/runtime/README.md b/runtime/README.md new file mode 100644 index 000000000..bad651acc --- /dev/null +++ b/runtime/README.md @@ -0,0 +1,14 @@ +--- +permalink: /runtime +--- + +# Executor Runtime + +This directory contains implementations of executor's runtime. The executor +runtime provides interfaces (I/O) between executors (in trusted execution +environment) and external components (in untrusted world like file system). The +interfaces are defined in the `TeaclaveRuntime` traits. Currently, we have two +runtime implementations: `DefaultRuntime` and `RawIoRuntime`. By default, +Teaclave provides a runtime called `DefaultRuntime`, which bridges interfaces to +our secure file system implementation (i.e., *protected file*). While +`RawIoRuntime` is only for debugging, which does not encrypt any I/O. diff --git a/sdk/README.md b/sdk/README.md index 5a4353618..5284ec364 100644 --- a/sdk/README.md +++ b/sdk/README.md @@ -1 +1,10 @@ -sdk +--- +permalink: /sdk +--- + +# Client SDK + +This directory provides Teaclave client SDK in different languages. Developers +can uses the SDK to establish trusted channel with Teaclave services, send +requests via RPC, etc. Please refer to the +[document for examples](../examples/README.md) to learn more about the usages. diff --git a/services/README.md b/services/README.md index f00a73220..ad6c6ca62 100644 --- a/services/README.md +++ b/services/README.md @@ -38,6 +38,24 @@ a safe and secure FaaS platform. scheduler service to complete tasks. There could be many execution service instances (or nodes) with different capabilities deployed in a cloud infrastructure. + +## Structure + +A service is consist of two parts: app (untrusted) and enclave (trusted). The +app part is responsible for launching and terminating the service, which the +enclave part is to serve RPC requests from trusted channels. Typically, a service's +implementation contains two important structs and one trait. Let's take the +frontend service as an example. + +- `TeaclaveFrontendService` (struct): Define properties or configurations along + with the lifetime of the service. For example, the frontend service need to + hold clients (with established trusted channels) to communicate with the + authentication service and management service. +- `TeaclaveFrontendError` (struct): Define errors which may occur in this + service, authentication error, for example. +- `TeaclaveFrontend` (trait): Define functions (requests) the service need to + handle. The trait will be automatically derived from definitions in the + ProtoBuf file and can be imported from the `teaclave_proto` crate. ## RPC and Protocols