Team Communication

  • Development mailing list at winebot-devel@… serves to discuss feature proposals, architectural changes and project direction. Generic discussion can be held here. You can sign up to this discussion list via subscription page.
  • TRAC is the main work-oriented communication mechanism. Defects reports, enhancement requests and developer/tester account requests are to be tracked via tickets. Each ticket has to address only one specific problem.

Versioning system

Winebot uses Subversion as a versioning system. Developers can get source code tree using following command:

svn co --username <name> https://sandbox.cz/svn/winebot/winebot/trunk winebot

For people not well versed with Subversion, I can recommend the ultimate Subversion book.

Code review

To ensure project code quality, each proposed change to PERL code, Debian package code and Makefiles, has to be reviewed by architect prior the commit. Developer creates a TRAC ticket (enhancement|defect), describes the problem the ticket is addressing and attaches the code change in a patch format.

Changes to (application pack) package sources are subject to their respective Package Maintainers as defined in Winebot Manifest.

Winebot Architecture Documentation

Winebot Architecture Overview

Overall code

Use tabs to indent, tab stop is set to 4. Insert the following vim footer with settings at the bottom of each file:

# vim:ts=4:sw=4:noexpandtab:foldmethod=marker

PERL code

PERL code shall use this standard header:

#!/usr/bin/perl -W
use strict;
use warnings;

All function calls shall be written using full pathnames. Example: winebot::application::install::install_list( @packages );

Variable names have to consist of small characters, delimited by underscore. Variable names have to be self-explanatory. All pointer operations shall be done via -> instead of $$. Subroutine parameters are surrounded by a space character. Block characters '{' and '}' are to be vertically indented. Use space between operands and operators. Use brackets to enhance understandability. $_, @_ - don’t use these variables unless it is absolutely neccessary. Rather create temporary variables.

PERL Subroutines

Using of shift to get function parameters shall be avoided. Better approach is to use the array of named variables.

#==============================================================================
# debug() - prints a message to logfile 
#           (and stdout according to current debuglevel)
# params:
#     $level   - debuglevel, integer 0-9, 0 is minimum
#     $message - string
#     $quork   - non-mandatory argument
# returns: "true" on success.
sub debug( $ $ ; $ ) #{{{
{
  my ( $level, $message, $quork ) = @_;
  .............
  .............
  .............
  return "true";
} #}}}

AutoHotkey scripts

BASH scripts