Return to main page.
How to contribute to DiscImageChef:

Contributing to DiscImageChef

:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:

The following is a set of guidelines for contributing to DiscImageChef and its modules. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.

Table Of Contents

Code of Conduct

I don't want to read this whole thing, I just have a question!!!

What should I know before I get started?

How Can I Contribute?

Styleguides

Code of Conduct

This project and everyone participating in it is governed by the DiscImageChef Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to claunia@claunia.com.

I don't want to read this whole thing I just have a question!!!

Note: Please don't file an issue to ask a question. You'll get faster results by using the resources below.

You can join our IRC channel on chat.freenode.net at channel #DiscImageChef

What should I know before I get started?

DiscImageChef and modules

DiscImageChef is a large open source project — it's made up of 18 modules. When you initially consider contributing to DiscImageChef, you might be unsure about which of those modules implements the functionality you want to change or report a bug for. This section should help you with that.

DiscImageChef is intentionally very modular. Here's a list of them:

How Can I Contribute?

Reporting Devices

DiscImageChef tries to be as universal as possible. However some devices do not behave in the expected ways, some media is unknown and needs to be known prior to enabling dumping of it, etc.

For that reason, DiscImageChef includes the device-report command. Using this command will guide you thru a series of questions about the device, and if it contains removable media, for you to insert the different media you have, and create a report of its abilities. The report will automatically be sent to our server and saved on your computer. Please note that we do not store any personal information and when possible remove the drive serial numbers from the report.

If you have a drive attached to a computer that you cannot run the full DiscImageChef on it but can compile a C89 application, you can use DiscImageChef.Device.Report. In this case the report will only be created locally and you should attach it to a bug report.

Reporting Bugs

This section guides you through submitting a bug report for DiscImageChef. Following these guidelines helps maintainers and the community understand your report :pencil:, reproduce the behavior :computer: :computer:, and find related reports :mag_right:.

Before creating bug reports, please check this list as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible. Fill out the required template, the information it asks for helps us resolve issues faster.

Note: If you find a Closed issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.

Before Submitting A Bug Report

How Do I Submit A (Good) Bug Report?

Bugs are tracked as GitHub issues. After you've determined which module your bug is related to, create an issue on that repository and provide the following information by filling in the template.

Explain the problem and include additional details to help maintainers reproduce the problem:

Include details about your configuration and environment:

Suggesting Enhancements

This section guides you through submitting an enhancement suggestion for DiscImageChef, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion :pencil: and find related suggestions :mag_right:.

Before creating enhancement suggestions, please include as many details as possible. Fill in the template, including the steps that you imagine you would take if the feature you're requesting existed.

How Do I Submit A (Good) Enhancement Suggestion?

Enhancement suggestions are tracked as GitHub issues. After you've determined which module your enhancement suggestion is related to, create an issue on that repository and provide the following information:

Your First Code Contribution

Unsure where to begin contributing to DiscImageChef? You can start by looking through these beginner and help-wanted issues:

Both issue lists are sorted by total number of comments. While not perfect, number of comments is a reasonable proxy for impact a given change will have.

If you want to read about using DiscImageChef, the wiki is available.

Do not modify the interfaces. If you need or want to, comment in an issue how and why you want to change it and we'll discuss it. Same applies for creating new interfaces.

DiscImageChef uses C# 7 language features (inline declaration, Tuples, etc.) so it can only be compiled with VisualStudio 2017 or higher, Xamarin Studio 7 or higher, MonoDevelop 7 or higher, or JetBrains Rider 2017.2 or higher.

Pull Requests

Patronizing

If you want to donate money you can become a patron at https://www.patreon.com/DiscImageChef

This money will be used to get more hardware on which to test DiscImageChef.

Donating

You may donate us one of the devices we need.

Needed information

If you have test images, imaging applications that generate formats we do not support, or documentation about media dump formats, filesystems or partitioning schemes we do not support, you can provide us with that information to add support for them.

Styleguides

Git Commit Messages

Code Styleguide

Note: DiscImageChef is quite low-level so unneeded object-oriented abstractions (e.g. using classes when a struct suffices) will be rejected. LINQ is accepted.