iCal is an exceptionally useful calendaring tool, and being free and immediately available on all Macs makes it quite popular among Mac users. Despite this, one big limitation to the software, especially for households and workgroups, is the apparent inability of the software to share calendars among local computer users. Many people have requested some way for a number of Apple's programs (iCal, iPhoto, iTunes, etc) to easily create a main or central library/calendar and have it be accessible and editable by everyone who uses the computer (or others on the same network), but so far this support has been limited.
Unfortunately the lack of shared-library support is based on how these programs are built. The biggest reason is that when an application opens a file for writing it imposes a lock on it that prevents another application from editing the file, at least until a "close" command is issued for the file by the program. While technically applications can treat a file like a database or open it only long enough to read or write a change and then close it again, Apple has not implemented this in the iLife suite.
There are programs out there that do allow for multiple programs to edit a single file, such as TextWrangler from BareBones software. If a file is edited in a secondary program while TextWrangler has it open, you will get a warning with options to save or reload the file with the new changes. This is convenient for text editors, but having this or similar behavior in iTunes or iPhoto would make it cumbersome to use local files as central libraries for programs, especially as the number of users grows. With multiple users accessing the library, when someone makes a change (ratings, albums, adding and deleting tracks, etc) other users will get similar warnings. Additionally, if they have made their own changes when others edit the files, the changes they have stored in memory will overwrite the recently saved edits by other users.
Despite this, you can set up a situation where shared resources and libraries are used by the accounts on a system, but only if you ensure each library is only open by one user at a time. If, for instance, you have an iTunes library set up in the "/Users/Shared/" folder (hold options when launching iTunes to select or create a new Library) and have it open in one account, upon switching to another account you will get a "file locked" error if you try to open it.
This may happen despite having set permissions for all users to "Read and Write" the library folder and enclosed files. The library is technically usable in the second account as such, but because it is currently open by iTunes in the first account it is locked and therefore inaccessible. The only workaround for this is to ensure iTunes is closed in the first account, and while this can easily be done by disabling Fast User switching, doing this comes at an obvious inconvenience for some households. This same situation applies to iPhoto libraries, Address Books, and iCal calendars, where basically local files are only fully accessible by one user at a time.
The proper way to share files in a multi-user environment is to have a server process either on the local machine or on a dedicated server that will manage and distribute files and to clients (iTunes, iCal, iPhoto open in separate accounts). Doing this allows for changes to be propagated instantly to client programs by the server (ie, "push" technology), and keep all clients updated with the latest "state" of the library. In addition, clients can be managed by the server so some have access and permissions to edit certain aspects of the library and not others.
I have a feeling this is where Apple may soon be headed with their applications, but we'll see. They are only just punching into the home server environment with the newly released Mac Mini Server, and hopefully we'll see more home-media services crop up in Mac OS X Server--I personally would love to see an iTunes and iPhoto server along with the already existing iCal and Address Book servers. Meanwhile, those interested in seeing this functionality for iPhoto and iTunes will have to wait; however, there are a couple of workarounds for iCal and Address Book which take advantage of the available calendar services on the internet:
Apple's subscription based mobile account which allows for address book and iCal syncing of local library/database files. If you set up all computer accounts to synchronize to Mobile Me, you can keep contacts and calendar events up to date between the accounts. The drawback for this is that other sync services may also be inadvertently enabled (ie, bookmarks) which could potentially lead to problems. However, as long as all parties understand the limitations that it might only be feasible for one user to sync certain items such as bookmarks, then this is a viable option.
Google's free calendar is compatible with iCal, and upon creating an account you can set up multiple users to access the google calendar through iCal. Being essentially an iCal server it creates a new calendar that's separate from your local calendars, which it accessed and edited separated and only if you have an active internet connection. While this is more in line with how a multi-user environment works, there are some current limitations to the service, with the most prominent one being that only the main Google calendar gets used in the connection. The others get subscribed to as delegate calendars that show up in odd subcategory groups in iCal.
The final solution for iCal users is to establish an account with a true calendaring service, which currently is either Exchange 2007 or Apple's iCal server in OS X Server. With the Mac Mini Server (or OS X Server installed on an old Mac--see our previous article on this) you can set up an iCal and Address Book server for your household to use. The server can be bound to a "Dynamic DNS" service (see this list of providers) so it can easily be accessed from the internet, so as long as the server is running you can be actively synchronized with your household members.
The Future: Home servers? Clouds?
The demand for home servers and services with similar functionality is definitely on the rise, which is evident through a number of means including cloud computing services and the recent advent of home servers such as the Mac Mini server. With these services and hardware, not only is the server hardware more convenient for home users, but the services provided in the OS are becoming more tailored for home use as well.
As for the difference between home servers and cloud computing, having a corporation handle your personal data is convenient, but has not come without its hurdles. Various services including Apple's have had setbacks and have been slow to develop. Additionally, there have been data loss and security concerns that people have had, especially when it comes to personal information.
Despite this, cloud computing is an attractive option that in a perfect world will compliment a home server setup and not work against or otherwise compete with it. I imagine they could greatly benefit from each other and work in tandem to bring a variety of services to home users, with calendaring services being only one of a number of options. These services are maturing, and hopefully we will see them bring a variety of interconnected options so people can configure their calendars, address books, and other contacts how they would like.