Compare commits

...
Sign in to create a new pull request.

10 commits

Author SHA1 Message Date
eefc2f9b4b [#28] Add CODEOWNERS
Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2025-02-28 14:50:42 +00:00
c323ebe727 [#30] Add links to API documentation
[documentation_interface]: https://www.bestpractices.dev/en/criteria/0?details=true&rationale=true#0.documentation_interface

Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2025-02-27 15:56:26 +03:00
ff43e162f4 [#18] Add contribution guide
[contribution]: https://www.bestpractices.dev/en/criteria/0?details=true&rationale=true#0.contribution
[contribution_requirements]: https://www.bestpractices.dev/en/criteria/0?details=true&rationale=true#0.contribution_requirements

Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2025-02-27 15:42:28 +03:00
064d96d44c [#23] List primary communication channels
[interact]: https://www.bestpractices.dev/en/criteria/0?details=true&rationale=true#0.interact

(close #23)

Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2025-02-27 15:42:28 +03:00
727a5f7b88 [#22] Add FrostFS description to the site
Besides the fact that's it's required by common sense, having project
description also checks the mark for the FLOSS Best Practises badge:

[description_good]: https://www.bestpractices.dev/en/criteria/0#0.description_good

(close #22)

Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2025-02-18 14:46:05 +03:00
b9481225d5 [#27] Stop using obsolete .github directory
This commit is a part of multi-repo cleanup effort:
TrueCloudLab/frostfs-infra#136

Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2024-11-06 15:21:07 +03:00
576d108b3b [#25] Deploy the site via SSH
Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2024-09-05 12:21:34 +03:00
6190e5a098 [#25] Build the site with Forgejo Actions
Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2024-09-05 12:21:34 +03:00
449a8c33bd [#25] Store hugo binary in versioned path
This will simplify runner cache invalidation
when we will start building the site with CI

Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2024-09-05 12:21:34 +03:00
42cea4b03e update copyright years
Signed-off-by: p.razumov <p.razumov@noreply.frostfs.info>
2024-09-05 08:20:16 +00:00
15 changed files with 342 additions and 15 deletions

View file

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View file

@ -0,0 +1,55 @@
name: build static site
on:
workflow_dispatch:
push:
pull_request:
jobs:
build:
container:
image: node:22-bookworm
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
- uses: actions/cache@v4
with:
path: |-
bin/
themes/
key: hugo-${{ runner.os }}-${{ hashFiles('Makefile', 'config.toml') }}
restore-keys: |
hugo-${{ runner.os }}
hugo
- name: make all
run: |
git submodule sync
rm -rf themes/dot-hugo
make all
- name: Setup SSH environment
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.socket
run: |
umask 0077
mkdir -p ~/.ssh/
ssh-keyscan frostfs.info >> ~/.ssh/known_hosts
ssh-keygen -A # create host keys
ssh-agent -a "$SSH_AUTH_SOCK"
echo "${{ secrets.SSH_DEPLOY_KEY }}" > ~/.ssh/key
stat ~/.ssh/key
ssh-keygen -y -f ~/.ssh/key
ssh-add ~/.ssh/key
rm ~/.ssh/key
- name: make deploy
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
run: |
ssh-add -L
make deploy
env:
SSH_AUTH_SOCK: /tmp/ssh_agent.socket

2
.gitignore vendored
View file

@ -3,7 +3,7 @@
*.log
*.lock
tmp/
bin/hugo
bin/hugo*
public/
resources/_gen

2
.gitmodules vendored
View file

@ -1,4 +1,4 @@
[submodule "themes/dot-hugo"]
path = themes/dot-hugo
url = git@git.frostfs.info:TrueCloudLab/dot-hugo.git
url = https://git.frostfs.info/TrueCloudLab/dot-hugo
branch = frostfs_design_version

3
CODEOWNERS Normal file
View file

@ -0,0 +1,3 @@
.* @TrueCloudLab/architecture-committee
.forgejo/.* @potyarkin
Makefile @potyarkin

View file

@ -3,26 +3,32 @@ SHELL = bash
PUBDIR = public
HUGO_VERSION = 0.91.0
HUGO_BIN ?= bin/hugo
HUGO_BIN ?= bin/hugo-$(HUGO_VERSION)
.PHONY: all clean
all: public
bin/hugo:
bin/hugo-$(HUGO_VERSION):
@wget -q https://github.com/gohugoio/hugo/releases/download/v$(HUGO_VERSION)/hugo_extended_$(HUGO_VERSION)_Linux-64bit.tar.gz -O - |\
tar -xz -C bin/ hugo;
@mv bin/hugo $@
clean:
@rm -rf $(PUBDIR)
@rm -rf tmp
@rm -rf bin/hugo
@rm -rf bin/hugo*
public: submodules bin/hugo
public: submodules $(HUGO_BIN)
@$(HUGO_BIN)
server: submodules bin/hugo
server: submodules $(HUGO_BIN)
@$(HUGO_BIN) server --disableFastRender
submodules:
@git submodule init
@git submodule update --recursive --remote
.PHONY: deploy
deploy:
test -f public/index.html
cd public && tar --gzip --create . | ssh deploy@frostfs.info frostfs.info

View file

@ -1,5 +1,5 @@
<p align="center">
<img src="./.github/logo.svg" width="500px" alt="FrostFS logo">
<img src="./.forgejo/logo.svg" width="500px" alt="FrostFS logo">
</p>
<p align="center">
FrostFS Documentation site

View file

@ -3,7 +3,7 @@ baseURL = 'https://frostfs.info/'
# disable language
disableLanguages = []
title = 'FrostFS site'
title = 'FrostFS'
theme = 'dot-hugo'
enableEmoji = true
@ -49,12 +49,12 @@ link = "https://git.frostfs.info/TrueCloudLab"
languageName = "En"
languageCode = "en-us"
weight = 1
copyright = "Copyright &copy; [TrueCloudLab](https://git.frostfs.info/TrueCloudLab) 2022-2023"
copyright = "Copyright &copy; [TrueCloudLab](https://git.frostfs.info/TrueCloudLab) 2022-2024"
# banner
[Languages.en.params.banner]
title = "FrostFS Documentation site"
subtitle = "Articles and answers from developers and user community"
title = "FrostFS Documentation"
subtitle = "FrostFS is a decentralized distributed object storage integrated with the NEO Blockchain"
#bg_image = "images/header.svg"
placeholder = "Have a question? Just ask here or enter terms"
@ -68,3 +68,13 @@ weight = 1
name = "SDK & API"
url = "api/"
weight = 2
[[Languages.en.menu.main]]
name = "About"
url = "about/"
weight = 3
[[Languages.en.menu.main]]
name = "Contact"
url = "about/contact/"
weight = 4

View file

@ -0,0 +1,59 @@
---
title: "About FrostFS"
description: "Overview of FrostFS architecture and features"
date: "2025-02-18"
icon: "ti-info-alt"
type: "docs"
---
FrostFS is a free and opensource software-defined object storage platfom.
It exposes a bespoke [gRPC API] and provides protocol gateways for [S3] and
[HTTP] (FUSE and sFTP gateways are also planned). Application developers may
connect through gateways or use native FrostFS protocol via first-party SDKs for
[Go], [Java], [C#] and [Python].
FrostFS deploys to a network of nodes which can be distributed planet-wide.
All FrostFS components are designed to operate in untrusted and unstable
networks (exposed to Internet). Integration with [Neo blockchain] provides
battle tested mechanisms for trusted governing, time keeping and consensus
building. Private FrostFS deployments are also possible (using Neo privnet).
FrostFS stores data in objects — arbitrarily large binary blobs and their
assosiated metadata — which are typically assumed to be read or written as a
whole. FrostFS objects are immutable and content-addressable: object
identificators (OIDs) are calculated based on object's data and metadata, for
example: `78sohnudVMnPsczXqsTUcvezosan2YDNVZwDE8Kq5YwU`. Objects are stored
in containers which encapsulate the selected placement policy and some
additional metadata. FrostFS containers are also content-addressable (by CIDs)
and are immutable in a sense that placement policy and container metadata may
not be changed after container creation.
FrostFS ensures storage reliability on multiple levels:
- Data replication and erasure coding provide tolerance for equipment
failures. Users have full control over data placement policies and may
configure a specific failure domain for each container.
- Network isolation and split-brain situations are considered a fact of life
in FrostFS design. Operations will continue as close to normal as possible
both during and after such events, no network-wide rebalance storms will be
triggered. Split-brain and time drift reconciliation happens automatically
in a safe and deterministic fashion.
FrostFS is truly distributed, there is no centralized state or database.
Losing any node means losing only the data it contained (typically recoverable
via replication and/or erasure coding). Adding new nodes is a non-event,
FrostFS allows to grow total storage capacity without any downsides.
FrostFS is developed in the open at
[git.frostfs.info](https://git.frostfs.info/TrueCloudLab/). FrostFS components
are opensource: most are released under GNU GPL 3.0 with the rest under Apache
2.0.
[gRPC API]: https://git.frostfs.info/TrueCloudLab/frostfs-api
[S3]: https://git.frostfs.info/TrueCloudLab/frostfs-s3-gw
[HTTP]: https://git.frostfs.info/TrueCloudLab/frostfs-http-gw
[Go]: https://git.frostfs.info/TrueCloudLab/frostfs-sdk-go
[Java]: https://git.frostfs.info/TrueCloudLab/frostfs-sdk-java
[C#]: https://git.frostfs.info/TrueCloudLab/frostfs-sdk-csharp
[Python]: https://git.frostfs.info/TrueCloudLab/frostfs-sdk-python
[Neo blockchain]: https://neo.org/about

View file

@ -0,0 +1,32 @@
---
title: Contact us
date: 2025-02-18
---
## Bug reports
Bugs should be reported to the relevant FrostFS component repository,
available at [git.frostfs.info](https://git.frostfs.info/TrueCloudLab).
If you are unsure which repo your bug belongs to you may contact us privately
at [info@frostfs.info](mailto:info@frostfs.info) or ask in [chat](#chat). You
may also report the bug to
[frostfs-node](https://git.frostfs.info/TrueCloudLab/frostfs-node) and let the
maintainers handle it from there.
## Enhancement proposals
Significant technical and process changes should be submitted as
FrostFS Enhancement Proposals, see [FEP-1]({{< ref "proposals/proc/fep-0001" >}}).
## Security vulnerabilities
Security vulnerabilities should be reported through private mailing list
[security@frostfs.info](mailto:security@frostfs.info).
Please refer to the [security policy page]({{< relref "security.md" >}}) for more information.
## Chat
For real-time chat with FrostFS developers and other community members please
join our channels in Matrix:
[#frostfs:matrix.org](https://matrix.to/#/#frostfs:matrix.org)

View file

@ -0,0 +1,101 @@
---
title: Contribution guide
date: 2025-02-18
---
First, thank you for contributing! We love and encourage pull requests from
everyone. Please follow the guidelines:
- Find out [which repository](https://git.frostfs.info/TrueCloudLab) contains
the code you intend to modify.
- Check open issues and pull requests in that repository for existing
discussions.
- Open an issue first, to discuss a new feature or enhancement.
- Write tests, and make sure the test suite passes locally and in CI.
- Open a pull request, and reference the relevant issue(s).
- Make sure your commits are logically separated and have good comments
explaining the details of your change.
- After receiving feedback, amend your commits or add new ones as
appropriate.
- **Have fun!**
## Git Workflow
FrostFS repositories use
[trunk-based](https://trunkbaseddevelopment.com/#scaled-trunk-based-development)
Git workflow:
- Development happens in short-lived branches in personal forks of the main
repo.
- Changes are then submitted as a pull request to the master branch of the
main repo.
- Changes are merged to the master branch after passing code review and CI
checks.
- Prefered merge strategy is "rebase-and-fastforward" which results in a nice
linear Git history.
- Squashing multiple commits in a single pull request is not required and
may even be frowned upon if it obstructs change review.
We encourage submitting work-in-progress pull requests to discuss code changes.
## Developer's Certificate of Origin
All FrostFS developers retain copyright to their work. However, to ensure
that they are only submitting work that they have rights to, we are requiring
everyone to acknowledge this by signing their work.
Any copyright notices in FrostFS repositories should specify the authors as "the
contributors".
To sign your work, just add a line like this at the end of your commit message:
```
Signed-off-by: Samii Sakisaka <samii@ivunojikan.co.jp>
```
This can easily be done with the `--signoff` option to `git commit`.
By doing this you state that you can certify the following (from [The Developer
Certificate of Origin](https://developercertificate.org/)):
```
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```

15
content/about/forge.en.md Normal file
View file

@ -0,0 +1,15 @@
---
title: Using git.frostfs.info
date: 2025-02-18
---
All FrostFS repositories are hosted at https://git.frostfs.info which runs an
instance of Forgejo. Most of the interface will be familiar if you have used
GitHub or GitLab before.
[Forgejo User Guide](https://forgejo.org/docs/latest/user/) may also be of help.
## Signing in
We recommend you to sign in using your GitHub or Codeberg account.
If you have neither and do not want to register any you may [contact us]({{<
relref "contact">}}) and ask for an account.

View file

@ -0,0 +1,30 @@
---
title: Security policy
date: 2025-02-18
---
## How To Report a Vulnerability
If you think you have found a vulnerability in any FrostFS component, please
report it to us through coordinated disclosure.
Contact TrueCloudLab security team at
**[security@frostfs.info](mailto:security@frostfs.info)**
Please do not report security vulnerabilities through public issues,
discussions, or change requests.
Please include as much information as you can to help us better understand and resolve the issue:
- The type of issue (e.g., buffer overflow, or cross-site scripting)
- Affected components and their versions
- Impact of the issue, including how an attacker might exploit the issue
- Step-by-step instructions to reproduce the issue
- The location of the affected source code (tag/branch/commit or direct URL)
- Full paths of source file(s) related to the manifestation of the issue
- Any special configuration required to reproduce the issue
- Any log files that are related to this issue (if possible)
- Proof-of-concept or exploit code (if possible)
This information will help us triage your report more quickly.

View file

@ -3,7 +3,23 @@ title: "API & SDK"
icon: "ti-panel"
description: "API and SDK implementations"
type: "docs"
date: "2022-12-22"
date: "2025-02-27"
---
FrostFS provides has language agnostic [gRPC API](https://git.frostfs.info/TrueCloudLab/frostfs-api) declarations and few API and SDK implementation for different programming languages.
FrostFS provides language agnostic [gRPC API] declarations and few API and
SDK implementations for different programming languages:
[Go], [Java], [C#], [Python].
Auto-generated API documentation for Go packages is available at pkg.go.dev:
- [frostfs-sdk-go](https://pkg.go.dev/git.frostfs.info/TrueCloudLab/frostfs-sdk-go)
- [frostfs-node](https://pkg.go.dev/git.frostfs.info/TrueCloudLab/frostfs-node)
- [frostfs-s3-gw](https://pkg.go.dev/git.frostfs.info/TrueCloudLab/frostfs-s3-gw)
- [frostfs-http-gw](https://pkg.go.dev/git.frostfs.info/TrueCloudLab/frostfs-http-gw)
- [frostfs-contract](https://pkg.go.dev/git.frostfs.info/TrueCloudLab/frostfs-contract)
[gRPC API]: https://git.frostfs.info/TrueCloudLab/frostfs-api
[Go]: https://git.frostfs.info/TrueCloudLab/frostfs-sdk-go
[Java]: https://git.frostfs.info/TrueCloudLab/frostfs-sdk-java
[C#]: https://git.frostfs.info/TrueCloudLab/frostfs-sdk-csharp
[Python]: https://git.frostfs.info/TrueCloudLab/frostfs-sdk-python

View file

@ -1,5 +1,5 @@
- id: topics_title
translation: Find your answer by subject
translation: Learn about FrostFS
- id: send
translation: Send