Written completely in Java, Bedework is system independent. Currently it will compile and run in Java 1.5 or later.
Standards based and interoperable
Interoperability with other calendar systems and clients by way of standards compliance is a fundamental design goal of the Bedework system. At least the following standards are supported:
- iCalendar support (rfc2445)
- iTIP (rfc2446)
- CalDAV (rfc4791)
- CalDAV scheduling (draft)
- VVenue (draft)
Bedework provides a full CalDAV server. It can be used with any CalDAV capable client and has been shown to work with Mozilla Lightning, the iPhone, Apple's iCal, Evolution, and others.
Bedework provides a full CardDAV server, and a CardDAV address book client is under development.
The Bedework web clients provide access to public events in guest mode and to public and personal events in authenticated mode. The clients are skinnable allowing a high degree of customization
Public calendar suites
Public events are displayed using "calendar suites" allowing multiple organizations to maintain thier own public views of events with whatever degree of visibility is appropriate. A Bedework public calendaring installation may have one or many calendar suites. A calendar suite provides a customized view of events, custom theming, and control over how events are tagged by event administrators.
Bedework provides a web client for personal and group calendaring including scheduling. Using CalDAV desktop clients, users can see a fully synchronized view of their personal and subscribed events between their desktop, mobile devices, and the web client.
Administrative client for public events
Public event entry and maintenance is carried out through the administrative web client. The system supports three roles: Super Users control global system settings including user and calendar maintenance and the setup of calendar suites. Calendar Suite Owners can modify the settings of their calendar suite, and Event Administrators can add and edit events for their administrative group.
Public event submission
Bedework provides a web client for submitting events to a public queue. This allows members of your community who are not event administrators to suggest public events.
Public event data feeds and widget builder
Bedework includes a public events widget builder which generates embeddable code for other web sites. Raw data feeds in the form of ical, rss, json, and XML can also be generated.
Highly customizable look and feel: XML & XSLT
Database independence: Hibernate
The core of the calendar uses Hibernate for all database transactions giving support of many database systems and enterprise level performance and reliability. A number of caching schemes are implemented for Hibernate including clustered systems giving further options for improving availability.
Full CalDAV access control is available allowing the sharing of calendars and calendar entities based on authentication status and identity.
Support for scheduling of meetings including invitations and their responses is available. Caldav scheduling (still in draft) is also supported. Freebusy is supported and the busy time is displayed as attendee lists are built. In the near future it will be possible to carry out scheduling with other bedework systems though real-time protocols. Access control allows users to determine who may attempt to schedule meetings with them. Automatic responses to meeting requests is an option which can be used to enable simple resource scheduling by, for example, 'inviting' a resource to a meeting.
Import and export
Events can be imported and exported in iCalendar (RFC2445) format. This provides an option for populating the calendar from external sources. A dump/restore utility provides a means to backup and restore xml data files.
Users may subscribe to calendars to which they have access, including public and personal calendars. For example they may subscribe to a class schedule, the theater calendar, or a calendar hosted by a friend or coworker.
In the near future users will be able to receive email notification of events in subscribed calendars.
The core system supports multiple calendars for users and for public events.
Internationalization is carried out by creating a new skin. The skin selected is based upon skin name and locale allowing a significant degree of multilanguage support in the client. Work is currently taking place to strengthen support for internationalization independent of Bedework skins.
Bedework has been shown to work as a JSR168 portlet in Jetspeed, uPortal and Liferay using the portal-struts bridge.
Full timezone support is implemented. There is a set of system defined timezones based upon externally available sets of timezone definitions. In addition users are able to store their own timezone definitions.
Extensive recurring event support is available via CalDAV and the web clients.
Users may add public event references to their personal calendars. Event references can be annotated by the user.
Pluggable group support
Bedework uses a pluggable class implementation to determine group membership for authenticated users allowing organizations to implement a class which uses an external directory. The default class uses internal tables to maintain group membership. Different implementations can be used for administrative and personal use allowing the separation of any given users roles.
There is no authentication code in Bedework. Rather, Bedework behaves as a standard servlet. All authentication is carried out through external mechanisms. Standard container authentication (via tomcat or jboss) and filter based Yale CAS authentication have been shown to work.
Support for other calendar systems and clients
It is possible to access an entire calendar with a single url. This can be used to subscribe to a bedework calendar from Google or Outlook. Bedework can also take advantage of the richness of CalDAV capable desktop clients.