This guide is intended to describe the current and future direction of the Reefknot shared calendaring project and the Perl libraries we're working on.
Ultimately, we'd like to provide a way for end-users to write something like this to start a fully-functional calendar server:
use Reefknot;
# this is just a sample, and isn't reflective of any exact API
# set up information about existing storage and user databases
$store = new Reefknot::Storage::DBI (server => "calserver.myorg.com");
$userdb = new Reefknot::Users::LDAP (server => "ldap.myorg.com");
# set up Reefknot to run on top of the storage and user lists
$s = new Reefknot::Server(storage => $store,
users => $userdb,
logdir => '/var/log/reefknot/');
# start the event loop
$s->go(); |
Clients could also be built similarly with Reefknot modules:
# within a CGI program or Apache handler:
use Reefknot::Client;
use Reefknot::Storage::Wombat;
use Reefknot::Display::HTML;
# again, just a sample, not reflective of any real API
# set up information about the client
$store = new Reefknot::Storage::Wombat; # use my Evolution calendar store
$display = new Reefknot::Display::HTML; # but do client interface with HTML
$c = new Reefknot::Client(storage => $store,
display => $display);
$c->handler($cgi); # or something like this |
In order to make this happen, we'll need a variety of modules. They fall into several classes:
Base modules - speak standard RFC-compliant protocols
Mid-level modules - provide user-friendly abstractions of calendaring implementation details
High-level modules - provide calendaring services with minimal fuss for the end-user
This document details what's done now, what's not done yet, and major areas that are open for developers to tackle. If you're interested in working on these, please contact <reefknot-devel@sourceforge.net>.
| Next | ||
| Base modules: Net::ICal and siblings |