-
Notifications
You must be signed in to change notification settings - Fork 57
Document (high level) LMS architecture #138
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
|
||
| # Lyrion Music Server (LMS) core architecture | ||
|
|
||
| This guide provides an onboarding-oriented architectural map of the **Lyrion Music Server** core codebase (historically SlimServer / Logitech Media Server). It favors a high-level mental model over exhaustive module documentation so you can navigate the codebase quickly. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No need to mention the history again. It's all over the place already...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm sorry, wanted to start a review... sent that off too early.
michaelherger
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice one! Unfortunately the AI (I assume) left some quite poetic rubbish in a few places. But overall this can become a helpful document!
Please fix all the links: pointers at code should use the HEAD reference rather than a version specific path. And other documents on the web site should be referenced to by their relative path, not on Github.
|
|
||
| ## Big picture | ||
|
|
||
| LMS is an **event-driven server** that: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You might want to mention that it's single-threaded, too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see it mentioned?
|
|
||
| # Lyrion Music Server (LMS) core architecture | ||
|
|
||
| This guide provides an onboarding-oriented architectural map of the **Lyrion Music Server** core codebase (historically SlimServer / Logitech Media Server). It favors a high-level mental model over exhaustive module documentation so you can navigate the codebase quickly. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm sorry, wanted to start a review... sent that off too early.
|
|
||
| - accepts player connections over **SlimProto** (TCP 3483) | ||
| - serves a web UI plus APIs over **HTTP** (default TCP 9000) | ||
| - exposes a command/query CLI internally and externally |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Default 9090, or JSON/RPC
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
still missing port
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Haven’t uploaded revision yet.
| - accepts player connections over **SlimProto** (TCP 3483) | ||
| - serves a web UI plus APIs over **HTTP** (default TCP 9000) | ||
| - exposes a command/query CLI internally and externally | ||
| - maintains a library database (SQLite by default, MySQL optional) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please don't mention MySQL. It's been neglected for ages, and some features wouldn't work with it any more (FTS).
| - serves a web UI plus APIs over **HTTP** (default TCP 9000) | ||
| - exposes a command/query CLI internally and externally | ||
| - maintains a library database (SQLite by default, MySQL optional) | ||
| - scans media and playlists, often through a separate scanner process |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"audio and playlists"?
| Physical and emulated players connect through SlimProto: | ||
|
|
||
| - listener: [Slim/Networking/Slimproto.pm](https://github.com/LMS-Community/slimserver/blob/public/9.1/Slim/Networking/Slimproto.pm) | ||
| - default port: 3483/TCP |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't be changed, officially reserved for LMS/Squeezebox (see eg. https://www.speedguide.net/port.php?port=3483).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this port can be customised. Therefore "default" is somewhat misleading.
|
|
||
| ## Library database and persistence | ||
|
|
||
| The server stores different state types in purpose-built layers. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What?!?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
edited
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm a bit confused: you marked this as resolved, but I don't see any change. As you did with some of the other comments. Did you forget to push your changes up to GitHub?
|
|
||
| - entry: [Slim/Schema.pm](https://github.com/LMS-Community/slimserver/blob/public/9.1/Slim/Schema.pm) | ||
| - ORM: DBIx::Class | ||
| - backends: SQLite (default) or MySQL |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't mention MySQL
Did this to help me with conceptual understanding of Lyrion's architecture. Not sure whether it'd be useful for inclusion in reference docs, use or abuse as you see fit.