Developing Webware

This document should outline the details you need to understand Webware and WebKit internals, and assist in becoming a more advanced Webware programmer.

Style Guidelines

Webware developers are requested to observe the rules defined in the Webware Style Guidelines.

Creating Plugins

Each plugin is a Python Package. WebKit finds plugins using the PlugIns and PluginDirs -- see Configuration. See also the Python tutorial on packages and the PlugIn.py doc string.

A plug-in must have __init__.py and Properties.py files. You can disable a specific plug-in by placing a dontload file in it.

__init.py__ must contain a function like:

def InstallInWebKit(appServer):
    pass

The function doesn't need to do anything, but this gives it the opportunity to do something with the AppServer -- for instance, the PSP plugin uses AppServer.addServletFactory to add a handler for .psp files.

The Properties.py file should contain a number of assignments:

name = "Plugin name"
version = (1, 0, 0)
docs = [{'name': 'Quick Start Guide', 'file': 'QuickStart.html'},
        {'name': 'Reference Guide, 'file': 'Reference.html'}]
status = 'beta'
requiredPyVersion = (2, 0, 0)
requiredOpSys = 'posix'
synopsis = """A paragraph-long description of the plugin"""
WebKitConfig = {
    'examplePages': [
        'Example1',
        'ComplexExample',
        ]
    }
def willRunFunc():
    if softwareNotInstalled:
        return "some message to that effect"
    else:
        return None

The documents (e.g. QuickStart.html) should be located in a Docs/ subdirectory. The example pages go in an Examples/ subdirectory.

A plugin who's requiredPyVersion or requiredOpSys aren't satisfied will simply be ignored. requiredOpSys should be something returned by os.name, like posix or nt. Or you can define a function willRunFunc to test. If there aren't requirements you can leave these variables and functions out.