Bedework Features


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:

CalDAV server

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.

CardDAV server

Bedework provides a full CardDAV server, and a CardDAV address book client is under development.

Web clients

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

Highly customizable look and feel: XML & XSLT

The web clients are XML and XSLT based allowing Bedework to be "skinned" for multiple clients and uses. For example, the quickstart comes with skins for producing production RSS, Javascript, and video feeds as well as HTML displays suitable for handheld devices.

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.

Calendar subscriptions

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.

Multiple 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.

RSS & Javascript Feeds

RSS and Javascript feeds are implemented simply by applying a different skin to transform the data appropriately. Feeds can be filtered by category or a named CalDAV filter.

Portal support

In the past Bedework has been shown to work as a JSR168 portlet in Jetspeed, uPortal and Liferay using the portal-struts bridge. This support us currently disabled.

Timezone support

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.

Recurring events

Extensive recurring event support is available via CalDAV and the web clients.

Event references

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.

Container authentication

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.

Calendar Standards

Bedework is designed to conform to existing calendar standards. In particular:

The Bedework implementation team participates in the standards process as a member of CalConnect, the Calendaring and Scheduling Consortium, which is "focused on the interoperable exchange of calendaring and scheduling information between dissimilar programs, platforms, and technologies."

Interoperability with other calendar systems and clients by way of standards compliance is an important design goal of the Bedework system.