This is the core code base for a CalDAV/WebDAV/HTTP server. For general information about the server, see: http://www.calendarserver.org/ COPYRIGHT AND LICENSE ===================== This software is copyright (c) 2005-2007 Apple Inc. All rights reserved and is licensed under the Apache License, Version 2.0. The Apache License is a well-established open source license, providing reliable and long-lived software products through collaborative open source software development. See the 'LICENSE' file for the full text of the license terms. QUICK START =========== Place this source directory into an empty development directory, such as '~/Developer/Collaboration/CalendarServer/'. The server requires a number of libraries in order to operate. The 'run' script in the sources will automatically download or check out the appropriate libraries and build them for you: ./run -s Before you can run the server, you need to set up a configuration file for development. There is a provided test configuration that you can use to start with: cp ./conf/caldavd-test.plist ./conf/caldavd-dev.plist You will need to choose a "directory service" to use to populate your server's principals (users, groups and resources). A directory service provides the calendar server with information about these principals. Some of the directory services which are supported by the calendar server include: * XMLDirectoryService: this service is configurable via an XML file that contains principal information. The file 'conf/auth/accounts.xml' provides an example principals configuration. * OpenDirectoryService: this service uses OpenDirectory (which in turn uses LDAP, Active Directory, etc.) to obtain principal information. * BasicDirectoryService and DigestDirectoryService: these services are configurable using configuration files in the same formats as used by the Apache HTTP server, allowing you to use the same user/group setup as a separately-running Apache server. Note that the current implementation does not allow for configuring resources, since Apache doesn't have resource principals. The 'caldavd-test.plist' configuration uses XMLDirectoryService by default, set up to use 'conf/auth/accounts-test.xml'. This file contains a user principal, named "admin", with password "admin", which is set up with administrative permissions on the server. You can then run the server as follows: ./run This should start up and bind to port 8008 for HTTP and 8443 for HTTPS. You should then be able to connect to the server using your web browser (eg. Safari, Firefox) or with a CalDAV client (eg. iCal, Chandler). DAV Functionality ==================== The server implements the following specifications: * HTTP/1.1, RFC 2616 * HTTP Authentication, RFC 2617 * WebDAV level 1, RFC 2518 * WebDAV Access Control Protocol, RFC 3744 * WebDAV Quota and Size Properties, RFC 4331 * CalDAV, draft-dusseault-caldav-15 * CalDAV Scheduling Extensions, draft-desruisseaux-caldav-sched-02 Note that while the server does support WebDAV, it does not support WebDAV level 2, which means it does not implement the LOCK and UNLOCK methods. PORTABILITY =========== Portability may be limited in this release. The server requires: * Python 2.5 * Zope Interface 3.1.0c1 * PyXML 0.8.4 * pyOpenSSL 0.6 * python-dateutil-1.0 * xattr 0.2 (Bob Ippolito's implementation) * Twisted * vObject * PyKerberos * PyOpenDirectory It also requires, naturally, anything these components depend on. For example, pyOpenSSL requires the OpenSSL library. The server is most actively developed on Mac OS 10.5 Leopard, which is presently only available to Apple developers in a preview release. (See http://developer.apple.com/ for more information.) However, it is not intended to run solely on that platform; that just happens to be what the current developers are using (because we work at Apple, and are building it as a feature of Mac OS X Server). If you are using Tiger (Mac OS 10.4), you will need to install Python 2.5. See http://pythonmac.org/packages/ for installable packages. If you are using other operating systems, there may be additional coding work required before you can get started. WEBDAV PROPERTY STORAGE ----------------------- For starters, twisted.web2.dav requires Bob Ippolito's xattr library to access file system extended attributes, which are used to store WebDAV properties. File system extended attributes are available on all file systems in Mac OS X, and on some file systems on Linux and FreeBSD. Another alternative is to implement a new property store class which does not use extended attributes. The Apache HTTP Server, for example, uses a database to keep track of properties on files, and this method works on many more platforms and file systems. Linux and FreeBSD users have had some success running our calendar server. Check our bug tracker for status: http://trac.calendarserver.org/projects/calendarserver/report/1 PYTHON 2.5 ---------- The Calendar Server was implemented using Python 2.5. Backporting to earlier Python releases might be possible, however we use a number of language constructs specific to 2.5 that might make that hard. GETTING INVOLVED ================ If you are interested in getting involved with development, be sure to visit our home page for more information: http://www.calendarserver.org/ Bug reports are welcome, and contributions such as code patches and documentation are appreciated. Visit our bug tracker: http://trac.calendarserver.org/projects/calendarserver/report/ You can chat with other users and developers on IRC on channel #calendarserver on the irc.freenode.net server network. You can also subscribe to our mailing lists for users and developers: * calendarserver-users is for users of the Calendar Server. It's the main forum for asking questions about installing, configuring and administering a Calendar Server. * calendarserver-dev is for developers. It's for engineering discussions, including design directions, ways of extending the server, and reviewing code. * calendarserver-changes is for change notifications to the source repository. Register for mailing lists on our mailing lists page: http://lists.macosforge.org/mailman/listinfo/