You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+14-12Lines changed: 14 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,13 +12,16 @@ Multiple information can be found in the [docs](docs/) folder.
12
12
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.
13
13
***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.
14
14
***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.
15
16
***PostgreSQL Database (postgres-deployment):** The database. Not only the analysis live here but also the log status o the async task.
16
17
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.
18
20
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.
20
24
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.
22
25
23
26
## **The Codebase Map**
24
27
@@ -43,8 +46,7 @@ The development environment for AudioMuse-AI is fully containerized to ensure co
43
46
44
47
***Git:** For version control and interacting with the GitHub repository.
45
48
***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.
48
50
49
51
## **How to compile**
50
52
@@ -76,12 +78,9 @@ docker-compose up --build -d
76
78
77
79
## **PR**
78
80
### 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
79
82
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)
85
84
86
85
### PR Requirements
87
86
When submitting a pull request, ensure:
@@ -95,7 +94,7 @@ When submitting a pull request, ensure:
95
94
* Song Path
96
95
* Sonic Fingerprint
97
96
**(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
99
98
***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
100
99
***Documentation:** If needed, update the documentation
101
100
***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:
117
116
This workflow helps avoid spending time on PRs that may not align with project goals.
118
117
119
118
## **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:
120
120
> *[AudioMuse-AI](https://github.com/NeptuneHub/AudioMuse-AI): the core application, it run Flask and Worker containers to actually run all the feature;
121
121
> *[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.
0 commit comments