New Staff Checklist

De Stoq Wiki
Revisão de 18h51min de 24 de janeiro de 2012 por Johan Dahlin (Discussão | contribs)

(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

This is a checklist that a developer of the Stoq project needs to know to be able to get things done. You don't need to do it in a specific order, it's just a list of things we except you to know.

Development tools

To be able to participate in Stoq you need to have a good understanding of the tools and utilities we use here. We use the Unix Shell extensively and it's therefor a strict requirement that you are proficient in it.


The Shell is the core of the unix interface. It's very powerful and allows you to work very efficiently at Async.


  • Use man to get information about a specific command
  • Use cat/less/tail/head to view files or part of files, interactively or non-interactively.
  • Use grep to locate classes, file references and variables in the source code tree.
  • Use diff to produce unified format patches.
  • Use patch to apply patches over the source tree.
  • Use find, xargs and grep to locate classes, file references and variables in a specific subset of files in the source code tree.


You can chose the editor of your choice. We recommend vi or emacs. gedit and wingide are perfectly fine alternatives, but we have little experience using them.


  • Open a file and read the source code
  • Modify the file and save the contents
  • Search for a variable, class or function call
  • Go to a line number
  • Go to the beginning and end of the file
  • Move blocks of code around (copy/paste)
  • Jump to a class definition (using tags)


We use glade to develop interfaces. There are some tutorials available:

Creating a GUI Using PyGTK and Glade is good. You can find a few more tutorial on the Articles page on PyGTK's homepage.


  • Modifying an interface
  • Changing the data-type or model-attribute of kiwi widgets and understanding how the changes affects the application.



  • Searching for a class and locating the methods, properties etc
  • Browsing all available classes in a specific library.

Software development process


Read and understand the third chapter of the SVN Book.

Understand and query information from the web frontend.

Pay special attention to the Basic Work Cycle.


Most of the basics can be found on a separate page called Bugzilla.


  • File a bug
  • Attach a patch
  • Ask for review
  • Searching for duplicates


Our buildbot is located at [6].


  • Checking the status of buildbot after a checkin
  • Reading a buildbot failure log
  • Restarting a build in case something goes wrong



  • Running the tests before sending patches
  • Writing tests which exercises the changes being made



Official tutorial

Portuguese tutorial


  • Using the python console
  • Simple Arithmetic (+-*/)
    • addition
    • subtraction
    • multiplication
    • division
  • introspection using dir()
  • Reading tracebacks
    • filename
    • module
    • line number
    • source code
  • Data types: int, float, str, tuple, list, dict
    • float, int: adding/converting from float/string
    • str: concat, substring search, lower/upper
    • tuple: create,iteration,combine
    • list: create,insert,remove,iterate,combine
    • dict: create {},create dict,insert,remove,iterate key/value,merge
  • Slicing
    • [x]
    • [x:y]
  • Basic OOP: class, instance, methods
    • constructor
    • instance method
    • methods, classmethod, staticmethod
    • subclass, baseclass
  • Object Oriented paradigms: Inheritance, Composition.


Homepage Tutorial


  • Be able to identify code which is using pygtk
  • Find the documentation/reference for a class/method or function
  • Main loop concept
  • Understand the Gtk+ boxing model (add/pack_start)
  • Event handling
  • Window/Dialog modality




  • Basic understanding of a delegate, how it's created from a glade file, how the namespace is populated and how signals are connected.
  • How the proxy updates the model
  • Kiwi widgets: data-type and model-attribute and their relation to the proxy/model

SQL / SQLObject

There's a good SQLObject guide in the Canonical wiki.

The SQLObject documentation is somewhat limited, but still helpful.


  • Being able to modify the schema
  • Examine the current state of SQL using psql
  • Creating new databases using createdb and dropping existing ones using dropdb.
  • Looking up SQL syntax in the Postgres reference manual.
  • select/selectBy/selectOne/selectOneBy



  • Use StoqBinDebug to query & manipulate objects
  • Components/Facets [7] [8]
  • iselect and friends.
  • Persistent classes (eg domain) versus non-persistent (everything else)
  • Parameters and what role they have in the system
  • Being able to run the tests and understand the output and finding the code that breaks.