Milestone Bedework 3.5
This release incorporates a number of changes which should be relatively easy to deploy before we do the major UI overhaul.
Released July 17th 2009
Fixes applied after release
Set disabled flag for bad url in subscription Fix access routines - not correctly handling NONE access.
Also fix access test.
When publishing, unindex the event from the user index and reindex in the public index.
webclients: fix doctype mismatch for admin client and access control stylesheets - problem reveals itself on Mac environs
SIgnificant changes to indexing to handle issues with recurrence overides. Ensure we explicitly remove deleted instances Associated fix to BwEventAnnotation? to fix bug with handling of overridden collections.
Some calendar color changes
Fix null-pointer in export action Better exception handling for getPrincipal
Missed recurrence bug fix from trunk admin client: fix updates of recurrence instances
synch around put/get in EvaluatedAccessCache?
Fix CalDAV so that references to an alias are filtered correctly
Add a patch to look specifically for timezone ids starting with "/softwarestudio.org/Tzfile/" Fix calls to tz server to check response Reduce dump/restore log output a little
extended mkcol was failing to set calendar-collection resource type. Do so and also check it is mkcol trying to do so. A put method for DavClient? Allow release of connections.
CalDAV: Fix not found multi-status response: backported from trunk Fix null location bug when translating icalendar Always update dtstamp and lastmod for events
Enhancements to calendar suite preferences: allow setting of default timezone, default end date type (date/duration), and default time type (12/24 hour) in the calendar suite preferences page of the public administration client.
Summary of changes
- Performance improvements
- reduce JVM memory usage
- decrease database system load
- Public events optimized for a single calendar pool model
- simplifies public events calendaring
- filtering can be applied to all collections allowing for fine-grained control over subscriptions from within the user interfaces; no longer necessary to filter in the xslt of public client
- administrative users tag events by topical area based on subscriptions within each calendar suite. The system then assigns appropriate categories to events.
- administrative users can tag events with as many topical areas as appropriate
- categories are maintained by superusers and calendar suite owners
- categories can be set on all collections
- adding a user to a calendar suite group will allow the user to administer the calendar suite
- public events submissions client enhanced with added workflow in the admin client for pending events, including email notification when an event is published
- cross-tagging of events by administrative groups (currently locate events by searching)
- Subscriptions greatly improved
- all subscriptions are reimplimented as calendar aliases
- subscriptions now appear in caldav clients such as Mozilla Lightning or Apple's iCal
- users can apply filters to aliases allowing for fine-grained control over subscriptions in the user client
- subscritpions to external ical feeds available in public and personal clients
- Apache DS ldap directory ships with quickstart
- used for user accounts, authentication, and the new CardDAV server
- quickstart more closely resembles a production system
- CardDAV server first release
- address book widget used in personal client queries attendees for meetings
- Timezone server in use
- provides standardized timezone service
- CalDAV improvements
- Support for draft 0.7 of CalDAV scheduling
- Support for storing resources (e.g. files, attachments) within the folder hierarchy
- Stronger support for xproperties
- move to jquery in UI
- The personal client needs fixing up to correct several obvious bugs and add some available enhancements.
- Clear out remaining bugs. Move enhancements that can't be met to 3.6, otherwise complete them. See: 3.5 Tickets
- Restructuring to separate CalDAV as a separate project
- Switches to principal references rather than user objects (first step towards group ownership)
- Added several servers for modular support of standard protocols
Data update from 3.0 will not work
As a result of simplifying the collection schema a fix for 3.0 data will not correctly set the calendar type field. Also duplicate event names (a bug in 3.0) will not be corrected. The best approach, restore to 220.127.116.11 with the fix 3.0 option set, dump and restore the fixed data to 3.5.
Partial schema overhaul
User refs replaced by principal hrefs
The schema formerly had references to user entries fro creator and owners. The 3.5 schema now has a string principal href, e.g. "/principal/users/auser" or "/principal/groups/agroup".
Mostly this is invisible to the ui but does leak out in the xml where creator values are now the full href rather than the account. This change does allow for group owners and creators.
In 3.5 we no longer have private timezones. All timezones within the system come from the set of standard system timezones. This facilitates the move towards a standard timezone service. This release incorporates a timezones server which will ease the process of updating timezone information. See wiki:Timezones
Reimplement subscriptions as calendar alias
In Bedework up to 18.104.22.168 subscriptions are different and separate from the collection hierarchy. In 3.5 a number of new types of collection object have been defined. One of these is the "alias" which takes the place of the subscription to an internal collection.
This change apart from simplifying the ui, makes subscribed calendars visible via CalDAV. Clients such as Apple's iCal don't currently allow subscriptions to CalDAV shared calendars (though they do allow subscriptions to web based calendars). In version 3.5 these subscription will appear in ical along with your own collections.
This allows us to have a view of events which is consistent across all clients.
External calendar subscriptions
In addition to the alias we now have the external subscription to an ics feed, for example, eventful,com or google. This allows the user to specify a url and optionally a userid and password (which will be stored encrypted). The calendar will be refreshed periodically and appears as part of the users calendar hierarchy. Again, this external subscription will be visible via caldav clients.
Allow basic filtering on calendars. In addition to the alias change we should allow filtering to be applied to all calendars. This would allow us to subscribe to "Movies" say and then filter for a particular sub-category. Filters will be expressed as a sql query so should be efficient.
Use annotations to automatically create BwEventProxy and possibly dump and restore code. Other possible uses are icalendar transformations and wrapper classes.
Storing resources in folders
Support is in place for storing resources (e.g. files) within the folder hierarchy. This allows us to fully support the approach outlined in the CalDAV rfc and will allow shared attachments, the creation of image repositories etc. The schema changes involved here are the addition of two new tables, one to store the resource information and one to store the resource content. Content has to be fetched explicitly.
Images, files etc will be availabel via a url and access restrictions are imposed.
Import of ics
For personal calendars we can take a relaxed approach to import - add uid if missing etc. For public events administration we need to add to the ui to allow import to be used as a data validation service - i.e. don't import just validate, as well as importing. We should apply the same validation to bulk import as we do to forms entry. Better reporting of errors is also needed.
Move to a single calendar model for public events
Read-only ics data feeds supported Read-only json data feeds supported
Move to jquery from dojo
Root user list.
Move specification of root users out of the authuser stuff and instead have a comma separated list of auth users in the system parameters.
Dump/restore will create that list when upgrading.
At the same time remove the alert user stuff, It was never used.
Build process changes
A significant number of changes to the build process - hopefully to make it clearer and easier to understand.
- Properties file is now exclusively build time properties and is no longer included in the war file.
- Options file is exclusively run time properties.
- New build script bw which allows for multiple configurations
- Libraries now downloaded at build and deploy time from bedework.org
Properties and options tidied up
The properties file is now exclusively build time properties and is no longer included in the war file while the options file is exclusively run time properties. Any properties needed at both run time and build time will be copied out of the run time options by the build process.
Following properties were moved into the options:
- sysintfimpl (caldav)
- org.bedework.global.system.name --> globals.systemName
- org.bedework.app.X.run.as.user --> runAsUser
Removed the org.bedework.app.X.root properties - no longer needed.
New build script
The bw script in the quickstart directory is used to build and deploy. It makes use of a number of configurations stored in the bedework/config directory. The directory bwbuild can be copied into your home directory and allows for a number of configurations to be saved and selected by the bw -bwc parameter.
Allow language/locale settings
alter table BW_SETTINGS add column bwlocales varchar(1000)
alter table BW_CALENDARS add column bw_alias_uri varchar(500); alter table BW_CALENDARS add column display char(1) default 'T'; alter table BW_CALENDARS add column affects_free_busy char(1) default 'T'; alter table BW_CALENDARS add column unremoveable char(1) default 'F'; alter table BW_CALENDARS add column bwrefreshseconds integer default 0; alter table BW_CALENDARS add column bwlastrefresh varchar(16); alter table BW_CALENDARS add column bwlastetag varchar(256); update BW_CALENDARS set BWREFRESHSECONDS=0
Remove Calendar collection flag
alter table BW_CALENDARS drop column calendar_collection;
Root user list
alter table bw_settings add column bwroot_users varchar(500) update bw_settings set bwroot_users='root,caladmin' update BW_AUTH set USERTYPE=192 where USERTYPE>192
Data conversion from earler versions to 3.5
The dump/restore process will do the usual job of converting from earler versions. For 3.5 the changes are more significant than before and are detailed here.
Super or root users
Formerly super users were flagged as such in the authorised user table. This table is not needed and it's functions have been replaced (lrgely).
Super users are now specified bya simple comma separated list stored as a property in the system settings. A super user can be defined simply by adding their account to the list. This avoids some of the problems of bringing up bedework in an authentication domain which does not have any of the quickstart super users defined.
Use the administration client system settings page to chnage the list.
Subscriptions have changed significantly from being a separate entity to an alias store in the collection hierarchy. The data conversion drops any subscription into the users own collections and adds a single entry to their default view which is their calendar home. Early versions of bedework had subscriptions to each calendar collection a user created. This was changed to a single subscription to the calendar home. Some users may see a difference, most will not. Those who do are probably getting a better experience than previously.
Subscriptions to collections the current user does not own are turned into the new alias format added at the calendar home level.
Administrative group accounts (those that start with "agrp_") additionally have their subscriptions made world readable as these are used to create the set of view used by the public clients.