Back to Explorer
Beginner Friendly Open-Source C#

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.

Updated: Sun, 30 Aug 2026 UTC (Live GitHub Sync)
Real-Time Radar

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 Issues
ArcadeMakerSources/ArcadeMaker119 Tier B · 76 pts
#35Opened today
Add engine functionality for touch screens input

ArcadeMaker should be a cross platform engine, and it should allow targetting mobile devices. Currently, the engine provides functions for getting input from mouse and keyboard (like keyDown(key) and getMouseX() and so on), but it still lacks basic functions for touch panels input. MonoGame, of couse, provides this functionality, so in order to add it to ArcadeMaker, the same patterns should be impemented: Declaring the engine functions (e.g. getTocuhPositions() and isTouching(x, y, maxDistance) in the IGame interface (ArcadeMaker.Core/IGame.Funcs.cs). The declarations should look like this: /// <summary> /// Checks if the player is currently touching a specific point. /// </summary> [EngineFunc(/*num of params: */ 3)] [Param("x", ParamType.Number, "The x to check for touching at.")] [Param("y", ParamType.Number, "The y to check for touching at.")] [Param("maxDistance", ParamType.Number, "The range for the check.")] IValue IsTouching(Exp.Instance? _, IValue?[] args); Write the back

enhancementgood first issue
aaru-dps/Aaru611 Tier S · 72 pts
#962Opened 3 days ago
Unbalanced markup stack printing ATIP

Version 6.0.0-beta.1 Commit hash No response Tested debug version? Yes Which operating systems have you used? Windows Linux macOS Other What is the architectural bit size you're using? 32-bit 64-bit Unsure or unknown What processor are you using? An Intel or AMD An ARM or Apple Silicon Unsure or unknown Description Unbalanced markup stack Exact command line used aaru m info /dev/sr0 Expected behavior Printing ATIP Actual behavior Exception Output of command execution with debug output enabled ATIP System.InvalidOperationException: Unbalanced markup stack. Did you forget to close a tag? at IEnumerable<AnsiMarkupSegment> Spectre.Console.AnsiMarkup.Parse(string markup, Style? style) in /_/src/Spectre.Console.Ansi/AnsiMarkup.cs:106 at Spectre.Console.Markup..ctor(string text, Style? style) in /_/src/Spectre.Console/Widgets/Markup.cs:43

bugbeginner
dotnet/roslyn20,615 Tier A · 64 pts
#85025Opened 5 days ago
Investigate whether we can improve DAG lowering of `is` patterns

PR #84961 resolved #80052 by adding a special handling for short is patterns. We should investigate if a more general solution would be possible. See #84961 (comment) by @RikkiGibson: I was wondering whether the increased overhead of the DAG codegen, is inherent to it or not? Basically, is there is some adjustment we can instead make to the DAG codegen, which would allow it to generate code generally as good or better than the "naive" sequence of linear tests? This could either be an optimization of the lowered DAG code itself, or, some shape change to the lowered code which allows a subsequent optimization pass (e.g. temp reuse) to be able to optimize some code it couldn't before. Note that I'm not deeply opposed to the current approach or to being pragmatic about making sure we can solve the key scenario for .NET 11. Just wondering if it's possible for us to pursue a better general solution. And #84961 (comment): #68694 and #72273 already attempted a more general solution bu

help wantedArea-CompilersCode Gen Quality
space-wizards/space-station-143,751 Tier A · 62 pts
#45632Opened 5 days ago
Add Guides to all the Jobs

Found this out when redoing the Character UI for objectives refactor. I made it so clicking on the job in your character menu opened up the UI. Unfortunately, NONE OF OUR JOBS HAVE GUIDES ASSOCIATED WITH THEM IN THEIR PROTOTYPES. This can be done entirely with YAML. This should be done, it should've been done years ago. These guides exist I'm pretty sure??? AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA I need my strongest YAML samurai to save me.

P1: HighBeginner FriendlyA: Guidebook
2
ArcadeMakerSources/ArcadeMaker119 Tier B · 76 pts
#33Opened 6 days ago
Add engine function for taking screenshots

I think that having the ability to take game screenshots from within the code would be nice. Sometimes games want to allow the player to capture the scores screen and stuff. To implement it, an engine function declaration needs to be added to ArcadeMaker.Core/IGame.Funcs.cs file, and the implementation needs to be added at ArcadeMaker/Engines/MonoGame/Core/ArcadeMakerMonoGame.cs. A quick Google search shows that MonoGame has a RenderTarget2D class that can be used for that. The frame needs to be drawn to an instance of this target class, and it should happen in Draw event, so I guess that our engine function will need to throw an exception if its called outside of Draw event. Note that a futile implementation of the function would also be needed at the IDE project, in the FutileGame class. Just add the signature of the method to the class, with empty body. If you have any questions, please feel free to ask! 🙂

enhancementgood first issue
Ruben2776/PicView3,461 Tier A · 67 pts
#383Opened 6 days ago
Customizable user-defined actions (in the context menu)

Is your feature request related to a problem? Please describe. PicView's context menu cannot be customized with user-defined actions, making it difficult to quickly open the current image with other programs or tools. Describe the solution you'd like Add support for user-defined context menu actions, with configurable commands and arguments. Arguments could include variables such as the current image file path, allowing users to launch external programs with the selected image. Describe alternatives you've considered Using external scripts or manually opening images in other applications, but this is less convenient than having the actions directly in PicView. Additional context Allow users to define custom context menu actions that execute external programs or scripts. Each action could specify the executable or command to run, along with configurable arguments and placeholders such as the current image's full file path. For example: Name: Make image smaller Command: magick.exe Argume

enhancementhelp wantedplanned featureno-stale
ForNeVeR/Cesium448 Tier A · 65 pts
#1012Opened 6 days ago
Enum types should be exported via the assembly metadata

Imagine the following C program: typedef enum Side { Side_L, Side_R } Side; I expect Side_L and Side_R to be available for .NET side: either Side type should be exported, or at least constants Side_L and Side_R should exist. I propose: let's start by exposing this as a real enum type. Note that the scope of this issue is to export the type purely for .NET interop purpose: this doesn't mean that the C functions accepting this enum's values have to be converted as well. It would be nice, surely, but I'm not sure what the consequences for the function pointer compatibility this might be. So, for now, let's just update the CLR metadata, and not use the values of this enum anywhere in the Cesium-generated IL code.

kind:featurestatus:help-wantedarea:cil-interoparea:compiler
orcasound/orcahello57 Tier S · 72 pts
#621Opened 7 days ago
Dashboard crashes the Blazor circuit with "Chart is not defined"

Opening the Dashboard can terminate the Blazor circuit and leave the yellow error bar. On a local run it happens on a cold page load, both from the sidebar and from a direct /Dashboard load. It is not unconditional: production is fine, and reloading the same page with Chart.min.js already in the browser cache is fine too. From the UI log: Microsoft.JSInterop.JSException: Chart is not defined ReferenceError: Chart is not defined at DrawDetectionsChart (<anonymous>:17:9) at AIForOrcas.Client.Web.Pages.Dashboard.LoadMetrics() in Dashboard.razor.cs:line 46 at AIForOrcas.Client.Web.Pages.Dashboard.OnInitializedAsync() in Dashboard.razor.cs:line 22 What I measured on a local run: Cold load: the circuit goes down, and typeof window.Chart is "function" a few seconds later. The library does arrive, just after the call that needs it. Same page reloaded, script in cache: no crash, both charts draw. Production: Chart defined, both charts draw, no console errors. Dashboard.razor loads

buggood first issuemoderator portal
GoldenPotato137/PotatoVN1,409 Tier B · 60 pts
#720Opened 8 days ago
[HELP] 用bangumi账号登录的potatovn账号登录状态过期

问题描述 以前是用bgm账号来登录potatovn的账号的,前段时间没打开过potatovn,现在登录状态过期了,然后也没办法用bgm登

help wanted
3
robinrodricks/FluentStorage457 Tier B · 57 pts
#158Opened 8 days ago
Testers needed for new Git store

Hello folks, I tested on my system the Git store (but just for reading the files) and its working perfectly. Any feedback on more operations and usage cases are very welcome.

help wanteddiscussionGit Store
3
umbraco/Umbraco-CMS5,226 Tier A · 62 pts
#23710Opened 9 days ago
TipTap toolbar should not have a shadow until scrolled

Which Umbraco version are you using? 17+ Bug summary The TipTap toolbar should not display a shadow unless its content is scrolled. Today it looks like this when viewing the top of the content: Specifics No response Steps to reproduce Setup a tiptap(Rich Text Editor) editor in a document. Expected result / actual result No response

community/up-for-grabsgood first issuecategory/uitype/bug
dotnet/roslyn20,615 Tier A · 64 pts
#84987Opened 9 days ago
Default value of a struct type should give nullable initial state to some field-backed properties

The current behavior is dependent on whether we are currently constructing the struct instance, and feels a little inconsistent. Basically, it feels like we should be able to get a similar behavior for member flow states, when any default value of a struct type is used, as when we are working out the initial state of struct fields in a constructor. Note that 'null-resilient' properties using field keyword would be excepted from this. Their initial flow state would be the same as the property. Currently working on a change to make that work more consistently in constructors. (resolving #77991). I consider this issue low priority struct S { public void M() { this = default; this.Prop2.ToString(); // no warning } public S() { this = default; Prop2.ToString(); // warning } public string Prop2 { get; set; } }

help wantedArea-CompilersFeature - Nullable Reference Types
microsoft/aspire6,251 Tier A · 63 pts
#19553Opened 9 days ago
[VS Code] Automatically expand the only AppHost in the Aspire pane

Is there an existing issue for this? I have searched the existing issues Is your feature request related to a problem? Please describe the problem. When a workspace contains only one AppHost, the Aspire pane still requires the user to expand it before its actions are visible. There is no ambiguity in this case, so the extra interaction hides the available AppHost actions unnecessarily. Describe the solution you'd like When AppHost discovery finds exactly one AppHost in the workspace, automatically expand that AppHost in the Aspire pane so all of its actions are immediately shown. Additional context This is part of #19405.

good first issuehelp wantedarea-vscode-extensionarea-vscode
3
#17Opened 10 days ago
Add first-class vLLM runtime support through WSL

Goal Add vLLM as a first-class selectable serving engine while preserving the existing workflow: Add or register a compatible model. Create launch profiles. Select a runtime such as vLLM · WSL · CUDA. Load it from Overview. Use its direct OpenAI-compatible endpoint or the shared gateway. Monitor, group, unload, and automate it through the existing UI and llwmctl. Initial scope The first supported configuration should be: WSL2 with a supported Ubuntu distribution NVIDIA CUDA An application-managed, version-pinned vLLM Python environment Hugging Face repository IDs or complete local Transformers model directories Installation, status, update, repair, and removal operations Managed vllm serve lifecycle, readiness, logs, API key, and stable ports vLLM Prometheus telemetry mapped into the existing live and historical Metrics surfaces Native Windows and community-maintained vLLM forks are out of scope for the initial implementation. GGUF support should be considered separately because

enhancementhelp wanted
ArcadeMakerSources/ArcadeMaker119 Tier B · 76 pts
#29Opened 10 days ago
Create engine function for dynamically creating / exploring paths

ArcadeMaker has a feature called "paths" - you can draw a path in the IDE, and make an object following it using startPath(...) or draw it using drawPath(...). But sometimes you want to get (in the code) the coordinates of a path, to check for intersection with it, for example. Currently, there's no function for getting the coordinates of a path. And in other times you would want to dynamically construct a path in the code, and the engine lacks the right function for this too. To implement a function that gets a path ID and returns an array of all of its coordinates, you should add to IGame.Funcs.cs a method like this: /// <summary> /// Gets an array of all the coordinates of the given path. /// </summary> /// <param name="expinst">The calling runtime instance (unused).</param> /// <param name="args">(pathID).</param> [EngineFunc(1)] [Param("pathID", ParamType.Number, "The ID of the path to follow. Use 'Paths' enum for that, e.g. Paths.PthRoad.")] Exp.Instance GetPathPoints(Exp.Instan

enhancementgood first issue
2
DomCR/ACadSharp826 Tier A · 58 pts
#1185Opened 12 days ago
Need to Help on Dynamic block properties

Hi Dom, Can you Share some example codes to get the dynamic properties of blocks. through code. i have attached a CAD drawing for reference. Dynamic blocks.zip Regards, Rajapandi.S

help wanted
1
MudBlazor/MudBlazor10,560 Tier A · 63 pts
#13646Opened 12 days ago
MudNumericField: Pattern adds extra *

Before reporting I searched existing issues I tried in private/incognito browser What went wrong? What i wanted to archive: "A numeric field which only accepted minus at fist symbol for negative values, numbers (0-9) and symbols (,.) for thousand sections as well as digits." What I've done: Use the pattern property with following RegEx: "^-?[0-9.,]*$" Its working in the UI, but I get en error in the browser which tells me the Pattern "^-?[0-9.,]*$*" is not allowed because there are nothing to repeat. And if I get it correct adds this line NumericFlield a extra * to the pattern, which I think is a bug? Reproduction link https://try.mudblazor.com/snippet/cOwKYWlWevbljMey Reproduction steps Add "^-?[0-9.,]*$" as Pattern to component Render in browser open dev tools Version (bug) 9.8.0 Version (working) No response Environment Edge Blazor rendering mode Server

buggood first issuehas workaround
1
space-wizards/space-station-143,751 Tier A · 62 pts
#45432Opened 12 days ago
Nerf Pax into Oblivion

Pax is quite lame currently in its current implementation. I think as a chemical it's cool, but a 5u injection results in more than 12 seconds of being completely unable to do combat. Combine this with a hypospray and you can be completely disabled from combat entirely as there's not much you can do to stop someone from just injecting you over and over again. Back when mediborgs could hold beakers in the same hand as their hypos this was taken to an extreme since you couldn't run away from their either without an EMP or Stimulants. There's basically no counterplay to a Pax injection other than prayer, and is made worse since it's so effective you can easily mix it with harmful chems that knockdown, stun, or just fucking kill you to completely remove someone's ability to play the game. I grant my accord to whoever finds the most creative and fun way to nerf pax into something fun. I hate microbalance so I'm not gonna do this shit myself.

T: Balance ChangeBeginner FriendlyA: CombatA: Medical
6
orcasound/orcahello57 Tier S · 72 pts
#608Opened 12 days ago
Submit callbacks on Confirmed, Unknown and False Positives pages never clear the list before reloading

The fix in #606 covered Candidates, but the same shape exists on the other three detection pages. In Confirmed.razor.cs, Unknown.razor.cs and FalsePositives.razor.cs the ActOnSubmitCallback calls LoadDetections() without clearing detections first, while the page-change and filter-change callbacks on those pages do clear it. The bottom pagination component only checks detections != null && detections.Count > 0, so a reload that comes back empty leaves the previous list's pager rendered under the no-records message. Seen live on the Confirmed page: re-moderating the last confirmed detections to No empties the list and the pager stays under the message. Unknown and False Positives share the same code path. To reproduce: on any of the three pages, filter down to a single page of results and re-moderate the last record so it leaves the list. Same symptom as #605, same one-line fix as #606: move the clear to the top of each page's LoadDetections() and drop the per-callback clears.

buggood first issuemoderator portal
4
jellyfin/jellyfin56,352 Tier B · 51 pts
#17666Opened 12 days ago
Splashscreen - Unsupported image locks branding page

Description of the bug Upload a new Splashscreen in unsupported format and save other changes. Should not touch the image, but something happens (405 server code and jf-web can't access property "_sdk", r is undefined) Opened another web instance in different browser, but I can't reach the form. Reproduction steps Upload a JXL or so Upload fails (good), because it needs to be SkiaSharp readable/supported Save the form (save other changes) It changed something for image. What is the current bug behavior? 405 error from the server and SDK error in js-web What is the expected correct behavior? Only save supported formats (readable by SkiaSharp or mime-type), additionally would be best to be able to reach branding page for an update (never send 405 or make web more robust on failed response) Jellyfin Server version Master Specify commit id No response Specify unstable release number No response Specify version number No response Specify the build version Release Environment - OS: linux -

buggood first issue
1
Mahdi-mortazavi/relay164 Tier B · 65 pts
#74Opened 14 days ago
for Linux?

What problem are you hitting درود برای لینوکس هم میساختید دیگه What you would like Relay to do درود برای لینوکس هم میساختید دیگه What you do today instead درود برای لینوکس هم میساختید دیگه

enhancementhelp wanted
1
dotnet/runtime18,237 Tier A · 68 pts
#132366Opened 14 days ago
[API Proposal]: Read an environment variable without expansion

Description i was instructed to post the issue here, as its about .NET api main issue when SetEnvironmentVariable() is used that contains a %variable% the registry key is set as reg_sz instead of expanded so the variable is not correctly save and breaking for example the path environment variable or other created variables Proposed technical implementation details (optional) GetEnvironmentVariable() add a new optional parameter that can be used to get a variable not expanded This allows to save it to a variable and pass it directly to SetEnvironmentVariable without breaking %% inside variables also for SetEnvironmentVariable it should detect if a % is inside the parameter and set the korrekt registrykey type when saving (reg_expand_sz) currently it always saves as reg_sz which breaks Path variable when used here the current behaviour is described. for the correct behaviour when creating the reg key (reg_sz or expanded), you can also look here at line 90 https://github.com/microsoft/Po

api-suggestionarea-System.Runtimehelp wanted
4
kowalej/BlueMuse242 Tier C · 30 pts
#84Opened 15 days ago
Connection & Streaming General Issues - Tracking For Version 2.5 and Higher

There were various connection / pairing / streaming issues, some very old in the issues section. I've cleaned up the old issues and am recommending everyone try out version 2.5 or higher and report back if still having issues. Version 2.5 has been modernization to WinUI 3 + .NET 10. Several bug fixes have been applied relating to Bluetooth and connection handling. The LSL Bridge has also been consolidated into the main application, so there's no just the single executable. I believe many of the random connection issues should now be resolved, but if they are not, I'd like to keep issues consolidated as much as possible. Most of the old issues were probably hitting the same bugs or required similar troubleshooting with the systems or headsets. If there are any new actual bugs detected, we can spin them off to separate issues as needed. Reference Old Issues: #77 #76 #74 #71 #70 #57 #56 #54 #53 #51 #42 #41 #38 #37 #30 #26 #21 #18

help wanted
files-community/Files44,826 Tier A · 62 pts
#18820Opened 15 days ago
Bug: Can't copy text from rename text box

Description Steps To Reproduce Select file/folder Click rename Ctrl + C the highlighted text Try paste in another text box Paste will be last thing copied before Files attempt/nothing Files Version 4.2.6.0 Windows Version 10.0.26200.8875 User ID 670e1391-905a-4fe8-a9da-a22f01a4676c Log File debug.log

good first issue
2
#250Opened 16 days ago
关于帧率上限解锁的问题

Windows 版本 26200.9168 Snap Hutao 版本 1.19.9.0 设备 ID B69B21BBB95BD819A55C502BCB4FBDE3 问题分类 游戏启动器 发生了什么? 之前帧率解锁功能可用,但在我清理显卡着色器缓存并删除所有C:\Users\用户名\AppData\Local\NVIDIA\DXCache中的能删除的.NVPH文件后,该功能失效,其他注入功能正常运行。我试过重启,重装胡桃,,更新驱动等方法,都没用,游戏一直保持60帧。求问解决方法 你期望发生的行为? No response 最后一步 我认为上述的描述已经足以详细,以允许开发人员能复现该问题

help-wantedNeed-investigationarea-Inject
4
dotnet/BenchmarkDotNet11,473 Tier A · 69 pts
#3231Opened 16 days ago
Failed to setting CPU affinity over 32-processor via cli arg

On current version of BenchmarkDotNet implementation. --affinity command line argument is parsed as int (signed). So it can't accept value that over int.MaxValue value and it can't specify over 32-processor affinity. BenchmarkDotNet/src/BenchmarkDotNet/ConsoleArguments/CommandLineOptions.cs Line 67 in b515068 public int? Affinity { get; set; } I thought, it need to change affinity parameter to nuint (unsigned) to pass affinity as bit mask. Note: Currently BenchmarkDotNet seems not support CPU groups. So affinity can set up to 64 logical CPU cores. BenchmarkDotNet/src/BenchmarkDotNet/Extensions/ProcessExtensions.cs Lines 45 to 46 in b515068 // Max supported affinity without CPU groups is 64 long cpuMask = Environment.ProcessorCount >= 64 ? un

up-for-grabs
Consolonia/Consolonia816 Tier A · 62 pts
#679Opened 16 days ago
Tests lifetime

ConsoloniaAppTestBase can initialize the application only once per entire app domain. We should make it to teardown and spin up for each test. https://github.com/Consolonia/Edit.NET/actions/runs/31764312730/job/94656923807?pr=61

bugenhancementgood first issueCI
unchihugo/FluentFlyout4,057 Tier B · 53 pts
#1021Opened 17 days ago
[FEATURE REQUEST] Update 'About > Open Source Licenses' section in settings

Description FluentFlyout setting's about page's open source licenses section is outdated: We removed WPF-UI 4.3.0 and replaced it with unchihugo.WPF-UI 4.4.1. This should be an easy change in the file FluentFlyoutWPF/ViewModels/AboutViewModel.cs. Open for new contributors looking to help with the project. Additional context No response Confirm that you have done the following: I have searched that there is no existing issue regarding my feature request I have read the FAQ and there is no answer to my feature request

enhancementgood first issue
microsoft/aspire6,251 Tier A · 63 pts
#19357Opened 17 days ago
Make AppHost start and stop operations worktree-aware

Is your feature request related to a problem? Please describe the problem. When AppHost start and stop operations are invoked from a git worktree, they are not aware that the checkout is a linked worktree. A start can conflict with an instance from the primary checkout or another worktree, and a stop can target the wrong running AppHost unless the caller manually supplies the correct isolation and project options. Describe the solution you'd like Make the AppHost start and stop operations detect the current git worktree. Starting from a linked worktree should automatically use isolated mode, while stopping should prefer or scope itself to the AppHost associated with that worktree. Explicit project or isolation arguments should continue to override inferred behavior. Additionally, an isolated property should be exposed via the tool so it is more discoverable to agents Additional context This would make concurrent agent and developer workflows safer without requiring every caller to unde

good first issuehelp wantedarea-vscode-extensionarea-vscode
2
IvanMurzak/Unity-MCP3,954 Tier A · 65 pts
#950Opened 17 days ago
tests-run: TotalTests ignores all filters (counts entire test tree)

tests-run reports TotalTests as the size of the entire test tree for the given testMode, ignoring testAssembly / testNamespace / testClass / testMethod. PassedTests / FailedTests / SkippedTests count only executed tests, so the summary is internally inconsistent whenever a filter is set. Repro Unity 6000.3.5f1, com.ivanmurzak.unity.mcp 0.87.0. Project has 941 tests in EditModeTests.dll. tests-run { testMode: EditMode, testAssembly: "EditModeTests", testClass: "SongPipelineCacheTests" } → { Status: "Passed", TotalTests: 942, PassedTests: 1, FailedTests: 0, SkippedTests: 0 } One test ran, but TotalTests reports the whole EditMode tree (941 project tests + 1 stub from com.unity.addressables). The same 942 appears for an unfiltered run, a single-assembly run, and this single-class run — the value is constant regardless of filter. Cause TestResultCollector.RunFinished — Editor/Scripts/API/Tool/Tests/TestResultCollector.cs:105: _summary.TotalTests = CountTests(result.Test); result.Tes

enhancementhelp wanted
2

Top C# Repositories with Beginner Issues (20)

Updated Daily via GitHub GraphQL
GeiserX
whisper-subs
GeiserX/whisper-subs
SElite
83·C#

Jellyfin plugin for local AI-powered subtitle generation using Whisper - all processing stays on your server

#accessibility#ai#automation
97%
Merge Rate
2h
Review Time
100%
1st-Timers
1 GFI
Scorecard
Ozark-Connect
NetworkOptimizer
Ozark-Connect/NetworkOptimizer
SElite
984·C#

Self-hosted optimization, monitoring (NMS), and security audit tool for UniFi Networks. Includes Wi-Fi Optimizer for wireless health scoring and channel optimization, advanced DNS/VLAN/firewall security checks, config optimization suggestions, centralized WAN and LAN speed test server w/ L2 tracing, CM, ONT, SFP, 5G modem stats +more.​​​​​​​​​​​​​

#bufferbloat#docker#network-optimization
96%
Merge Rate
3d
Review Time
80%
1st-Timers
2 GFI
Scorecard
unitystation
unitystation
unitystation/unitystation
SElite
736·C#

The original unitystation

#hacktoberfest#ss13#unity
97%
Merge Rate
2d
Review Time
100%
1st-Timers
2 GFI
Scorecard
blazorblueprintui
ui
blazorblueprintui/ui
SElite
552·C#

A collection of accessible, headless primitives and beautifully-designed components for Blazor inspired by shadcn/ui.

#accessibility#aspnetcore#blazor
93%
Merge Rate
<1h
Review Time
80%
1st-Timers
1 GFI
Scorecard
ArcadeMakerSources
ArcadeMaker
ArcadeMakerSources/ArcadeMaker
BSolid
119·C#

A 2D game engine with its own programming language and IDE.

#cross-platform#game-engine#ide
100%
Merge Rate
17h
Review Time
100%
1st-Timers
3 GFI
Scorecard
DotHarness
dotcraft
DotHarness/dotcraft
SElite
386·C#

An embeddable C#/.NET AI agent runtime for building extensible agents that evolve with your projects.

#agent#agent-runtime#coding-agents
96%
Merge Rate
2d
Review Time
100%
1st-Timers
1 GFI
Scorecard
sensslen
nuget-license
sensslen/nuget-license
SElite
168·C#

.NET Core tool to print or save all the licenses of a project

85%
Merge Rate
<1h
Review Time
75%
1st-Timers
1 GFI
Scorecard
Fallout-build
Fallout
Fallout-build/Fallout
SElite
130·C#

☢️ Fallout — The C#/.NET Build System

81%
Merge Rate
4h
Review Time
100%
1st-Timers
2 GFI
Scorecard
dotnet
docker-tools
dotnet/docker-tools
SElite
180·C#

This is a repo to house some common tools for our various docker repos.

87%
Merge Rate
20h
Review Time
88%
1st-Timers
3 GFI
Scorecard
aaru-dps
Aaru
aaru-dps/Aaru
SElite
611·C#

Aaru Data Preservation Suite

100%
Merge Rate
9h
Review Time
100%
1st-Timers
1 GFI
Scorecard
trimble-oss
dba-dash
trimble-oss/dba-dash
SElite
429·C#

DBA Dash - SQL Server Monitoring Tool

98%
Merge Rate
4d
Review Time
67%
1st-Timers
5 GFI
Scorecard
orcasound
orcahello
orcasound/orcahello
SElite
57·C#

Real-time AI-assisted killer whale notification system (model and moderator portal) :star:

#artificial-intelligence#audio-analysis#audio-processing
85%
Merge Rate
1h
Review Time
80%
1st-Timers
2 GFI
Scorecard
microsoft
OpenAPI.NET
microsoft/OpenAPI.NET
SElite
1.6k·C#

The OpenAPI.NET SDK contains a useful object model for OpenAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.

#http#openapi
88%
Merge Rate
1d
Review Time
83%
1st-Timers
4 GFI
Scorecard
MobiFlight
MobiFlight-Connector
MobiFlight/MobiFlight-Connector
SElite
356·C#

MobiFlight is an open source project that allows you to create your own home cockpit for your favorite flight simulator in a flexible, affordable and extremely user-friendly way.

#arduino#flight-simulation#flight-simulator
85%
Merge Rate
22h
Review Time
69%
1st-Timers
9 GFI
Scorecard
nickna
SharpTS
nickna/SharpTS
BSolid
151·C#

Compile TypeScript to .NET IL; Use .NET classes in Typescript

#aot#csharp#dotnet
97%
Merge Rate
2d
Review Time
100%
1st-Timers
1 GFI
Scorecard
Eppie-io
Eppie-App
Eppie-io/Eppie-App
SElite
411·C#

Eppie — open protocol encrypted p2p email

#cryptography#csharp#decentralization
96%
Merge Rate
7d
Review Time
67%
1st-Timers
4 GFI
Scorecard
outfox
2dog
outfox/2dog
BSolid
179·C#

🦴 2dog is Godot in .NET

#csharp#dotnet#gamedev
94%
Merge Rate
2d
Review Time
100%
1st-Timers
3 GFI
Scorecard
nightscout
nocturne
nightscout/nocturne
AWelcoming
111·C#

A next-generation platform for diabetes management

#cgm#cgm-remote-monitor#diabetes
89%
Merge Rate
2d
Review Time
100%
1st-Timers
1 GFI
Scorecard
ElectronNET
Electron.NET
ElectronNET/Electron.NET
AWelcoming
7.6k·C#

:electron: Build cross platform desktop apps with ASP.NET Core (Razor Pages, MVC, Blazor).

#asp-net-core#asp-net-core-mvc#aspnet
95%
Merge Rate
10d
Review Time
100%
1st-Timers
5 GFI
Scorecard
dotnet
BenchmarkDotNet
dotnet/BenchmarkDotNet
AWelcoming
11.5k·C#

Powerful .NET library for benchmarking

85%
Merge Rate
8h
Review Time
100%
1st-Timers
1 GFI
Scorecard

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.