Skip to content

Commit

Permalink
Contributing guide
Browse files Browse the repository at this point in the history
  • Loading branch information
bagggage committed Oct 10, 2024
1 parent 9411faf commit 2a77180
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
74 changes: 74 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Contributing

## Start Writing Code

The best contribution you can make is to provide your code to the project.

You can make small fixes, improvements, or propose your solutions to specific issues in the system’s code.

But if you are deeply interested in OS development, you can also participate in the development of various kernel subsystems, its core components, architecture, and of course, device drivers!

For more details, familiarize yourself with the source code and OS structure by referring to the [documentation](./README.md#documentation).

Also see: [**Where to start?**](#where-to-start)

## Documentation

Writing documentation is also a crucial aspect of OS development.

If you have the skills to read code and understand the kernel structure, you can help by adding to the code documentation. This can be done by writing `/// ...` comments in the code.

Document:
- functions,
- structures,
- individual components,
- individual files,
- and more...

You can also contribute to the documentation on the project's [Wiki pages](https://github.com/bagggage/bamos).

Unfortunately, GitHub does not allow pull requests for Wiki pages, but you can create an issue with your proposed updates. For example, you can provide a link to your own fork of the Wiki repository with your changes.

## Testing

Security and stability are especially important in low-level software.

Try building and running the system in a virtual machine or even on real hardware. Test various hardware configurations and devices. Look for bugs, omissions, and other gaps in the kernel code.

Then create an issue with a **description** of the specific problem and include instructions on how to **reproduce** it. We would greatly appreciate it if you could also spend time finding and developing a suitable solution for the problem and propose it in your issue.

## Proposals

You can offer your ideas for improving the project.

The most needed contributions are solutions to various architectural issues, kernel design, user space, and other elements. If you have your own ideas or are willing to share your expertise on how certain things can be implemented within the OS, feel free to create an issue with your suggestion. Make sure to describe the background and justification for your proposed solution so that the maintainers and other community members can better understand and assess your idea.

## Where to start?

To begin, it’s best to clone the project, perform a [build from source](./README.md#building-from-source), and run the OS.

Next, familiarize yourself with the system’s code, its current stage of development, and other details.

Use the [documentation](./README.md#documentation) for a better understanding.

**Experiment**. Create a **fork** of the project and start making changes. Test your abilities, improve, fix, add something new, or modify the existing code to suit your style.

Then, if you find your changes successful, feel free to [**prepare**](#how-to-prepare-changes-for-merging) them and create a **pull request**. Explain the essence of your changes and improvements, and it will be reviewed as soon as possible.

### How to prepare changes for merging?

For your changes to be accepted, they must be rational and aimed at improving the project—enhancing its quality, stability, usability, or expanding functionality.

If it’s code, it should meet minimal quality standards:
- Follow the project’s coding style,
- Maintain the component hierarchy,
- Be *stable* and *optimized*.

The project is in an active development stage, so certain imperfections, errors, or incomplete code may be tolerated. However, as the project grows, the standards will become stricter.

In any case, we welcome any contribution!

---

Thank you for your support,
**bagggage**.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@ python -m http.server

The Zig language description and documentation for its standard library can be found on the [official website](https://ziglang.org/).

## Contributing

BamOS is still a small but **growing** project.
We welcome any contributions and invite you to participate in the development and evolution of the project.

See information on [contributing](./CONTRIBUTING.md).

## Building from Source

The build process is quite straightforward:
Expand Down

0 comments on commit 2a77180

Please sign in to comment.