Implementing a new module

Implementing a new module

Implementing a version of a module that already exists is easy to coordinate, since it has no impact on the design of the system as a whole and so it can be performed in isolation by one person without informing anyone else.

In contrast, when implementing a brand new module, this impacts the entire system. This is a task that primarily involves communication. First, determine a task name such as joseki or influence. Next, define an interface for this task. At this point, the proposed interface should be posted in the discussion forum, along with a rationale for why this module is needed, and why the proposed interface is the right way to solve this problem. An email should also be sent to David Weiss informing him of this proposal.

At this point, any interested people can comment on the interface, and make any suggestions for changes. Some possible issues would include that someone else is already working on defining this interface, a different interface or interfaces already deal with this problem, or a different set of methods would better define this interface. Discussion would continue until a consensus is reached, and the interface is finalized.

At this point, implementation of the module is ready to proceed, and the procedure is the same as described elsewhere for implementing an existing module.