XRPLF/rippled - Open Source PR Review Scorecard

Decentralized cryptocurrency blockchain daemon implementing the XRP Ledger protocol in C++

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

External PR Merge Rate: 59%

Response Time: -

First Timer Success: 39%

Frequently Asked Questions

Is XRPLF/rippled welcoming to first-time open-source contributors?

XRPLF/rippled has a recorded first-timer success rate of 39.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 XRPLF/rippled respond to incoming external pull requests in approximately 0.0 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 66.1 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.1 places XRPLF/rippled in the A tier.

What is the external contributor pull request merge rate for XRPLF/rippled?

The external contributor pull request merge rate for XRPLF/rippled is 59.0%, based on public PR activity from non-core contributors.

Are there Good First Issues available in XRPLF/rippled?

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

XRPLF
XRPLF/rippledA•Welcoming5.2k
GitHub
Back to Explorer
XRPLF

XRPLF/rippled

5,230
Active (30d)A•Welcoming(66/100)C++

Decentralized cryptocurrency blockchain daemon implementing the XRP Ledger protocol in C++

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Constructive Code Reviewer

Warmth Score
8.0/10
Patience Score
8.2/10
Nitpick Rate
24%

Balanced & professional review environment in XRPLF/rippled. Maintains strict focus on technical quality and test standards.

Top PR Submission Do's

  • •Add unit tests with >80% coverage for modified code paths
  • •Run repository linter and code formatters locally before pushing
  • •Link relevant GitHub issue ID in PR description pre-flight checklist

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit unlinked PRs without referencing an existing issue
  • •Do not mix refactoring and feature logic into a single commit
  • •Do not ping maintainers repeatedly within 24 hours of opening
Response Velocity
-
No reviewer activity recorded

Average Response Latency

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

Merge Efficiency
59.0%
Moderate PR acceptance rate

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
39.0%
Accepts new contributor PRs

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
44 core
Highly collaborative maintainer core
Diagnostic Health HUD
59.0%
Merge Gauge
39.0%
1st-Timer
Community Vibe35/100

Embed C-Rank Badge

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

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

Active Good First Issues (5)

View on GitHub

Follow-up from a review comment on #7012: #7012 (comment) In include/xrpl/basics/FileUtilities.h, TempDir::path() and TempDir::file() both return std::string: [[nodiscard]] std::string path() const; [[nodiscard]] std::string file(std::string const& name) const; Now that the codebase uses std::filesystem (#7012), these should probably return std::filesystem::path instead, so callers don't have to round-trip through strings. file() could likewise take a std::filesystem::path const& parameter. This was intentionally left as-is in #7012 to keep that PR focused on the boost::filesystem → std::filesystem swap. Work Change the return types (and file()'s parameter type) to std::filesystem::path. Update call sites, which are mostly in tests/benchmarks.

📅 Opened Aug 11, 2026💬 1 comment
Quality: 40/100Contribute

Missing input type check for vault_id and owner causes exception on non-scalar JSON types Severity: LOW parseVault checks isMember() for vault_id and owner, then immediately calls asString() without verifying the JSON value is a string (or at least a scalar). If vault_id or owner is a JSON object, array, or null, asString() throws Json::LogicError. While the RPC framework catches std::exception, the result is a generic internal error instead of a proper invalidParams error. Root cause: No isString() check before asString() calls at lines 23 and 32. src/xrpld/rpc/handlers/VaultInfo.cpp:23 if (!uNodeIndex.parseHex(params[jss::vault_id].asString())) src/xrpld/rpc/handlers/VaultInfo.cpp:32 auto const id = parseBase58<AccountID>(params[jss::owner].asString()); Exploit scenario: 1. Client sends {"method": "vault_info", "params": [{"vault_id": {"nested": "object"}}]}. 2. params[jss::vault_id].asString() throws Json::LogicError. 3. Exception propagates to the RPC dispatch framework. 4. Client

📅 Opened Apr 7, 2026💬 3 comments
Quality: 30/100Contribute

transaction_entry uses non-standard ad-hoc error strings Severity: LOW The doTransactionEntry handler sets error responses using ad-hoc string values directly on jss::error (e.g., "fieldNotFoundTransaction", "notYetImplemented", "malformedRequest", "transactionNotFound") instead of using the standard rpcError() or RPC::make_error() functions with registered error codes. These non-standard error strings are not documented in the error code enumeration and cannot be reliably parsed by client libraries that expect standard RPC error codes. Additionally, these responses lack the error_code numeric field and error_message field that standard errors include. Root cause: Legacy code that predates the standardized error handling framework. The XXX comments in the source (lines 16, 35, 42) indicate this code was known to need cleanup. src/xrpld/rpc/handlers/transaction/TransactionEntry.cpp:27-47 if (!context.params.isMember(jss::tx_hash)) { jvResult[jss::error] = "fieldNotFoundTransaction";

📅 Opened Apr 7, 2026💬 1 comment
Quality: 30/100Contribute

Missing type validation on public_key parameter in manifest handler Severity: LOW In doManifest, params[jss::public_key].asString() is called without first checking that the parameter is a string type. If a client sends {"public_key": 12345} or {"public_key": []}, jsoncpp's asString() will throw for non-convertible types, resulting in an unhelpful rpcINTERNAL error via the generic exception handler. Root cause: No type check before params[jss::public_key].asString() on line 20 of Manifest.cpp. src/xrpld/rpc/handlers/server_info/Manifest.cpp:17-20 if (!params.isMember(jss::public_key)) return RPC::missing_field_error(jss::public_key); auto const requested = params[jss::public_key].asString(); Exploit scenario: 1. User sends {"method": "manifest", "params": [{"public_key": [1,2,3]}]}. 2. asString() throws on the array value. 3. User receives rpcINTERNAL instead of a proper invalidParams error. Invariant gap: The exception is caught by callMethod's generic catch block, so no crash, b

📅 Opened Apr 7, 2026💬 1 comment
Quality: 30/100Contribute

Missing type validation on counters parameter causes unhandled exception path Severity: LOW In doServerInfo and doServerState, context.params[jss::counters].asBool() is called without first validating that the counters parameter is a boolean or numeric type. If a client sends {"counters": "true"} or {"counters": []}, jsoncpp's asBool() throws a Json::LogicError. The exception is caught by the generic handler in callMethod which returns rpcINTERNAL, but this is a confusing error message that doesn't indicate the actual problem. Root cause: No type check before calling asBool() on line 19 of ServerInfo.cpp and line 18 of ServerState.cpp. src/xrpld/rpc/handlers/server_info/ServerInfo.cpp:19 context.params.isMember(jss::counters) && context.params[jss::counters].asBool() src/xrpld/rpc/handlers/server_info/ServerState.cpp:18 context.params.isMember(jss::counters) && context.params[jss::counters].asBool() Exploit scenario: 1. User sends {"method": "server_info", "params": [{"counters": "yes"

📅 Opened Apr 7, 2026💬 0 comments
Quality: 30/100Contribute
Looking for more C++ beginner tasks?Explore C++ 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 XRPLF/rippled

When evaluating whether to contribute to XRPLF/rippled, 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 XRPLF/rippled acknowledge new external contributions in approximately -. Out of all submitted pull requests from non-core authors in the last 180-day window, 59.0% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to XRPLF/rippled

01

Is XRPLF/rippled welcoming to first-time open-source contributors?

XRPLF/rippled has a recorded first-timer success rate of 39.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 ~-. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 66.1 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.1 places XRPLF/rippled in the Welcoming tier.

04

What is the external contributor pull request merge rate for XRPLF/rippled?

The external pull request merge rate is 59.0%. 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 XRPLF/rippled?

Yes, XRPLF/rippled currently has 30 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 XRPLF/rippled 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.