We love your input! We want to make contributing to ArbSh as easy and transparent as possible, especially during this refactoring phase to C#/.NET. Contributions can include:
- Reporting a bug in the C# code or the porting process.
- Discussing the current state of the C# code and architecture.
- Submitting a fix or improvement to the C# codebase.
- Proposing new features for the C# shell.
- Helping with the porting of i18n logic from C to C#.
- Improving documentation related to the C# version.
We use Github to host code, to track issues and feature requests, as well as accept pull requests.
We Use Github Flow (or similar)
Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests:
- Fork the repo and create your branch from the
mainbranch (or the relevant development branch). - If you've added code that should be tested, add corresponding C# unit tests (using xUnit, NUnit, or MSTest - check project setup).
- If you've changed APIs or behavior, update the relevant documentation (XML comments in code, Markdown files in
/docs). - Ensure the C# test suite passes (
dotnet test). - Make sure your code follows standard C#/.NET coding conventions (see below).
- Issue that pull request!
In short, when you submit code changes, your submissions are understood to be under the same MIT License that covers the project. Feel free to contact the maintainers if that's a concern.
Report bugs using Github's issue tracker
We use GitHub issues to track public bugs related to the C# refactoring. Report a bug by opening a new issue; it's that easy! Please specify that the bug relates to the C# version.
Great Bug Reports tend to have:
- A quick summary and/or background (mentioning it's the C# version).
- Steps to reproduce
- Be specific!
- Give sample code or commands if you can.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
- Information about your environment (.NET version, OS).
- Follow the established C# coding conventions used in the project (generally aligned with Microsoft C# Coding Conventions).
- Use
dotnet formator the formatting settings configured in the IDE (e.g., Visual Studio, VS Code with C# extension) to ensure consistency. - Use descriptive variable and method names.
- Add XML documentation comments (
///) to public APIs. - Keep methods focused and readable.
(The previous C/Betty style guidelines no longer apply to new C# code).
.NET is designed to be cross-platform. However, keep in mind:
- Avoid platform-specific APIs (P/Invokes to native libraries) unless absolutely necessary and properly abstracted or conditionally compiled.
- Test your changes on target platforms (Windows, Linux, macOS) if they involve potentially platform-sensitive areas (like file system access, process management, console interaction).
- Use .NET Standard libraries where possible for maximum compatibility if creating shared libraries.
By contributing, you agree that your contributions will be licensed under its MIT License.