Skip to content

Commit 2dce40f

Browse files
authored
Update CONTRIBUTING.md for clarity and details
Clarify contributing guidelines and architecture details.
1 parent 8e189db commit 2dce40f

1 file changed

Lines changed: 14 additions & 12 deletions

File tree

CONTRIBUTING.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,16 @@ Multiple information can be found in the [docs](docs/) folder.
1212
To contribute effectively, it is crucial to understand that AudioMuse-AI is not a monolithic program. It is a multi-service, containerized application designed for robustness, scalability, and a clear separation of concerns. This architecture is composed of several core components that work in concert.
1313
* **Flask Web Application (audiomuse-ai-flask):** Here you have the front-end of the application both intended as html page and API. Here live also the logic of the service that are syncronous like get the similar song.
1414
* **Redis Queue (RQ) Workers (audiomuse-ai-worker):** This is for what need to be executed in async, like analyze the song, do clustering or reconstruct the index for similar song search. With the redis queue and a kubernetes architecture is possible to spawn more woker for increase scalability and avaiability.
15+
* **Redis Queue:** where Flask write the job, and Workers check the job to do.
1516
* **PostgreSQL Database (postgres-deployment):** The database. Not only the analysis live here but also the log status o the async task.
1617

17-
## Supported Architecture and Mediaserver
18+
## Supported Architecture and Mediaserver
19+
Remember that this software support both Intel and Arm architecture. So avoid code that will not work on both except for very specific case. If you're not able to test on both architecture, add this in the PR description.
1820

19-
Remember that this software support both Intel and Arm architecture. So avoid code that will not work on both except for very specific case. If you're not able to test on both architecture, add this in the PR description.
21+
Remember that AudioMuse-AI is also shipped as native app for MacOS, Linux and Windows and your change must avoid to brake them-
22+
23+
Rememeber also that this application support multiple mediaserver. So try to don't introduce change that can distrupt one or the other mediaserver. If you're not able to test on all mediaserver, add this in the PR description.
2024

21-
Rememeber also that this application support multiple mediaserver, at the moment Jellyfin and Navidrome. So try to don't introduce change that can distrupt one or the other mediaserver. If you're not able to test on all mediaserver, add this in the PR description.
2225

2326
## **The Codebase Map**
2427

@@ -43,8 +46,7 @@ The development environment for AudioMuse-AI is fully containerized to ensure co
4346

4447
* **Git:** For version control and interacting with the GitHub repository.
4548
* **Docker and Docker Compose:** For building and running the containerized application stack.
46-
47-
Because the entire application runs inside Docker containers, there is no need to install Python, PostgreSQL, or Redis directly on the local development machine.
49+
* ***Python dependencies:** Need to run unit and integration test locally before push the code.
4850

4951
## **How to compile**
5052

@@ -76,12 +78,9 @@ docker-compose up --build -d
7678

7779
## **PR**
7880
### Before You Start
81+
0. Remember that **AudioMuse-AI is under AGPLv3 license**, your own code, plus any third-party libraries, frameworks, or models you introduce MUST align with AGPLv3
7982
1. **Check existing PRs and issues** to avoid duplicate work
80-
2. **Discuss WHAT you want to implement and HOW first** or in an existing issue (if you want to solve it) or creating a new one if the topic is not already covered (use feature label for feature, bug for bugfix).
81-
4. **Open a Draft PR early** for significant changes to discuss your approach and get feedback before investing too much time
82-
- When creating a PR on GitHub, click the dropdown next to "Create Pull Request" and select **"Create Draft Pull Request"**
83-
- This gives visibility to other contributors and maintainers can provide early guidance
84-
5. **Discuss breaking changes** or major architectural decisions in an issue or draft PR first
83+
2. **Discuss WHAT you want to implement and HOW first** or in an existing issue (if you want to solve it) or creating a new one if the topic is not already covered (use feature label for feature, bug for bugfix)
8584

8685
### PR Requirements
8786
When submitting a pull request, ensure:
@@ -95,7 +94,7 @@ When submitting a pull request, ensure:
9594
* Song Path
9695
* Sonic Fingerprint
9796
* *(Basically, test each function in the integrated front-end menu at least once)*
98-
* **License compliance:** Your code must align with AudioMuse-AI's license
97+
* **AGPLv3 License compliance:** Your code must align with AudioMuse-AI's license
9998
* **CPU Compatibility:** AudioMuse-AI supports both Intel and ARM CPUs, including older Intel processors. PRs that introduce dependencies breaking compatibility with older CPUs will not be merged
10099
* **Documentation:** If needed, update the documentation
101100
* **Static analysis (flake8):** the `Static Analysis` workflow (`.github/workflows/lint-flake8.yml`) runs `flake8 --select=E9,F63,F7,F82` on every push/PR to `main` and must pass. To avoid failing it: don't reference undefined names, leftover/renamed variables, or unresolved imports; fix syntax errors; and only keep a `global`/`nonlocal` declaration when the function actually reassigns that name (declaring one for a variable you merely read or mutate in place — `d[k]=v`, `.append()`, `.update()` — will fail the check).
@@ -117,9 +116,12 @@ When submitting a pull request, ensure:
117116
This workflow helps avoid spending time on PRs that may not align with project goals.
118117

119118
## **Related Repositories**
119+
Below the full list of related repository. When you submit a PR avoid to introduce change that could brake one or more of this repository:
120120
> * [AudioMuse-AI](https://github.com/NeptuneHub/AudioMuse-AI): the core application, it run Flask and Worker containers to actually run all the feature;
121121
> * [AudioMuse-AI Helm Chart](https://github.com/NeptuneHub/AudioMuse-AI-helm): helm chart for easy installation on Kubernetes;
122-
> * [AudioMuse-AI Plugin for Jellyfin](https://github.com/NeptuneHub/audiomuse-ai-plugin): Jellyfin Plugin.
122+
> * [AudioMuse-AI Plugin for Jellyfin](https://github.com/NeptuneHub/audiomuse-ai-plugin): Jellyfin Plugin;
123+
> * [AudioMuse-AI Plugin for Navidrome](https://github.com/NeptuneHub/AudioMuse-AI-NV-plugin): Navidrome Plugin;
124+
> * [AudioMuse-AI MusicServer](https://github.com/NeptuneHub/AudioMuse-AI-MusicServer): Open Subosnic like Music Sever with integrated sonic functionality.
123125
124126

125127
## **Questions**

0 commit comments

Comments
 (0)