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.