Thanks for your interest in contributing to CodeJam! This document provides guidelines and instructions for contributing.
The CodeJam team consists primarily of Russian speakers. Most discussions take place on the RSDN project forum.
For English speakers, please use GitHub issues for discussions.
All project artifacts—including member naming, documentation, code comments, issues, and wiki content—should be in English.
Feel free to fix typos, phrasing errors, or obvious mistakes in the documentation. For more significant changes, please open an issue first to discuss your proposed changes.
We welcome contributions that align with CodeJam's mission:
CodeJam is a collection of reusable .NET components that simplify everyday development tasks by eliminating the need to copy helper methods and utility classes between projects.
-
Quality bar — CodeJam aims to provide the same level of API design and usability as the .NET Framework. New additions will be reviewed for consistency with existing conventions. We may suggest naming changes or adjustments to follow framework design guidelines. Be prepared for discussion!
-
No third-party dependencies — We keep the library lightweight and easy to integrate.
-
Specialized code — Platform-dependent or specialized functionality should go into separate packages such as CodeJam.Extensibility or CodeJam.Web.
The project supports standard clone, restore, and build workflows. Ensure you have the following:
- .NET SDK (latest version recommended)
- Visual Studio 2022 or later (optional but recommended)
We include ReSharper settings (.CodeJam.sln.DotSettings) to help maintain consistent code style.
- If you have ReSharper installed, fix all code issues with severity higher than Hint before submitting changes.
- If you don't use ReSharper, consider using ReSharper Command Line Tools.
- If a ReSharper recommendation is obviously incorrect, suppress it using "Disable once with comment."
- For concerns about team-wide settings, please file an issue first.
We recommend the free ReSpeller extension for spell checking. Add unrecognized words to the solution team-shared dictionary via Add custom word to user dictionary > Save To > Solution team-shared.
Alternatively, you can use the VS Spell Checker extension, though it doesn't check typos in code.
Use any editor or extension to edit .md files. Please ensure your changes are compatible with GitHub Flavored Markdown.
Our coding conventions are based on the .NET Core project guidelines with a few exceptions.
-
Braces — Use Allman style braces. Each brace begins on a new line. Single-line blocks should not use braces.
-
Indentation — Use tabs, not spaces.
-
Fields — Use
_camelCasefor internal and private fields. Prefix with_. Usereadonlywhere possible. For static fields,readonlyshould come afterstatic(e.g.,static readonly). -
this.keyword — Avoid unless absolutely necessary. -
Visibility — Always specify visibility explicitly (e.g.,
private string _foo, notstring _foo). Visibility should be the first modifier (e.g.,public abstract, notabstract public). -
Using directives — Place at the top of the file, outside of
namespacedeclarations. Sort alphabetically. -
Blank lines — Avoid more than one consecutive blank line.
-
Trailing spaces — Avoid spurious trailing spaces. Enable "View White Space" (Ctrl+E, S) in Visual Studio to detect them.
-
varkeyword — Usevarwhen the type is obvious. -
Language keywords — Use language keywords instead of BCL types (e.g.,
int,string,floatinstead ofInt32,String,Single). -
Constants — Use PascalCasing for constant fields and camelCasing for local constant variables. The only exception is interop code where the name must match exactly.
-
nameof()— Usenameof(...)instead of string literals whenever possible.
If you have questions, feel free to:
- Open a GitHub issue
- Visit the RSDN forum (Russian)