GSoC2011

= Google Summer of Code 2011 =

Welcome Students
First of all, many thanks for being interested in spending your summer to code with us! Here are some useful informations to start building, studying and improving OOo4Kids or OooLight with us !

As you can see, this page is a  hub  for new participants to this project, more precisely, the one applying for Google Summer of Code 2011. It contain pointers, which enables newcomers to find information quickly.

Be aware of the fact that this page doesn't mention everything, so please use the links to external content.

Ideas for Google Summer of Code 2011
The goal is to improve the performance of OOo4Kids at launchtime. Current values are 13 seconds (cold launch), 4s max (second launch) on a BeagleBoard xM (800 MHz, and 512 MB or ram). Expected : 8 seconds (cold launch), 2s max (second launch). The projects will concern, study, analyze, simplify, test and improve the launch time
 * Subject 1 : Work on performances issues with OOo4Kids on ARM machines (prefered, but not mandatory)

Required skills/knowledge C, C++, gdb and ARM assembler (beginner accepted), work regularly. Difficulty Task divided in several parts, from Easy to difficult. Contact ericb at ooo4kids dot org

The goal : implement the New Writer Wizard, based on the Impress one, but simplified.
 * Subject 2 : Implement the new Writer wizard

Required skills/knowledge C++, gdb, a good organization, work regularly Difficulty Task divided in several parts, from Easy to difficult. Contact ericb at ooo4kids dot org

Preparing a good application
This year we are requiring the applying students to do some little exercise. This will help you to get started in the OOo4Kids or OOoLight code, and will help finding out the best of two almost identical project submissions.

Feel free to ask us online.

=> Will be updated soon

In order to have the best application ever produced you should work hard on the following points:


 * Complete the exercise. This helps us to check if you are willing to get it working and it helps you to get started with the development.
 * Expose what you plan to do on the task. Details on the UI, feature, implementation are really important as they help us to see if you have at least studied a bit the feasibility of the task. We will always prefer someone bringing some ideas of implementation even though some might not be 100% exact. You can contact the community if you have some question about the existing code to help you come up with those details: we are always pleased to guide someone through the code
 * Propose some temporary schedule for your summer. This helps us to check your progress later and to determine if your schedule sounds possible.
 * Explain why should we choose you. Don't forget that their might be several other students working on your topic: we want to choose the best one, then you need to explain why you would be the ideal candidate.

Methodology and suggestions for students and developers
What follows, is thought for students applying for Google SoC, but not only ;)

What we need is to use a better methodology, and below, some advices :

Time

 * no hurry : the timeline for SoC is well defined, so take the time to do things properly. Sometimes, nothing works. That's life. Just notice everything you did, and retry later
 * be sure you completed a task before to start another one
 * keep traces : keep every log, even obvious information : later, this might be problematic to retrieve some values
 * work regularly : note everything you do, every day

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 use the ooo-build list, and only this one for any technical question, and answer GSoC relevant from the students and the mentors point of view ;
 * be often online, on IRC #ooo4kids or #education.openoffice.org for GSoC students
 *  when something goes wrong : tell us, *asap*. Of course, everyone can do errors, and we won't eat you, because you did not understand something (maybe us too ...), and explain is sane and safe for everybody.
 * someone reading your notes, MUST understand what you did. If this is not the case, please improve the document.
 * screenshots, blog : use english preferently

Organization

 * organize your work as well identified tasks, (include parallel tasks is a good idea): a timeline, Gantt diagram, containing the timeline you proposed is a very good starting point -> on the wiki
 * when you start a task, think to avoid redo the same thing twice.
 * 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 ;
 * my experience told me, that to notice everything important, a tool like a simple text file, with an ACCURATE name (what it does + date), put in an accurate directory for backup, is far enough : simple and robust

Tools

 * describe how you did a full build, including details (evil in the details)
 * describe all operations you did starting from build with debug enabled until where you put the fat lib, including how :
 * before to start debugging : define what you want to do, and what you'd like to observe, how ...
 * when you debug : keep the history, and the results, what you did. A text file is perfect

Coding

 * separate the "what" and the "why" in your analysis
 * 80% of the time : think. 20% code (not the opposite)
 * do peer reviews as much as often
 * be open to suggestions, and do not fear to redo everything
 * warnings are errors
 * think twice the naming of your class, methods, and verify it does match with the current code
 * make it work, simplify, and improve.
 * for every method, write an unit test, to check whether the methods does its role, and ony its role
 * deliver clean diffs. See the rules on ooo-build wiki to create correct diffs

(please add your remarks, and so on ... )

Application Template
Present yourself, your previous contributions (if ever) to free and open source software, previous projects.
 * Present yourself

Present the project you'd like to work on not only its title on the ideas page, but also your own ideas for features, algorithms and UI.
 * Present your project

Any useful detail on what you intend to implement and your view on the topic is interesting us to see whether you have a solid thinking about the task. Don't forget that you can defend a personal project, including new ideas.

Planned schedule : present a rough planning, including tasks, and so on. Don't forget to include the periods you won't be available (e.g. precise your exams periods). We are not requiring something really precise that will never change: a planned schedule is often subject to changes but helps to check whether you are on-time during the summer.
 * Schedule

Example of successfull project
The links below are the result of a previous GSoC 2010 :


 * Baseline Alignment Equation (the code has been integrated into OOo4Kids, Go-Oo and reversed to OpenOffice.org since)
 * M. Spisiak diary

The student simply worked regularly, seriously. The result was excellent, and he did more than expected.

To chat with us live
Having a urgent question or need an address to send a document?

We favour IRC (Internet Relay Chat), which is an old and trustworthy tool used by most developers of Free and Open Source software. To be able to use IRC you need suitable software like mIRC, Irssi, XChat, Opera M2 or Chatzilla. Read more about how to reach us on IRC in the section Meet us

A quickstart follows below for the ones that can't wait.

To join us on IRC, enter the following settings in the software preferences:

In the server section: irc.freenode.net And in the channel section: #ooo4kids.

Reminder: this is the OOo4Kids wiki

 * A Wiki is an open and collaborative space, with the appearance of a website. Everyone can become a editor and be able to participate in its development.
 * When a person creates an account and log in, the user can change their personal page or any other pages (if the author allows editing).
 * We ask each participating student to carefully document what they do as regularly and as often as possible on their personal page.
 * To browse this wiki, click on the links and use the navigation tools in the browser, like with any other website.
 * To learn more about wiki's, go to http://www.mediawiki.org/wiki/MediaWiki

For the moment, only a English translation of this page is available, but more translations will be available when the development is extended further. This crucial work are currently being done on a voluntary basis by active translators.

Other usefull local links
The links below are here to help you discovering the tools we use, the OOo4Kids and OOoLight code, and more. It has been written by all peopel who participated to the wiki, and we hope it will help you.


 * ClassRooms (work in progress)

Pages including code, features description and so on : 


 * Password protected preferences feature
 * Toolbars and user level
 * Calc Functions list

EducOOo proposal

 * 1. Describe your organization.

EducOOo is a non-profit association which is connected to the project OpenOffice.org Education. It serves as resource and consists in facilitating the implementation and the accompaniment of projects between OpenOffice.org and the world of the Education. E.g, when students write good code, this one is proposed for backport in OpenOffice.org, but we propose a lot of other things.


 * 2. Why is your organization applying to participate in Google Summer of Code 2011? What do you hope to gain by participating?

One of the most important goals is to experiment and have Fun with students. Since several years, we explore new ideas, and EducOOo has a good experience with schools (see http://wiki.ooo4kids.org/index.php/WelcomeStudents ), including pedagogy, based on partial tasks (from easy to difficult), to be sure the student will succeed for at least one task. On the other side, GSoC students are very good, and motivated. Mix these ingredients leads to great work.

The result will be shared : this is our goal.


 * 3. Did your organization participate in past Google Summer of Codes? If so, please summarize your involvement and the successes and challenges of your participation.

EducOOo did not, but the main EducOOo developer (Eric Bachard) did for OpenOffice.org (2006, 2007) and Go-oo (2010). He was three times mentor for Google summer of code. This is an important point, that the students will appreciate


 * 4. If your organization has not previously participated in Google Summer of Code, have you applied in the past? If so, for what year(s)?

First time EducOOo applies for itself. Last year we shared the slots with Go-Oo.


 * 5. What license(s) does your project use?

Both software OOo4Kids and OOoLight are supplied under License LGPL V3


 * 6. What is the URL for your Ideas page?

We use a wiki to put all the necessary information for the development and the tests of one or several software. The page is localized in several languages (work in progress), and we try to respect the demands.

When somebody would like to change something, we recommand him to first propose this change on our mailing list. Once the idea is accepted, then add information, and describe (when possible) the needs on our "ideas and suggestions" wiki page. The current page we use is : http://wiki.ooo4kids.org/index.php/IdeasAndSuggestions

After a given time (e.g. one week), people agree on the feature, the developer validates the request, and implements a solution, for testing purpose. If confirmed, the feature will be definitely integrated.


 * 7. What is the main development mailing list for your organization?

We use the following address for developers: dev@listes.educoo.org


 * 8. What is the main IRC channel for your organization?

We use 2 channels IRC on freenode: #ooo4kids ( English-speaking channel) and #educooo ( French-speaking channel)


 * 9. Does your organization have an application template you would like to see students use? If so, please provide it now.

EducOOo is used to welcome students.

For GSoC, there is this page:

Another page was specially conceived for the new students wishing to begin a training course with EducOO.org. Http://wiki.ooo4kids.org/index.php/WelcomeStudents


 * 10. Who will be your backup organization administrator?

Eric Bachard - Developer is the main administrator. Sylvain DENIS is the administrator of help


 * 11. What criteria did you use to select these individuals as mentors? Please be as specific as possible.

Eric Bachard is OpenOffice.org developer, and developer for several years. He is also a founder member of the association EducOO.org. He develops to the everyday life for OOo4Kids and OOoLight.

Sylvain DENIS is responsible training course EducOO.org and the administrative role is important because he allows of relieve the work of developers.


 * 12. What is your plan for dealing with disappearing students?

Students disappearing is often the result of a bad selection process. We believe that the best plan for dealing with disappearing students, is to select them better, because good students never have problems. Our process will include exercices with code, to detect the better candidate for a given proposed project.


 * 13. What is your plan for dealing with disappearing mentors?

We got one only, but experimented mentor, and there is no reason to see him disappear. Anyway, the work is already scheduled, and other devs will be able to help, and replace, just in case.


 * 14. What steps will you take to encourage students to interact with your project's community before, during and after the program?

As pre-requisite, we ask the interested students to join our IRC channel, regularly, discuss with us. The EducOOo members are used to welcome students, and other students are always present on the channel, what helps a lot.

Most of the time, the students ask to start something, and we progressively propose them easy tasks, and During the To avoid problems, we try to prepare the task before the students start, and w

If interested, we'll start something with them, and


 * 15. What will you do to ensure that your accepted students stick with the project after Google Summer of Code concludes?

We do our best to integrate them as well as possible, and to explain them they are important and usefull.

Another thing we do, is to provide them as much of autonomy as possible.

All the students we trained are able to experiment alone, and have enough of autonomy to imagine something from their own.

We have no other recipe.

Usefull links (previous GSoC) :

http://wiki.ooo4kids.org/index.php/ImproveMathEquationEditor