Rusteomics: A Community for High-Performance Omics Data Analysis
Rusteomics is a community-driven initiative leveraging the unique strengths of the Rust programming language to advance mass spectrometry-based omics data analysis. Rust’s fine-grained control over hardware resources and memory makes it ideal for computationally demanding tasks, while its focus on safety and accessibility fosters a supportive environment for both newcomers and seasoned professionals.
Why Rust?
-
⚡ Performance Rust offers systems-level control, ensuring optimal speed and efficiency—crucial for handling large omics datasets.
-
🌱 Accessibility Rust emphasizes safety and ergonomics, making it approachable for scientists and developers from diverse backgrounds.
-
🔌 Interoperability Rust integrates seamlessly with languages such as Python, R, and C++, facilitating broad adoption across the omics community.
Our Mission
To effectively harness the advantages of Rust for mass spectrometry-based omics data analysis.
How We Achieve Our Mission
- 🤝 Building a welcoming and inclusive community
- 🛠 Developing and maintaining a set of core libraries that cover frequent tasks in mass spectrometry-based omics data analysis
- 🔗 Providing bindings for high-level functionality to other programming languages, notably Python and R
- 💡 Highlighting related projects and tools that complement Rusteomics
- 🌐 Collaborating with related community initiatives, including HUPO-PSI and EuBIC-MS
Our Vision
We aspire to a future in which Rusteomics libraries are:
- 🏆 The reference implementation for common tasks such as reading and writing mass spectrometry file formats
- 🤖 Widely used in upstream applications, regardless of their primary programming language
- 🎯 A single point of failure where issues can be swiftly identified and resolved—with full community involvement
By centering our efforts in one vibrant community, we aim to ensure robust, transparent, and high-performance solutions for all mass spectrometry-based omics researchers. We invite you to join Rusteomics and help shape the future of high-throughput omics data analysis in Rust!
Scope
Scope of Rusteomics
Rusteomics is dedicated to advancing mass spectrometry-based omics data analysis through efficient data structures and algorithms tailored to the field. Our focus encompasses all aspects of mass spectrometry-based omics, including but not limited to data input/output and conversion, analyte characterization, identification and quantification.
All code within Rusteomics is developed in Rust or leverages Rust bindings to other programming languages. Contributions should be relevant to the broader scientific community and adhere to established community standards, such as those outlined by HUPO-PSI.
While Rusteomics initially focuses on proteomics, we actively welcome contributions in other omics fields, including metabolomics and nucleomics. A core principle is to ensure interoperability and reusability across different omics domains, promoting cross-disciplinary integration.
Related Projects
Several complementary projects exist in related fields, each contributing valuable tools to the broader omics and bioinformatics ecosystem:
- noodles – Specializing in genomics & NGS formats, structured as a modular workspace of interdependent Rust crates.
- rust-bio – A comprehensive Rust library for sequence analysis, covering classical sequence-based statistical models and data structures.
- pdbtbx – Focused on 3D protein structures and associated formats.
Organization
This section contains all documentation regarding the organizational structure and workings of Rusteomics.
Mission statement
Mission
Rusteomics harnesses Rust’s performance, accessibility, and interoperability to power mass spectrometry-based omics data analysis. By fostering an inclusive community, developing robust core libraries, providing language bindings (e.g., Python, R), spotlighting complementary projects, and collaborating with groups such as HUPO-PSI and EuBIC-MS, we strive to deliver seamless, high-performance solutions for researchers worldwide.
Vision
We aim to establish Rusteomics as the trusted reference for common tasks in mass spectrometry-based omics data analysis. Through broad adoption across diverse programming environments, we envision Rusteomics as a single, centralized platform where challenges are swiftly identified, addressed, and resolved through open, community-driven collaboration.
Roles and responsibilities
Rusteomics is a project under the EuBIC-MS umbrella, an initiative of the European Proteomics Association.
Rusteomics community
The Rusteomics community comprises all individuals who interact with the project—ranging from developers and contributors to end-users and collaborators.
Core Team
The Core Team is responsible for maintaining the codebase and governing the project. In situations requiring a final decision, the Core Team seeks consensus among its members to ensure balanced and fair outcomes, following the decision making process.
Owners Team
The Owners Team is designated by the Core Team. Its primary function is to manage tasks that require administrative privileges (for example, editing permissions on crates.io) and to implement decisions arising from violations of community guidelines, as determined by the Core Team. Additionally, members of the Owners Team serve as the point of contact for other organizations and address matters pertaining to the Code of Conduct. Any inquiries or concerns related to these responsibilities can be directed to them via rusteomics@eubic-ms.org.
Decision making
This document outlines the principles and processes that the Rusteomics teams follows when making decisions. It is intended to provide transparency and predictability to the community, and to ensure that decisions are made in a way that is consistent with the project’s values.
These principles were adapted from the Rust decision making process, which is originally licensed under MIT/Apache-2.0. See github.com/rust-lang/lang-team for the original source and full licensing terms.
Principles of decision making
-
Embrace differing viewpoints. When someone raises a concern, treat it as an opportunity to refine the design and to uncover and discuss the values underlying that concern. Dissent should be approached in a friendly, collaborative spirit.
-
Thoroughly understand and collaboratively address concerns. No concern can be resolved without first comprehending it, including the fundamental values behind it. We demonstrate our understanding by documenting the issue and considering potential trade-offs in line with Rust’s design principles. Our goal is to find solutions that satisfy all parties’ values, rather than merely seeking compromises that are acceptable but do not fully address everyone’s concerns.
-
Avoid forcing irreversible decisions. Whenever possible, decisions should be made in a reversible manner. If an irreversible choice (such as stabilizing a feature) must be made, heightened care must be taken to consider dissent. In such cases, attempt to find a superior alternative, establish common ground that can lead to consensus, or propose an intermediate step that tackles the same use case while allowing further evaluation. If none of these paths are feasible, consider taking no action at all, as refraining from change should generally be the simpler option. The threshold for moving forward with an irreversible decision in spite of an objection should be high.
-
Respect expertise. When working through a concern, or in situations where an objection might be overridden, place considerable weight on the insights and recommendations of knowledgeable individuals. This includes team advisors, experts in the relevant field, and leaders or contributors in associated projects.
-
Documenting the rationale fosters consistent, high-quality decisions. Even if an objection is ultimately not sustained, it should always be recorded, along with the reasons behind the team’s choice to proceed and any remaining open questions to revisit. The team member who originally raised the concern has the right to draft this record, framing any unresolved issues (within reasonable bounds).
-
Consensus does not require unanimity. In this context, consensus means that every voice has been heard and every concern addressed—even if some objections are not deemed blocking. The team must collectively consider the final outcome acceptable, but this does not imply complete agreement from every individual.
Decision making process
-
Proposal: A community member proposes a decision by opening an issue, pull request, or discussion thread in the appropriate repository. The proposal should include a clear description of the problem, the proposed solution, and the rationale behind it.
-
Discussion: The community discusses the proposal, asking questions and raising concerns. The goal is to ensure that everyone understands the proposal and its implications, and to identify any potential issues that need to be addressed.
-
Resolution: The community reaches a decision by consensus. If there are unresolved concerns, the proposal may be revised or postponed until they can be addressed. If consensus cannot be reached, the problem will be escalated to be discussed at an online meeting of the Rusteomics core team.
-
Core team discussion (optional): If the community is unable to reach consensus, the proposal may be escalated to the Rusteomics core team for further discussion. The core team may choose to accept the proposal as-is, request revisions, or reject it outright. The outcome of this discussion is then communicated back to the community in the original issue, pull request, or discussion thread.
-
Implementation: Once a decision has been reached, the proposal is implemented by the community member who proposed it, or by another community member who volunteers to do so. The implementation should follow the guidelines outlined in the proposal, and should be reviewed by the community to ensure that it meets the project’s standards. This review process follows the same steps outlined here.
Meetings
We organize monthly online community meetings to discuss ongoing projects, share updates, and make decisions. These meetings are open to all community members, and we encourage everyone to participate.
Meetings take place on the last Wednesday of each month at 17:00 CEST. The meeting agenda and Zoom link are shared in the #project-rusteomics channel on the EuBIC-MS Slack workspace. If you are not yet a member of the Slack workspace, you can receive an invitation by becoming a member of EuBIC-MS.
Code of conduct
Our Pledge
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
Our Standards
Examples of behavior that contributes to a positive environment for our community include:
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall community
Examples of unacceptable behavior include:
- The use of sexualized language or imagery, and sexual attention or advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
Enforcement Responsibilities
Community leaders (Rusteomics core team, @rusteomics/core) are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
Scope
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at rusteomics@eubic-ms.org. All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
1. Correction
Community Impact: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
Consequence: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
2. Warning
Community Impact: A violation through a single incident or series of actions.
Consequence: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
3. Temporary Ban
Community Impact: A serious violation of community standards, including sustained inappropriate behavior.
Consequence: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
4. Permanent Ban
Community Impact: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
Consequence: A permanent ban from any sort of public interaction within the community.
Attribution
This Code of Conduct is adapted from the Contributor Covenant, version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
Community Impact Guidelines were inspired by Mozilla's code of conduct enforcement ladder.
For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.
Contributing
We welcome contributions to the Rusteomics project!
Whether you are a developer or a scientist, from academia or industry, we invite you to participate in the Rusteomics community. There are many ways to contribute, including:
-
Code contributions: Help us improve the Rusteomics project by contributing code to the libraries and tools that we maintain.
-
Documentation contributions: Help us improve the Rusteomics project by contributing to the documentation, including writing guides, tutorials, and examples.
-
Bug reports and feature requests: Help us improve the Rusteomics project by reporting bugs and requesting new features.
-
Community engagement: Help us build a strong and inclusive community by participating in discussions, sharing your knowledge and experience, and helping others.
Criteria for introducing new features or projects
If you are considering proposing a new feature or project, please ensure that it aligns with the goals and values of the Rusteomics project. In particular, we ask that you consider the following:
-
Scope: The feature or project should be within the scope of the Rusteomics project, which is focused on developing tools and libraries for mass spectrometry-based omics data analysis in Rust. If the feature or project is outside this scope, it may be better suited to another project or community.
-
Community interest: Consider whether the feature or project is likely to be of interest to the Rusteomics community. Features that are likely to have broad appeal or address common use cases are more likely to be accepted.
-
Maintainability: Consider whether the feature or project is likely to be maintainable in the long term. Features that are well-designed, well-documented, and easy to maintain are more likely to be accepted.
-
Compliance to Rust best practices: Ensure that the feature or project follows Rust best practices, including using idiomatic Rust code, following the Rust style guide, and adhering to the Rust code of conduct.