HYLAFAX 3.0 INFORMATION

[ HYLAFAX is the new name for FlexFAX; check here for the reason for the name change.]

This note describes the features and changes expected to be part of of HylaFAX Version 3.0. The software has been in production use for almost 6 months so it should be reasonably stable by the time of the first beta distribution. HylaFAX v3.0beta??? is expected to be available for public ftp in early February, 1995. As usual the announcement of its availability will be posted to the `flexfax-announce@sgi.com` mailing list (which is also fed to the `flexfax@sgi.com` list). Information on subscribing to these mailing lists is available here.

NEW FUNCTIONALITY

The following is an abbreviated list of new functionality that is to be part of the released version of HylaFAX 3.0. All items not marked as incomplete will be present in the first beta distribution.

- Redesigned server architecture with a single scheduler process and optional per-modem ``front door'' processes
- Revamped scheduler with time-of-day restrictions, priority-based scheduling of jobs, and per-destination controls
- Optimal imaging of broadcast documents
- IXO/TAP protocol support for communicating with pager service providers
- Distinctive ring support
- Caller-ID support
- Support for Class 2/2.0 modems that implement Error Correction Mode (ECM)
- Job groups

Folks interested in defining a revised client-server protocol should contact me by electronic mail at sam@engr.sgi.com.

NEW SERVER ARCHITECTURE

HylaFAX 3.0 is a significant rearchitecture of the old FlexFAX software. Specifically, the server-side software has been redesigned to support:

- High-volume transmission of facsimile.
- Effective load-balancing and sharing of modem equipment for fax, data, and voice use.
- Sophisticated queueing management and control.
- Better integration with existing system facilities.

The redesign splits the old faxd server process into three separate components:

- faxq, a centralized queueing agent,
- faxgetty, an optional ``getty-frontdoor'' process that handles incoming phone calls and monitors modem usage, and
- faxsend, a fax transmit program invoked by the faxq program to process an outbound job.

Send-only configurations can be implemented by not running the faxgetty program on ports where fax modems reside (though doing this can reduce the effectiveness of the load-balancing work done by the queuer). Receive-only configurations can be implemented by running only the faxgetty program on ports where fax modems reside.

High-volume transmission of facsimile is possible because of the improved central queueing agent and because outbound documents are imaged only as required by the capabilities of the receiving facsimile equipment. In addition the queueing agent supports priority-based scheduling of outbound jobs, so broadcast jobs can be scheduled ahead or behind other jobs simply be assigning or adjusting their transmit priority.

Effective load-balancing of modem equipment is done in the queuer by assigning modems according to transmit characteristics and the current status of each modem. faxgetty processes notify the central queuer when a modem is in use for inbound or outbound use and also communicate each modem's capabilities. This makes it possible for jobs to be scheduled so that they are not blocked waiting for modems to be available and so that the best modem for the job is assigned; e.g. if a fax receiver supports the V.17 high speed facsimile communication protocol, then the queuer will try to assign a modem that is capable of transmitting V.17 data. There are also provisions in the queuer for scheduling modems for non-fax use; however this functionality is not expected to be fully developed by the time of the 3.0 release. Future versions will be capable of doing optimal scheduling of modems for batch-oriented communication protocols such as UUCP.

The new queueing agent has extensive support for administrative control and monitoring of jobs. Jobs are scheduled using a priority assigned when the job is submitted. This priority permits administrators to run important jobs ahead of less-important jobs such as broadcasts. Per-destination parameters can be defined to control:

- the time of day that outbound jobs will be processed,
- the maximum number of concurrent jobs processed,
- the maximum number of pages that can be transmitted in a job,
- the maximum number of calls that will be made on behalf of a job, and
- whether or not jobs should be rejected out-of-hand.

The configuration database is designed so that parameters can easily be applied to groups of destinations with a single specification and yet have a parameter for a single destination ``override'' a previous group-oriented definition. Optimizing phone usage by scheduling long distance calls to off-peak hours, for example, is simple with the new controls. Likewise disallowing outbound jobs to sensitive phone numbers (such as 911) is also easy.

Because the faxgetty process is not required for a send-only configuration, the HylaFAX software can be more easily configured for use on systems that support bidirectional modem use through device pairs (one device for outbound use and one for inbound use). Similarly, the faxq program can be combined with other ``Smart Getty'' software, albeit with some loss in effectiveness of load-balancing algorithms implemented in the central queuer process.

NOTEWORTHY CHANGES

The following is an abbreviated list of the changes between the last public distribution of FlexFAX, v2.3beta036special, and the first beta distribution of HylaFAX 3.0.

- Prototype modem configuration files have been split out into a separate directory and now reflect the DTE-DCE flow control scheme they support. This simplifies the task of configuring a modem according to a specific flow control regimen.
- There is a new configuration file for the faxq process.
- All modem configuration parameters that specify command strings to send to the modem are now fully specified. This means, in particular, that the fax software no longer prepends `AT` or `AT+F` strings. This change was made so that non-`AT`-prefix strings, such as the modem escape sequence, can be specified in modem configuration parameters.
- The Class 2 and 2.0 device drivers now enable the use of the optional Error Control Mode (ECM) protocol, if possible. The Class 1 driver does not support ECM.
- Protocol errors recognized during the initial protocol exchanges when sending and receiving are now more precisely identified; the old driver lumped all such errors together.
- A bug was fixed in the Class 1 driver that caused it to prematurely give up when a certain type of recoverable error was encountered while sending the post-page message.
- The Class 2 driver can now be configured to append RTC to the end of each page of transmitted facsimile data. This can be used to work around modem firmware that incorrectly fails to append RTC to each page as specified in the ``Ersatz Class 2 Standard''.
- The software no longer writes `rejectNotice` records in the info database when encountering a receiver that appears to not be a fax machine. This change was made because it was too easy to misrecognize valid receivers as non-fax entities and because users were too easily confused by the result.
- The modem configuration parameter strings can now include escape codes that force the host to pause for a period of time (the delay value is specified in the string).
- Support has been added for distinctive ring: a feature where the modem presents different `RING` status messages for different types of calls.
- Support has been added to accept/reject calls based on Caller ID: a feature where the modem presents identification information of the caller before the phone is placed off-hook. Caller ID information is also logged.
- There is improved support for controlling the number of tries to make to transmit a facsimile, as opposed to the number of times to dial the phone.
- The diagnostic messages returned to a user when jobs are rejected have been improved.
- Almost all configuration parameters that were previously specified at compile-time are now configurable at runtime. In particular, all UUCP-locking-related parameters can now be specified in the configuration files.
- There is improved support for external voice-oriented programs that handle inbound calls.
- The software can be configured to use SVR4-style Dynamic Shared Objects (DSOs); this can significantly reduce the amount of disk space used by the various client and server applications.
- The UUCP locking support now understands the peculiarities of SCO systems.
- It is now possible to dynamically alter jobs' kill time and assigned modem using the faxalter program.
- The TIFF library included with the fax distribution has been updated to the latest version. This is interesting mainly because it incorporates performance enhancements in the Group 3 decoder and many portability changes for 64-bit platforms.

DISTRIBUTION PLANS

HylaFAX will be distributed in source and binary form by public ftp on the Internet. Full binary distributions for all ``supported platforms'' are intended to be available at the same time as the source distribution. Source distributions that are built with the GNU gcc compiler must use gcc version 2.6.1 or later. As noted above, availability of distributions will be posted to the `flexfax-announce` and `flexfax` mailing lists.

HylaFAX table of contents.