Hi, We have recently started thinking about impleenting a calendar server with CalDAV support. To get a better idea, I have been looking at the Open source implementations out there. It was exciting to hear the Apple announcement of a CalDAV server with even scheduling implementation. I briefly browsed through the code and I had some questions. Am I write in understanding that the entire server is written in Python? What are the pros and cons of doing so? Just wondering if there will be any performance impacts if you had say, a million users. Is it one single process that handles everything from the http requests to db operations? On a different note, as far as I could see "reminders" are not defined in the CalDAV spec. Do you do server side reminders? Is there a separate process taking care of this? Do you have an architecture overview spec I could look at? Thanks, Ciny
The server is written in Python, yes. Though one should note that not all of the code being executed is python. For example, SSL processing is done by OpenSSL via a Python shim (PyOpenSSL). So SSL stream processing is all in C code. So while the CalDAV server logic is Python, it is not a pure Python implementation. Anyway, as to performance. First off, we are not writing the server to scale to a million users. This isn't an implementation for the Google or Yahoo! servers of the world to deploy; it's meant for business use, and thousands, not millions, or users. Not that we'd mind scaling to millions, but it's not a priority for this code today. One of the pros of using Python is that it's easy. It's easy to write, it's easy to read, and it's easy to maintain. We hope that this means less bugs over time, and more flexibility to add the features that people want in the future. It is a single process, though we think it'll be straightforward (and important) to ensure that multiple servers can run concurrently against a shared data store. You could then run multiple instances on one host, or on several hosts using a a storage area network/network attached storage. CalDAV doesn't yet have a server-to-server protocol to enable clusters with disjoint storage, but there is work going into that area in CalConnect. That's not strictly necessary if we wanted to do clustering, but we haven't started any such work yet. I don't know what you mean by reminders, but CalDAV and iCalendar do allow for alarms. How alarms get passed on to users is up to clients, though. The server doesn't take any specific action when alarms fire; it simply stores them. All of our documentation is on our web site. I know it's limited right now, but we'll be adding to it over time. -wsv On Aug 29, 2006, at 12:01 PM, Ciny Joy wrote:
Hi, We have recently started thinking about impleenting a calendar server with CalDAV support. To get a better idea, I have been looking at the Open source implementations out there. It was exciting to hear the Apple announcement of a CalDAV server with even scheduling implementation. I briefly browsed through the code and I had some questions. Am I write in understanding that the entire server is written in Python? What are the pros and cons of doing so? Just wondering if there will be any performance impacts if you had say, a million users. Is it one single process that handles everything from the http requests to db operations? On a different note, as far as I could see "reminders" are not defined in the CalDAV spec. Do you do server side reminders? Is there a separate process taking care of this? Do you have an architecture overview spec I could look at?
Thanks, Ciny
_______________________________________________ calendarserver-dev mailing list calendarserver-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo/calendarserver-dev
participants (2)
-
Ciny Joy
-
Wilfredo Sánchez Vega