Project: rmtoo
Code Location: git://rmtoo.git.sourceforge.net/gitroot/rmtoo/rmtoomaster
Browse
/
Download File
Readme-Hacking.txt
This file is not completed now - any might be in future.

* Development Environment

** Tools

*** Mandatory
    There are some mandatory tools to do development for rmtoo:
    Debian 6: $ apt-get install make graphviz texlive-latex-extra

** Eclipse
   For development of the source code, eclipse is used.
   This has some advantages about the emacs / vi approach - especially
   automated style and lint checking.

*** OpenJDK
    Install the openjdk to use for eclipse - only JRE is needed.
    Debian 6: $ apt-get install openjdk-6-jre

*** Eclipse
    Goto http://www.eclipse.org/ and install latest version.
    Be sure to use the non Java, non C++ version.

*** PyDev
    Goto http://pydev.org and install the latest version.

*** PyLint
    Install pylint
    Debian 6: $ apt-get install pylint
    In Eclipse goto: Preferences -> PyDev -> PyLint and enable pylint.

*** PyUnit
    In Eclipse goto: Preferences -> PyUnit and choose Nose Test runner.

* Ideas

** Use python iterator / self made iterator for GenericTreeModel
   There was an attempt to use the GenericTreeModel: use the object
   data structure which is already implemented and use this (by some
   glue - iterator objects) as a GenericTreeModel.
   The result was: 
   o Impossible to use the available standard iterators from the 
     different containeers.
   o too complicated (need a own class at each level)
   o introduced what should be avoided:
     during creating the iterator, some container must be created
     which is a copy (at least of references) to the real objects.
     This is one thing which should be avoided choosing this kind of
     implementation: that two or more containers must be held in
     sync. 

   Because of this, the 'standard' TreeView is used - with some
   utility functions to access the values and synchronize data.

* Testing

** Comparing XML
   There are many files containing XML data.  These files are either
   generated directly inside the rmtoo's output module or with the
   help of an external library.

*** History
    For some time (until version 19) an external library was used to
    compare XML files.  This library called xmldiff has a major
    drawback: because it tries to generate the diff (what is much more
    than really needed) it is very time consuming for bigger files.  
    
    The manual page of xmldiff notes that you can typically diff
    documents with about 100 nodes with the help of this library.

    Because the runtime of the comparison which was about 20 minutes
    for some bigger document xmldiff was dropped and an own
    function for comparing XML documents was established.

*** Directly Generated Files
    Directly generated files are generated with the help of an output
    module directly.  In this case a simple compare should be enough.
    It is defined that not only the (sub-) nodes should be equal but
    also the order in which they appear.

*** External Libraries
    For some outputs external libraries are used.

**** odfpy-svn20100810
     This is the currently used version.  This is the latest known
     working version which works with OpenOffice using the automatic
     generated odf documents.
     The problem with this library is, that the order of (sub-)nodes
     is arbitrary and even some (intermediate) nodes can be named
     different when using another computer.
     Therefore it is mostly not possible to do a simple xml comparison
     to check if documents are equal.

**** odfpy-0.9.3
     This version does not support creating ODF files which are
     generated by OpenOffice 3.2 (which is somewhat strange).

*** Current 'solution'
    Because of the problems comparing automated created XML documents,
    the check is only done for the directly generated files.


Local Variables:
mode:outline
End: