mirror of
https://github.com/OliveTin/OliveTin
synced 2025-10-30 12:57:06 +00:00
68 lines
3.2 KiB
Plaintext
68 lines
3.2 KiB
Plaintext
= Contributions
|
|
|
|
Contributions are very welcome - code, docs, whatever they might be! If this is
|
|
your first contribution to an Open Source project or you're a core maintainer
|
|
of multiple projects, your time and interest in contributing is most welcome.
|
|
|
|
If you're not sure where to get started, raise an issue in the project.
|
|
|
|
Ideas may be discussed, purely on their merits and issues. Our Code of Conduct
|
|
(CoC) is straightforward - it's important that contributors feel comfortable in
|
|
discussion throughout the whole process. This project respects the
|
|
link:https://www.kernel.org/doc/html/latest/process/code-of-conduct.html[Linux Kernel code of conduct].
|
|
|
|
== Suggestion: More than 3 lines - talk to someone first
|
|
|
|
If you're planning on making a change that's more than a 3 lines, please talk to someone first (raising a GitHub issue is the best way to do that). This is so that you don't waste your time on something that might not be accepted. It's also a good way to get some feedback on your idea and make sure you're on the right track.
|
|
|
|
== Rule: A PR should be one logical change
|
|
|
|
Please try to keep your pull requests small and focused. It's almost impossible to review PRs that change lots of files for lots of different reasons. If you have a big change, it's probably best to break it down into smaller, more manageable chunks, otherwise it's likely to be rejected.
|
|
|
|
== If you're not sure, ask!
|
|
|
|
Don't be afraid to ask for advice before working on a
|
|
contribution. If you're thinking about a bigger change, especially that might
|
|
affect the core working or architecture, it's almost essential to talk and ask
|
|
about what you're planning might affect things. Some of the larger future plans may not be
|
|
documented well so it's difficult to understand how your change might affect
|
|
the general direction and roadmap of this project without asking.
|
|
|
|
The preferred way to communicate is probably via Discord or GitHub issues.
|
|
|
|
== Dev environment setup and clean build
|
|
|
|
```
|
|
# Step1: setup compile env
|
|
# - Fedora
|
|
dnf install git go protobuf-compiler make -y
|
|
# - Windows with chocolatey
|
|
choco install git go protoc make python nodejs-lts -y
|
|
|
|
# Step2: clone and setup repo
|
|
git clone https://github.com/OliveTin/OliveTin.git
|
|
cd OliveTin
|
|
make githooks
|
|
|
|
# Step3: compile binary for current dev env (OS, ARCH)
|
|
# `make proto` will also run `make go-tools`, which installs "buf". This binary
|
|
# will be put in your GOPATH/bin/, which should be on your path. buf is used to
|
|
# generate the protobuf / Connect RPC stubs.
|
|
make proto
|
|
make
|
|
./OliveTin
|
|
```
|
|
|
|
=== Getting started to contribute;
|
|
|
|
The project layout is reasonably straightforward;
|
|
|
|
* See the `Makefile` for common targets. This project was originally created on top of Fedora, but it should be usable on Debian/your faveourite distro with minor changes (if any).
|
|
* The API is defined in protobuf+Connect RPC - you will need to `make proto`.
|
|
* The Go daemon is built from the `cmd` and `internal` directories mostly.
|
|
* The webui is just a single page application with a bit of Javascript in the `webui` directory. This can happily be hosted on another webserver.
|
|
|
|
== Mechanics of submitting a pull request
|
|
|
|
When you are ready for a PR, please see the link:.github/PULL_REQUEST_TEMPLATE.md[pull request template].
|