Contributing

Reporting a bug

You can report a bug on the issue tracker on google code or on the mailing list.

Retrieving the latest code

You can check the latest sources with the command:

hg clone https://code.google.com/p/scoop/

Bear in mind that this development code may be partially broken or unfinished. To get a stable version of the code, update to a release tag using hg update <tag name>.

Coding guidelines

Most of those conventions are base on Python PEP8.

A style guide is about consistency. Consistency with this style guide is important. Consistency within a project is more important. Consistency within one module or function is most important.

Code layout

Same as PEP8.

Imports

Standard library imports must be first, followed by SCOOP imports and finally custom modules. Each section should be separated by an empty line as such:

import system

from scoop import futures

import myModule

Whitespace in Expressions and Statements

Same as PEP8.

Comments

Same as PEP8

Documentation Strings

Same as PEP8

Naming Conventions

  • Module: lowercase convention.
  • Class: CapWords (upper camel case) convention (ie. AnExample).
  • Function / Procedure: mixedCase (lower camel case) convention. First word should be an action verb.
  • Variable: lower_case_with_underscores convention. Should be as short possible as.

If a name already exists in the standard library, an underscore is appended to it. (ie. a custom range function could be called range_. A custom type function could be called type_.)

Architecture

Communication protocols

Here are the message types from the point of view of a broker. Message coming from workers are always from their Task socket.

Message name Socket Arguments Description
INIT Task   Handshake from a worker: allows a broker to recognize a new worker and propagate the currently shared variables.
CONNECT Task Addresses Notify a broker of the existence of other brokers.
REQUEST Task   Worker requesting task(s).
TASK Task Task A task (future) to be executed.
REPLY Task* Task, Destination The result of a task to be sent to its parent. Communicated directly between workers if possible.
SHUTDOWN Info   Request a shutdown of the entire worker pool.
VARIABLE Info Key, Value, Source A worker requested the share of a variable. The broker propagates it to its fellow workers.
TASKEND Info askResult, groupID A collaborative task (scan, reduce, etc.) have ended, memory can be freed on workers.
BROKER_INFO Info   Propagate information about other brokers to workers.