We could argue all day about the differences between services and regular processes, but at the end of the day a service is still a program and is prone to all the same problems as a regular process. A poorly designed service will not be better than a process that is designed well.
There's no need to argue; the differences are documented so there's not much to discuss.
I didn't claim that wrapping bad code in a service would imbue magical powers upon it. You are correct that at a fundamental level, a process is what it is, but the point is that if you have a server workload that doesn't need UI interaction running it as a service nets benefits that are difficult (i.e. not free) to replicate in the UI session.
I was not attempting to debate the merits of MC's design either. My suggestions were an attempt to help you get what you want until JRiver decides to implement your suggestion.
This is probably the disconnect; my goal wasn't to find a workaround. I am approaching this as a potential user (currently using SageTV, which has a robust client/server 10" experience) and a connected
home reviewer. In both scenarios the current implementation is a
significant con.
However, for every person that wants it to be a service there are more that would complain that it is hogging resources when they are not using it.
The resource difference b/w running something in the system tray and as a service is negligible and it is an optional process, so those people wouldn't have much standing to complain.
On a dedicated HTPC or media server a service makes sense. On a regular computer it does not (for most people). I believe a majority of the instances of MC are the later and that is probably JRiver's reasoning. If they were to break it into two parts it would also be harder to use for the average user.
It's already two parts (actually three because a service component as well). I don't see how putting something that should start by itself and run unattended creates a more complex system. This thread was about the client/service experience after all.
As a programmer I understand there are pros and cons to every design. What is bad for one user may be perfect for another. Making blanket statements about "the right way to do things" simply isn't true.
Put ten application architects in a room then define the workload and use cases. How many of them do you think would pick system tray for this application? Frankly I'd be shocked if any of them did. In this case I think it's OK to say there's a right way, and running a server workload from the UI session's system tray isn't it.
Knowing the care and a detail that JRiver puts into their product from the ground up to create an audio engine that is second to none, and the constant refactoring and refining you read in the release notes also makes it hard to me to believe they don't know what constitutes good design. You may not agree with their decisions, but that does not make it wrong.
There may be valid reasons for keeping the wrong design (e.g. limited developer resources, other priorities, lack of demand, etc.) that justify the decision, but it doesn't make it less wrong.