Good First Issues in Cmake
Explore curated starter issues in high-scoring Cmake 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 Cmake 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 (14)
Real-Time Open GitHub IssuesIt'd be quite handy if moonray_gui_v2 had a hotkey to snapshot the current image and store it in the system clipboard so it could be pasted into an email/chat/etc..
Ideally the window size should fit the render size.
Currently DirectionalMap has two behaviors for how it determines the angle: clamped or absolute (see the "clamping_behavior" enum attribute). float cosTheta = dot(N, prime); if (me->get(attrClamping) == ispc::DIRECTIONAL_BEHAVIOR_ABS) { cosTheta = scene_rdl2::math::abs(cosTheta); } cosTheta = saturate(cosTheta); Adding a third "unclamped" behavior would make this shader more flexible. The new behavior should remap the full [-1,1] range of cosTheta to [0,1] rather than simply clamping it with saturate().
When building, this warning appears multiple times during the configuration step: CMake Deprecation Warning at cmake_modules/cmake/FindTBB.cmake:47 (cmake_minimum_required): Compatibility with CMake < 3.5 will be removed from a future version of CMake. Update the VERSION argument <min> value or use a ...<max> suffix to tell CMake that the project does not need compatibility with older versions. Call Stack (most recent call first): moonray/hydra/hdMoonray/CMakeLists.txt:47 (find_package) I’m guessing this can be addressed with a change to our FindTBB.cmake module. filed from DWA internal issue: MOONRAY-5957
All SceneVariables attributes should be listed near the top of the log. Values that are not the default can be noted with an asterisk Attributes should be sorted alphabetically For example: SceneVariables("__SceneVariables__") { ["aperture_window"] = IntVector(-2147483648, -2147483648, -2147483648, -2147483648), ["athena_debug"] = false, ["batch_tile_order"] = 4, -- "morton" ["bsdf_samples"] = 2, ["bssrdf_samples"] = 2, ["camera"] = <null>, ["checkpoint_active"] = false, ["checkpoint_bg_write"] = true, ["checkpoint_interval"] = 15, ["checkpoint_max_bgcache"] = 2, ["checkpoint_max_snapshot_overhead"] = 0, ["checkpoint_mode"] = 0, -- "time" ["checkpoint_overwrite"] = true, ["checkpoint_post_script"] = "", ["checkpoint_quality_steps"] = 2, ["checkpoint_sample_cap"] = 0, ["checkpoint_snapshot_interval"] = 0, ["checkpoint_start_sample"] = 1, ["checkpoint_tile_order"] = 4, -- "morton" ["checkpoint_time_cap"]
filed from DWA internal issue: MOONRAY-2438 Currently, the "Geometry Statistics" table that Moonray prints out (when -stats is enabled) is not sorted by highest face/mesh count to lowest, which can produce tables that look like this: 00:21:46 118.4 GB | ---------- Geometry Statistics --------------------------- 00:21:46 118.4 GB | Geometry Face Mesh Vertex Curves Curves Instance 00:21:46 118.4 GB | Name Count Count Count CV Count Count 00:21:46 118.4 GB | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------- ----------- --------- -------
Summary Review the JSON documentation and examples to ensure they match the final public contracts. Current behavior The module contains extensive header documentation, a README, examples, benchmark reports, and a changelog. Some behavior requires clearer or unified documentation, including: Simple ownership and copy semantics; integer range behavior; JPath mutation behavior; file replacement guarantees; safe API error suppression; ordered versus unordered builders; literal macro configuration; parsing and serialization limits. Expected behavior Users should be able to understand the module’s two JSON models and choose the correct API without reading implementation details. Scope Explain Json versus Simple. Explain when to use each model. Document Simple ownership semantics. Document numeric limits. Document JPath read and write differences. Document file-write guarantees. Document safe and strict error models. Document builder return types. Document dependency requiremen
Summary Add compile tests ensuring each public JSON header includes everything required for independent use. Current behavior The module exposes: build.hpp; convert.hpp; dumps.hpp; jpath.hpp; json.hpp; loads.hpp; Simple.hpp. Headers are often included through the umbrella header, which can hide missing direct dependencies. Expected behavior Every public header must compile as the first and only Vix JSON include in a translation unit. Scope Add one compile target per public header. Compile with GCC. Compile with Clang. Compile with MSVC. Test with strict warnings. Test normal literal configuration. Test enabled literal configuration. Test standalone installation headers. Preserve header-only usage. Suggested files modules/json/tests/headers/build_header_test.cpp modules/json/tests/headers/convert_header_test.cpp modules/json/tests/headers/dumps_header_test.cpp modules/json/tests/headers/jpath_header_test.cpp modules/json/tests/headers/json_header_test.cpp modules/json/test
Summary Prevent the JSON module from unexpectedly changing global CMake variables in parent projects and umbrella builds. Current behavior The module sets global variables such as: CMAKE_CXX_STANDARD; CMAKE_CXX_STANDARD_REQUIRED; CMAKE_POSITION_INDEPENDENT_CODE; CMAKE_RUNTIME_OUTPUT_DIRECTORY. A submodule should generally express requirements through its targets rather than altering unrelated parent targets. Expected behavior The JSON module should use target-scoped configuration wherever possible. Standalone build defaults may still be configured without polluting umbrella consumers. Scope Remove unnecessary global C++ standard changes. Keep target_compile_features() as the public requirement. Review global position-independent-code settings. Review runtime output directory changes. Scope example output paths locally. Scope test output paths locally. Add parent-project integration tests. Preserve standalone behavior. Suggested files modules/json/CMakeLists.txt modules/jso
Summary Add an opt-in durability mode for applications that require data to reach stable storage before dump_file() returns. Current behavior dump_file() writes, flushes the C++ stream, and renames the temporary file. A stream flush does not necessarily guarantee that data or directory metadata has reached durable storage. A system crash or power loss may still lose the latest write. Expected behavior The module should expose an optional durability policy. Normal writes should remain lightweight by default. Durable mode should use platform-specific synchronization where supported. Scope Define a durability option. Synchronize temporary file data before replacement. Synchronize directory metadata after replacement where required. Add POSIX implementation. Add Windows implementation or documented fallback. Report unsupported behavior clearly. Add integration tests where practical. Preserve default performance. Preserve existing APIs. Suggested files modules/json/include/vix/j
Summary Provide one options structure for string serialization and file output. Current behavior Serialization behavior is configured through positional parameters such as: indentation; ASCII escaping. As additional options are added, positional overloads become harder to read and extend. Expected behavior The module should provide an explicit options type while keeping existing overloads. Scope Define a serialization options structure. Support compact output. Support pretty output. Support indentation width. Support ASCII escaping. Define invalid indentation behavior. Integrate options with dumps(). Integrate options with dump_file(). Preserve current overloads. Add tests. Suggested files modules/json/include/vix/json/dumps.hpp modules/json/tests/json_dumps_options_test.cpp Acceptance criteria Existing positional overloads remain compatible. Options-based compact output works. Options-based pretty output works. ASCII escaping follows the selected option. Invalid
Summary Improve compile-time diagnostics when o() receives an invalid key type or malformed key/value argument sequence. Current behavior o() checks only that the total number of arguments is even. Key validation occurs recursively through the constrained internal helper. Invalid keys may therefore produce long template diagnostics originating from internal recursion. Expected behavior Invalid object-builder usage should fail with a concise message identifying the failing key position and required key contract where practical. Scope Add compile-time key validation for every key position. Preserve the even-argument check. Improve diagnostics for invalid first keys. Improve diagnostics for invalid later keys. Add compile-fail tests. Test GCC diagnostics. Test Clang diagnostics. Test MSVC diagnostics. Preserve valid builder behavior. Suggested files modules/json/include/vix/json/build.hpp modules/json/tests/compile_fail/json_builder_invalid_key.cpp modules/json/tests/CMakeList
Summary Add explicit equality comparison for token, array_t, and kvs. Current behavior The Simple model does not expose a documented semantic equality operation. Comparing variant storage directly would compare nested shared_ptr identities rather than necessarily comparing nested values. Applications and tests must convert to Json or implement custom recursive comparison. Expected behavior Simple values should support recursive semantic equality independent of pointer identity. The object-order policy must be explicit. Scope Add primitive token equality. Add array equality. Add object equality. Define object property-order behavior. Define duplicate-key behavior. Handle shared subtrees. Detect cycles safely. Add inequality support. Add nested tests. Preserve existing storage representation. Suggested files modules/json/include/vix/json/Simple.hpp modules/json/tests/json_simple_equality_test.cpp Acceptance criteria Equal primitive values compare equal. Equal nested arra
Summary Add comprehensive round-trip tests between the main JSON model and the Simple value model. Current behavior Tests cover conversion from Simple values to Json. There is no complete round-trip suite validating semantic preservation across nested values. Expected behavior Supported values should preserve their meaning through: Simple → Json → Simple; Json → Simple → Json. The test suite must clearly identify values that cannot be represented losslessly. Scope Test null round trips. Test boolean round trips. Test signed integer round trips. Test floating-point round trips. Test string round trips. Test nested array round trips. Test nested object round trips. Test empty arrays and objects. Test property ordering. Test unsupported unsigned ranges. Test recursion limits. Suggested files modules/json/tests/json_simple_roundtrip_test.cpp modules/json/include/vix/json/convert.hpp Acceptance criteria Supported primitive values round-trip. Nested arrays round-t
Top Cmake Repositories with Beginner Issues (2)
Updated Daily via GitHub GraphQLMoonRay is an open-source, award-winning, state-of-the-art production path tracing renderer, initially developed at DreamWorks and an active member project of the Academy Software Foundation.
A modern C++ runtime for building fast and reliable applications.
How to make your first Cmake open-source pull request
Finding approachable Good First Issues in Cmake 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 Cmake
Free weekly email, scoped to Cmake. No account needed - confirm once and unsubscribe anytime.