EPIC Enhanced Programmable IRC-II Client

About EPIC

EPIC is the Enhanced Programmable IRC-II Client: a terminal-based IRC client descended from ircII, with an extensive scripting language and a long history of extending and refining that client. The code and copyright history retain contributions from Michael Sandroff, Troy Rollo, Matthew Green, Jake Khuon, EPIC Software Labs, and other contributors.

EPIC6 continues that lineage, but it is not a promise of complete compatibility with every ircII or EPIC5 script. Commands, functions, defaults, and optional integrations change. Some familiar behavior is supplied by scripts rather than by a built-in command, and an older script's presence in the source tree does not guarantee that all of its dependencies remain implemented.

What EPIC offers

EPIC6 direction

The project's EPIC6 work emphasizes making complicated operations simpler, reducing clutter, and improving features people use. Some facilities have been moved into scripts; others are being redesigned or retired. Consult the documentation for the specific feature rather than treating older command counts, binary-size comparisons, or blanket compatibility claims as a description of the current client.

The client is written in C. Its configure source targets a C99-or-newer compiler and a modern POSIX environment, with terminfo support and the libraries checked during configuration. Optional integrations, such as Python, depend on build configuration. The former focus on simultaneous ANSI and K&R function declarations does not describe the current build requirements.

Working with the client

The default startup script loads several support scripts. A personal startup configuration can replace that default path, so behavior available in one session may depend on definitions that have not been loaded in another. Start with the documentation for global startup, loading scripts, and the particular command, function, or setting you want to use.

EPIC's scripting facilities execute local client operations and can invoke external processes when explicitly requested through facilities such as exec. Read a script's requirements and effects before relying on it; server-facing actions also depend on the connected network. EPIC6 does not define a universal return value, command syntax, or default for the project itself: those belong to individual features.

Repository references