Good First Issues in C++
Explore curated starter issues in high-scoring C++ repositories. Every listed issue belongs to a welcoming repository scored by C-Rank™ on PR merge rates, review responsiveness, and first-timer acceptance.
Arm Issue Sniper for fresh C++ beginner issues
Beginner issues in welcoming S/A-Tier repositories get snatched within 15 minutes. Receive instant alerts on Discord, Telegram, or Email the minute a maintainer opens a new task.
Live Good First Issues (30)
Real-Time Open GitHub IssuesSeventh step of the product plan (docs/roadmap.md). Every planner rule carries the machine it was measured on; docs/hardware-planning.md lists what each one is owed. This issue collects them. Owed runs The three --headroom arms (reported, auto, idle) against --probe-mem, then a run under each, on every kind of machine: a phone in ordinary use, a Windows desktop with a pagefile, a Linux box with zram, one with disk swap (#230). A discrete GPU (CUDA or Vulkan, Linux or Windows): the capacity fitter's placement, the prefill device rule, the graph-width rule. A machine with no accelerator: the graph-width rule. A thread sweep as a probe, so the withdrawn thread rule can return with a measurement behind it. A phone with an NPU under --auto alone, in the released APK. The loop The plan prints its predicted seconds per token and credited hit rate next to what the run measured. Collect that pair from every run (the metrics CSV preamble already carries the configuration) and from the communit
Fifth step of the product plan (docs/roadmap.md). This project has no iPhone, no Apple team and no entitlements, so this is work for a contributor who has them. What exists examples/ios: bmoe-cli compiled into an app (an app there may not start a process), one field for the command line, the CLI's own output, a --bmoe marker to script a run from the machine the device is attached to. scripts/build-ios.sh builds it; CI compiles it for the simulator. On iOS the planner reads the process's own memory share (os_proc_available_memory) and probes devices in-process. Nothing it measures on real hardware has been seen. docs/hardware-planning.md and examples/ios/README.md describe what is unmeasured there. What is needed First, the harness on a device. A run of --plan and of a streamed generation on a real iPhone or iPad, with the output posted here: what the planner read (memory share, lockable memory, whether a model larger than memory maps at all), and what --auto chose. BMOE_IOS_MEMORY_E
Our XR backend is currently using a lot of .json files copied from VTK. However these files are available in the VTK install tree. Let's reuse them.
Refactor In gl_handles.h, we have a GLHandle implementation that takes a deleter, but not an allocator. A nicer version of this class takes an allocator too, as shown in egl_buffer_copy.cpp. Combine these implementations into a single implementation if possible.
Goal Reduce the embedded size of ObTxCtx through a separate, focused cleanup of ineffective fallback storage, duplicated temporary state, and unused statistics. Avoid mixing these changes with allocator replacement, cache lifetime changes, lock redesign, or lazy allocation of transaction state. The source references below were checked on master 82e032c19561fc480ed6ac2236d6d8cd533852f2. Required scope 1. Remove the ineffective ObReserveAllocator fallback TransModulePageAllocator embeds an ObReserveAllocator containing a 256-byte buffer. Its constructor and reset() set size_ to zero, and there is no path that initializes it to a positive value. Consequently, alloc_from_buf_() cannot satisfy a valid positive-size request, including when the normal allocator fails. Buffer, capacity, and allocation condition. Fallback allocation and embedded reserve allocator. Delete this ineffective fallback and its wrappers. Keep the existing normal allocation/free backend and attributes unchanged; remo
Environment Windows 11 Pro 10.0.22631, CPU: Intel (Alder Lake kernel DLL selected at runtime), GPU: RTX 3070 16GB (compute 8.6) Official prebuilt Windows binaries, tried both CUDA 12.4 and CPU-portable and Vulkan-portable zips What fails Every audiocpp_cli --task tts --family higgs_audio_tts ... invocation fails with: audiocpp_cli failed: Higgs TTS sampler kept no finite logits Test matrix — all 10+ combinations fail identically Variable Values tried Result Engine v0.9.1, v0.9.0 both fail Backend cuda, cpu, vulkan, cpu (portable build) all fail Weights q8_0 (4.86GB), bf16 (8.5GB) from audio-cpp/audio.cpp-gguf both fail Reference audio official assets/resources/b.wav (24kHz mono 16-bit), omitted entirely both fail Session options defaults, higgs_audio_tts.attention=eager, higgs_audio_tts.ar_weight_type=f16 no change Omitting --voice-ref entirely still fails, so the NaN appears before/independent of the codec-encode path — the very first AR forward over the text
Problem ObTxCtx inherits from ObTransCtx, which unconditionally embeds an ObTransTraceLog trace_log_ and a tlog_ pointer. In a non-debug build, setting enable_record_trace_log=false makes tlog_ null and disables transaction event recording. However, the embedded recorder is still constructed, reset, and included in every transaction context's size. Disabling the feature does not release this storage. This is unnecessary retained object storage, not a memory leak. More precisely, the recorder type is still compiled into the object; only the debug-only code that forces recording on is excluded from a non-debug build. Source evidence Confirmed on master at a36940ac534088522ccb0cf1e165328ea192343e: Unconditional trace_log_ and tlog_ members. Recording configuration and debug-only override. Non-debug recorder uses 189 event slots and a 1,200-byte information buffer. default_init_() still resets the embedded recorder. Memory impact DWARF inspection of an existing x86_64 RelWithDebInfo buil
TipThis issue hasn't been claimed yet. Comment /take if you'd like to work on it! The published wheel installs files that have nothing to do with the Python package, some of them outside the package directory. What gets installed pip install img2num==0.3.1 (wheel cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64). These are all listed in the wheel's RECORD: site-packages/img2num/img2num 7 KB, executable bash script site-packages/include/img2num/img2num.h site-packages/include/img2num/img2num/Error.h site-packages/lib64/libImg2Num.a 3.2 MB site-packages/lib64/cmake/Img2Num/Img2NumConfig.cmake plus ConfigVersion, Targets, Targets-release img2num/img2num is the repository's Docker launcher (./img2num in the repo root). It is byte-identical to that file at tag packages-py-v0.3.1. include/ and lib64/ sit at the top level of site-packages. That is a shared namespace, so they can collide with any other wheel that makes th
CautionThis issue has been claimed by @mayanksingh-7974, so it is not recommended that you work on it. For @mayanksingh-7974: If you would like to revoke your claim, comment /untake example-apps/console-c/main.c is the only C example in the repo, and it has a few real problems. The C++ example was tidied in #687. This is the same pass for the C one. Problems It fails on a fresh build. OUTPUT_DIR is <build>/outputs/console-c (set in example-apps/console-c/CMakeLists.txt), but mkdir_recursive() calls mkdir() once and is not recursive. When <build>/outputs/ does not exist yet, the app stops with "Failed to create directory". It only works after the C++ example has run, because that one uses std::filesystem::create_directories. The second SVG is thrown away. img2num_image_to_svg is called and its result (res_svg2) is freed, but it is never written to disk. The C++ app writes both SVGs. Error paths leak. When one of the two SVG calls fails, the other result is not freed. Failures do
CautionThis issue has been claimed by @mayanksingh-7974, so it is not recommended that you work on it. For @mayanksingh-7974: If you would like to revoke your claim, comment /untake docs/docusaurus.config.js sets editUrl to https://github.com/Ryan-Millard/Img2Num/edit/main/docs/ for both the docs and the blog. Every pull request has to target dev, and the PR Target Check workflow fails anything opened against main (release-please's own pull requests excepted). So a reader who clicks "Edit" on a docs page ends up proposing a change to main, the check fails, and the pull request has to be retargeted. What to change Point both editUrl values at edit/dev/docs/. While you are there: docs/src/theme/EditThisPage/index.js has alignItens: "center" in its inline style. It should be alignItems. As written, the property is ignored. A side effect to accept The site is built from main. With the link pointing at dev, a page whose source file has been moved or renamed on dev since the last rel
CautionThis issue has been claimed by @mayanksingh-7974, so it is not recommended that you work on it. For @mayanksingh-7974: If you would like to revoke your claim, comment /untake docs/docusaurus.config.js sets a Prism theme but no additionalLanguages. The Prism build bundled with Docusaurus (prism-react-renderer 2.x) does not include bash, powershell, batch or cmake, so every code block in those languages is rendered as plain text. That is 116 blocks across the docs: bash (95), sh (9), powershell (6), bat (5) and cmake (1). Most of the contributor setup guide is shell commands. What to change In the prism section of docs/docusaurus.config.js: additionalLanguages: ["bash", "powershell", "batch", "cmake"], Two details: sh is an alias of bash, so those blocks need no change. Prism's id for batch files is batch, with no bat alias, so the five fences tagged bat (in docs/docs/contributing/project-setup.md and img2num-docker-script.md) have to be retagged. Two of the sh fences in pr
CautionThis issue has been claimed by @saptadeep12, so it is not recommended that you work on it. For @saptadeep12: If you would like to revoke your claim, comment /untake labels_to_svg is not deterministic: calling it several times with exactly the same pixels and labels returns different SVGs. K-Means is not involved here, the labels are fixed. Reproduce Published wheel (pip install img2num==0.3.1 numpy), CPython 3.13, Linux x86_64: import hashlib import numpy as np import img2num rng = np.random.default_rng(7) g = rng.integers(0, 256, size=(96, 96), dtype=np.uint8) img = np.ascontiguousarray(np.dstack([g, g, g, np.full_like(g, 255)])) labels = np.ascontiguousarray((g // 64).astype(np.int32)) # fixed labels, no k-means for _ in range(4): svg = img2num.labels_to_svg(img, labels, 30, 0) print(hashlib.sha256(svg.encode()).hexdigest()[:16], len(svg)) 849173bde1b921ef 292378 affd58d52c3ac709 292430 29b944027014f527 291604 5a22b2742526530f 292952 Same input, four differen
Is your feature request related to a problem? Please describe: The voxel navigation system is significantly impacted by voxel number.The higher the number,the higher to encounter slow down issues during gameplay. Describe the solution you'd like: After viewing the gdcvault video(https://www.gdcvault.com/play/1022016/Getting-off-the-NavMesh-Navigating),it became obvious adaptative voxel size is the way to reduce the stress over frame rate. I'm doubtless you'll be interested in implementing this on ez to bolster engine performance. Additional context: Very interesting video: (https://www.gdcvault.com/play/1022016/Getting-off-the-NavMesh-Navigating)
Is your feature request related to a problem? Please describe: Adding a radius should be nice for next release . In an optimized way of course. Describe the solution you'd like: A simple radius parameter or equivalent.
Problem description There has been a successful effort to reduce the size of toolbars in the BIM workbench: #25118 The new BIM_ExtrudeFace tool in 26.3 has been placed next to BIM_Extrude tool. I propose to group them into one, with BIM_ExtrudeFace as the default one. Current state: Workbench affected? BIM Steps to reproduce Expected behavior Actual behavior Development version About Info (in Safe Mode) OS: Windows 10 build 19045 Architecture: x86_64 Version: 26.3.0RC1.20261008 (Git shallow) Build date: 2026/10/08 14:07:50 Build type: Release Branch: (HEAD detached at faa2c25b1) Hash: faa2c25b187f46623145d09c86142d2bb9c89019 Python 3.13.15, Qt 6.11.2, Coin 4.0.10 (bundled), Pivy 0.6.11 (bundled), Vtk 9.7.0, boost 1_90, Eigen3 5.0.1, PySide 6.11.2 shiboken 6.11.2, xerces-c 3.3.0, Clipper2 2.0.1, IfcOpenShell 0.8.5, OCC 8.0.1 Locale: English/United States (en_US) Stylesheet/Theme/QtStyle: FreeCAD.qss/FreeCAD Light/ QPA/File dialog/Color dialog: windows/via Win32/via Qt Navigati
平台 Windows 输入法 问题与动机 / Problem & Motivation 示例:御建鸣神主尊大御所大人/巴山楚水凄凉地 其一解决方案:改为快捷输入,yjmszzdysdr/bscsqld,但对个人而言不够直观。 若录入到词库中,需要打全yujianmingshenzhuzuidayusuodaren,这代表只有打出完整无误的全拼才会出现这个词,也很麻烦。 目前个人的解决办法是从yujianmingshen开始,后续每一个字都添加一个词库对应这个长词。 建议方案 / Proposal 期望输入法能够结合词库内容做前缀匹配。 yujian 匹配 遇见、预见等词语的置信度较高,此时不应让更长的以yujian为前缀的词排进来。直到后续输入ming,shen等部分,正常直接匹配全拼的候选词置信度较低,才考虑以“yujianmingshen”为前缀的词库匹配。 其他替代方案(可选) / Alternatives No response 其他信息 / Additional Context No response 联系方式 渠道 联系方式 Git
An experiment: can QtPass run on Android, and how would it talk to GnuPG there? Building: works A probe on a fork (annejan/qtpass android-probe, run) builds src and main with Qt 6.8.3 for android_arm64_v8a (NDK r26b, API 35) and packages a debug APK (18.5 MB) with androiddeployqt. The only change needed: Android's qmake adds the ABI to the static library's name (libqtpass_arm64-v8a.a), while main.pro links libqtpass.a. The probe copies it; a real fix belongs in main.pro. Notes for the install step: Qt 6.7 and later list their Android packages under host all_os (not linux), and autodesktop: true brings the host tools along. Not tried yet: running the APK. The Widgets UI is the desktop one, so on a phone it will be small and mouse-shaped; a usable phone UI is a separate (big) question. GnuPG: the real problem QtPass runs gpg, git and pass as processes through Executor. On Android: An app cannot run binaries from its own writable storage (since Android 10). Binaries shipped as lib*.so
Report preparation I used the AI-assisted bug report tool (Help → Support → File an Issue) I have attached a support bundle or log file What happened? The Aetherial Audio channel strip cannot be found in the DSP tab. Greg WK0B What did you expect? No response Steps to reproduce connect to flex 660 nide set ti ssb open DSP no Aetherial Audio channel strip to select AetherSDR version 26.10.1 Radio model & firmware Flex 4.2 Operating system Windows OS version and hardware 11 pro
Describe the bug When running F3D without data and volume rendering enabled, F3D triggers an error: Cannot use volume with this data To Reproduce Steps to reproduce the behavior: f3d --no-config -v Expected behavior No error should be shown System Information: OS: GPU and GPU driver: F3D Information Paste the content of f3d --version or f3d-console.exe --version on Windows: Additional context Add any other context about the problem here.
Is your feature request related to a problem? Please describe. Focal point picking is currently bound on middle mouse click, which is not available on pointing devices that don't have a clickable wheel or middle button (for example Mac laptops). Describe the solution you'd like There should be an alternative way to pick the focal point. Describe alternatives you've considered shift+left drag does the same thing as middle drag (pan) so maybe shift+left click could do the same thing as middle click (pick focal)?
平台 Windows 输入法 问题与动机 / Problem & Motivation 常用字体排序 建议方案 / Proposal 1这个固定的小圆点太小了,大两个字号,还可以设置颜色就好了 2或者增加为表情符号替换图钉 其他替代方案(可选) / Alternatives No response 其他信息 / Additional Context No response 截图 由官网需求表单自动创建 · Windows 输入法。提交者已同意公开以上内容,需求待维护者评估。
Why OpenSSF Scorecard Code-Review is 1/10: 3 of the last 20 merged changesets had a human approval. Most PRs get CodeRabbit's automated review and are then merged by their author. That's allowed by CONTRIBUTING (#1979) and stated on qtpass.org/code-signing, but Scorecard only counts approvals by people. Branch-Protection goes up too when main requires at least one approval. That isn't possible while a single maintainer merges their own work. Options A second maintainer from the IJHack team reviews and approves PRs, even briefly, at least those touching src/ or workflows. Require 1 approval in the main ruleset (id 24859572) only once there are enough reviewers, so no PR gets stuck. Keep it as it is and accept the score; the policy page describes the process accurately. This is a decision for the team, not a code change. 🤖 Generated with Claude Code
Describe the bug The R bindings do not expose page_checksum_verification, so an R user has no way to turn on page-CRC verification when reading Parquet. Arrow's own deliberately-corrupt test files are read without error. C++ has the option and Python exposes it; only R does not. C++ cpp/src/parquet/properties.h:148-150 — page_checksum_verification() / set_page_checksum_verification(bool check_crc), defaulting to false at line 166 Python python/pyarrow/parquet/core.py:269,325,346 — a documented page_checksum_verification=False parameter R r/R/parquet.R:656-682 — ParquetReaderProperties declares and implements only thrift_string_size_limit and thrift_container_size_limit Reproduction Using the files parquet-testing ships expressly so readers can be shown to reject a bad CRC — datapage_v1-corrupt-checksum.parquet ("uncompressed INT32 columns in v1 data pages with a mismatching CRC") and rle-dict-uncompressed-corrupt-checksum.parquet: library(arrow) packageVersion("
Problem description When launching FreeCAD 1.1 or 26.3rc1 with VoiceOver running, loading the preferences dialogue presents an issue where the left container for the various tabs is not recognised as a container and cannot be interacted with by a screen reader like VoiceOver. I cannot comment on other screen reader systems as I'm running MacOS 26.7. Navigating the window, it bypasses the various tabs held to the left pane and focuses on the main container area which has 3 containers in focus, these are easy to navigate, but the preferences left pane is not recognised or defined as a container. Workbench affected? Core (App, Gui,...) Steps to reproduce Launch VoiceOver within MacOS by holding Command F5 or triple tap the home / power button on apple silicon macs, this may be configured differently in some cases. Launch FreeCAD 26.3RC1 or FreeCAD 1.1 and go to the preferences dialogue through the FreeCAD menu. Navigate around the window by holding down the Control, Option keys and naviga
Describe the bug In a Linux cloud sandbox with restricted access to network interface information, the official native standalone server fails to obtain the MAC address needed for UUID node initialization. It returns -4016 / OB_ERR_UNEXPECTED and exits at server_start 4/14. This issue records the startup compatibility and diagnostic problem for subsequent investigation and a fix. The available evidence does not yet identify the specific network interface operation or environment policy responsible. Environment OS / CPU architecture: Debian 13, x86_64; restricted cloud sandbox running as an ordinary user. Deployment: standalone server run directly from the extracted official Debian 13 amd64 package; embedded mode was not used. Version: OceanBase seekdb 1.4.0.0 Revision: 1-0003f8d4b32a2cfe3b75ae8f4dbe26fcee994541 Build: Aug 26 2026 17:06:42, RelWithDebInfo Official package, verified SHA-256: 07542f6decc40b4f6655711fd62eedcfa6f8be670738ab629e5b524147440a57 Dependency: official Debian lib
Translation catalogs need a pass before the v7.46 release (milestone due 2026-10-15). Most languages, including Spanish, Portuguese, and Brazilian Portuguese, currently have 40 untranslated strings (2,672 translated). German and French are slightly ahead. Those 40 are new UI strings (InfoBox copy/paste, custom InfoBox text, nearest start/finish, SpO2, FLARM Wi-Fi download, screen brightness, OpenVario services, and the DWD forecast max-temperature hint). Priority Spanish (es), Portuguese (pt), and Brazilian Portuguese (pt_BR) have active translators. Please update those three first so v7.46 ships with current wording in the languages people are maintaining now. Catalog Language Last revision in tree Last translator po/es.po Spanish 2024-01-09 l diaz po/pt.po Portuguese 2024-10-08 ssantos po/pt_BR.po Brazilian Portuguese 2022-09-20 Fernando Fuganti Other languages are welcome in the same pass. Empty msgstr entries fall back to English in the UI. Where to translate Prefer W
Make ambient and mission trains (and their cars) spawning and despawning properly synced. Sync their speeds, paths and the derailing event (0x6F8DF3).
With PTP enabled, timestamps returned by Robot::states() appear approximately 4.5 ms later than the host’s PTP hardware clock read immediately afterward. Environment: Control-box software: v3.11.3 Flexiv RDK: v1.9.4 Host: Jetson AGX Orin, kernel 5.15.185-tegra LinuxPTP: 3.1.1 Direct Ethernet connection tested with GENERAL and USER_1 Robot stationary during measurement Orin’s /dev/ptp0 acts as a free-running grandmaster. No phc2sys process is running. PHC was initialized to host UTC+37 seconds before measurement; the grandmaster advertises currentUtcOffset=37, currentUtcOffsetValid=1, and ptpTimescale=1. Incoming controller Signaling messages on UDP319 were filtered because an interval request containing Announce interval 127 caused LinuxPTP to stop periodic Announce transmission. Other PTP message types remained allowed. The ptp4l configuration is: [global] time_stamping hardware network_transport UDPv4 delay_mechanism E2E domainNumber 0 utc_offset 37 free_running 1 tx_timestamp_
问题与动机 / Problem & Motivation 用了好多年搜狗输入法电脑版本,因为目前就搜狗的皮肤作者最多,但是水杉的输入法打字很舒服,希望能兼容搜狗输入法的ssf格式文件 建议方案 / Proposal 如果开发难度大的话希望加入教程,教一下怎么把这个格式转换为兼容水杉的皮肤文件 其他替代方案(可选) / Alternatives No response 其他信息 / Additional Context No response 联系方式 渠道 联系方式 Email [email protected] 联系方式由提交者自愿公开,未经验证。 由官网需求表单自动创建 · Windows 输入法。提交者已同意公开以上内容,需求待维护者评估。
Problem description When editing a Text in Sketch, the Text field should comme preselected. Right now the cursor is placed in the end of the existing string. Workbench affected? Sketcher Development version About Info (in Safe Mode) OS: Ubuntu 26.04.1 LTS (ubuntu:GNOME/ubuntu/wayland) Architecture: x86_64 Version: 27.1.0dev.20261006 (Git shallow) Build date: 2026/10/06 21:00:40 Build type: Release Branch: (HEAD detached at 3424c4106) Hash: 3424c410627263394f701aeec5b61d7bab7bb3a1 Python 3.13.15, Qt 6.11.2, Coin 4.0.10 (bundled), Pivy 0.6.11 (bundled), Vtk 9.7.0, boost 1_90, Eigen3 5.0.1, PySide 6.11.2 shiboken 6.11.2, xerces-c 3.3.0, Clipper2 2.0.1, IfcOpenShell 0.8.5, OCC 8.0.1 Locale: English/United States (en_US) Stylesheet/Theme/QtStyle: OpenTheme.qss/OpenDark/ QPA/File dialog/Color dialog: xcb/via Qt/via Qt Navigation Style/Orbit Style/Rotation Mode: Touchpad/Trackball/Drag at cursor Logical DPI/Physical DPI/Pixel Ratio: 96/94.485/1 OpenGL version/vendor/renderer: 4.6.0 NVIDIA 59
Top C++ Repositories with Beginner Issues (20)
Updated Daily via GitHub GraphQLCataclysm: Bright Nights: A fork/variant of Cataclysm:DDA by CleverRaven with a mod registry at https://mods.cataclysmbn.org/
The ultimate cross-platform mining experience.
Native amateur-radio workstation for FlexRadio (FLEX-6000/8000/Aurora) — Linux, macOS, Windows · Qt6 + C++20
The Zap Programming Language
The efficient SMT-based context-bounded model checker (ESBMC)
Community-maintained source port of the original Little Big Adventure 2 (Twinsen’s Odyssey) engine.
水杉输入法 Windows 产品:TSF、Server、GUI、设置页与安装器。内测:tg: https://t.me/msimegroup QQ Group: 829919142
VillageSQL - a drop-in replacement for MySQL with extensions
Robotics Toolbox for Python
Run MoE models bigger than your RAM. Frontier-size MoE on a 12 GB phone, lossless, on stock llama.cpp
TeXstudio is a fully featured LaTeX editor. Our goal is to make writing LaTeX documents as easy and comfortable as possible.
The First Real-Time Search Analytics Database
A modern C++ module-first build tool — written in pure C++23 modules, fully self-hosted
Production-grade client-side tracing, profiling, and analysis for complex software systems.
MaaEnd 终末地小助手:基于视觉 AI 的「明日方舟:终末地」自动化工具
Hyperspace -- A mod for FTL: Faster than Light
All-in-one solution for creating networked applications with RPC, pub/sub, server deployment, and more.
Embedded Linker (eld)
Model-based design and verification for robotics.
Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
How to make your first C++ open-source pull request
Finding approachable Good First Issues in C++ allows you to build real-world software engineering experience. Instead of submitting PRs to abandoned repositories, GetMerged verifies maintainer review speeds and first-timer acceptance rates before you write a single line of code.
Select any issue above to claim it directly on GitHub, or click a repository to inspect full maintainer review turnaround metrics and triage guidance!
Get this week's top welcoming repos + fresh Good First Issues for C++
Free weekly email, scoped to C++. No account needed - confirm once and unsubscribe anytime.