Yes, I agree, a 'file server' is pretty much what I'm advocating here.
I think "file" server is a little too simplistic here though as, if taken literally, MC already delegates all file handling to a file server. It doesn't care where your files are held, whether they are database files or media files. It lets the OS hande all that sort of stuff. You can already store files on a file sever and it is completely transparent to MC. File Server is one of the fundamental services in every OS, whether it's Windows, Mac, or a Linux NAS.
I think what we are talking about here is a
database (library) server. To talk about specifics, I don't know what sort of database MC has, but for the sake of argument let's assume it's an SQL-based database such as mySQL. I would like to see the database/library service of MC installable at a single, central point for use by all installations of MC. At the moment, each installation has its own database and behaves as its own server. You then have to talk about enabling library server on a machine and linking to it and synching the librarires at regular intervals... Yeuch! that should all be unnecessary. There should be no separate database on each installation of MC. There should be no database access done by any clients. They should all connect to a library server and do reads and writes via the server. Or maybe SQL commands are indeed generated by the client but they are passed to a database server that is defined by a connection string rather than hardcoded to a local database.
That server may well indeed run on the same machine as your client but the key is that it is functionally isolated from the client functionaility. As long as each module of MC (e.g. renderer, ripping and tagging, controller) has a connection string to the database server, it doens't matter where on the network you put the database server. And the big advantage - I can not stress this renough...the BIG, HUGE, MAJOR advantage of this is the you have one central, single database and library (or more correctly, the single MC database contains multiple libraries) that doesn't need to be synched and every client access exactly the same information at the same time, no update anamalies or sync issues, it's all done in real-time.
I would like to point out that database services are indeed something that a NAS can handle well. Look at Synology NAs's for example and look at the range of packages that are isntallable. It's a compolete Linux server insrtallation remember, albeit running on a low-poer device, but it's not unheard of to run typical LAMP configurations for web services, mail servers, and other productivity-oriented services, all on a NAS. Please look at
http://www.synology.com/dsm/dsm_app.php?lang=uk for an idea of what NAS's are capable of!
If the library server was a separate module, people could choose where they want to put it. Some people may have Mac servers, or Windows Home Server, or a Linux NAS, where they already have their central file services. A dedicated machine for a dedicated task. On the other hand, if they want a single machine for MC then they still can do it but when they want to expand their network with more than one installation of MC then it will be easier than at present, as they can
leave the database server in one place and not have to have several instances of it and have to try and keep them in sync.
I'll be honest, I've been using the client/server model MC has had since it was available, and I'm still confused by where to set different settings, to get the work done in the 'right' place.
I agree, I'm the same. As I've mentioned before, I too am still struggling with how to set up two PCs that are looking at the same library. This should be fundamental. There shouldn't be a "right" place to do a particular task, you should be able to do anything from anywhere.
There will be many discussions and debates about where to put individual bits of functionality - you can have thick clients and thin clients, thick server and thin servers I guess! You can have several different abstraction layers in a client/server model - I've talked about middleware, or application servers. This sort of thing may be over the top but when you think about it, it's actually quite logical and most probably MC is already structured internally in this way - messages being passed between various modules etc, a communication protocol. It may be helpful to focus on what the current problems are with MC, or what issues people are facing, that may inform what bits are best to pull out into a separate "server". These are some of the things that I'm finding difficult or impossible or logically vague:
1. Maintaining the library (rip and tag, create views etc) from a "home office" PC which is not on all the time. (clients should be able to maintain the library with as much functionality as the server)
2. Keeping two or more copies of MC in sync. (each installation shouldn't have its own physical database and changes should be instantly available on all clients)
3. Understanding which "server" to connect to and how to actually set this up, when you've got a handheld remote like JRemote but two or more MC PCs. (there shouldn't be a need for more than one server of a particular type on the network!)
Whether the library/database server needs to go as far as answering queries from clients such as "what albums do I have?", "what MC zones are available on the network?", or whether that functionality is worked out by the clients, is open to interpretation!
[EDIT: I'm not saying that a separate database server in particular would solve this problem, but this current thread just shows how MC's "media network" is convoluted and not easily configured or understood, I've certainly given up on trying help this guy becaiuse I don't know what to advise and I'm confused by MC's current client/server functionality too:
http://yabb.jriver.com/interact/index.php?topic=81262.new;topicseen#new - his issues are basically the same as the three issues I've detailed above, he's having problems with having to logon to a headless server to do updates, and getting confused about enabling servers and synching between them]