outlmd/outl - Open Source PR Review Scorecard

Local-first outliner. Markdown is the source of truth. Sync that doesn't corrupt your tree when two devices edit offline

C-Rank Grade: A (Welcoming) - 66/100

External PR Merge Rate: 77%

Response Time: 12h

First Timer Success: 50%

Frequently Asked Questions

Is outlmd/outl welcoming to first-time open-source contributors?

outlmd/outl has a recorded first-timer success rate of 50.0%. Repositories ranked A typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in outlmd/outl respond to incoming external pull requests in approximately 11.8 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 66.2 C-Rank™ score (A Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 66.2 places outlmd/outl in the A tier.

What is the external contributor pull request merge rate for outlmd/outl?

The external contributor pull request merge rate for outlmd/outl is 77.3%, based on public PR activity from non-core contributors.

Are there Good First Issues available in outlmd/outl?

outlmd/outl currently has 4 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

outlmd
outlmd/outlA•Welcoming191
GitHub
Back to Explorer
outlmd

outlmd/outl

191
InactiveA•Welcoming(66/100)Rust

Local-first outliner. Markdown is the source of truth. Sync that doesn't corrupt your tree when two devices edit offline

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Strict Architecture Gatekeeper

Warmth Score
7.1/10
Patience Score
7.8/10
Nitpick Rate
40%

Strict review standards in outlmd/outl. Ensure PR scope matches issue requirements closely before requesting review.

What Contributors Actually Say

Discussions in outlmd/outl focus heavily on practical implementation feedback, code formatting standards, and issue reproduction details.

Hidden Friction Signals

Unlinked PRs without issue context and changes that fail automated test suites face the highest review friction.

Unwritten Rules

  • •1) Keep PR scope strictly aligned with the linked issue.
  • •2) Ensure local linters pass before opening a review.
  • •3) Maintain full test coverage for modified logic.

Top PR Submission Do's

  • •Update docs or README when behavior changes
  • •Add or update tests for changed behavior before requesting review
  • •Link the issue and include reproduction context in the PR

Top PR Friction Pitfalls (Don'ts)

  • •Do not ship user-facing changes without matching docs
  • •Do not leave requested test coverage unresolved
  • •Do not open context-free PRs
Response Velocity
11 hours
Standard maintainer review cycle

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
77.3%
High acceptance rate for external PRs

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
50.0%
Accepts new contributor PRs

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
3 core
Small core review team
Diagnostic Health HUD
77.3%
Merge Gauge
50.0%
1st-Timer
Community Vibe67/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for outlmd/outl
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/outlmd/outl)](https://getmerged.abhishekco.de/outlmd/outl?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

Summary PR #204 added real inline <img> rendering for ![alt](url) embeds, but on desktop, images never render inline — they always show as the 🖼️ filename chip instead. Steps to reproduce On the desktop app, add an image to a block (paste/attach a screenshot, or import a graph with images). Look at the block in the normal outline view. Expected: the image renders inline as an <img> (per PR #204 / issue #203). Actual: the block shows a 🖼️ <filename> chip instead of the image. Root cause MarkdownInline's "image" case only renders a real <img> when variant !== "inline" — the "inline" variant is documented as being for compact contexts (breadcrumbs/previews) that can't afford to break the line, so it always falls back to FileChip: https://github.com/outlmd/outl/blob/main/crates/outl-frontend-shared/src/markdown/MarkdownInline.tsx#L241-L253 But the desktop app's main block row hardcodes variant="inline" unconditionally, not just for breadcrumb/preview contexts: https://githu

📅 Opened Sep 21, 2026💬 0 comments
Quality: 50/100Contribute

crates/outl-import/CLAUDE.md has a rule called "Count the denominator": an importer reports how many source pages and blocks it saw, so --dry-run --json can answer did everything arrive. One adapter honours it. $ grep -rn source_pages crates/outl-import/src crates/outl-import/src/adapters/roam/mod.rs:96-97 Real dry runs against fixture graphs: obsidian: {'pages': 2, 'source_pages': 0, 'source_blocks': 0, 'reconciliation': None, 'skipped': [], 'warnings': []} logseq: {'pages': 1, 'source_pages': 0, 'source_blocks': 0, 'reconciliation': None, 'skipped': [<only the .org>], 'warnings': []} The vault contained board.canvas and sub/deep.base. The Logseq graph contained whiteboards/w.edn. None appears in skipped, none in warnings. With source_pages: 0 the UNACCOUNTED CONTENT block never runs, so the report that exists to answer "did anything go missing" does not run for two of three adapters. The mechanism is a bare continue: // crates/outl-import/src/adapters/obsid

📅 Opened Sep 14, 2026💬 0 comments
Quality: 90/100Contribute

Invariant 13 says a colour token has one meaning on every client, and DESIGN.md names the deliberate exceptions so none is cited as precedent. These are not in that list. The same urgency, two definitions. Mobile: // crates/outl-mobile/src/components/RemindersSheet.tsx:304 text-red-500 Desktop, same logical component: // crates/outl-desktop/src/components/RemindersPanel.tsx:180-181 text-(--color-outl-destructive) So "overdue" is #ef4444 on one client and the palette's destructive hue on the other. On gruvbox or nord the Tailwind red is simply not a colour from the theme. bg-white outside any named exception: SettingsSheet.tsx:186 switch thumb RemindersSheet.tsx:236 switch thumb Calendar.tsx:220 today dot DevicesSheet.tsx:397 QR frame Toast.tsx:116,125 bg-white/20 The QR one is the interesting near-miss: a white quiet zone is genuinely required for scannability, and @outl/shared/peers/styles.css lists it as deliberate. That justification covers the shared s

📅 Opened Sep 14, 2026💬 0 comments
Quality: 90/100Contribute

Summary The day the calendar week starts on (Monday vs Sunday) is hardcoded, and it's inconsistent across clients. Make it a config.toml option that every calendar surface honors. Current behavior Desktop mini-calendar is Monday-first: crates/outl-desktop/src/components/Sidebar.tsx computes the leading blanks with mondayIndex(first.getDay()) (0 = Monday … 6 = Sunday, "matches the TUI's Monday-first week"). TUI is Monday-first too. Mobile calendar is Sunday-first — crates/outl-mobile/src/components/Calendar.tsx uses firstDay.getDay() directly (JS getDay() is 0 = Sunday) for the leading pad, so the grid starts on Sunday. So the two GUIs already disagree, and there is no way to choose. crates/outl-config/src/schema.rs (Config { workspace, theme, editor }) has no calendar setting. Desired behavior A workspace config.toml option, e.g.: [calendar] week_start = "monday" # "monday" | "sunday" Every calendar surface reads it through outl-config and lays out the grid + weekday header

📅 Opened Jun 18, 2026💬 1 comment
Quality: 55/100Contribute

A storage backend where every change to a workspace becomes part of an addressable, navigable history, not just an append-only log. The original body described a backend that never existed It said "the default sqlite backend" and "migrate cleanly from sqlite". There is no sqlite. rusqlite is in no manifest, and the only two impl Storage are MemoryStorage (crates/outl-core/src/storage/memory.rs:56) and JsonlStorage (crates/outl-core/src/storage/jsonl/mod.rs:392). Read the rest of this against JSONL. git2 and gix are in no manifest either. The only git in the tree shells out to the binary for backup (crates/outl-actions/src/backup/mod.rs:25). Three of the four questions already got answered without a new backend The op log turned out to carry them: "what did this page look like a month ago" and "show me what changed last week" are outl page history / outl block history (crates/outl-cli/src/cmd/history.rs, docs/cli.md:541), plus Capability::PageHistory (crates/outl-shortcuts/src/capabili

📅 Opened May 24, 2026💬 1 comment
Quality: 70/100Contribute
Looking for more Rust beginner tasks?Explore Rust GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for outlmd/outl

When evaluating whether to contribute to outlmd/outl, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of outlmd/outl acknowledge new external contributions in approximately 11 hours. Out of all submitted pull requests from non-core authors in the last 180-day window, 77.3% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to outlmd/outl

01

Is outlmd/outl welcoming to first-time open-source contributors?

outlmd/outl has a recorded first-timer success rate of 50.0%. Repositories ranked Welcoming typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~11 hours. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 66.2 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 66.2 places outlmd/outl in the Welcoming tier.

04

What is the external contributor pull request merge rate for outlmd/outl?

The external pull request merge rate is 77.3%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in outlmd/outl?

Yes, outlmd/outl currently has 4 active issue(s) tagged with beginner-friendly labels. You can inspect these directly from the repository issues tab.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for outlmd/outl are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.