GroupKit 5.0 Overview

Introduction

GroupKit 5.0 is a substantial rewrite, loosely based on the design found in the unreleased GroupKit 4.0. The GroupKit API has been completely changed, and now relies on the namespace mechanism introduced in Tcl 8.0. Internally, the code has also been cleaned up to conform with Tcl coding conventions. GroupKit 5.0 supports Unix, Windows and Macintosh.

GroupKit 4.0 was an experimental version, intended to test the applicability of a meta-architecture for GroupKit. We discontinued development of GroupKit 4.0, but retained many of the ideas and concepts in GroupKit 5.0. Additionally, we had the goals of making this release very robust, stable and maintainable.

Meta-Architecture

GroupKit 5.0 keeps many of the core concepts from the meta-architecture developed by Ted O'Grady for GroupKit 4.0. In particular, the internals of GroupKit are still highly environment-based, and most communications is routed through environments. In general, the meta-architecture has been somewhat simplified, and some of the generality removed.

Services and registries are still supported, and interactions between environments is still configurable. The mechanism to do so has been changed, generalizing the previous mechanism which is now based on the metaphor of routers and subnets.

Details on the meta-architecture will be provided at a later date.

New API

The API in GroupKit 5.0 is completely different from that in previous versions, which necessarily means your code will break. There were several guiding principles in designing the new API: The following table provides a mapping from commands used in previous versions of GroupKit to commands in the new version:
Old APINew API
RPCsgk_toAll cmd ?args?gk::to all cmd ?args?
gk_toOthers cmd ?args?gk::to others cmd ?args?
gk_toUserNum usernum cmd ?args?gk::to usernum cmd ?args?
gk_serialize cmd ?args?gk::to all -serialize cmd ?args?
Environmentsgk_newenv ?options? envNamegk::environment ?options? name
Eventsgk_bind event actiongk::event bind event action
gk_delbind bindinggk::event delete binding
gk_notify event paramsgk::event notify event params
Widgetsgk_addStandardMenus ?menubargk::menus addstandard ?menubar?
gk_addMenuHtmlHelp title htmlgk::menus addhelp title html
gk_scrollbar window ?options?gk::scrollbar window ?options?
gk_initializeTelepointers--
gk_specializeWidgetTreeTelepointer windowgk::telepointers attach window
Utilitiesgk_schedule tag command ?interval?gk::schedule tag command ?interval?
gk_cancelScheduled taggk::schedule cancel tag
gk_amOriginatorgk::conference originator
users cmd ?args?gk::users cmd ?args?
gk_info cmd ?args?gk::info cmd ?args?
gk_initConf --

Coding Style and Conventions

All code in the GroupKit library conforms to the coding conventions found in the Tcl/Tk Engineering Manual (C code) and the Tcl/Tk Style Guide (Tcl scripts). You should find that the GroupKit code is now both consistent and documented, making it easier to understand and modify. If you have code that you are planning to contribute to GroupKit, please ensure that it follows these conventions.
Last updated February 26, 1998 by Mark Roseman.