Docs: Added README and contributing guide #124

Merged
mxlgv merged 9 commits from add-readme-contributing-code-of-conduct into main 2025-03-21 21:08:49 +01:00
2 changed files with 110 additions and 0 deletions
Showing only changes of commit 799911121b - Show all commits

82
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,82 @@
# Contributing guide
## Type of contributing
There are two main types of contributions, accepted in KolibriOS:
Burer marked this conversation as resolved Outdated

in KolibriOS

If we were talking about the entire KolibriOS then we should have mentioned documentation, testing, content creation, etc. Since we agreed in the telegram chat to write about this main repo only, let's change 'in KolibriOS' to 'to the main KolibriOS repository'.

> in KolibriOS If we were talking about the entire KolibriOS then we should have mentioned documentation, testing, content creation, etc. Since we agreed in the telegram chat to write about this main repo only, let's change 'in KolibriOS' to 'to the main KolibriOS repository'.
- Submitting issues about problems in project
- Submitting code to project via pull requests
Each of these types is described in details below.
Burer marked this conversation as resolved Outdated

Each of these types is

Both these types are ?

> Each of these types is Both these types are ?
## Issues
You can help us by submitting issues about problems, found in system. Currently, there are two main ways of submitting an issue in the project: **Bug Reports** and **Feature Requests**:
- Bug Reports are suitable if you find a **bug** (crash, error, inexcpected behaviour) in some part of the system (kernel, drivers, apps etc.) and want to report it
- Feature Request are used, when you wont to propose some **improvement** to the system (missing features, impoved user experience, etc.)
Burer marked this conversation as resolved Outdated

Feature Request

Feature Request_s_

improved user

improved user (only one space between the words)

> Feature Request Feature Request_s_ > improved user improved user (only one space between the words)
## Pull requests
You can also help us by submitting code via pull requests. The process of submitting a pull request consists of following steps:
1. Find what you want to implement or improve
2. Make a fork of kolibrios repository
3. Create a branch with a name that matches your changes
4. Implement and test the changes
5. Create commits according to the [accepted style](##commit-style)
mxlgv marked this conversation as resolved Outdated

Incorrect anchor link

Incorrect anchor link
Outdated
Review

Fixed.

Fixed.
6. Create and submit a pull request into main branch
7. Wait for CI/CD pipelines and code review to pass
When a pull request is submitted, at least two project participants must conduct a code review, after which the proposed changes can be corrected (if it's necessary) and merged into the project.
Burer marked this conversation as resolved Outdated

changes can be corrected (if it's necessary)

changes need to be corrected (if requested)

> changes can be corrected (if it's necessary) changes need to be corrected (if requested)
## Commit style
### Pattern
Burer marked this conversation as resolved Outdated

Pattern

Message pattern?

> Pattern Message pattern?
The commit message should look like this:
```test
[Category] Commit message header
mxlgv marked this conversation as resolved Outdated

-> commit type(category): commit message
To Conventional Commit Messages

-> `commit type`(`category`): `commit message` To [Conventional Commit Messages](https://gist.github.com/rishavpandey43/84665ffe3cea76400d8e5a1ad7133a79)

I have checked Linux, Qemu and GCC. They all do mention categories but in a plain format like 'category: Commit message'. I believe it would be easier for us to explain to people why they should follow a policy if it is the policy of Linux, Qemu and GCC rather than the one of Rishav Pandey.

I have checked [Linux](https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=90fd9ad5b0c981693c8512d9da01f14fb6596e9d), [Qemu](https://gitlab.com/qemu-project/qemu/-/commit/2f3b6e61f692bade441230dd25c1c0f101bd2eef) and [GCC](https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=254549d2bb9bb3c2719dec597427919c59514fc3). They all do mention categories but in a plain format like 'category: Commit message'. I believe it would be easier for us to explain to people why they should follow a policy if it is the policy of Linux, Qemu and GCC rather than the one of Rishav Pandey.

https://www.conventionalcommits.org/en/v1.0.0/

Why Use Conventional Commits

  • Automatically generating CHANGELOGs.
  • Automatically determining a semantic version bump (based on the types of commits landed).
  • Communicating the nature of changes to teammates, the public, and other stakeholders.
  • Triggering build and publish processes.
  • Making it easier for people to contribute to your projects, by allowing them to explore a more structured commit history.
https://www.conventionalcommits.org/en/v1.0.0/ > **Why Use Conventional Commits** > - Automatically generating CHANGELOGs. > - Automatically determining a semantic version bump (based on the types of commits landed). > - Communicating the nature of changes to teammates, the public, and other stakeholders. > - Triggering build and publish processes. > - Making it easier for people to contribute to your projects, by allowing them to explore a more structured commit history.

I might be wrong but this looks like whishful thinking to me.

Automatically generating CHANGELOGs.

All the automatically generated changelogs I have seen are unreadable because you have to know the context first to understand them. They can be used if you want to have them as a formality only. But they won't be useful for users/developers as a dump of commit messages.

Automatically determining a semantic version bump (based on the types of commits landed).

To what version in KolibriOS does this apply?

Communicating the nature of changes to teammates, the public, and other stakeholders.

The nature of changes is described in any normal commit message.

Triggering build and publish processes.

Currently we build and publish on each push. What will this change?

Making it easier for people to contribute to your projects, by allowing them to explore a more structured commit history.

I have never seen anybody using it.

I might be wrong but this looks like whishful thinking to me. > Automatically generating CHANGELOGs. All the automatically generated changelogs I have seen are unreadable because you have to know the context first to understand them. They can be used if you want to have them as a formality only. But they won't be useful for users/developers as a dump of commit messages. > Automatically determining a semantic version bump (based on the types of commits landed). To what version in KolibriOS does this apply? > Communicating the nature of changes to teammates, the public, and other stakeholders. The nature of changes is described in any normal commit message. > Triggering build and publish processes. Currently we build and publish on each push. What will this change? > Making it easier for people to contribute to your projects, by allowing them to explore a more structured commit history. I have never seen anybody using it.

All the automatically generated changelogs I have seen are unreadable because you have to know the context first to understand them

If commit messages are descriptive, follow a consistent format, and include meaningful context, the generated changelog can be more useful.

To what version in KolibriOS does this apply?

Not neccessary the OS, but apps, libs and other software in it

The nature of changes is described in any normal commit message.

The standart enforse to use types, which is better both for describing and searching in commit list

Currently we build and publish on each push. What will this change?

For example, not to build if the type is docs

I have never seen anybody using it.

Namida, antimicrox, AGS, yazi, bubbletea, pokete, Bagels, kaizen, fd

> All the automatically generated changelogs I have seen are unreadable because you have to know the context first to understand them If commit messages are descriptive, follow a consistent format, and include meaningful context, the generated changelog can be more useful. > To what version in KolibriOS does this apply? Not neccessary the OS, but apps, libs and other software in it > The nature of changes is described in any normal commit message. The standart enforse to use types, which is better both for describing and searching in commit list > Currently we build and publish on each push. What will this change? For example, not to build if the type is `docs` > I have never seen anybody using it. [Namida](https://github.com/namidaco/namida), [antimicrox](https://github.com/AntiMicroX/antimicrox), [AGS](https://github.com/Aylur/ags), [yazi](https://github.com/sxyazi/yazi), [bubbletea](https://github.com/charmbracelet/bubbletea), [pokete](https://github.com/lxgr-linux/pokete), [Bagels](https://github.com/EnhancedJax/Bagels), [kaizen](https://github.com/TheRiceCold/kaizen), [fd](https://github.com/sharkdp/fd)

If commit messages are descriptive, follow a consistent format, and include meaningful context, the generated changelog can be more useful.

I wish we could eventually motivate people to write meaningful commit messages. Let be honest, forcing them to choose from 20 commit types it just too much, it won't work. What is surprisingly strange, the spec allows to shorten feature as feat but not performance as perf, no logic behind this.

For example, not to build if the type is docs

The rebuild is needed is the docs are in the distro. Tup handles this automatically already. You don't need to manually control this via commit messages.

Namida, antimicrox, AGS, yazi, bubbletea, pokete, Bagels, kaizen, fd

I have never heard of them. Linux, Qemu and GCC are more familiar to our potential developers, I believe.

> If commit messages are descriptive, follow a consistent format, and include meaningful context, the generated changelog can be more useful. I wish we could eventually motivate people to write meaningful commit messages. Let be honest, forcing them to choose from 20 commit types it just too much, it won't work. What is surprisingly strange, the spec allows to shorten feature as feat but not performance as perf, no logic behind this. > For example, not to build if the type is docs The rebuild is needed is the docs are in the distro. Tup handles this automatically already. You don't need to manually control this via commit messages. > Namida, antimicrox, AGS, yazi, bubbletea, pokete, Bagels, kaizen, fd I have never heard of them. Linux, Qemu and GCC are more familiar to our potential developers, I believe.
Outdated
Review

What GCC uses, Linux seems to me really more attractive

What GCC uses, Linux seems to me really more attractive
Outdated
Review

@Sweetbread @dunkaist The adoption of a style for commits can take a long time (while we are discussing we don't have any documentation at all). This minimal documentation with very light rules should be enough for the community while it adapts to GIT. We can probably raise this issue in the future. But for now, let's not get hung up on it. This PR contains other changes as well.

@Sweetbread @dunkaist The adoption of a style for commits can take a long time (while we are discussing we don't have any documentation at all). This minimal documentation with very light rules should be enough for the community while it adapts to GIT. We can probably raise this issue in the future. But for now, let's not get hung up on it. This PR contains other changes as well.
Commit message body, if needed
```
mxlgv marked this conversation as resolved Outdated

Text seems like too formal

For example, instead of this, you can simply write smth like

Commit message should look like
etc

Text seems like too formal For example, instead of this, you can simply write smth like `Commit message should look like ` etc
Outdated
Review

Fixed

Fixed
- Commit message header and body should reflect changes made in commit
- Commit message header should start with a capital letter
- Commit message body should be separated from the header by one empty line
### Length
Maximum number of characters in a commit header is **72** (standard for **Git**). Also, **72** is the maximum length of a line in a commit body.
### Categories
List of existing categories accepted in the project:
- `Krn` - kernel
- `Drv` - drivers
mxlgv marked this conversation as resolved Outdated

Why not 50 and 72 like in Linux?

Why not 50 and 72 like in Linux?
Outdated
Review

I thought about it but I didn't find any advantages. Rather, we limit ourselves.

I thought about it but I didn't find any advantages. Rather, we limit ourselves.
- `Libs` - libraries
- `Apps` - user-space applications
- `Skins` - skins
- `Build` - build system
- `CI/CD` - CI/CD
- `Docs` - documentation
- `Data` - images, configs, resources, etc.
- `All` - global changes
If changes are made to a specific component, the name of the component separated by `/` character needs to be specified. For example:
```text
Apps/shell
Burer marked this conversation as resolved Outdated

instructions

instruction

familiar with

familiar with (one space)

participate in the work of this project

participate in the life of our project?

> instructions instruction > familiar with familiar with (one space) > participate in the work of this project participate in the life of our project?
Libs/libimg
```
## Merge commits
> [!WARNING]
> Merge commits are **prohibited** in the project
## Conclusion
We hope this small instructions will help you to can common with KolibriOS contributon and inspire you to participate in the work of this project.

28
README.md Normal file
View File

@@ -0,0 +1,28 @@
# KolibriOS
[![License](https://img.shields.io/badge/License-GPL%202.0-green)](./COPYING.TXT)
[![Build system](https://git.kolibrios.org/KolibriOS/kolibrios/actions/workflows/build.yaml/badge.svg)](https://git.kolibrios.org/KolibriOS/kolibrios/actions/workflows/build.yaml)
KolibriOS is a hobby operating system for x86-compatible computers, which is currently being developed by a small teem of enthusiasts.
Burer marked this conversation as resolved Outdated

small

small but passionate (!)

teem

team

> small small but passionate (!) > teem team
It's kernel is written entirely in [FASM](https://flatassembler.net/) assembly language, making it very compact and lean on system resources.
Burer marked this conversation as resolved Outdated

It's

Its

kernel

kernel, most drivers and many programs

> It's Its > kernel kernel, most drivers and many programs
Based on [MenuetOS](https://www.menuetos.net/), it uses its own standards and is NOT fully POSIX or UNIX compliant
Burer marked this conversation as resolved Outdated

compliant

compliant. (dot)

> compliant compliant. (dot)
## Contributing
We would appreciate any participation in the project and always welcome new users and contributors.
Detailed instructions for the contribution process can be found in the [contributing guide](./CONTRIBUTING.md).
Common list of tasks, issues and enhancement proposals can be found on [this page](https://git.kolibrios.org/KolibriOS/kolibrios/issues).
## Special thanks
The KolibriOS team expresses special thanks to the author of the 32-bit **MenuetOS**, [Ville Turjanmaa](https://www.menuetos.net/contact.htm). We also want to note that all **MenuetOS** copyrights have been preserved.
## License
mxlgv marked this conversation as resolved Outdated
Outdated
Review

The license is already written next to Build system section. It seems that this is not necessary.

@Burer @dunkaist @Sweetbread what do you think?

The license is already written next to **Build system** section. It seems that this is not necessary. @Burer @dunkaist @Sweetbread what do you think?
Outdated
Review

I agree that we can remove License here, as it as already preset at the top of README.

I agree that we can remove License here, as it as already preset at the top of README.
Outdated
Review

Fixed

Fixed
Contents of this repository are licensed under the terms of **GNU GPL 2.0** unless otherwise specified.
See [this](./kernel/trunk/COPYING.TXT) file for details.