CodingForOOo4Kids

Introduction
OOo4Kids is based on OpenOffice.org source code, from OOO300_m1x Master Workspace.

This means when you write code for OOo4Kids, you learn how to write code for OpenOffice.org. In other terms, you progressively learn how to contribute to OpenOffice.org directly : OOo4Kids has been thought to attract OpenOffice.org developers, without disturb the OpenOffice.org process.

Methodology
For the one interested in helping us, below are some rules, considered as bases for a good cooperative work. Everybody is elcome to improve them, and add information.

Communication :


 * english is the common language, but do not forget that a lot of us are not native speakers;
 * please do not use private mails, but prefer use the list
 * don't hesitate to ask us online, on IRC (channel is #ooo4Kids, server is irc.freenode.net ) ;
 * when something goes wrong : ask on the list

About methodology (some keys) :


 * work regularly is always extremely important
 * if you don't understand something, don't give up, but ask, and organize how to retrieve the information.
 * we ask the documentation being written in the same time as the code is written.
 * write what you do, do what you wrote, and improve it ;
 * notice what works and what does not. Both are important at the end, to avoid redo the same mistakes over and over;
 * keep logs, and everything obvious : later, this might be problematic to retrieve some values ( true 3 days after, or more ... ) ;
 * to notice everything important, use good tools like a text files, and this wiki (always extremely helpfull for the other)
 * write information that people will be able to understand easely, and reuse easely too (don't forget that "obvious", is relative)
 * no hurry : sometimes, nothing works. That's life. Just notice everything you did, and retry later (most of the time, the problem stands between the chair and the keyboard) ;
 * when you start a task, verify nobody is already working on it, and think to *not redo* the same thing twice. Just finish everything properly.
 * separate the "what" and the "why" in your analysis ;
 * organize your work : a timeline, Gantt diagram, containing the timeline you proposed is a very good starting point -> on the wiki mentionned above ;
 * explain what you do, add references in the code. On the wiki, describe with right sentences, containing one subject, one verb ... and everything to avoid misunderstanding ;

Build
OOo4Kids uses upstreamsource code, from OOO320_m1x, but exists as a distribution in ooo-build repository. Both are equivalent, and it is up to you to build the oe you prefer.

Build simplification
OpenOffice.org is a framework, and the normal build uses ~170 modules. Since we do not need to build nor package everything, we won't build them all.

As first approach, it was decided to not include Base, nor Java in OOo4Kids. IMPORTANT : we have nothing at all against Java, but use Java on old machines like Celeron 500 MHz + 128 MB or RAM is not an option.

The main idea is to provide a lighter archive (around 100MB, current is between 101 on Linux Intel and 114 on Mac OS X), with less of features, because children from 7 to 12 do not need them (like most of adults too ;) )

For the current milestone, we do modifications in ~70 modules (over 170 the tree counts) to create OOo4Kids. And the changes aThis is enough to understand very finely the OpenOffice.org build process,

Other pedagogical interests:


 * modify/add/remove a dialog box needs a fine understanding of the local, but not only code
 * modify call when code is removed needs to have a deep understanding of OpenOffice.org source code
 * add a feature without break everything, needs a good understanding of the local code
 * and so on ...

All of that makes a great interest

Improvements (code relative to)

 * Speed (performance improvements)
 * Reduced archive size (packaging)
 * Lighter toolbars (UX, usability)
 * More children compliant colors palette (UX, usability)

Methodology in debug using gdb

 * rebuild including symbols
 * replace the previous binaries
 * launch the OOo4Kids including symbols with gdb
 * set a breakpoint
 * at a given line in a given file
 * in a given method
 * conditionnaly
 * trace line per line
 * set a value
 * set a command
 * how to trace in fullscreen ?
 * where add symbols ?
 * what cannot be traced

Methodology in profiling (using katchgrind, valgrind and co)

 * dedicated page : Profiling under Katchgrind and valgrind

Links
Soon