Skip to content

Community

Mog is built in the open. Join the community, report issues, and contribute.

Connect

GitHub

Star the repo, file issues, and submit pull requests.

View on GitHub →

Discord

Chat with maintainers and other developers.

Join Discord →

Twitter

Follow for announcements and updates.

Follow @sheetmog →

Contributing

We welcome contributions of all kinds — from bug fixes and documentation improvements to new features and performance optimizations. Whether you are new to open source or a seasoned contributor, there is a place for you in the Mog project. Read our CONTRIBUTING.md for the full guide.

Add Excel functions

Implement missing Excel-compatible functions in the Rust compute engine. Each function has a clear interface and test pattern.

Rustbeginner

Improve documentation

Add guides, tutorials, and examples. Fix typos, clarify explanations, add code samples.

WritingTypeScriptbeginner

Canvas rendering

Improve the canvas rendering pipeline — text measurement, drawing operations, performance optimizations.

TypeScriptCanvas APIintermediate

File format support

Improve XLSX compatibility, add CSV/TSV support, or help with the PDF export pipeline.

RustOOXMLintermediate

CRDT collaboration

Work on the Yrs-based collaboration layer — conflict resolution, presence, undo/redo across peers.

RustCRDTsDistributed Systemsadvanced

Compute engine optimization

Profile and optimize the Rust compute engine — formula evaluation, dependency graph, recalculation.

RustPerformanceadvanced

Development Setup

Clone the repository and get a local development environment running in minutes. Mog uses pnpm workspaces for TypeScript (53 packages) and a Cargo workspace for Rust (56 crates).

Prerequisites

  • Node.js(see the public repo's package metadata)
  • Rust (latest stable) + wasm-pack
  • pnpm 9+

Build from source

bash
git clone https://github.com/fundamental-research-labs/mog
cd mog
pnpm install --frozen-lockfile
pnpm typecheck
# Build the Rust compute core when working on compute
cargo build -p compute-core --release --locked
# Run the fast public package readiness gate
pnpm check:publish-readiness:fast

Running tests

bash
# TypeScript tests
pnpm test
# Type checking
pnpm typecheck
# Rust tests
cargo test -p compute-core --locked
# Public package boundary checks
pnpm check:publish-readiness:fast

Your first contribution

The easiest way to get started is adding a new Excel function to the Rust compute engine. Each function follows a clear pattern with built-in test scaffolding.

  1. Find the function category in crates/functions/src/
  2. Add the function implementation following the existing pattern
  3. Add tests alongside the implementation
  4. Run cargo test -p compute-core --locked
  5. Submit a PR

Project structure

The repository is organized as a monorepo with 53 TypeScript packages and 56 Rust crates. TypeScript handles the UI, SDK, and tooling; Rust handles the compute engine, formula parser, file formats, and WASM bindings. See docs/ARCHITECTURE.md for the full breakdown.

Governance

Mog is maintained by a dedicated team of contributors who guide the project's direction, review pull requests, and ensure code quality.

Guangyu Yang

Creator & Lead Maintainer

@gyyang

Security

We take security seriously. If you discover a vulnerability, please practice responsible disclosure. Do not open a public issue for security vulnerabilities.

Report vulnerabilities to [email protected]. We will acknowledge your report within 48 hours and work with you to address the issue.

Code of Conduct

The Mog community is dedicated to providing a welcoming, inclusive, and harassment-free experience for everyone, regardless of experience level, gender identity, sexual orientation, disability, appearance, race, ethnicity, age, religion, or nationality.

Expected behavior

  • Be respectful, empathetic, and constructive in all interactions
  • Give and accept feedback gracefully
  • Focus on what is best for the community and the project
  • Respect differing viewpoints and experiences

Unacceptable behavior

  • Harassment, intimidation, or discrimination in any form
  • Trolling, insulting or derogatory comments, personal or political attacks
  • Publishing others' private information without permission
  • Other conduct that is inappropriate in a professional setting

Enforcement

Instances of abusive, harassing, or unacceptable behavior may be reported to [email protected]. All reports will be reviewed and investigated promptly and fairly. Maintainers have the right to remove, edit, or reject comments, commits, code, issues, and other contributions that do not align with this Code of Conduct.

License

Mog is released under the MIT license. You can use, copy, modify, distribute, sublicense, and sell copies of the software under the standard MIT terms.

The MIT license applies to the code. The Mog name, logo, and brand assets remain trademarks of Fundamental Research Labs, Inc.; see the trademark notices in the public repository for usage guidance.

Copyright © Fundamental Research Lab, Inc. See the full license text for the complete legal terms.