Skip to content

Commit 245af80

Browse files
committed
feat: initial project charter
1 parent 58ee8a1 commit 245af80

File tree

6 files changed

+117
-0
lines changed

6 files changed

+117
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
book

book.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[book]
2+
authors = ["The Rust-Seq Developers"]
3+
language = "en"
4+
multilingual = false
5+
src = "src"
6+
title = "Rust-Seq Charter"

src/SUMMARY.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Summary
2+
3+
- [Overview](./overview.md)
4+
- [Stack](stack.md)
5+
- [Values](stack/values.md)

src/overview.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Overview
2+
3+
`rust-seq` is a distributed project that aims to organize and align the broader
4+
community towards building a _better_ foundation upon which the next-generation
5+
of omics tooling can be developed. This is accomplished by a few distinct but
6+
related initiatives:
7+
8+
- Creating the `rust-seq` stack: a collection of community-developed libraries
9+
and tooling (written in Rust) that are collaboratively developed to provide a
10+
high-quality, symbiotic foundation for omics-based analysis tools.
11+
- Developing asyncronous mechanisms for identifying gaps in the ecosystem and
12+
facilitating community discussion around those gaps (e.g., "what crates _need_
13+
to exist but don't yet?").
14+
- Providing infrastructure for the development of this high-quality foundation
15+
(e.g., common continuous integration/continuous delivery pipelines that can be
16+
leveraged by tool authors).
17+
- Improving awareness of ongoing efforts generally within the community via
18+
common discussion channels (i.e., the [`rust-seq` Zulip chat] and the
19+
[`rust-seq` GitHub discussions]).
20+
21+
[`rust-seq` Zulip chat]: https://rustseq.zulipchat.com/join/e23ago52gswtbnp3azlidfem/
22+
[`rust-seq` GitHub discussions]: https://github.com/orgs/rust-seq/discussions

src/stack.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# The `rust-seq` Stack
2+
3+
The `rust-seq` stack is developed in a distributed manner. This means that
4+
some crates will be available on the [`rust-seq` GitHub], while others will be
5+
available under different organizations.
6+
7+
[`rust-seq` GitHub]: https://github.com/rust-seq

src/stack/values.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Values
2+
3+
The following are values for any crates adopted in the `rust-seq` stack.
4+
5+
## Correctness
6+
7+
Most fundamentally, software in the `rust-seq` stack is designed to produce
8+
correct results or error with reasonable error messages when producing correct
9+
results is not possible. We collectively believe that bioinformatics tools today
10+
are fragile and all too often either (a) silently fail or (b) return unhelpful
11+
information when failures occur. Eliminating these modes of failure in omics
12+
development and analyses is one of the primary reasons the project was created.
13+
14+
To that end, correctness should be considered the highest priority of crates in
15+
the `rust-seq` stack—**even at the cost of performance**.
16+
17+
## Performance
18+
19+
Beyond correctness, performance is the next most fundamental goal of crates
20+
within the `rust-seq` stack. Simply put, if software is not performant, it's
21+
unlikely to be widely adopted and used. As such, there is a high emphasis on
22+
optimization and benchmarking for crates in the `rust-seq` stack. Changes that
23+
introduce regressions in performance are unlikely to be accepted (unless the
24+
case is sufficiently demonstrated that a new feature is worth the cost of a
25+
performance hit).
26+
27+
# Contributable
28+
29+
Crates in the `rust-seq` stack are designed to be contributed to be the
30+
community. Though one individual may carry the vision for a particular crate in
31+
the beginning, it should be possible for anyone to take a few hours to
32+
grok a crate's design, develop a set of improvements, and then submit those
33+
improvements to be considered. Achieving this uniformly across an ecosystem of
34+
crates necessitates many common practices, including:
35+
36+
- All crates are **comprehensively tested** to ensure that code can be modified
37+
and refactored by non-experts with confidence.
38+
- All crates are **comprehensively linted** to ensure that code is of the
39+
highest quality possible.
40+
- All crates are **comprehensively documented** to ensure that using the code is
41+
clear and straightforward. This means (a) ensuring documentation for all
42+
public-facing code, (b) ensuring documentation for all private code [to ease
43+
development in those areas], and (c) including examples for any user-facing
44+
code to make sure usage is straightforward. Note that this can be accomplished
45+
largely by enabling the [`missing_docs`],
46+
[`clippy::missing_docs_in_private_items`], and
47+
[`rustdoc::missing_doc_code_examples`] lints.
48+
49+
All of the above should be independently verified and readily reported by
50+
continuous integration processes on PRs to ensure that contributors can iterate
51+
asyncronously towards a common goal-post for contributions. Note that this also
52+
builds confidence in hesistant contributors that they can work without the
53+
perception of bothering maintainers, which is a common discourager of
54+
open-source contributions.
55+
56+
## Maintained
57+
58+
Crates in the `rust-seq` stack are _permanent_ commitments to addressing a
59+
particular need in the ecosystem. In particular, they are not "published and
60+
forgotten". To that end, the expectation is that crates will continue to evolve
61+
as technology evolves, providing a first-class experience that's always up to date.
62+
63+
## Stable
64+
65+
Crates in the `rust-seq` stack follow [semantic versioning]. In brief, this
66+
means that you can immediately look at the version and know the stage of the
67+
project (`v0.y.z` means the crate is still in development and the API is not yet
68+
stable), `v1.y.z` is the first stable release that will always remain backwards
69+
compatible for version starting with `v1`, etc). It also means that software
70+
will not unexpectedly break once you've built on top of a particular dependency
71+
(not considering, of course, when software is in the `v0.y.z` stage).
72+
73+
[`missing_docs`]: https://doc.rust-lang.org/stable/nightly-rustc/rustc_lint/builtin/static.MISSING_DOCS.html
74+
[`clippy::missing_docs_in_private_items`]: https://rust-lang.github.io/rust-clippy/master/index.html#/missing_docs_in_private_items
75+
[`rustdoc::missing_doc_code_examples`]: https://doc.rust-lang.org/stable/nightly-rustc/rustdoc/lint/static.MISSING_DOC_CODE_EXAMPLES.html
76+
[semantic versioning]: https://semver.org/

0 commit comments

Comments
 (0)