erlang/otp - Open Source PR Review Scorecard

Erlang/OTP

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

External PR Merge Rate: 48%

Response Time: 3h

First Timer Success: 42%

Frequently Asked Questions

Is erlang/otp welcoming to first-time open-source contributors?

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

What does the 64.8 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 64.8 places erlang/otp in the A tier.

What is the external contributor pull request merge rate for erlang/otp?

The external contributor pull request merge rate for erlang/otp is 48.3%, based on public PR activity from non-core contributors.

Are there Good First Issues available in erlang/otp?

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

erlang
erlang/otpA•Welcoming12.3k
GitHub
Back to Explorer
erlang

erlang/otp

12,323
Active (30d)A•Welcoming(65/100)ERErlang

Erlang/OTP

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Empathetic Technical Mentor

Warmth Score
8.0/10
Patience Score
8.4/10
Nitpick Rate
25%

Highly welcoming maintainers in erlang/otp. Prompt code reviews with positive guidance for new contributors.

What Contributors Actually Say

Discussions in erlang/otp 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
2 hours
Standard maintainer review cycle

Average Response Latency

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

Merge Efficiency
48.3%
Moderate PR acceptance rate

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
42.1%
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
48.3%
Merge Gauge
42.1%
1st-Timer
Community Vibe60/100

Embed C-Rank Badge

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

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

Active Good First Issues (5)

View on GitHub

Describe the bug We first encountered this problem while investigating scheduler utilization in our self-managed Kubernetes cluster. We then reproduced it in a Docker container with a CPU quota, as shown below. scheduler:utilization/2 calculates weighted using erlang:system_info(logical_processors_available) (LPA), without accounting for erlang:system_info(cpu_quota). When a container's CPU quota is smaller than its visible CPU set, the result understates scheduler utilization relative to the container's detected CPU capacity. For example, with LPA=8 and quota=1, one fully active normal scheduler and one idle dirty CPU scheduler produce weighted = 12.5%. Normalizing the same scheduler activity by the one-CPU quota gives 100%. To reproduce Run this on a Linux Docker host with at least two CPUs available to the container. The command applies a one-CPU quota without restricting the CPU set, starts a CPU-bound Erlang process, and samples utilization over two seconds. docker run --rm --netw

📅 Opened Oct 10, 2026💬 0 comments
Quality: 50/100Contribute

Is your feature request related to a problem? Please describe. Currently, there is no documented way to see how much data is queued for sending on a distribution connection. When a connection gets congested, the only signal is the busy_dist_port system monitor/trace event, and that fires only once a sender is already being suspended. You can't watch a queue grow toward dist_buf_busy_limit. Describe the solution you'd like A public API to read a distribution queue size. Additional context I know some libraries work around this with internals. For example, observer_cli does something like: get_dist_queue_size(Node) -> case ets:lookup(sys_dist, Node) of [] -> not_found; [Connection] -> %% Element 3 of net_kernel's #connection{} record is the %% connection's distribution handle DHandle = element(3, Connection), {ok, _In, _Out, QueuedBytes} = erlang:dist_get_stat(DHandle), QueuedBytes end. Three

📅 Opened Oct 9, 2026💬 2 comments
Quality: 50/100Contribute

Describe the bug logger_h_common sends every 21st write synchronously. The synchronous log path in the file_ctrl_loop always does a file_check. See here. Expected behavior logger respects the file_check configuration and only does file_check once the interval has passed. Additional context Found this while tuning file_check in a real system and observing syscalls. I expected configuring file_check to heavily reduce the amount of times file_check is called, but on high throughput systems, it makes very little difference because the synchronous path behaviour. If intentional, I think this should be documented. If not, the fix is simply removing the ensure_file call from the sync log, since write_to_dev already conditionally calls ensure_file if the file_check window has passed.

📅 Opened Sep 25, 2026💬 1 comment
Quality: 65/100Contribute

Describe the bug ODBC_CAN_BUILD_DRIVER=true must be specified via an environment variable in order to compile odbcserver such that it gets installed with erlang/otp and thus can go into a release for an application. To Reproduce git checkout OTP-29.1.1 && git clean -xfd && ./configure --with-odbc && make -j && make release && f=$(find release -name odbcserver -print -quit) && [ -n "$f" ] && echo "FOUND : $f" || echo "ERROR: odbcserver not found" Observe "ERROR: odbcserver not found" Then : export ODBC_CAN_BUILD_DRIVER=true && git checkout OTP-29.1.1 && git clean -xfd && ./configure --with-odbc && make -j && make release && f=$(find release -name odbcserver -print -quit) && [ -n "$f" ] && echo "FOUND : $f" || echo "ERROR: odbcserver not found" Expected behavior When --with-odbc switch is given odbcserver is compiled and can be installed during the life time of OTP 29. Affected versions OTP >= 29.0 Additional context N/A

📅 Opened Sep 24, 2026💬 1 comment
Quality: 50/100Contribute

Describe the bug logger:remove_handler/1 can drop a different handler that was added at about the same time. The dropped handler keeps its config (logger:get_handler_config/1 answers {ok, _}), but it is gone from the primary handlers list, so its log/2 is never called. The cause is in lib/kernel/src/logger_server.erl, handle_call({remove_handler,HandlerId}, ...): {ok,Config} = logger_config:get(Tid,primary), Handlers0 = maps:get(handlers,Config,[]), Handlers = lists:delete(HandlerId,Handlers0), call_h_async( fun() -> call_h(Module,removing_handler,[HConfig],ok) end, fun(_Res) -> logger_config:set(Tid,primary,Config#{handlers=>Handlers}), logger_config:delete(Tid,HandlerId), ok end,From,State); Config and Handlers are read when the request arrives. When another async request is in flight, call_h_async/4 queues the two funs, and the post fun runs later with that stale Config. Any add_handler that completed in between is overwritten: the post fun of add

📅 Opened Sep 18, 2026💬 0 comments
Quality: 50/100Contribute
Looking for more Erlang beginner tasks?Explore Erlang 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 erlang/otp

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

Frequently Asked Questions - Contributing to erlang/otp

01

Is erlang/otp welcoming to first-time open-source contributors?

erlang/otp has a recorded first-timer success rate of 42.1%. 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 ~2 hours. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 64.8 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 64.8 places erlang/otp in the Welcoming tier.

04

What is the external contributor pull request merge rate for erlang/otp?

The external pull request merge rate is 48.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 erlang/otp?

Yes, erlang/otp currently has 7 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 erlang/otp 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.