COMAS - Conference Management System
====================================

COMAS is (or wants to be) a complete Conference Management System,
flexible enough to be easily adaptable for most conference needs.
It has been used to prepare and organize CONSOL 2004
(http://www.consol.org.mx/2004, Congreso Nacional de Software Libre,
National Free Software Conference)

FEATURES
========

There is much more to COMAS than what can be shortly described, but
anyway... Here we go.

COMAS works with the following basic axises(sp?):

- PERSON: People participating in the conference, either as attendees,
  speakers, guests, sponsors or whatever they are, are registered as
  persons. We manage the registration, hold personal/statistic data
  for each of them, print nametags/diplomas. There can be different
  person types, allowing us to work with each of them
  separately. 

- PROPOSAL: Registered persons can submit a proposal. A proposal is a
  generalization for any kind of talk, tutorial, workshop,
  presentation or session (and, of course, the type of proposal will
  be also saved). Proposals have a title, an abstract, and can have an
  associated file. Proposals are grouped into tracks, and have a
  status that can only be changed by the members of the academic
  committee. Each proposal must have at least a single author (from
  the registered persons), but may have more, up to a predefined
  number of maximum authors. You can also define the maximum number of
  proposals per person.

- SCHEDULE: A schedule consists of timeslots arranged in a number of
  rooms, days and times. Each timeslot can host one proposal of one or
  more specified types. Each room can accept a maximum number of
  people depending on the proposal type. 

- PAYMENT: A payment can be registered for a person either for general
  entrance to the conference or for a specific talk. Different
  amounts will be charged depending on the person type (i.e. you may
  choose not to charge speakers, to charge students less than other
  people), on the proposal type (a workshop may be more expensive than
  a tutorial), on the date (paying before the conferece may be cheaper
  than paying after it has started), etc. And, of course, an
  administrator might override the indicated price if it needs to be
  so. 

- ADMINISTRATION: There are many administrative tasks, managing the
  different aspects of running a conference. The main tasks are:
  + Manage Comas' adminstrators and privileges
  + Manage person catalogs
  + Manage proposal catalgos
  + Manage rooms and schedule administration
  + Manage money-related issues
  + Setting status and scheduling of proposals

GENERAL ARCHITECTURE
====================

COMAS was implemented in a layered way:

- The core operative logic is implemented in the database itself,
  protecting data integrity through triggers and extensively using
  functions for data access.
- A second layer, written completely in Perl, implements the whole
  backend functionality. It provides access and management facilities
  for the data stored in the database through a object-oriented
  interface.
- A third layer, also written in Perl, implements the HTML
  front-end. No other front-ends are currently implemented, but they
  can certainly be useful.

STATUS
======

COMAS is fully usable right now, no major bugs have been
spotted. There are some incomplete details (i.e., some administrator
tasks such as creating schedules) must still be carried out either
directly at the database (via psql or something similar) or at our
simple command-line interface (comas-shell).

There are a couple of places (or is it only one? :) ) where we have
hardcoded exactly what we needed for CONSOL, but our code should at
least prove useful for a similar implementation. We were not able to
find a more general way to solve this - Help will be welcome. The
specific case that comes to my mind right now is converting the
schedule in the database to a Web page.

COMAS performed most reliably for us in our conference, so I would at
least label this as late-Beta-quality software.

REQUIREMENTS
============

A full COMAS installation requires the following packages to be
installed:

- PostgreSQL 7.4 or later
- Perl 5.8 or later
- Apache 1.3.x
- Mod_perl

As well as the following Perl modules (some of them part of the core
Perl distribution, the rest of them available through the CPAN,
http://www.cpan.org/):

- Apache::Session
- Apache::Request
- Carp
- Config::Simple
- Data::Dumper
- Data::FormValidator
- Date::Calc
- Date::Parse
- DBI
- DBD::Pg
- HTML::FromText
- HTML::Template
- Net::SMTP
- PDF::API2
- Switch

Not each of the modules is required for each of the layers, of
course. We should work on updating this README to be more granular ;-) 

AUTHORS
=======

COMAS was written by

- Manuel Rábade <mig@mig-29.net>
- Gunnar Wolf <gwolf@gwolf.cx>

LICENSING
=========

COMAS is licensed under the General Public License (GPL) v2 or later,
at your choice. For further information, please check the 'COPYING'
file. 

THANKS
======

The authors want to thank:

- CONSOL (Congreso Nacional de Software Libre, National Free Software
  Conference), http://www.consol.org.mx/
- Universidad Pedagógica Nacional, http://www.upn.mx/ - Part of this
  software was written from the mystical depths of 443,
  http://linux.ajusco.upn.mx/ 

for sponsoring our work in COMAS.
