Education ClassRoom/Previous Logs/Introduction

From Apache OpenOffice Wiki
Jump to: navigation, search

[11:03] ericb2 The principle is : I expose the points, without people talk

[11:03] ericb2 to avoid spare time

[11:03] ericb2 once the first part is finished, questions are welcome

[11:04] ericb2 in the middle of several points, I'll propose to practice by yourself

[11:04] * sandeep (n=sandeep@ has joined

[11:04] ericb2 and the channel is the right place to discuss *afterwards* about those exercices

[11:04] ericb2 Let's go :)

[11:04] ericb2 For any newcomer, interested to contribute, the number of questions, the right order to ask them is different, and there is no magic method nor solution, to teach that.

[11:05] ericb2 Worst, a lot of time is needed before the autonomy arrives. Don't give up, and be patient.

[11:05] ericb2 What we propose is a mix of both courses and -sort of- personal support.

[11:05] ericb2 Of course, things are not perfect, and there is certainly a better way to do that. But let's try first, and then improve with you !

[11:05] ericb2 The Rule is: wait for the end of the "course ", before to ask questions. thanks :-) ... but *ask* (a lot of) questions, when that's the moment ( yes please do !! )

[11:06] ericb2 Important: if ever we don't have the answer (can occur), we'll notice the question, and provide you what we found later.

[11:06] ericb2 This course alone does not make sense: attendees must practice, and search by themselves (I tried to prepare some exercices for the courageous one ).

[11:06] ericb2 If ever people who searched don't find the answer to their problems, then they must ask on (e.g.) IRC channel. We'll help them with pleasure !

[11:06] ericb2 Disclaimer: only vanilla source code will be described here

[11:07] ericb2 About the Community "behaviour"

[11:07] ericb2 This course aims to share the knowledge, and create a community of people helping together. Now, if you think you can propose a ClassRoom, because you have some skill, please do !! ( contact me). I'll be glad if ever I can share everything I have learned since I contribute to the project.

[11:07] ericb2 Don't forget that be regular and serious is a key for success

[11:07] ericb2 Last but not least, we need contributors and people involved, because there is always a lot to do.

[11:08] ericb2 A) Short description of the Project

[11:08] ericb2 Shortly: the name means both the software and the organisation.

[11:08] * valeuf_ ( has joined

[11:08] ericb2 For the history, please read the website, or wikipedia, everything is written ten times already :)

[11:08] ericb2 For us, everything is project in, and everything is a framework.

[11:08] ericb2 About Projects, there are :

[11:08] ericb2 - Accepted projects

[11:09] ericb2

[11:09] ericb2 - Native Lang Community Projects :

[11:09] ericb2

[11:09] ericb2 - Incubator Projects : i.e. Education Project. ( US !! )

[11:09] ericb2 Fortunaly, everything can be summarized in two links :

[11:10] ericb2 -

[11:10] * Remaille ( has joined

[11:10] * ChanServ gives channel operator status to Remaille

[11:10] ericb2 -

[11:10] Remaille hi

[11:11] ericb2 Nobody else than you can do it for you : visit these links, be curious and discover

[11:11] ericb2 Find more information / Practice by yourself in 8 questions
1) Create your login on the wiki
2) Find the web page for your own locale in project ( e.g. )
3) find the Coding Guidelines on the Wiki ( and read it ... )
4) find the page about cws ( Child Workspace )
5) become member of Education Project, using the Education Project wiki page :
6) find mailing list archive
7) subscribe to mailing list if you didn't yet
8) extract mails 10 to 14 from any mailing list
Note: everything has to be done outside of the ClassRoom
not now :)

[11:12] ericb2 Open Question : what about create a FAQ on the wiki, somewhere in Education Project ?

[11:12] ericb2 1) Discover the Developer World

[11:12] ericb2 Composed of tools, methods and resources

[11:12] ericb2 The tools are : IssueZilla, EIS, cvs , LXR, vi, emacs , Xcode , ..etc

[11:13] ericb2 Resources are mostly IssueZilla , mailing lists archives, coding guidelines .. and the source code !

[11:14] ericb2 Methods are e.g. QA related ( out o scope today)

[11:14] ericb2 the tools first :

[11:14] ericb2 1.1) Check the code: cvs ( there is work in progress for another tool )

[11:14] ericb2 with it, you can modify the code, create your patches, commit: cvs , diff and patch

[11:15] ericb2 to check for changes in the code: bonsai is a powerfull tool

[11:15] ericb2 Practice bonsai by yourself :
[11:16] ericb2 We'll try to do a request :)
[11:16] ericb2 2) Don't modify Module (must be All files in the repository ) Remark : note the name "repository "
[11:16] ericb2 3) In the Field "Branch" replace HEAD with cws_dev300_aquavcl07
[11:16] ericb2 4) in the field "Date" check "Since the beginning of time "
[11:16] ericb2 5) do not modify the other fields
[11:16] ericb2 6) Click "Run Query"
[11:17] ericb2 => all the changes in the code, based on DEV300_m9 ( we'll explain later) are on the page !!
[11:17] ericb2 7) To see the diff for any commit, click in the Rev. columns. Back to retrieve the current page.
[11:17] ericb2 Strongly adviced : 8) Look carefully at other changes, what information you can obtain here.
[11:17] ericb2 Remark: Bonsai helps when you are searching for changes in the code, author date .. precise information about CODE

[11:18] ericb2 Vincent Vikram wrote several questions, and I'll try to provide tracks ..

[11:18] ericb2 2) Where is the code ?

[11:19] ericb2 Answer : hosted by machines, we'll call " cvs repository" No need to know more about the machines

[11:19] ericb2 2.1) cvs

[11:19] ericb2 cvs uses a "repository". has an anonymous ( means read only ) repository.

[11:19] ericb2 You can checkout any code you want very easely.

[11:20] ericb2 The principle is:

[11:20] ericb2 you duplicate/copy on your machine the same code the repository has. Means, for a given milestone, the code will always remain the same. Exactly 0 difference.

[11:20] ericb2 As repositories we have (for all) and tunnel (for domain developers, using ssh connexion for commits )

[11:21] ericb2 Summary:

[11:21] ericb2 - The repository does contain all versions.

[11:21] ericb2 - you copy one on your machine, for building, add new code.. whatever.

[11:21] ericb2 - At any time, you can analyse the difference , for a given milestone, between your copy, and the one on the repository ( gussing your internet connexion is not broken)

[11:22] ericb2 - Tools are : cvs + diff . theywill help you to create the delta, and the last tool is patch, to apply / reverse the patch you created

[11:22] ericb2 2.2) Some Vocable :

[11:22] ericb2 Master Work space: gives a version of

[11:22] ericb2 e.g. : SRC680 == 2.x source code , DEV300 == 3.x source code

[11:23] ericb2 -> Between two different consecutive Master workspaces, we accumulate Milestones.

[11:23] ericb2 For example: Master workspace DEV300_m0 is based on SRC680_m248 (end of life for 2.x )

[11:23] ericb2 A Milestone itself contains several child workspaces.

[11:23] ericb2 a Child Workspace is a change in the code, dedicated to a new feature or a bugfix, and synchronized with a given milestone

[11:24] ericb2 a Child Workspace can involve several modules

[11:24] ericb2 2.3) Practice by yourself :
[11:24] ericb2 Preliminary:
[11:24] ericb2 - we suppose you have some bash knowledge, and some programming skills
[11:24] ericb2 - your .cvsrc file is ok (else ask on )
[11:24] ericb2 Now, open a terminal, use bash, and do :
[11:24] ericb2 0 ) create the environment
[11:25] ericb2 what follows are command lines
[11:25] ericb2 export CVSROOT=""
[11:25] ericb2 create TMP dir (command: mkdir TMP )
[11:25] ericb2 cd TMP
[11:25] ericb2 1) checkout vcl module from DEV300_m11
[11:25] ericb2 cvs co -r DEV300_m11 dtrans
[11:25] ericb2 Question: what happens
[11:26] ericb2 2) Modify one file, do "cvs up" , and comment on the result
[11:26] ericb2 3) using grep , retrieve the name of the milestone in the sources
[11:26] ericb2 4) checkout vcl from a cws under development
[11:26] ericb2 cvs -z4 co -r cws_dev300_aquavcl07 vcl
[11:26] ericb2 5) retrieve the cwsname in the sources
[11:26] ericb2 6) analyse the list of the subdirectories vcl contains
[11:26] ericb2 7) modify the code in vcl/source/gdi/sallayout.cxx
[11:27] ericb2 (write whatever you want, respecting C++ syntax prefered ;)
[11:27] ericb2 8) create a diff with the repository
[11:27] ericb2 change directory outside of vcl
[11:27] ericb2 in the current dir ( TMP ) , do :
[11:27] ericb2 cvs diff -u vcl > my_pretty_patch.diff
[11:27] ericb2 9) What does contain the patch ?
[11:27] ericb2 10) How reverse your changes ?
[11:28] ericb2 11) Be sure you have enough place on your hard disk ( count 2GB )
[11:28] ericb2 Download all tree :
[11:28] ericb2 mkdir DEV300_m11
[11:28] ericb2 cd DEV300_m11
[11:28] ericb2 cvs -4 co -r DEV300_m11 OpenOffice3 swext tomcat apache-commons
[11:28] ericb2 ( -z4 is optional )
[11:28] ericb2 -> once done ( can be very long), and if no error occurs, you got all source code from DEV300_m11 Milestone !!

[11:29] ericb2 3) I got the code... now where do I start in the code?

[11:29] ericb2 is a framework, means everything, including tools is included in the tree.

[11:29] ericb2 More information:

[11:29] ericb2 Approximativaly 160 modules ( means subdir) do constitute your tree.

[11:29] ericb2 -> everything has it's role, and an outdated description is given at the URL :

[11:29] ericb2 As you can see, there is an associated project for every module. Means, when you have questions about this or another module,

you'll have to send a mail to the correspondig mailing list.

[11:29] ericb2 Or at least, read the archives first cannot be bad :)

[11:30] ericb2 Important modules are:

[11:30] ericb2 - config_office contains everything for configure command line. -> the Makefile corresponding to your tree is created from config_office.

[11:30] ericb2 - solenv does contain a lot of environment variables, means for the build process

[11:30] ericb2 - dmake is the make-like tool used for the build

[11:30] ericb2 - in every module, an output directory is created during the build (binaries, incudes, .jar .. whatever )

[11:30] ericb2 - for every module, the content of the output directory is send in the solver, following rules

[11:31] ericb2 One link to be added in your list :

[11:31] ericb2 4) The build process, first part

[11:31] ericb2 4.1) build.lst and d.lst

[11:32] ericb2 In every module, you'll find a " prj " direectory containing build.lst and d.lst files . The first line of build.lst gives the prerequisites: the current module can be built if and only if the one listed in build.lst ( first line) are built.

[11:32] ericb2 For d.lst: at the end of the build for every module, the files listed are copied from the output tree ( the one in the current module) into the solver, sort of collection of all products built at the end of the process.

[11:32] ericb2 4.2) Dependencies

[11:32] ericb2 Because of the dependencies mentionned in build.lst, everything cannot be built in same time: first tools are built ( e.g. dmake, doing ./bootstrap )

[11:33] ericb2 The common order (solution is not uniq ! ) is:

[11:33] ericb2 - low level modules are built first

[11:33] ericb2 - then the second level one ( depending on the first listed above)

[11:33] ericb2 - .. until the most on top , like the final sw, sc, sd .libs depending on everything

[11:33] ericb2 - at the end, all the products delivered by every module in the solver , are used to create the final package in instsetoo_native

[11:33] * lgodard has quit ("Leaving.")

[11:33] ericb2 Summary:

[11:33] ericb2 - checkout all the sources

[11:33] ericb2 - run configure with the right options

[11:34] ericb2 - do ./bootstrap from the root dir, to create dmake

[11:34] ericb2 - build everything (to be explained later) following the right order.

[11:34] ericb2

[11:34] ericb2 Practice by yourself
[11:34] ericb2 1) try to create a txt file ( using bash e.g.) containing all the information to create your own dependency diagram
[11:34] ericb2 Tip: extract the first line of prj/build.lst for every module using bash , grep ..whatever
[11:34] * valeuf_ has quit (Read error: 110 (Connection timed out))
[11:34] ericb2 2) try to describe the content of a "common" module ( what do we alwayd fin in all ? )
[11:34] ericb2 3) look at the syntax, and compare with make syntax (if you know it already)
[11:34] ericb2 4) look at dmake man page (inside the dmake module), and study the dmake options
[11:35] ericb2 5) study perl script located in solenv/bin/

[11:35] ericb2 Sorry for being so long. Yes ~15 lines and questions will start

[11:35] ericb2 5) What d I need to know in advance

[11:35] ericb2 is written in 90% C++ , <5% of C, objectiveC / C++ and Java .. bash , python

[11:35] ericb2 -> C++ and bash skills is a good prerequisite

[11:35] ericb2 The C++ used in is academic C++ : e.g. for portability reasons, in vcl, there is a core lib, sort of collection of empty boxes, containing the real implementation, built only for the current building system.

[11:36] ericb2 stl and templates are used, gcc , and g++ skill cannot be bad either.

[11:36] ericb2 Know well coding Guidelines

[11:36] ericb2 That's all for the first time. Next time (when possible) : configure, and build, rebuild one module only , and debug it

[11:36] ericb2 Questions ?  :-)

[11:38] ericb2 nobody has questions ?

[11:38] ericb2 chacha_chaudhry: ?

[11:38] chacha_chaudhry yes

[11:38] chacha_chaudhry ChanServ ChaoticGood

[11:38] ericb2 chacha_chaudhry: go ahead :)

[11:39] >Remaille< bonjour :)

[11:39] chacha_chaudhry Developers guide is also important, I suppose

[11:39] chacha_chaudhry ChanServ ChaoticGood

[11:39] ericb2 chacha_chaudhry: yes, sure

[11:40] ericb2 chacha_chaudhry: everything I mentionned is my experience, since 4 years contributing for the Project

[11:40] ericb2 5 years soon ..

[11:40] chacha_chaudhry ericb2: :)

[11:41] ericb2 chacha_chaudhry: did you already all the exercices I proposed ? Will you try them ?

[11:41] chacha_chaudhry ericb2: cehcking out code

[11:41] chacha_chaudhry ericb2: I have a slow connection -- doing it now

[11:41] sandeep where can i find help on bash?

[11:42] ericb2 sandeep: here

[11:42] ericb2 sandeep: what is your problem ?

[11:42] chacha_chaudhry sandeep: what kind of help?

[11:43] sandeep i am a layman in programming and wish to learn about developing and debuging. where should i start from?

[11:43] * stx12 (n=st@nat/sun/x-c96e4329c2e8c890) has joined

[11:44] ericb2 sandeep: I think the good first exercice to do is to build

[11:44] ericb2 sandeep: and once done, discover some modules

[11:44] chacha_chaudhry ericb2: I don't undestand the relation between milestones and Child Workspaces ..

[11:44] ericb2 chacha_chaudhry: let me retrive a link

[11:44] chacha_chaudhry ericb2: sure

[11:45] ericb2 chacha_chaudhry: can you connect to :

[11:45] chacha_chaudhry ericb2: yes

[11:45] ericb2 chacha_chaudhry: use the link automatic guest

[11:45] ericb2

[11:46] ericb2 then click on child workspaces

[11:47] ericb2 chacha_chaudhry: if everything is fine, you'll have list on left -> click on " Browse "

[11:47] ericb2 chacha_chaudhry: then " per Milestone "

[11:47] chacha_chaudhry yes ....doing ..

[11:48] ericb2 chacha_chaudhry: once you clicked on "per Milestone ", tell me what you see

[11:49] chacha_chaudhry I get some folders these must be Master Workspaces , or I am wrong ?

[11:49] ericb2 chacha_chaudhry: exact ! Then click on the DEV300 triangle

[11:50] chacha_chaudhry ericb2: yes m1 .... m12

[11:50] ericb2 chacha_chaudhry: you see all milestones

[11:50] chacha_chaudhry ericb2: yes

[11:50] ericb2 chacha_chaudhry: now, click on say, m11

[11:50] ericb2 (the triangle)

[11:51] chacha_chaudhry yes done So these are child workspaces

[11:51] ericb2 chacha_chaudhry: yes. And you can even do more : click on one of them

[11:51] ericb2 chacha_chaudhry: say the first one : ab49

[11:51] chacha_chaudhry done

[11:51] ericb2 chacha_chaudhry: what happens ?

[11:52] chacha_chaudhry ericb2: displays --> Data for child workspace DEV300/ab49 in box

[11:52] ericb2 chacha_chaudhry: exact, and this information is extremely helpfull for developers

[11:52] chacha_chaudhry ericb2: :)

[11:53] ericb2 chacha_chaudhry: as you probably understood, EIS is for the source code scheduling,

[11:53] ericb2 and between two milestones, we add child workspaces

[11:53] sandeep i still can't figure it out, how does this info helps?

[11:53] chacha_chaudhry ericb2: yes

[11:54] ericb2 sandeep: when you write code, you need to create changes based on a well defined reference -> a milestone

[11:54] sandeep ericb2: i still can't figure it out, how does this info helps?

[11:54] sandeep ok

[11:54] sandeep then?

[11:54] ericb2 sandeep: source code is a continuous

[11:55] ericb2 sandeep: you need time to write your code, and integrate it in the source

[11:55] ericb2 sandeep: this is a process

[11:55] ericb2 sandeep: you cannot ignore what other devs do when you write code

[11:55] sandeep ok

[11:55] sandeep :)

[11:56] ericb2 sandeep: of course, we can isolate a milestone, work on the code, and resynchronize later

[11:56] sandeep sm|CPU stx12

[11:56] ericb2 sandeep: but maybe one dev will have modified the same file as the one you modified

[11:56] ericb2 sandeep: don't forget, a lot o people are writing code together

[11:57] ericb2 sandeep: for the beginning, you can ignore the scheduling, yes

[11:57] sandeep eicb2: yes

[11:57] ericb2 sandeep: I just tried to explain chacha_chaudhry what a milestone was

[11:57] ericb2 sandeep: what is yur programming language ?

[11:57] sandeep sm|CPU stx12

[11:57] sandeep sm|CPU stx12

[11:57] sandeep ericb2: C, C++

[11:58] ericb2 sandeep: ok. and you OS ?

[11:58] ericb2 s/you/your/

[11:58] ericb2 sandeep: Linux ?

[11:58] sandeep sm|CPU stx12

[11:58] sandeep ericb2: ubuntu

[11:58] sandeep yes

[11:58] ericb2 sandeep: ok, then the first step for you is to build

[11:58] sandeep sm|CPU stx12

[11:58] sandeep ericb2: yes

[11:59] ericb2 sandeep: once done, you can start with the modules: what is done where

[11:59] sandeep sm|CPU stx12

[11:59] ericb2 sandeep: and, for example, study sal, or whatever module, depending on the questions you have, and what you want to do

[11:59] ericb2 sandeep: for tracing, this is easy : gdb works fine

[12:00] ericb2 sandeep: excepted in some cases, but for what you want to do, that's really enough

[12:00] ericb2 sandeep: e.g you can try as starting point 1) to build a Linux version 2) understand what happens when you launch 3) trace it to verify

[12:01] ericb2 sandeep: if you will only concentrate on C++ , help us for starmath baseline implementation is great

[12:01] ericb2 sandeep: and you'll be welcome

[12:02] sandeep ericb2: what is starmath baseline implementation?

[12:02] ericb2 sandeep: issue 972

[12:02] IZBot Formula editor ENHANCEMENT STARTED P3 Alignment of baselines of formula and text in writer

[12:02] ericb2 sandeep: IZBot is great ;-)

[12:03] chacha_chaudhry :)

[12:03] sandeep ericb2: k, i'll try it out after the discussion. :)

[12:03] ericb2 sandeep: and read :

[12:03] ericb2 sandeep: exactly

[12:04] ericb2 sandeep: other applications are proposed, and volunteers are warmly welcome

[12:05] sandeep ericb2: i'm just learning java, and have basic programming knowledge about c/C++. don't know whether i'll be of much help or not

[12:05] sandeep but i'll try :)

[12:05] ericb2 sandeep: maybe yo can contact cbosdonnat

[12:05] ericb2 sandeep: he proposed something more Java oriented. Don't fear to ask him

[12:06] ericb2 sandeep: skeletonmaker_tool_templatable_.28click_me.29

[12:06] sandeep ericb2: where wud he be, on irc?

[12:06] ericb2 sandeep: do you see the list of people on the channel ?

[12:07] sandeep yes , i c him.

[12:07] ericb2 sandeep: else cedricbosdo should work if you want further information

[12:07] cbosdonnat sandeep: Hi

[12:08] * chacha_chaudhry still waiting for checkout to complete :P

[12:08] ericb2 sandeep: what I suggest you: join education project (as member) and join mailing list

[12:08] sandeep cbosdonnat: hi i'm learning java. n e thing dat u cud sugest

[12:08] cbosdonnat ericb2: what I proposed on the uno-skeletonmaker is mainly C++ coding

[12:08] ericb2 sandeep: then, don't fear to ask questions

[12:09] ericb2 cbosdonnat: ah, sorry

[12:09] ericb2 sandeep: then ask Juergen Schmitdt

[12:09] sandeep cbosdonnat: i have sum basic knowledge bout c++.

[12:09] ericb2 sandeep: sorry, I'm not Java skilled  ;-)

[12:10] cbosdonnat sandeep: Where would you like to help ?

[12:11] sandeep cbosdonnat: not sure. i hv nvr done nething like this b4. always hv been doin the dummy programs at school n colege?

[12:11] cbosdonnat sandeep: If you don't fear handling OOo Java extensions build, I could propose you to continue the work I've started on a Maven plugin

[12:11] sandeep cbosdonnat: where can i get info on dat?

[12:12] ericb2 @all :this is lunch time here, and if you have questions, I'll be back in ~1 hour 15

[12:12] sandeep cbosdonnat: wat wud b d purpose of dis pluggin?

[12:12] ericb2 thanks a lot, and see you later

[12:12] sandeep ericb2: thnx a lot :)

Personal tools