My naive architectural guess would be that event data would not be
represented in JCR, but that we should instead assume an independent
event store/calendaring server, though for the purpose of a Sakai
release/demo we'd probably bundle this into a single distribution
(e.g. Bedework, assuming issues like memory footprint, etc. are
tolerable). But then that leaves the problem of how to relate this
event data to content objects (e.g. when the assignment is due, who's
coming to office hours on Thursday). My vague impression is that this
is what ICOM should be helpful for, though we'd need to do a lot of
our own legwork around use cases.
My other thought is that calendaring functionality might not be on the
critical path for a first milestone. We'd still need to understand the
architectural assumptions - if there is a belief that event data
should be stored in JCR, for whatever reason, it would be good to know
it - but perhaps we don't have to work out the implementation just
yet.
But I'm just thinking out loud right now. wdyt?
~Clay
Best,
Ray
I would say the key improvements over Sakai 2 would be to make this seamless (any activity, task, assessments etc. with a due or activity date should show up in a calendar without the creator needing to do anything extra), and to put the event visibility options under the user's control rather than site owner's, e.g. every context should have an iCal feed, and within Sakai users can manage their own personal calendar (=event list) in various ways, including setting filtering options (which contexts/sites do I want to see events for), and subscribing to and exporting iCal feeds.
So long as the iCal support is robust and comprehensive, people don't need to worry too much about which calendar is primary and which ones secondary (e.g. Sakai calendar, Google Calendar, institutional calendar like Groupwise/Outlook, etc.)
We haven't seen much demand for use case # 6 below locally, i.e. in a Sakai context people are more interested in event calendaring than availability calendaring.
Regards
Stephen
>>> John Norman <jo...@caret.cam.ac.uk> 8/12/2009 4:41 PM >>>
Note that such an integration might be might be worth having in Sling
if that's possible - at least for the core parts like using JCR and/or
Sling as a backend for the Bedework stuff (if that makes sense - I'm
totally ignorant about Bedework).
-Bertrand
Sling (like Jackrabbit) gives the option of using either its own
hand-crafted file-system-hosted persistence mechanism or a SQL database
for storage. Taking advantage of that flexibility, K2 _assumes_
underlying use of SQL. As a result K2 can integrate with EclipseLink to
provide access to JPA (the Java standard interface for the sort of DB
mapping Hibernate provides).
On the minus side, this adds another "persistence layer" to tune. But
the plus sides far outweigh this concern, IMO.
For one thing it gives an "escape hatch" when/if K2 services themselves
would benefit from use of a relational database. (I remember this being
mentioned in the pre-Sling days as an approach to auxiliary big flat
key-value storage, but my impression is that Ian's development of
BigStore (tm) has taken most of the pressure off there.)
Even more excitingly (to me, anyway), it should make it easier to
integrate efficiently with with non-Sling / non-Jackrabbit applications
and with service libraries that rely on relational databases for storage.
In other words, it makes "We will build everything Sakai 3 needs on a
Jackrabbit foundation" a less risky proposition. Being a rather
risk-adverse engineer, I find this reassuring.
Best,
Ray
The first thing is to answer the question originally posed and
reinforced by Ian's request for use-cases: What do we mean by having
Calendaring in Sakai 3?
From this thread I have a tentative picture:
- We will determine a set of data items that contain date/time
information that might usefully be represented in Calendar format
(Events with capital E) and we will support the creation and editing
of such Events. Events can include point events like an assignment
submission deadline as well as time-range events like a meeting start/
finish. We will want a classification of Event types that users would
find useful for filtering purposes.
- Sakai will want to maintain sets of Events for groups. So there will
be a way of associating Events with groups. There will be an interface
for maintaining the list of Events associated with a particular group.
If possible the storage of these events lists will use a standard
Calendar api, such as iCal, CalDAV, etc. We will need to resolve
whether an external store is used by default and if so how search is
handled.
- There will be an interface for aggregating Event lists into a single
Calendar presentation (myCalendar/myEvents) for Sakai-generated
content and ideally an option to subscribe to external Event lists of
relevance (probably iCal). The personal aggregated Calendar data
widget will be placeable in multiple Sakai locations
This should be all we do in Phase I
- Ideally we would be able to demo use of an external store for the
Event lists and that External store (Bedework/Google) would support
onward integrations with personal information managers (Outlook, iPhone)
In a Phase II we would look at providing an OSGi bundle for
Calendaring in Sakai that provided some of the basic functionality of
the external store (Bedework lite?) for those institutions that want
more sophisticated Calendar support without deploying and enterprise
calendar solution.
With that hazy picture in mind, I think we should aim for Phase 1 by
summer 2010 and Phase II by summer 2011 (if we can get help from
Bedework or similar)
All subject to contract!
Within that broad and hazy picture it is interesting to speculate
about the ICOM standard for Event information (as well as CalConnect
efforts) and how they fit in with other standards. It seems like we
might want ICOM as a native format and iCal/CalDAV for interfacing to
more loosely coupled systems - but I don't yet know enough to speak
confidently about that.
Make sense?
John
PS not really addressed because this is the K2 list, but there has
been some good work at GaTech on CalDAV in Sakai 2, which could mean
an external CalDAV store might help with transition from 2 to 3. But I
haven't looked into that aspect of the picture and it might involve
more Sakai 2 development work.
> - Sakai will want to maintain sets of Events for groups. So there will
> be a way of associating Events with groups. There will be an interface
> for maintaining the list of Events associated with a particular group.
> If possible the storage of these events lists will use a standard
> Calendar api, such as iCal, CalDAV, etc. We will need to resolve
> whether an external store is used by default and if so how search is
> handled.
Not to be splitting hairs, but groups or sites or both? I was
wrestling with this a bit this morning. I *think* the answer to this
is sites (under the assumption that most groups will have a site
associated with them).