<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KaiB</id>
	<title>Apache OpenOffice Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KaiB"/>
	<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/wiki/Special:Contributions/KaiB"/>
	<updated>2026-10-08T06:43:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Cpp_Coding_Standards/HEADERS&amp;diff=22167</id>
		<title>Cpp Coding Standards/HEADERS</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Cpp_Coding_Standards/HEADERS&amp;diff=22167"/>
		<updated>2006-12-15T16:33:42Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Internal Include Guards &amp;lt;span id=&amp;quot;IncGuards&amp;quot;&amp;gt;(IncGuards)&amp;lt;/span&amp;gt; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic-Id: &amp;#039;&amp;#039;&amp;#039;HEADERS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
What to do or do not with header files.&lt;br /&gt;
----&lt;br /&gt;
=== Summary ===&lt;br /&gt;
&lt;br /&gt;
==== Self Sufficient and Minimal &amp;lt;span id=&amp;quot;Self&amp;quot;&amp;gt;(Self)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
When included a header file should be self sufficient and minimal.&lt;br /&gt;
* Include definitions for superclasses and data members&lt;br /&gt;
* Create forward declarations for everything else&lt;br /&gt;
* Include the definition as late as possible, this helps reduce physical dependencies&lt;br /&gt;
&lt;br /&gt;
 // Foo.hxx&lt;br /&gt;
 // Superclass and data member&lt;br /&gt;
 #include &amp;quot;Super.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Data.hxx&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 // Forward declarations&lt;br /&gt;
 class Param;&lt;br /&gt;
 &lt;br /&gt;
 // This does not need a class definition&lt;br /&gt;
 Param doSomething1(Param aParam);&lt;br /&gt;
 &lt;br /&gt;
 class Foo : public Super&lt;br /&gt;
 {&lt;br /&gt;
  public:&lt;br /&gt;
   // This does not need a class definition either&lt;br /&gt;
   Param doSomething(Param aParam);&lt;br /&gt;
  &lt;br /&gt;
  private:&lt;br /&gt;
   Data mData;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 // Anotherfile.cxx&lt;br /&gt;
 #include &amp;quot;Foo.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Param.hxx&amp;quot; // Now we need the definition&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
  Param p;&lt;br /&gt;
  p = doSomething1(p); // Error without the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Include Directly &amp;lt;span id=&amp;quot;IncDirect&amp;quot;&amp;gt;(IncDirect)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
Include the header files for all types you need directly, not via another file.&lt;br /&gt;
&lt;br /&gt;
==== Precompiled headers &amp;lt;span id=&amp;quot;IncPCH&amp;quot;&amp;gt;(IncPCH)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
* The statement in each cxx files should be the inclusion of precompiled headers. There must be no other includes, no definitions and no include guards around the include statement. Forget this for a new file and you break the build.&lt;br /&gt;
* Assume the precompiled header file is empty and include all your headers normally.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;precompiled_foo.hxx&amp;quot; // May or may not contain includes for Foo.hxx and Bar.hxx&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;Foo.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Bar.hxx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Internal Include Guards &amp;lt;span id=&amp;quot;IncGuards&amp;quot;&amp;gt;(IncGuards)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
Internal include guards are good but &amp;#039;&amp;#039;&amp;#039;don&amp;#039;t&amp;#039;&amp;#039;&amp;#039; use the external ones. They add a lot of noise for a non-existent benefit.&lt;br /&gt;
&lt;br /&gt;
 // Foo.hxx&lt;br /&gt;
 &lt;br /&gt;
 // Yes, use internal include guards&lt;br /&gt;
 #ifndef _FOO_HXX&lt;br /&gt;
 #define _FOO_HXX&lt;br /&gt;
 &lt;br /&gt;
 // No include guards here&lt;br /&gt;
 #include &amp;quot;Superclass.hxx&amp;quot; &lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 // Bar.cxx&lt;br /&gt;
 &lt;br /&gt;
 // No include guards here&lt;br /&gt;
 #include &amp;quot;Bar.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Foo.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Baz.hxx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Coding Standards]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Cpp_Coding_Standards/HEADERS&amp;diff=22166</id>
		<title>Cpp Coding Standards/HEADERS</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Cpp_Coding_Standards/HEADERS&amp;diff=22166"/>
		<updated>2006-12-15T16:31:10Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic-Id: &amp;#039;&amp;#039;&amp;#039;HEADERS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
What to do or do not with header files.&lt;br /&gt;
----&lt;br /&gt;
=== Summary ===&lt;br /&gt;
&lt;br /&gt;
==== Self Sufficient and Minimal &amp;lt;span id=&amp;quot;Self&amp;quot;&amp;gt;(Self)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
When included a header file should be self sufficient and minimal.&lt;br /&gt;
* Include definitions for superclasses and data members&lt;br /&gt;
* Create forward declarations for everything else&lt;br /&gt;
* Include the definition as late as possible, this helps reduce physical dependencies&lt;br /&gt;
&lt;br /&gt;
 // Foo.hxx&lt;br /&gt;
 // Superclass and data member&lt;br /&gt;
 #include &amp;quot;Super.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Data.hxx&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 // Forward declarations&lt;br /&gt;
 class Param;&lt;br /&gt;
 &lt;br /&gt;
 // This does not need a class definition&lt;br /&gt;
 Param doSomething1(Param aParam);&lt;br /&gt;
 &lt;br /&gt;
 class Foo : public Super&lt;br /&gt;
 {&lt;br /&gt;
  public:&lt;br /&gt;
   // This does not need a class definition either&lt;br /&gt;
   Param doSomething(Param aParam);&lt;br /&gt;
  &lt;br /&gt;
  private:&lt;br /&gt;
   Data mData;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 // Anotherfile.cxx&lt;br /&gt;
 #include &amp;quot;Foo.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Param.hxx&amp;quot; // Now we need the definition&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
  Param p;&lt;br /&gt;
  p = doSomething1(p); // Error without the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Include Directly &amp;lt;span id=&amp;quot;IncDirect&amp;quot;&amp;gt;(IncDirect)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
Include the header files for all types you need directly, not via another file.&lt;br /&gt;
&lt;br /&gt;
==== Precompiled headers &amp;lt;span id=&amp;quot;IncPCH&amp;quot;&amp;gt;(IncPCH)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
* The statement in each cxx files should be the inclusion of precompiled headers. There must be no other includes, no definitions and no include guards around the include statement. Forget this for a new file and you break the build.&lt;br /&gt;
* Assume the precompiled header file is empty and include all your headers normally.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;precompiled_foo.hxx&amp;quot; // May or may not contain includes for Foo.hxx and Bar.hxx&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;Foo.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Bar.hxx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Internal Include Guards &amp;lt;span id=&amp;quot;IncGuards&amp;quot;&amp;gt;(IncGuards)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
Internal include guards are good but &amp;#039;&amp;#039;&amp;#039;don&amp;#039;t&amp;#039;&amp;#039;&amp;#039; use the external ones. They add a lot of noise for a non-existent benefit.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Coding Standards]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Cpp_Coding_Standards/HEADERS&amp;diff=22148</id>
		<title>Cpp Coding Standards/HEADERS</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Cpp_Coding_Standards/HEADERS&amp;diff=22148"/>
		<updated>2006-12-15T14:59:08Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Topic-Id: &amp;#039;&amp;#039;&amp;#039;HEADERS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
What to do or do not with header files.&lt;br /&gt;
----&lt;br /&gt;
=== Summary ===&lt;br /&gt;
&lt;br /&gt;
==== Self Sufficient and Minimal &amp;lt;span id=&amp;quot;Self&amp;quot;&amp;gt;(Self)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
When included a header file should be self sufficient and minimal.&lt;br /&gt;
* Include definitions for superclasses and data members&lt;br /&gt;
* Create forward declarations for everything else&lt;br /&gt;
* Include the definition as late as possible, this helps reduce physical dependencies&lt;br /&gt;
&lt;br /&gt;
 // Foo.hxx&lt;br /&gt;
 // Superclass and data member&lt;br /&gt;
 #include &amp;quot;Super.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Data.hxx&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 // Forward declarations&lt;br /&gt;
 class Param;&lt;br /&gt;
 &lt;br /&gt;
 // This does not need a class definition&lt;br /&gt;
 Param doSomething1(Param aParam);&lt;br /&gt;
 &lt;br /&gt;
 class Foo : public Super&lt;br /&gt;
 {&lt;br /&gt;
  public:&lt;br /&gt;
   // This does not need a class definition either&lt;br /&gt;
   Param doSomething(Param aParam);&lt;br /&gt;
  &lt;br /&gt;
  private:&lt;br /&gt;
   Data mData;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
 // Anotherfile.cxx&lt;br /&gt;
 #include &amp;quot;Foo.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Param.hxx&amp;quot; // Now we need the definition&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
  Param p;&lt;br /&gt;
  p = doSomething1(p); // Error without the definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Include Directly &amp;lt;span id=&amp;quot;IncDirect&amp;quot;&amp;gt;(IncDirect)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
Include the header files for all types you need directly, not via another file.&lt;br /&gt;
&lt;br /&gt;
==== Precompiled headers &amp;lt;span id=&amp;quot;IncPCH&amp;quot;&amp;gt;(IncPCH)&amp;lt;/span&amp;gt; ====&lt;br /&gt;
&lt;br /&gt;
* The statement in each cxx files should be the inclusion of precompiled headers. There must be no other includes, no definitions and no include guards around the include statement. Forget this for a new file and you break the build.&lt;br /&gt;
* Assume the precompiled header file is empty and include all your headers normally.&lt;br /&gt;
&lt;br /&gt;
 #include &amp;quot;precompiled_foo.hxx&amp;quot; // May or may not contain includes for Foo.hxx and Bar.hxx&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;Foo.hxx&amp;quot;&lt;br /&gt;
 #include &amp;quot;Bar.hxx&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category:Coding Standards]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=2nd_Mac_porters_meeting&amp;diff=20724</id>
		<title>2nd Mac porters meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=2nd_Mac_porters_meeting&amp;diff=20724"/>
		<updated>2006-11-24T10:26:37Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Agenda (can be modified) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== When?  ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MODIFIED !!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Final proposal is 2nd and 3rd of December 2006&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where? ===&lt;br /&gt;
&lt;br /&gt;
 Google Hamburg&lt;br /&gt;
 ABC-Strasse 19&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 Germany&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;How to get there&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
 Airport: HAM&lt;br /&gt;
 There is a bus connection from the airport. &lt;br /&gt;
&lt;br /&gt;
 Hamburg Airport does not yet have a direct rail connection to the city centre. &lt;br /&gt;
 The nearest subway &amp;amp; suburban railway station, Ohlsdorf, is served by&lt;br /&gt;
 suburban rail lines S1 and S11 and the subway line U1; all of these will take you&lt;br /&gt;
 to or from the main station, Hauptbahnhof, or Jungfernstieg [city centre].&lt;br /&gt;
&lt;br /&gt;
 Ohlsdorf station and the Terminals are connected by the number 110 bus,&lt;br /&gt;
 the &amp;quot;Airport-Express&amp;quot;, which runs every 10 minutes.&lt;br /&gt;
&lt;br /&gt;
 A taxi costs about 10 euros in one direction.&lt;br /&gt;
&lt;br /&gt;
[FIXME] : find additionnal informations for people who didn&amp;#039;t find how connect from airport to the meeting&lt;br /&gt;
( both directions)&lt;br /&gt;
&lt;br /&gt;
[[Image:060818_CityAnb-W.jpg]]&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; search in Hamburg Airport website :[[http://www.ham.airport.de/index_en.phtml Hamburg Airport Website]]&lt;br /&gt;
&lt;br /&gt;
Other links : [[http://www.ham.airport.de/en/verkehrsanbindung.html City anbindung]]&lt;br /&gt;
&lt;br /&gt;
=== What? ===&lt;br /&gt;
&lt;br /&gt;
A fun weekend of hacking! Google will provide the following facilities on-site:&lt;br /&gt;
&lt;br /&gt;
* A largish room with projectors for talks&lt;br /&gt;
* 5 Mac PRO workstations for hacking use during the conference&lt;br /&gt;
* Lunch on Saturday and Sunday&lt;br /&gt;
&lt;br /&gt;
Google status: Things look OK at this point, unless there are any last minute snags.&lt;br /&gt;
&lt;br /&gt;
Other hardware available : ericb will provide a macbook pro + a mac mini (powerpc) with prebuilt Aqua version&lt;br /&gt;
&lt;br /&gt;
Tino will provide an Imac 20&amp;quot; for workshops&lt;br /&gt;
&lt;br /&gt;
=== Where to stay ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB: Rates might not be accurate&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Side Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 Side Hotel&lt;br /&gt;
 Drehbahn 49&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 30-99-90&lt;br /&gt;
 +49 (040) 30-99-93-99 fax&lt;br /&gt;
 info@side-hamburg.de&lt;br /&gt;
 reservation@side-hamburg.de&lt;br /&gt;
 &lt;br /&gt;
 This is a very nice, modern hotel within seven minutes&amp;#039; walk from the office.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category&lt;br /&gt;
 Single Room: €135,00&lt;br /&gt;
 Double Room: €160,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category&lt;br /&gt;
 Single Room: €150,00&lt;br /&gt;
 Double Room: €175,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include breakfast, and all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Four Seasons Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 Raffles Vier Jahreszeiten (Four Seasons Hotel)&lt;br /&gt;
 Neuer Jungfernstieg 9-14&lt;br /&gt;
 +49 (040) 34-94-0&lt;br /&gt;
 +49 (040) 34-94-2600 fax&lt;br /&gt;
 emailus.hvj@raffles.com&lt;br /&gt;
 &lt;br /&gt;
 The name &amp;quot;Four Seasons&amp;quot; speaks for itself.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category (view to the courtyard)&lt;br /&gt;
 Single Room: €155,00&lt;br /&gt;
 Double Room (single occupancy): €180,00&lt;br /&gt;
 Double Room (double occupancy): €205,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category (view to the Alster)&lt;br /&gt;
 Single Room: €220,00&lt;br /&gt;
 Double Room: €270,00&lt;br /&gt;
 &lt;br /&gt;
 These prices do not include breakfast, but do include all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Marriott Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Very near to the office is the:&lt;br /&gt;
 &lt;br /&gt;
 Marriott Hotel&lt;br /&gt;
 ABC-Straße 52&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 350-50&lt;br /&gt;
 &lt;br /&gt;
 Special Rates&lt;br /&gt;
 Standard Deluxe Single or Double Room: €146,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include a French buffet (coffee, tea, croissants, etc).&lt;br /&gt;
 &lt;br /&gt;
 This is a standard chain hotel, within two minutes&amp;#039; walk from the office.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Additionnal Hotel  (ericb reserved here), very close to Google Office :&lt;br /&gt;
&lt;br /&gt;
Hotel Oper, Drehbahn 15- 23 Hamburg, 20354&lt;br /&gt;
http://hotels.germany-bookings.com/hotel/de/topoper.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
 &lt;br /&gt;
2) write a list of interested people&lt;br /&gt;
&lt;br /&gt;
 [[user:ericb]] ericb&lt;br /&gt;
 pjanik&lt;br /&gt;
 obr&lt;br /&gt;
 fheckl&lt;br /&gt;
 tra&lt;br /&gt;
 ssa&lt;br /&gt;
 jsi&lt;br /&gt;
 [[user:mmp]]&lt;br /&gt;
 kaib&lt;br /&gt;
 martink&lt;br /&gt;
 [[user:smsm1]] shaunmcdonald&lt;br /&gt;
 [[user:cloph]] cloph (to be confirmed)&lt;br /&gt;
&lt;br /&gt;
 [complete the list]&lt;br /&gt;
&lt;br /&gt;
4) Find money for travels, rooms and food&lt;br /&gt;
 &lt;br /&gt;
 By plane? &lt;br /&gt;
 come together by car?&lt;br /&gt;
 Note: I&amp;#039;ll propose the amount of money we need to Louis.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Content ===&lt;br /&gt;
&lt;br /&gt;
 Common sessions / Workshops around native issues: &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warning: this is a draft &lt;br /&gt;
&lt;br /&gt;
 (Eric Bachard) :&lt;br /&gt;
&lt;br /&gt;
Welcome and Introduction of the meeting: &lt;br /&gt;
&lt;br /&gt;
 - status of Macport&lt;br /&gt;
 - objectives and last news&lt;br /&gt;
 - Technical description of work in progress&lt;br /&gt;
 &lt;br /&gt;
Technical points to fix together:&lt;br /&gt;
&lt;br /&gt;
1) reorganize the tree for native version ( ericb&amp;#039;d vote for an obr task :-)  )&lt;br /&gt;
&lt;br /&gt;
2) improve configure for both Aqua and X11 version /  ( Claude Lohmaier )&lt;br /&gt;
&lt;br /&gt;
either)&lt;br /&gt;
- modify configure step : provide config.parms.aqua, &lt;br /&gt;
config.parms.X11 containing specific Mac OS X command line, and just use &lt;br /&gt;
./configure --with-config.parms=config.parms.aqua ( or config.parms.X11 )   &lt;br /&gt;
&lt;br /&gt;
or) or fix configure. Current issues : bad or wrong/missing autodetection &lt;br /&gt;
of things&lt;br /&gt;
&lt;br /&gt;
- session (workshop ?)  about native controls implementation : &lt;br /&gt;
code review/design or continue the work &lt;br /&gt;
&lt;br /&gt;
In case everything is not ready&lt;br /&gt;
 - current work in progress: fonts &lt;br /&gt;
( multiline sallayout : understand what has to be done, describe the todo) &lt;br /&gt;
 - workshop about debugging OpenOffice.org on Mac OS X :&lt;br /&gt;
gdb .. maybe complete with leaks and/or other tools ?&lt;br /&gt;
&lt;br /&gt;
Possible action items : &lt;br /&gt;
&lt;br /&gt;
- discuss and define a precise todolist&lt;br /&gt;
- divide the work &lt;br /&gt;
- describe party : describe with words and sentences what has exactly to be&lt;br /&gt;
done for missing parts:  &lt;br /&gt;
&lt;br /&gt;
Where in the code, who can provide informations, tips...etc&lt;br /&gt;
- write a list of missing classes and methods.&lt;br /&gt;
- define code intregration strategy&lt;br /&gt;
- define rules for code review based on wiki&lt;br /&gt;
- define a plan for Aqua Human Interface Guidelines integration &lt;br /&gt;
( modify menus ? ) &lt;br /&gt;
&lt;br /&gt;
Other subjects for what volunteers can propose workshops :&lt;br /&gt;
 &lt;br /&gt;
 - Debuging /using tools for track and /or analyse bugs (very well adapted &lt;br /&gt;
to workshops) &lt;br /&gt;
 - QA workshop for Mac OS X &lt;br /&gt;
 - windowing (salinst*)&lt;br /&gt;
 - redrawing&lt;br /&gt;
 - fonts&lt;br /&gt;
 - native printing  (WIP by Yvan Barthélemy, who will provide informations ) &lt;br /&gt;
 - packaging &lt;br /&gt;
 ..etc (propose other)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agenda===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Saturday&lt;br /&gt;
! Time !! Activity&lt;br /&gt;
|-&lt;br /&gt;
! 10:00 - 12:00&lt;br /&gt;
| Early bird hacking&lt;br /&gt;
|-&lt;br /&gt;
! 12:00 - 13:00&lt;br /&gt;
| Sessions&lt;br /&gt;
|-&lt;br /&gt;
! 13:00 - 19:00&lt;br /&gt;
| Porting, porting ..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Sunday&lt;br /&gt;
! Time !! Activity&lt;br /&gt;
|-&lt;br /&gt;
! 10:00 - 14:30&lt;br /&gt;
| Morning HackAThon&lt;br /&gt;
|-&lt;br /&gt;
! 14:30 - 15:00&lt;br /&gt;
| Closing session for travellers&lt;br /&gt;
|-&lt;br /&gt;
! 15:00 - 18:00&lt;br /&gt;
| More hacking!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:16, 10 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Aqua]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=2nd_Mac_porters_meeting&amp;diff=20683</id>
		<title>2nd Mac porters meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=2nd_Mac_porters_meeting&amp;diff=20683"/>
		<updated>2006-11-23T16:34:50Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* What? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== When?  ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MODIFIED !!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;#039;&amp;#039;&amp;#039;Final proposal is 2nd and 3rd of December 2006&amp;#039;&amp;#039;&amp;#039;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Where? ===&lt;br /&gt;
&lt;br /&gt;
 Google Hamburg&lt;br /&gt;
 ABC-Strasse 19&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 Germany&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;How to get there&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
 Airport: HAM&lt;br /&gt;
 There is a bus connection from the airport. &lt;br /&gt;
&lt;br /&gt;
 Hamburg Airport does not yet have a direct rail connection to the city centre. &lt;br /&gt;
 The nearest subway &amp;amp; suburban railway station, Ohlsdorf, is served by&lt;br /&gt;
 suburban rail lines S1 and S11 and the subway line U1; all of these will take you&lt;br /&gt;
 to or from the main station, Hauptbahnhof, or Jungfernstieg [city centre].&lt;br /&gt;
&lt;br /&gt;
 Ohlsdorf station and the Terminals are connected by the number 110 bus,&lt;br /&gt;
 the &amp;quot;Airport-Express&amp;quot;, which runs every 10 minutes.&lt;br /&gt;
&lt;br /&gt;
 A taxi costs about 10 euros in one direction.&lt;br /&gt;
&lt;br /&gt;
[FIXME] : find additionnal informations for people who didn&amp;#039;t find how connect from airport to the meeting&lt;br /&gt;
( both directions)&lt;br /&gt;
&lt;br /&gt;
[[Image:060818_CityAnb-W.jpg]]&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; search in Hamburg Airport website :[[http://www.ham.airport.de/index_en.phtml Hamburg Airport Website]]&lt;br /&gt;
&lt;br /&gt;
Other links : [[http://www.ham.airport.de/en/verkehrsanbindung.html City anbindung]]&lt;br /&gt;
&lt;br /&gt;
=== What? ===&lt;br /&gt;
&lt;br /&gt;
A fun weekend of hacking! Google will provide the following facilities on-site:&lt;br /&gt;
&lt;br /&gt;
* A largish room with projectors for talks&lt;br /&gt;
* 5 Mac PRO workstations for hacking use during the conference&lt;br /&gt;
* Lunch on Saturday and Sunday&lt;br /&gt;
&lt;br /&gt;
Google status: Things look OK at this point, unless there are any last minute snags.&lt;br /&gt;
&lt;br /&gt;
Other hardware available : ericb will provide a macbook pro + a mac mini (powerpc) with prebuilt Aqua version&lt;br /&gt;
&lt;br /&gt;
Tino will provide an Imac 20&amp;quot; for workshops&lt;br /&gt;
&lt;br /&gt;
=== Where to stay ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB: Rates might not be accurate&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Side Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 Side Hotel&lt;br /&gt;
 Drehbahn 49&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 30-99-90&lt;br /&gt;
 +49 (040) 30-99-93-99 fax&lt;br /&gt;
 info@side-hamburg.de&lt;br /&gt;
 reservation@side-hamburg.de&lt;br /&gt;
 &lt;br /&gt;
 This is a very nice, modern hotel within seven minutes&amp;#039; walk from the office.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category&lt;br /&gt;
 Single Room: €135,00&lt;br /&gt;
 Double Room: €160,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category&lt;br /&gt;
 Single Room: €150,00&lt;br /&gt;
 Double Room: €175,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include breakfast, and all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Four Seasons Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 Raffles Vier Jahreszeiten (Four Seasons Hotel)&lt;br /&gt;
 Neuer Jungfernstieg 9-14&lt;br /&gt;
 +49 (040) 34-94-0&lt;br /&gt;
 +49 (040) 34-94-2600 fax&lt;br /&gt;
 emailus.hvj@raffles.com&lt;br /&gt;
 &lt;br /&gt;
 The name &amp;quot;Four Seasons&amp;quot; speaks for itself.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category (view to the courtyard)&lt;br /&gt;
 Single Room: €155,00&lt;br /&gt;
 Double Room (single occupancy): €180,00&lt;br /&gt;
 Double Room (double occupancy): €205,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category (view to the Alster)&lt;br /&gt;
 Single Room: €220,00&lt;br /&gt;
 Double Room: €270,00&lt;br /&gt;
 &lt;br /&gt;
 These prices do not include breakfast, but do include all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Marriott Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Very near to the office is the:&lt;br /&gt;
 &lt;br /&gt;
 Marriott Hotel&lt;br /&gt;
 ABC-Straße 52&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 350-50&lt;br /&gt;
 &lt;br /&gt;
 Special Rates&lt;br /&gt;
 Standard Deluxe Single or Double Room: €146,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include a French buffet (coffee, tea, croissants, etc).&lt;br /&gt;
 &lt;br /&gt;
 This is a standard chain hotel, within two minutes&amp;#039; walk from the office.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Additionnal Hotel  (ericb reserved here), very close to Google Office :&lt;br /&gt;
&lt;br /&gt;
Hotel Oper, Drehbahn 15- 23 Hamburg, 20354&lt;br /&gt;
http://hotels.germany-bookings.com/hotel/de/topoper.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
 &lt;br /&gt;
2) write a list of interested people&lt;br /&gt;
&lt;br /&gt;
 [[user:ericb]] ericb&lt;br /&gt;
 pjanik&lt;br /&gt;
 obr&lt;br /&gt;
 fheckl&lt;br /&gt;
 tra&lt;br /&gt;
 ssa&lt;br /&gt;
 jsi&lt;br /&gt;
 [[user:mmp]]&lt;br /&gt;
 kaib&lt;br /&gt;
 martink&lt;br /&gt;
 [[user:smsm1]] shaunmcdonald&lt;br /&gt;
 [[user:cloph]] cloph (to be confirmed)&lt;br /&gt;
&lt;br /&gt;
 [complete the list]&lt;br /&gt;
&lt;br /&gt;
4) Find money for travels, rooms and food&lt;br /&gt;
 &lt;br /&gt;
 By plane? &lt;br /&gt;
 come together by car?&lt;br /&gt;
 Note: I&amp;#039;ll propose the amount of money we need to Louis.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Content ===&lt;br /&gt;
&lt;br /&gt;
 Common sessions / Workshops around native issues: &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warning: this is a draft &lt;br /&gt;
&lt;br /&gt;
 (Eric Bachard) :&lt;br /&gt;
&lt;br /&gt;
Welcome and Introduction of the meeting: &lt;br /&gt;
&lt;br /&gt;
 - status of Macport&lt;br /&gt;
 - objectives and last news&lt;br /&gt;
 - Technical description of work in progress&lt;br /&gt;
 &lt;br /&gt;
Technical points to fix together:&lt;br /&gt;
&lt;br /&gt;
1) reorganize the tree for native version ( ericb&amp;#039;d vote for an obr task :-)  )&lt;br /&gt;
&lt;br /&gt;
2) improve configure for both Aqua and X11 version /  ( Claude Lohmaier )&lt;br /&gt;
&lt;br /&gt;
either)&lt;br /&gt;
- modify configure step : provide config.parms.aqua, &lt;br /&gt;
config.parms.X11 containing specific Mac OS X command line, and just use &lt;br /&gt;
./configure --with-config.parms=config.parms.aqua ( or config.parms.X11 )   &lt;br /&gt;
&lt;br /&gt;
or) or fix configure. Current issues : bad or wrong/missing autodetection &lt;br /&gt;
of things&lt;br /&gt;
&lt;br /&gt;
- session (workshop ?)  about native controls implementation : &lt;br /&gt;
code review/design or continue the work &lt;br /&gt;
&lt;br /&gt;
In case everything is not ready&lt;br /&gt;
 - current work in progress: fonts &lt;br /&gt;
( multiline sallayout : understand what has to be done, describe the todo) &lt;br /&gt;
 - workshop about debugging OpenOffice.org on Mac OS X :&lt;br /&gt;
gdb .. maybe complete with leaks and/or other tools ?&lt;br /&gt;
&lt;br /&gt;
Possible action items : &lt;br /&gt;
&lt;br /&gt;
- discuss and define a precise todolist&lt;br /&gt;
- divide the work &lt;br /&gt;
- describe party : describe with words and sentences what has exactly to be&lt;br /&gt;
done for missing parts:  &lt;br /&gt;
&lt;br /&gt;
Where in the code, who can provide informations, tips...etc&lt;br /&gt;
- write a list of missing classes and methods.&lt;br /&gt;
- define code intregration strategy&lt;br /&gt;
- define rules for code review based on wiki&lt;br /&gt;
- define a plan for Aqua Human Interface Guidelines integration &lt;br /&gt;
( modify menus ? ) &lt;br /&gt;
&lt;br /&gt;
Other subjects for what volunteers can propose workshops :&lt;br /&gt;
 &lt;br /&gt;
 - Debuging /using tools for track and /or analyse bugs (very well adapted &lt;br /&gt;
to workshops) &lt;br /&gt;
 - QA workshop for Mac OS X &lt;br /&gt;
 - windowing (salinst*)&lt;br /&gt;
 - redrawing&lt;br /&gt;
 - fonts&lt;br /&gt;
 - native printing  (WIP by Yvan Barthélemy, who will provide informations ) &lt;br /&gt;
 - packaging &lt;br /&gt;
 ..etc (propose other)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agenda (can be modified)===&lt;br /&gt;
&lt;br /&gt;
[FIXME] create an array ..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Saturday:&lt;br /&gt;
&lt;br /&gt;
- Common session from 12:00 to 15:00 &lt;br /&gt;
&lt;br /&gt;
- Workshops: From 16:00 to 19:00 &lt;br /&gt;
&lt;br /&gt;
[Saturday evening: some dinner in the city? ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sunday:&lt;br /&gt;
&lt;br /&gt;
- Workshops from 10:00 to 12:00&lt;br /&gt;
&lt;br /&gt;
- Conclusions from 13:00 to 15:00&lt;br /&gt;
&lt;br /&gt;
Time to return after ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:16, 10 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Aqua]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=2nd_Mac_porters_meeting&amp;diff=19946</id>
		<title>2nd Mac porters meeting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=2nd_Mac_porters_meeting&amp;diff=19946"/>
		<updated>2006-11-06T11:53:48Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Todo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== When?  ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;MODIFIED !!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Final proposal is 2nd and 3rd of December 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Where? ===&lt;br /&gt;
&lt;br /&gt;
 Google Hamburg&lt;br /&gt;
 ABC-Strasse 19&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 Germany&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;How to get there&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Airport: HAM&lt;br /&gt;
 There is a bus connection from the airport. A taxi costs about 10 euros in one direction.&lt;br /&gt;
&lt;br /&gt;
=== What? ===&lt;br /&gt;
&lt;br /&gt;
A fun weekend of hacking! Google will provide the following facilities on-site:&lt;br /&gt;
&lt;br /&gt;
* A conference room for the common sessions (40+ people)&lt;br /&gt;
* a few smaller rooms for hacking workshops&lt;br /&gt;
&lt;br /&gt;
*  G5 workstations for the workshops &amp;#039;&amp;#039;&amp;#039;(PENDING)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Lunch on Saturday and Sunday &amp;#039;&amp;#039;&amp;#039;(PENDING)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
PENDING means this has been authorized but we are still working out the practical details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME] : ericb will provide a powerbook ( or more recent, since buy a new model is scheduled ) + a mac mini (powerpc) with prebuilt Aqua version&lt;br /&gt;
&lt;br /&gt;
=== Where to stay ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB: Rates might not be accurate&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Side Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 Side Hotel&lt;br /&gt;
 Drehbahn 49&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 30-99-90&lt;br /&gt;
 +49 (040) 30-99-93-99 fax&lt;br /&gt;
 info@side-hamburg.de&lt;br /&gt;
 reservation@side-hamburg.de&lt;br /&gt;
 &lt;br /&gt;
 This is a very nice, modern hotel within seven minutes&amp;#039; walk from the office.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category&lt;br /&gt;
 Single Room: €135,00&lt;br /&gt;
 Double Room: €160,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category&lt;br /&gt;
 Single Room: €150,00&lt;br /&gt;
 Double Room: €175,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include breakfast, and all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Four Seasons Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 Raffles Vier Jahreszeiten (Four Seasons Hotel)&lt;br /&gt;
 Neuer Jungfernstieg 9-14&lt;br /&gt;
 +49 (040) 34-94-0&lt;br /&gt;
 +49 (040) 34-94-2600 fax&lt;br /&gt;
 emailus.hvj@raffles.com&lt;br /&gt;
 &lt;br /&gt;
 The name &amp;quot;Four Seasons&amp;quot; speaks for itself.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category (view to the courtyard)&lt;br /&gt;
 Single Room: €155,00&lt;br /&gt;
 Double Room (single occupancy): €180,00&lt;br /&gt;
 Double Room (double occupancy): €205,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category (view to the Alster)&lt;br /&gt;
 Single Room: €220,00&lt;br /&gt;
 Double Room: €270,00&lt;br /&gt;
 &lt;br /&gt;
 These prices do not include breakfast, but do include all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Marriott Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Very near to the office is the:&lt;br /&gt;
 &lt;br /&gt;
 Marriott Hotel&lt;br /&gt;
 ABC-Straße 52&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 350-50&lt;br /&gt;
 &lt;br /&gt;
 Special Rates&lt;br /&gt;
 Standard Deluxe Single or Double Room: €146,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include a French buffet (coffee, tea, croissants, etc).&lt;br /&gt;
 &lt;br /&gt;
 This is a standard chain hotel, within two minutes&amp;#039; walk from the office.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
 &lt;br /&gt;
2) write a list of interested people&lt;br /&gt;
&lt;br /&gt;
 ericb&lt;br /&gt;
 pjanik&lt;br /&gt;
 fipa  (to be confirmed)&lt;br /&gt;
 obr&lt;br /&gt;
 fheckl&lt;br /&gt;
 tra&lt;br /&gt;
 ssa&lt;br /&gt;
 jsi&lt;br /&gt;
 [[user:mmp]]&lt;br /&gt;
 kaib&lt;br /&gt;
 martink&lt;br /&gt;
 &lt;br /&gt;
 [complete the list]&lt;br /&gt;
&lt;br /&gt;
4) Find money for travels, rooms and food&lt;br /&gt;
 &lt;br /&gt;
 By plane? &lt;br /&gt;
 come together by car?&lt;br /&gt;
 Note: I&amp;#039;ll propose the amount of money we need to Louis.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
7) Content&lt;br /&gt;
&lt;br /&gt;
 Common sessions / Workshops around native issues: &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 (Eric Bachard) : &lt;br /&gt;
 - session (workshop ?)  about native controls implementation : code review/design or continue the work in case everything is not ready&lt;br /&gt;
&lt;br /&gt;
 - windowing (salinst*)&lt;br /&gt;
 - redrawing&lt;br /&gt;
 - fonts&lt;br /&gt;
 - native printing&lt;br /&gt;
 - packaging&lt;br /&gt;
 ..etc (propose other)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agenda (can be modified)===&lt;br /&gt;
&lt;br /&gt;
[FIXME] create an array ..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Saturday:&lt;br /&gt;
&lt;br /&gt;
- Common session from 12:00 to 15:00 &lt;br /&gt;
&lt;br /&gt;
- Workshops: From 16:00 to 19:00 &lt;br /&gt;
&lt;br /&gt;
[Saturday evening: some dinner in the city? ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sunday:&lt;br /&gt;
&lt;br /&gt;
- Workshops from 10:00 to 12:00&lt;br /&gt;
&lt;br /&gt;
- Conclusions from 13:00 to 14:00&lt;br /&gt;
&lt;br /&gt;
Time to return after ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:16, 10 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Aqua]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Specification_template&amp;diff=19898</id>
		<title>Specification template</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Specification_template&amp;diff=19898"/>
		<updated>2006-11-04T09:24:31Z</updated>

		<summary type="html">&lt;p&gt;KaiB: Specification template moved to Specification Template: Corrected camelcase typing to be consistent with other documents.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Specification Template]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Specification_Template&amp;diff=19897</id>
		<title>Specification Template</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Specification_Template&amp;diff=19897"/>
		<updated>2006-11-04T09:24:31Z</updated>

		<summary type="html">&lt;p&gt;KaiB: Specification template moved to Specification Template: Corrected camelcase typing to be consistent with other documents.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=State Specification Title here=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|- align=&amp;quot;left&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; bgcolor=&amp;quot;#cccccc&amp;quot;   | &amp;#039;&amp;#039;&amp;#039;Specification Status&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Author&amp;#039;&amp;#039;&amp;#039; || &amp;lt;YOUR NAME HERE&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Last Change&amp;#039;&amp;#039;&amp;#039; || [[User:Cj|Cj]] 16:05, 2 November 2006 (CET)&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;150&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Status&amp;#039;&amp;#039;&amp;#039; || Preliminary [[Specification_Template_Help#Status|Help]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&amp;lt;START TYPING HERE&amp;gt; [[Specification_Template_Help#Abstract|Help]]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;300&amp;quot; bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Reference Document&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Location (URL)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Product Requirement, RFE, Issue&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;lt;PLEASE ENTER LOCATION HERE&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Test Case Specification&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;lt;PLEASE ENTER LOCATION HERE&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;IDL Specification&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;lt;PLEASE ENTER LOCATION HERE&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Other, e.g. references to related specs&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;lt;PLEASE ENTER LOCATION HERE&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Acronyms and Abbreviations ==&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0;  border: 1px #cccccc solid; border-collapse: collapse; width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Acronym / Abbreviation&amp;#039;&amp;#039;&amp;#039; || bgcolor=&amp;quot;#dddddd&amp;quot; | &amp;#039;&amp;#039;&amp;#039;Definition&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;WYSIWYG&amp;gt;&lt;br /&gt;
| &amp;lt;What You See Is What You Get&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Detailed Specification ==&lt;br /&gt;
&amp;lt;START TYPING HERE&amp;gt;&lt;br /&gt;
 [[Specification_Template_Help#Detailed_Specification|Help]] | [[UI-Elements|User Interface Element Templates]] | [[Specification_Example|Example Spec]]&lt;br /&gt;
&lt;br /&gt;
== Migration ==&lt;br /&gt;
&amp;lt;START TYPING HERE --- If this part is irrelevant state a reason for its absence.&amp;gt; [[Specification_Template_Help#Migration|Help]]&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&amp;lt;START TYPING HERE --- If this part is irrelevant state a reason for its absence.&amp;gt; [[Specification_Template_Help#Configuration|Help]]&lt;br /&gt;
&lt;br /&gt;
== File Format ==&lt;br /&gt;
&amp;lt;START TYPING HERE --- If this part is irrelevant state a reason for its absence.&amp;gt; [[Specification_Template_Help#File_Format|Help]]&lt;br /&gt;
&lt;br /&gt;
== Open Issues ==&lt;br /&gt;
&amp;lt;State a bulleted list of issues Issue here&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Specification]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=IRC_Communication&amp;diff=19346</id>
		<title>IRC Communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=IRC_Communication&amp;diff=19346"/>
		<updated>2006-10-24T16:18:38Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* IRC info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenOffice|OpenOffice]].org project uses IRC for direct / immediate online communication:&lt;br /&gt;
&lt;br /&gt;
== IRC Network: Freenode (irc.freenode.net) ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| #users.openoffice.org || User channel&lt;br /&gt;
|-&lt;br /&gt;
| #OpenOffice.org || General channel (most developers)&lt;br /&gt;
|-&lt;br /&gt;
| #specs.openoffice.org || Specifications and development processes&lt;br /&gt;
|-&lt;br /&gt;
| #qa.openoffice.org || QA channel&lt;br /&gt;
|-&lt;br /&gt;
| #api.openoffice.org || API channel (related to API programming, SDK, developer documentation)&lt;br /&gt;
|-&lt;br /&gt;
| #chart2.openoffice.org || Chart2 channel (related to the chart2 module, the re-implementation of the Chart)&lt;br /&gt;
|-&lt;br /&gt;
| #go-oo || Heretical ooo-build / OO.o channel&lt;br /&gt;
|-&lt;br /&gt;
| #ooonlc || Native Language Talk Room&lt;br /&gt;
|-&lt;br /&gt;
| #debian-oo || Debian OO.o packaging channel&lt;br /&gt;
|-&lt;br /&gt;
| #openoffice.org-de || German channel&lt;br /&gt;
|-&lt;br /&gt;
| #openoffice.org-it || Italian channel&lt;br /&gt;
|-&lt;br /&gt;
| #openoffice.org-pl || Polish channel&lt;br /&gt;
|-&lt;br /&gt;
| #cs.openoffice.org || Czech channel&lt;br /&gt;
|-&lt;br /&gt;
| #openoffice.et || Estonian channel&lt;br /&gt;
|-&lt;br /&gt;
| #fr.openoffice.org || Francophone channel&lt;br /&gt;
|-&lt;br /&gt;
| #nl.openoffice.org || Dutch channel&lt;br /&gt;
|-&lt;br /&gt;
| #dba.openoffice.org-de || Germanophone channel to help with the Base-Modul of OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| #ooo_macport || Native Mac OSX (Aqua) port of OpenOffice.org Developer channel&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IRC info ==&lt;br /&gt;
&lt;br /&gt;
* New to IRC look [http://irchelp.org/irchelp/new2irc.html here]&lt;br /&gt;
* Make sure you register your nick with freenode, just follow the [http://freenode.net/faq.shtml#nicksetup instructions]&lt;br /&gt;
* If you like X-Chat but have to use windows sometimes, here is a free win32 [http://www.psyon.org/projects/xchat-win32/ version ]&lt;br /&gt;
* A client for Mac OS X is [http://colloquy.info/ Colloquy]&lt;br /&gt;
* To create a new channel:&lt;br /&gt;
  /join #new-channel-oo&lt;br /&gt;
  /msg chanserv register #new-channel-oo [password]&lt;br /&gt;
  /msg chanserv access #new-channel-oo add [who_should_autoop_there_1] [level]&lt;br /&gt;
  /msg chanserv access #new-channel-oo add [who_should_autoop_there_2_and_more] [level]&lt;br /&gt;
  /msg chanserv set #new-channel-oo guard on&lt;br /&gt;
  /msg chanserv level #new-channel set autoop [level-for-autoop]&lt;br /&gt;
&lt;br /&gt;
== Who is Whom ? ==&lt;br /&gt;
&lt;br /&gt;
A list of people &amp;amp;amp; accounts is available: [[DomainDeveloper]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=IRC_Communication&amp;diff=19345</id>
		<title>IRC Communication</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=IRC_Communication&amp;diff=19345"/>
		<updated>2006-10-24T16:16:59Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* IRC info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[OpenOffice|OpenOffice]].org project uses IRC for direct / immediate online communication:&lt;br /&gt;
&lt;br /&gt;
== IRC Network: Freenode (irc.freenode.net) ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| #users.openoffice.org || User channel&lt;br /&gt;
|-&lt;br /&gt;
| #OpenOffice.org || General channel (most developers)&lt;br /&gt;
|-&lt;br /&gt;
| #specs.openoffice.org || Specifications and development processes&lt;br /&gt;
|-&lt;br /&gt;
| #qa.openoffice.org || QA channel&lt;br /&gt;
|-&lt;br /&gt;
| #api.openoffice.org || API channel (related to API programming, SDK, developer documentation)&lt;br /&gt;
|-&lt;br /&gt;
| #chart2.openoffice.org || Chart2 channel (related to the chart2 module, the re-implementation of the Chart)&lt;br /&gt;
|-&lt;br /&gt;
| #go-oo || Heretical ooo-build / OO.o channel&lt;br /&gt;
|-&lt;br /&gt;
| #ooonlc || Native Language Talk Room&lt;br /&gt;
|-&lt;br /&gt;
| #debian-oo || Debian OO.o packaging channel&lt;br /&gt;
|-&lt;br /&gt;
| #openoffice.org-de || German channel&lt;br /&gt;
|-&lt;br /&gt;
| #openoffice.org-it || Italian channel&lt;br /&gt;
|-&lt;br /&gt;
| #openoffice.org-pl || Polish channel&lt;br /&gt;
|-&lt;br /&gt;
| #cs.openoffice.org || Czech channel&lt;br /&gt;
|-&lt;br /&gt;
| #openoffice.et || Estonian channel&lt;br /&gt;
|-&lt;br /&gt;
| #fr.openoffice.org || Francophone channel&lt;br /&gt;
|-&lt;br /&gt;
| #nl.openoffice.org || Dutch channel&lt;br /&gt;
|-&lt;br /&gt;
| #dba.openoffice.org-de || Germanophone channel to help with the Base-Modul of OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| #ooo_macport || Native Mac OSX (Aqua) port of OpenOffice.org Developer channel&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== IRC info ==&lt;br /&gt;
&lt;br /&gt;
* New to IRC look [http://irchelp.org/irchelp/new2irc.html here]&lt;br /&gt;
* Make sure you register your nick with freenode, just follow the [http://freenode.net/faq.shtml#nicksetup instructions]&lt;br /&gt;
* If you like X-Chat but have to use windows sometimes, here is a free win32 [http://www.psyon.org/projects/xchat-win32/ version ]&lt;br /&gt;
* A client for Mac OS X is [http://colloquy.info/ Colloquy]&lt;br /&gt;
* To create a new channel:&lt;br /&gt;
  /join #new-channel-oo&lt;br /&gt;
  /msg chanserv register #new-channel-oo [password]&lt;br /&gt;
  /msg chanserv access #new-channel-oo [who_should_autoop_there_1]&lt;br /&gt;
  /msg chanserv access #new-channel-oo [who_should_autoop_there_2_and_more]&lt;br /&gt;
  /msg chanserv set #new-channel-oo guard on&lt;br /&gt;
  /msg chanserv level #new-channel set autoop [level-for-autoop]&lt;br /&gt;
&lt;br /&gt;
== Who is Whom ? ==&lt;br /&gt;
&lt;br /&gt;
A list of people &amp;amp;amp; accounts is available: [[DomainDeveloper]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=19340</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=19340"/>
		<updated>2006-10-24T13:50:37Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The goal of the UnHack movement is to make OO.o development cool and satisfying. Current focus: svn, buildbot, jam, translations.&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
* SVN repos: [http://svn.go-oo.org/anonsvn anon] [https://svn.go-oo.org/ dev]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[UnHackCvsSync]] - Instructions for how to sync to an upstreams milestone&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHackCvsSync&amp;diff=18415</id>
		<title>UnHackCvsSync</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHackCvsSync&amp;diff=18415"/>
		<updated>2006-10-11T17:02:12Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Updating the vendor branch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Updating the vendor branch ==&lt;br /&gt;
&lt;br /&gt;
# Check out the unhack tools: [https://ooo.googlecode.com/svn/contrib/unhack /contrib/unhack]&lt;br /&gt;
# ./import-ooo-cvs &amp;lt;milestone&amp;gt; &amp;lt;svn_username&amp;gt; &amp;lt;svn_password&amp;gt;, (example: ./import-ooo-cvs m187 kai.backman secret)&lt;br /&gt;
# cd ~/trunk (SVN /trunk)&lt;br /&gt;
# svnmerge merge&lt;br /&gt;
# full build, resolve conflicts, repeat until no conflicts&lt;br /&gt;
# svn ci ~/trunk -m &amp;quot;Merged upstreams milestone &amp;lt;milestone&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB: Look into how to generate localize.sdf files in some sane manner&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHackCvsSync&amp;diff=18414</id>
		<title>UnHackCvsSync</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHackCvsSync&amp;diff=18414"/>
		<updated>2006-10-11T17:02:00Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Updating the vendor branch ==&lt;br /&gt;
&lt;br /&gt;
# Check out the unhack tools: [https://ooo.googlecode.com/svn/contrib/unhack /contrib/unhack]&lt;br /&gt;
# ./import-ooo-cvs &amp;lt;milestone&amp;gt; &amp;lt;svn_username&amp;gt; &amp;lt;svn_password&amp;gt;, (example: ./import-ooo-cvs m187 kai.backman secret)&lt;br /&gt;
# cd ~/trunk (SVN /trunk)&lt;br /&gt;
# svnmerge merge&lt;br /&gt;
# full build, resolve conflicts, repeat until no conflicts&lt;br /&gt;
# svn ci ~/trunk -m &amp;quot;Merged upstreams milestone &amp;lt;milestone&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB: Look into how to import localize.sdf files in some sane manner&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHackCvsSync&amp;diff=18413</id>
		<title>UnHackCvsSync</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHackCvsSync&amp;diff=18413"/>
		<updated>2006-10-11T17:01:28Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Updating the vendor branch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Updating the vendor branch ==&lt;br /&gt;
&lt;br /&gt;
# Check out the unhack tools: [https://ooo.googlecode.com/svn/contrib/unhack /contrib/unhack]&lt;br /&gt;
# ./import-ooo-cvs &amp;lt;milestone&amp;gt; &amp;lt;svn_username&amp;gt; &amp;lt;svn_password&amp;gt;, (example: ./import-ooo-cvs m187 kai.backman secret)&lt;br /&gt;
# cd ~/trunk (SVN /trunk)&lt;br /&gt;
# svnmerge merge&lt;br /&gt;
# full build, resolve conflicts, repeat until no conflicts&lt;br /&gt;
# svn ci ~/trunk -m &amp;quot;Merged upstreams milestone &amp;lt;milestone&amp;gt;&amp;quot;&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHackCvsSync&amp;diff=18398</id>
		<title>UnHackCvsSync</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHackCvsSync&amp;diff=18398"/>
		<updated>2006-10-11T15:58:05Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Updating the vendor branch ==&lt;br /&gt;
&lt;br /&gt;
# Check out the unhack tools: [https://ooo.googlecode.com/svn/contrib/unhack /contrib/unhack]&lt;br /&gt;
# ./import-ooo-cvs &amp;lt;milestone&amp;gt; &amp;lt;svn_username&amp;gt; &amp;lt;svn_password&amp;gt;, (example: ./import-ooo-cvs m187 kai.backman secret)&lt;br /&gt;
# cd ~/trunk (SVN /trunk)&lt;br /&gt;
# svnmerge merge&lt;br /&gt;
# cd ~/data_trunk (SVN /data_trunk)&lt;br /&gt;
# svnmerge merge&lt;br /&gt;
# full build, resolve conflicts, repeat until no conflicts&lt;br /&gt;
# svn ci ~/trunk ~/data_trunk -m &amp;quot;Merged upstreams milestone &amp;lt;milestone&amp;gt;&amp;quot;&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=18397</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=18397"/>
		<updated>2006-10-11T15:50:17Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The goal of the UnHack movement is to make OO.o development cool and satisfying. Current focus: svn, buildbot, jam, translations.&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
* SVN repos: [http://ooo.googlecode.com/svn anon] [https://ooo.googlecode.com/svn dev]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[UnHackCvsSync]] - Instructions for how to sync to an upstreams milestone&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Ericb&amp;diff=17829</id>
		<title>User:Ericb</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Ericb&amp;diff=17829"/>
		<updated>2006-10-02T06:38:20Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Todo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Public Documentation License Notice==&lt;br /&gt;
&lt;br /&gt;
The contents of this Documentation (excepted Native Port Roadmap),are subject to the Public Documentation License Version 1.0 (the &amp;quot;License&amp;quot;); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at http://www.openoffice.org/licenses/PDL.html.&lt;br /&gt;
The Original Documentation is &amp;quot;Mac OS X native port&amp;quot;. The Initial Writer of the Original Documentation is (JCA) Eric Bachard (C) 2005-2006. All Rights Reserved. (Initial Writer contact(s): ericb@openoffice.org.)&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Mac OS X Native port&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;messagebox cleanup metadata&amp;quot; style=&amp;quot;border:1px solid blue;background-color:#B3FFF5;padding:7px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The first Mac OS X native port objective is make OpenOffice.org run without X11 use, to make it a real Mac application.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The second one is respect Aqua Human interface Guidelines&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; This is a long term work, and every help and/or contributions, like donations** are welcome.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 **see http://contributing.openoffice.org/index.html&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Native Port Roadmap&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;2006&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
* June 2006: work in progress &lt;br /&gt;
&lt;br /&gt;
- Basis: frame, instances, threads, drawing, painting, resizing (Stephan Schaefer, Tino Rachui)&lt;br /&gt;
&lt;br /&gt;
 Done: &lt;br /&gt;
 implement threads&lt;br /&gt;
 create, manage instance&lt;br /&gt;
 create, manage windows (including parents)&lt;br /&gt;
 create, manage events&lt;br /&gt;
 create manage drawing, resizing&lt;br /&gt;
 create, add menus (Pavel Janik)&lt;br /&gt;
 toggle window fullscreen (Pierre de Filippis)&lt;br /&gt;
 make font server work (Stephan Schaefer)&lt;br /&gt;
&lt;br /&gt;
* Current status font support (Stephan Schaefer, 2006/07/28): the following features are basically working now&lt;br /&gt;
** font selection&lt;br /&gt;
** font size&lt;br /&gt;
** simple font attributes (bold, italic)&lt;br /&gt;
&lt;br /&gt;
 Next step: document first part, and propose design&lt;br /&gt;
&lt;br /&gt;
- native filepicker (Oliver Braun)&lt;br /&gt;
&lt;br /&gt;
- native printing implementation (Oliver?)&lt;br /&gt;
&lt;br /&gt;
- native font implementation (Eric Bachard)&lt;br /&gt;
&lt;br /&gt;
* September 2006: &lt;br /&gt;
&lt;br /&gt;
- first proofs of concept: fonts, filepicker .. (more?)&lt;br /&gt;
- show the results (OOoCon 2006?)&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;2007&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
* January 2007: first alpha implementation&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Strategy for native port&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Possible Actions&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
Identify us:&lt;br /&gt;
&lt;br /&gt;
#Complete the arrays below&lt;br /&gt;
#Update photos on frapr.com?&lt;br /&gt;
&lt;br /&gt;
Share the work:&lt;br /&gt;
&lt;br /&gt;
#Divide the work between little Teams&lt;br /&gt;
#Update Todo list regularly -&amp;gt; needs some love these days ... [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s]&lt;br /&gt;
&lt;br /&gt;
Help:&lt;br /&gt;
&lt;br /&gt;
#Teach tools between us&lt;br /&gt;
#Do a debug party on IRC&lt;br /&gt;
#write documentation&lt;br /&gt;
&lt;br /&gt;
Meet us:&lt;br /&gt;
&lt;br /&gt;
#IRC&lt;br /&gt;
#Mac Meeting (like nov2005 in Hamburg?)&lt;br /&gt;
&lt;br /&gt;
Inform:&lt;br /&gt;
&lt;br /&gt;
#Update website regularly&lt;br /&gt;
#Blogs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHO&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Mac Team:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
|Developer \ skills || build || write code || code review || debug/trace (higher is better) || contribute to documentation ||&lt;br /&gt;
|-&lt;br /&gt;
|ericb|| x || x || || 1 || x ||&lt;br /&gt;
|-&lt;br /&gt;
|pjanik|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|ssa|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|maho|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|tinor|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|schmidtm|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|ebischoff|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|obr|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|cl|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|aliscafo|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|fheckl|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Fridrich|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Other resources&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
fonts: ?&lt;br /&gt;
&lt;br /&gt;
events: ?&lt;br /&gt;
&lt;br /&gt;
QA: ?&lt;br /&gt;
&lt;br /&gt;
graphical: ?&lt;br /&gt;
&lt;br /&gt;
Communication: ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHAT&amp;#039;&amp;#039;&amp;#039;: Status of most important tasks&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Task || Names|| Urgency (1=higher)|| Work in Progress || Done || Code review || Debug || Integration || &lt;br /&gt;
|-&lt;br /&gt;
|Get rid of X11|| || 1 || x || x || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Bundle|| || 1 || x || || || || | ||&lt;br /&gt;
|-&lt;br /&gt;
|Drawing|| || 1 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Fonts|| || 1 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Events management|| || 2 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Controls (see list) ||ericb, aliscafo || 2 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native FilePicker|| || 3 || x || x || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native Printing|| || 3 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native SpellChecker|| || 4 || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Player|| || 4 || x || || || || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other tasks:&lt;br /&gt;
&lt;br /&gt;
Help for writing bug lists, status of bugs ..etc&lt;br /&gt;
&lt;br /&gt;
Write howto use gdb, leaks, other tools&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHEN&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
From Christian Lippka (last meeting, 25th of august 2006): &lt;br /&gt;
 Aug 26 00:21:38 ChristianL&lt;br /&gt;
 from my point of view what is missing for point 1:&lt;br /&gt;
 text layout, complete font support, keyboard support,&lt;br /&gt;
 fixing repaint issues, having aqua install and run out of the box&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;September 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Present the current state of the project at the 2006 OpenOffice conference in Lyon and Paris&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Late 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
fix OpenOffice.org launch&lt;br /&gt;
fix drawing (repainting)&lt;br /&gt;
Implement missing methods and fix most important bugs (mainly the one leading to crash) in:&lt;br /&gt;
ATS&lt;br /&gt;
Salgraphics&lt;br /&gt;
Salinstance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;January or February 2007&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
make Java work (works partially)&lt;br /&gt;
make intensive debug&lt;br /&gt;
present something working as alpha&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;June 2007	&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Implementation of:&lt;br /&gt;
native filepicker&lt;br /&gt;
native printing&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;2nd Mac porters meeting&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
=== When? ===&lt;br /&gt;
&lt;br /&gt;
2nd and 3rd of December or 9th and 10th of December&lt;br /&gt;
&lt;br /&gt;
=== Where? ===&lt;br /&gt;
&lt;br /&gt;
 Google Hamburg&lt;br /&gt;
 ABC-Strasse 19&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 Germany&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;How to get there&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Airport: HAM&lt;br /&gt;
 There is a bus connection from the airport. A taxi costs about 10 euros in one direction.&lt;br /&gt;
&lt;br /&gt;
=== What? ===&lt;br /&gt;
&lt;br /&gt;
A fun weekend of hacking! Google will provide the following facilities on-site:&lt;br /&gt;
&lt;br /&gt;
* A conference room for the common sessions (40+ people)&lt;br /&gt;
* a few smaller rooms for hacking workshops&lt;br /&gt;
* 4 G5 workstations for the workshops &amp;#039;&amp;#039;&amp;#039;(PENDING)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Lunch on Saturday and Sunday &amp;#039;&amp;#039;&amp;#039;(PENDING)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
PENDING means this has been authorized but we are still working out the practical details.&lt;br /&gt;
&lt;br /&gt;
=== Where to stay ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB: Rates might not be accurate&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Side Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 Side Hotel&lt;br /&gt;
 Drehbahn 49&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 30-99-90&lt;br /&gt;
 +49 (040) 30-99-93-99 fax&lt;br /&gt;
 info@side-hamburg.de&lt;br /&gt;
 reservation@side-hamburg.de&lt;br /&gt;
 &lt;br /&gt;
 This is a very nice, modern hotel within seven minutes&amp;#039; walk from the office.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category&lt;br /&gt;
 Single Room: €135,00&lt;br /&gt;
 Double Room: €160,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category&lt;br /&gt;
 Single Room: €150,00&lt;br /&gt;
 Double Room: €175,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include breakfast, and all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Four Seasons Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 Raffles Vier Jahreszeiten (Four Seasons Hotel)&lt;br /&gt;
 Neuer Jungfernstieg 9-14&lt;br /&gt;
 +49 (040) 34-94-0&lt;br /&gt;
 +49 (040) 34-94-2600 fax&lt;br /&gt;
 emailus.hvj@raffles.com&lt;br /&gt;
 &lt;br /&gt;
 The name &amp;quot;Four Seasons&amp;quot; speaks for itself.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category (view to the courtyard)&lt;br /&gt;
 Single Room: €155,00&lt;br /&gt;
 Double Room (single occupancy): €180,00&lt;br /&gt;
 Double Room (double occupancy): €205,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category (view to the Alster)&lt;br /&gt;
 Single Room: €220,00&lt;br /&gt;
 Double Room: €270,00&lt;br /&gt;
 &lt;br /&gt;
 These prices do not include breakfast, but do include all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Marriott Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Very near to the office is the:&lt;br /&gt;
 &lt;br /&gt;
 Marriott Hotel&lt;br /&gt;
 ABC-Straße 52&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 350-50&lt;br /&gt;
 &lt;br /&gt;
 Special Rates&lt;br /&gt;
 Standard Deluxe Single or Double Room: €146,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include a French buffet (coffee, tea, croissants, etc).&lt;br /&gt;
 &lt;br /&gt;
 This is a standard chain hotel, within two minutes&amp;#039; walk from the office.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
 &lt;br /&gt;
2) write a list of interested people&lt;br /&gt;
&lt;br /&gt;
 ericb&lt;br /&gt;
 pjanik&lt;br /&gt;
 obr&lt;br /&gt;
 fheckl&lt;br /&gt;
 tra&lt;br /&gt;
 &lt;br /&gt;
 [complete the list]&lt;br /&gt;
&lt;br /&gt;
4) Find money for travels, rooms and food&lt;br /&gt;
 &lt;br /&gt;
 By plane? &lt;br /&gt;
 come together by car?&lt;br /&gt;
 Note: I&amp;#039;ll propose the amount of money we need to Louis.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
7) Content&lt;br /&gt;
&lt;br /&gt;
 Common sessions / Workshops around native issues: &lt;br /&gt;
 &lt;br /&gt;
 - windowing (salinst*)&lt;br /&gt;
 - redrawing&lt;br /&gt;
 - fonts&lt;br /&gt;
 - controls&lt;br /&gt;
 - native printing&lt;br /&gt;
 - packaging&lt;br /&gt;
 ..etc (propose other)&lt;br /&gt;
&lt;br /&gt;
===Agenda (can be modified)===&lt;br /&gt;
&lt;br /&gt;
[FIXME] create an array ..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Saturday:&lt;br /&gt;
&lt;br /&gt;
- Common session from 12:00 to 15:00 &lt;br /&gt;
&lt;br /&gt;
- Workshops: From 16:00 to 19:00 &lt;br /&gt;
&lt;br /&gt;
[Saturday evening: some dinner in the city? ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sunday:&lt;br /&gt;
&lt;br /&gt;
- Workshops from 10:00 to 12:00&lt;br /&gt;
&lt;br /&gt;
- Conclusions from 13:00 to 14:00&lt;br /&gt;
&lt;br /&gt;
Time to return after ...&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;IRC Mac port meetings&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
This section has been moved to [[MacOSXPortMeetings]].&lt;br /&gt;
&lt;br /&gt;
==Description of the Native Port problem==&lt;br /&gt;
&lt;br /&gt;
=== How does OpenOffice.org work on Mac OS X? ===&lt;br /&gt;
&lt;br /&gt;
Currently, on Mac OS X, OpenOffice.org uses X11, as &amp;quot;client&amp;quot;: X11 is a graphical server, coming from Unix world, and able to run under Linux, *BSD, Solaris, Mac OS X.&lt;br /&gt;
&lt;br /&gt;
 - X11 is run as an application, managed like other Apple applications.&lt;br /&gt;
 - All unix like applications are managed by X11, and from Aqua environment, only X11 is seen as only one applicatiion, &lt;br /&gt;
  even if other Unix/Linux (e.g.) applications are runing.&lt;br /&gt;
&lt;br /&gt;
OpenOffice.org asks X11 to display a window, waits for X11 acknowledgment, and OpenOffice.org displays the window. All transactions use the network, locally or not. the same mechanism is used for everything to be displayed.&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Issues and known problems ===&lt;br /&gt;
&lt;br /&gt;
All events are managed by OpenOffice.org and X11, using the Xlib&lt;br /&gt;
&lt;br /&gt;
Only .ttf fonts type is currently available. Note: &amp;#039;&amp;#039;&amp;#039;system fonts are available &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The rendering is made by X11, not by Mac OS X rendering engine.&lt;br /&gt;
&lt;br /&gt;
X11 and all its clients are seen as one application only: drag and drop protocol does not work because of that (solution: Pasteboard Manager)&lt;br /&gt;
&lt;br /&gt;
==== Other links ====&lt;br /&gt;
&lt;br /&gt;
http://wiki.services.openoffice.org/wiki/List_of_OpenOffice.org_Mac_OS_X_issues_and_problems#&lt;br /&gt;
&lt;br /&gt;
http://wiki.services.openoffice.org/wiki/Printing_problems_with_OpenOffice.org_2.0_for_Mac_OS_X#Reporting_printing_problems&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== What do we have to do?==&lt;br /&gt;
&lt;br /&gt;
* Implement direct access to Apple graphical engine, using Apple API: Quartz2D/CoreGraphics (and replacing Xlib use)&lt;br /&gt;
&lt;br /&gt;
like: instantiate, manage events and threads for a graphical instance + all needed objects, drawing: manage all drawing cases&lt;br /&gt;
&lt;br /&gt;
* Implement native events management, using CarbonEventManager (replacing Xlib management)&lt;br /&gt;
&lt;br /&gt;
* Implement native font use, using Apple Type Server and ATSUI (for Unicode Imagery) (replacing X11 management)&lt;br /&gt;
&lt;br /&gt;
Work in progress: http://wiki.services.openoffice.org/wiki/Fonts_starting_point_and_documentation&lt;br /&gt;
&lt;br /&gt;
* Implement native sound, using QuickTime (replacing Java Media Framework): [[Mac OS X Porting - Native Audio and Video]]&lt;br /&gt;
&lt;br /&gt;
* Implement native Drag and drop, Implementing Pasteboard Manager: [[Mac OS X Porting - Native Drag and drop]]&lt;br /&gt;
&lt;br /&gt;
* Implement Native Filepicker&lt;br /&gt;
&lt;br /&gt;
* Implement Native Printing: current uses cups, but native printing is mandatory: [[Mac OS X Porting - Native_Printing]]&lt;br /&gt;
&lt;br /&gt;
* Implement Apple Spellchecker&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Where is located the code to be modified?&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Most of the changes are located in vcl (Visual Class Layer), for everything graphical, events, fonts, rendering and printing.&lt;br /&gt;
&lt;br /&gt;
Other, for sound and movies will be in avmedia (where the player is implemented in OpenOffice.org sources).&lt;br /&gt;
&lt;br /&gt;
For drag and drop, dtrans is concerned (Pasteboard Manager implementation)&lt;br /&gt;
&lt;br /&gt;
[FIXME]: Filepicker? Apple Spellchecker?&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;How will the new implementation be tested?==&lt;br /&gt;
&lt;br /&gt;
Currently, all openOffice.org code can be compiled without using the Xlib. but of course, a lot of features are missing,&lt;br /&gt;
&lt;br /&gt;
and the final package simply won&amp;#039;t work&lt;br /&gt;
&lt;br /&gt;
In vcl module&amp;quot;, a &amp;#039;&amp;#039;&amp;#039;toy&amp;#039;&amp;#039;&amp;#039; called svdem is built at buildtime. This binary is linked to libvcl* and so all new stuff can be tested.&lt;br /&gt;
&lt;br /&gt;
e.g. : draw anti-aliased lines works well. &lt;br /&gt;
&lt;br /&gt;
Everything implemented in aqua vcl code will be included in libvclplug_aqua, and svdem source code will contain a specific part to proceed tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;messagebox cleanup metadata&amp;quot; style=&amp;quot;border:1px solid blue;background-color:#B3FFF5;padding:7px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The magic is: when all needed features will work with svdem, it will work in the new version of OpenOffice.org !!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME]: add more complete list of features to implement and test.&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;Sort of documentation about VCL around Native Mac OS X port&amp;#039;&amp;#039;&amp;#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do we really need to understand how it works? ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vcl content:&lt;br /&gt;
&lt;br /&gt;
ls -laR | wc -l&lt;br /&gt;
  1750&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Uff 1750 files to analyse :-/&lt;br /&gt;
&lt;br /&gt;
Our purpose is to describe the vcl organisation. The content of vcl is so important, that at the begining, the content will looks a bit confused. e.g. class names ..etc have nothing to do, only description with words and sense, but this will need some time before we can understand everything.&lt;br /&gt;
&lt;br /&gt;
How analyse with more efficiency? After some months to anlalyse &amp;#039;&amp;#039;&amp;#039;&amp;quot;horizontaly&amp;quot;&amp;#039;&amp;#039;&amp;#039;, it appears that list all the content of a directory is not the solution. Of course, we learned a lot, but we now have to complete with &amp;#039;&amp;#039;&amp;#039;&amp;quot;orthogonal&amp;quot;&amp;#039;&amp;#039;&amp;#039; method (compared to the previous one). The first method wasn&amp;#039;t obviously not the good/best way to describe vcl.&lt;br /&gt;
 &lt;br /&gt;
[UPDATE] After some investigations, the use of Design patterns seems to be the most efficient approach to describe vcl. Will try to do so asap.&lt;br /&gt;
&lt;br /&gt;
[FIXME] a different approach (will ask confirmation to Philipp Lohman), could be a description of how it work in runtime. First define what an instance is, a frame, and what exactly is concerned by such &amp;quot;objects&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
With that, we can write a list of different objects all using the same scheme: empty boxes (means pure virtual methods and classes in generic libvvcl), really implemented in the specific part, and finally, the API &amp;quot;encapsulated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The most difficult is to see where the API is used. But for all the parts, this is the same.&lt;br /&gt;
&lt;br /&gt;
Finally, &amp;#039;&amp;#039;&amp;#039;what is important is the design of vcl&amp;#039;&amp;#039;&amp;#039;. Which &amp;#039;&amp;#039;&amp;#039;patterns&amp;#039;&amp;#039;&amp;#039; are used? What are the dependencies, how works the stack for the events, how works the scheduler, the timers too is very important, even fundamental for Aqua implementation. Will have a look at gsl mailing list, and other resources. Probably everything is already (randomly) written somewhere.&lt;br /&gt;
&lt;br /&gt;
=== VCL organisation ===&lt;br /&gt;
&lt;br /&gt;
Thank&amp;#039;s to Philipp Lohmann for this short, but precise description:&lt;br /&gt;
&lt;br /&gt;
Basically vcl is divided in the system dependent and the system independent part. The interface between these two is mostly the Sal interface (every interface name Sal*: SalInstance, SalFrame, SalGraphics, SalPrinter, etc.).&lt;br /&gt;
&lt;br /&gt;
SalInstance is a factory that can create all the other abstracted interfaces of the system dependent part. It also provides the main loop SalInstance::Yield()&lt;br /&gt;
&lt;br /&gt;
SalFrame abstracts any kind of system window.&lt;br /&gt;
&lt;br /&gt;
SalVirtualDevice abstracts an offscreen window (e.g. a Pixmap on X11)&lt;br /&gt;
&lt;br /&gt;
SalPrinter and SalInfoPrinter abstract the system print queues where SalInfoPrinter is for querying and SalPrinter for actual printing.&lt;br /&gt;
&lt;br /&gt;
SalGraphics is an interface produced by either SalFrame, SalVirtualDevice or SalPrinter which is used for actual drawing operations (text, bitmaps, vector graphics)&lt;br /&gt;
&lt;br /&gt;
SalSound is for sound playing.&lt;br /&gt;
&lt;br /&gt;
SalBitmap provides memory for bitmap graphics as well as methods converting this memory to a system handle (e.g. a Pixmap on X11).&lt;br /&gt;
&lt;br /&gt;
SalOpenGL provides OpenGL functionality if available.&lt;br /&gt;
&lt;br /&gt;
SalTimer is an interface for periodically triggering the event queue (to timer implementation).&lt;br /&gt;
&lt;br /&gt;
SalI18NImeStatus handles how the status window of an Input Method Editor (IME) should display (this is mainly X11 specific).&lt;br /&gt;
&lt;br /&gt;
SalSystem has some system specific methods that did not belong anywhere else:-)&lt;br /&gt;
&lt;br /&gt;
Of all these there interfaces is at least one implementation per system (Windows, X11 or Mac). The Unix implementation also has a plugin concept to allow for integration of different native toolkits (currently gtk and Qt) which became necessary for the implementation of Native Widget Framework (NWF) to display controls like their normal desktop counterparts.&lt;br /&gt;
&lt;br /&gt;
Basically the independent part (what is beneath vcl/source directory) has generic methods for drawing, window handling and stuff which it brings into a suitable form and then delegates to the system specific implementaion (located beneath vcl/win for Windows and vcl/unx for the X11 platforms).&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 16:12, 1 July 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
===Sub-directories description ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Organisation of vcl directories&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
&lt;br /&gt;
[[Image:aquavcl_organisation_complete_02.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Directories in vcl. Short description&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; aqua &amp;#039;&amp;#039;&amp;#039;: The name Aqua means Apple look and feel, and is well known as [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html Aqua Human Interface Guidelines]. This look and feel means Mac OS X. The work was begun by (probably) P. luby, Dan Williams Herbert Duerr (most of fonts stuff) and Ed Peterlin. Currently in ruin, this directory does contain a lot of ideas to investigate. The most important part of needed changes for native version (3.0) will be done inside aqua dir inc: does contain all vcl relative includes [PART1]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; prj &amp;#039;&amp;#039;&amp;#039;: Does contain build.lst and d.lst build.lst give us dependencies: probably a lot for vcl, build 98th module over ~148. Everything graphical depends in vcl. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; qa &amp;#039;&amp;#039;&amp;#039; does contain all quality assurancy stuff&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;source&amp;#039;&amp;#039;&amp;#039;: the most important:-) This directory contains common sources for all architectures and OS. Mainly: Windows, Unix: Linux , Mac OS X (X11), Solaris, including generic, kde and gtk plugins, and Aqua (Mac OS X without X11, work currently in progress). &lt;br /&gt;
&lt;br /&gt;
Depending on the OS and the architecture, binaries are built or not.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; test &amp;#039;&amp;#039;&amp;#039;: This directory does contain all the needed stuff for tests. As example, in qa/testdocuments, you&amp;#039;ll find three documents (one writer, one calc and one impress) for tests purpose. &lt;br /&gt;
Other available tests are about memcheck and persistent window state. &lt;br /&gt;
 &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; unx &amp;#039;&amp;#039;&amp;#039;: this directory does contain all unixes stuff. We have to understand what is inside to implement aqua port. For example, a lot of classes/strutures and objects use Xlib calls we have to replace with Carbon/Cocoa call (at least at first time) for Mac OS X native port.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; win &amp;#039;&amp;#039;&amp;#039;: Doing Mac OS X native port, I first believed this directory was not interesting for us, but I was wrong: OpenOffice.org roots are inside this directory, and a lot of comments and resources are inside. Mainly interesting if Carbon is used.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;workben&amp;#039;&amp;#039;&amp;#039;: Does contain a toy called &amp;quot;svdem&amp;quot;. svdem is a binary, used for new implementations. For example, actual aqua development uses svdem intensively, to verify all important properties we need: &lt;br /&gt;
&lt;br /&gt;
- display a window first (al least ...:)) &lt;br /&gt;
&lt;br /&gt;
- close cleanly this window&lt;br /&gt;
&lt;br /&gt;
- display a point&lt;br /&gt;
&lt;br /&gt;
- trace a line&lt;br /&gt;
&lt;br /&gt;
- trace an area &lt;br /&gt;
&lt;br /&gt;
- superpose two areas doing some important graphical operations, (like xor),&lt;br /&gt;
&lt;br /&gt;
- display a character&lt;br /&gt;
&lt;br /&gt;
- display a menu. &lt;br /&gt;
&lt;br /&gt;
- intercept events correctly.&lt;br /&gt;
&lt;br /&gt;
[FIXME] add more tests&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 13:21, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Naming convention ==&lt;br /&gt;
&lt;br /&gt;
* Class names start with upper case letters, to improve readability.&lt;br /&gt;
&lt;br /&gt;
* Implemented Class names are derived from the virtual classes but can of course take arbitrary names.&lt;br /&gt;
To increase readability, it&amp;#039;s recommended to closely follow the base class name.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Impl prefix: means Implementation details&amp;#039;&amp;#039;&amp;#039;. The concerned class or method or function is not used outside of this module, so no external code (or other libraries) can see it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[ Events types using Carbon API (Mac OS X): ]]&amp;#039;&amp;#039;&amp;#039; A lot of events have to be managed in runtime. Here is a short description&lt;br /&gt;
&lt;br /&gt;
- do not freeze because bad event loops&lt;br /&gt;
&lt;br /&gt;
- event types implementation: currently, they are defined in vcl/aqua/inc/aquavclevents.hxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apart: exact sense of hedabu? -&amp;gt; [FIXME] as far as I understood it: it is like &amp;quot;copy&amp;quot; to deliver software into the solver, with extra magic. The header files for example are manipulated so paths need not be exact. &amp;quot;headabu&amp;quot; is supposed to disappear little by little.&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;What do we have to build in vcl?&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Two libraries, corresponding ressources (localized) and a toy so called « svdem »&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Common part&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
in grey on right. The result will be a non architecture dependant library, built in all cases: for instance, libvcl680mxi.dylib on Mac Intel.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Specific part  &amp;quot; a plugin &amp;quot; &amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
Light yellow: aqua part will only concern Mac OS X (non X11) the name will probably be libvcl_aqua680mxi.dylib &lt;br /&gt;
&lt;br /&gt;
As you can see, win means windows part, in blue&lt;br /&gt;
&lt;br /&gt;
For Unix build (Linux, Solaris or current Mac OS X X11), in purple.&lt;br /&gt;
&lt;br /&gt;
Result will be:&lt;br /&gt;
&lt;br /&gt;
libvclplug_PLUGIN680mxi.DLLSUFFIX , where PLUGIN can be iether gen (generic) or gtk (using gtk+) or kde (using qt), and DLLSUFFIX can be either .so (linux) or .dylib (Mac OS X) ...etc (I&amp;#039;m not sure for other cases).&lt;br /&gt;
&lt;br /&gt;
Example: libvcl680mxi.dylib and libvclplug_aqua680mxi.dylib&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;In runtime&amp;#039;&amp;#039;&amp;#039;, libvclplug_aqua will be linked to libvcl680. the first one will contain the real implementation (respecting the API, e.g. Carbon) while the generic libvcl will only contain pure virtual methods ...etc like &amp;quot;empty boxes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Current Aqua content ===&lt;br /&gt;
&lt;br /&gt;
A more complete description of aqua (Mac OS X / no X11 specific): [[Image:Vcl_aqua_organisation_02_tree.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==EXISTING objects to build in aqua==&lt;br /&gt;
&lt;br /&gt;
===Sal APP &amp;quot;everything application&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
[FIXME] add all objects descriptions&lt;br /&gt;
&lt;br /&gt;
==== saldata ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Defined in plugin exclusively&amp;#039;&amp;#039;&amp;#039; (i.e. for headers)&lt;br /&gt;
&lt;br /&gt;
Unix: unx/source/app/saldata.cxx (header in unx/inc)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Aqua: aqua/source/app/saldata.cxx (header in win/inc)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Windows: win/source/app/saldata.cxx (header in aqua/inc)&lt;br /&gt;
&lt;br /&gt;
* Role: saldata contains various kind of data used by the implementation for the concerned platform. &amp;#039;&amp;#039;&amp;#039;It is a bunch of global data collections reserved for the platform&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
It is just completely platform dependent, and nobody except this plugin can see it.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Saldata is something like a &amp;quot;second sal&amp;quot;, but providing an abstraction regarding windowing and graphics&amp;#039;&amp;#039;&amp;#039;, while SAL module provides an abstraction more Operating System oriented) &lt;br /&gt;
&lt;br /&gt;
e.g. : have a look at XRequest array in vcl/unx/source/app/saldata.cxx =&amp;gt; all calls are for Xlib (X11).  Ok, useless there, but interesting:-)&lt;br /&gt;
&lt;br /&gt;
[FIXME]: use Windows implementation could be a good starting point. Nothing is the same, but the current aquavcl cws uses similar objects, and it works very correctly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
saldatax.cxx uses classes SalInstance, SalObject, SalFrame, SalVirtualDevice, SalPrinter and fontList.&lt;br /&gt;
&lt;br /&gt;
Current list of possible objects who can be instantiated/released:&lt;br /&gt;
&lt;br /&gt;
structure SalData: does contain pointers on all kind of objects from other classes used in saldata.&lt;br /&gt;
&lt;br /&gt;
inline functions: [FIXME]: complete the description&lt;br /&gt;
&lt;br /&gt;
- SetSalData:&lt;br /&gt;
- GetSalData:&lt;br /&gt;
- GetAppSalData:&lt;br /&gt;
&lt;br /&gt;
==== salinst ====&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; implemented in vcl/aqua/source/app/salinst.cxx&lt;br /&gt;
&lt;br /&gt;
Role: &lt;br /&gt;
&lt;br /&gt;
* get environment, mutexes, instantiate AquaSalInstance (Ctor, Dtor),&lt;br /&gt;
&lt;br /&gt;
* instantiates/releases a lot of other objects using Get() / CreateObject() / DestroyObject() methods.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current list of possible objects who can be instantiated/released:&lt;br /&gt;
&lt;br /&gt;
 * VirtualDevice [FIXME]: exact role?&lt;br /&gt;
&lt;br /&gt;
 *Printer  &lt;br /&gt;
&lt;br /&gt;
- GetDefaultPrinter/ CreatePrinter() / DestroyPrinter - what a name ;-) -&lt;br /&gt;
&lt;br /&gt;
- InfoPrinter (Get/Create/Delete)&lt;br /&gt;
&lt;br /&gt;
- PrinterQueue (DeletePrinterQueueInfo / GetPrinterQueueInfo / GetPrinterQueueState)&lt;br /&gt;
&lt;br /&gt;
 * System (Create / Delete) [FIXME]: what means system here?&lt;br /&gt;
&lt;br /&gt;
 * Events: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::SetEventCallback()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::SetErrorEvenCallback()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::GetConnectionIdentifier()&lt;br /&gt;
&lt;br /&gt;
 * Menu / MenuItem: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateMenu() / same for DestroyMenu()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateMenuItem / same DestroyMenuItem()&lt;br /&gt;
&lt;br /&gt;
 * Sound: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateSalSound()  =&amp;gt; object to a pointer of SalSound type&lt;br /&gt;
&lt;br /&gt;
Note: AquaSalInstance::DestroySalSound is not implemented (?)&lt;br /&gt;
&lt;br /&gt;
 * Timer: CreateTimer() /&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance:: DestroyTimer() is not yet implemented (?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Class MacImeStatus: inherits of SalI18NImeStatus&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; only there to see if there is a window to toggle into menubar [FIXME]??&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateI18NImeStatus(): instantiates MacImeStatus&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;For futher informations, see: &amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;[[Content of salinst.cxx]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
([[User:Ericb|Ericb]] 16:11, 20 May 2006 (CEST) )&lt;br /&gt;
&lt;br /&gt;
==== salmain ====&lt;br /&gt;
&lt;br /&gt;
Role: if possible, runs the standard vcl application code SVMain()&lt;br /&gt;
&lt;br /&gt;
([[User:Ericb|Ericb]] 16:15, 20 May 2006 (CEST))&lt;br /&gt;
&lt;br /&gt;
==== salsound ====&lt;br /&gt;
&lt;br /&gt;
==== salsys ====&lt;br /&gt;
&lt;br /&gt;
==== saltimer ====&lt;br /&gt;
&lt;br /&gt;
=== Sal GDI (everything Graphical Display Interface) ===&lt;br /&gt;
&lt;br /&gt;
====salgdinativewidgets====&lt;br /&gt;
&lt;br /&gt;
[[native controls]]&lt;br /&gt;
&lt;br /&gt;
==== salatslayout ====&lt;br /&gt;
&lt;br /&gt;
==== salatsuiutils ====&lt;br /&gt;
&lt;br /&gt;
==== salfontutils ====&lt;br /&gt;
&lt;br /&gt;
==== salmathutils ====&lt;br /&gt;
&lt;br /&gt;
==== sal bmp ====&lt;br /&gt;
&lt;br /&gt;
==== salvd ====&lt;br /&gt;
&lt;br /&gt;
==== salframe ====&lt;br /&gt;
&lt;br /&gt;
==== salpixmaputils====&lt;br /&gt;
&lt;br /&gt;
==== salprn ====&lt;br /&gt;
&lt;br /&gt;
====salrectangle====&lt;br /&gt;
&lt;br /&gt;
==== salvd ====&lt;br /&gt;
&lt;br /&gt;
=== Sal Window===&lt;br /&gt;
&lt;br /&gt;
==== salframe ====&lt;br /&gt;
&lt;br /&gt;
====salobj====&lt;br /&gt;
&lt;br /&gt;
== TO BE IMPLEMENTED (missing in Aqua)==&lt;br /&gt;
&lt;br /&gt;
===Audio===&lt;br /&gt;
&lt;br /&gt;
====audioconvert====&lt;br /&gt;
 (obsolete?) &lt;br /&gt;
&lt;br /&gt;
====devaudio====&lt;br /&gt;
(obsolete?)&lt;br /&gt;
&lt;br /&gt;
====native sound====&lt;br /&gt;
&lt;br /&gt;
====salimpsound====&lt;br /&gt;
&lt;br /&gt;
====vsound====&lt;br /&gt;
&lt;br /&gt;
===i18n===&lt;br /&gt;
&lt;br /&gt;
===keysymnames===&lt;br /&gt;
&lt;br /&gt;
===saldisp===&lt;br /&gt;
&lt;br /&gt;
===sm===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME]: is session manager usefull?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is used for Linux, Windows, Mac OS X ...build ? ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Description of the dependencies]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Windows]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[MacOS X]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Linux]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Solaris]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Content of Aqua ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Click here to see the complete list]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Content of vcl/inc&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
1) Where to find includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;foo/bar.hxx&amp;gt; means you can find bar.hxx in the foo module. The new style file is foo/inc/foo/bar.hxx, old style is foo/inc/bar.hxx and sometimes the file is somewhere else in the tree or generated. The deliver process copies/generates the file into solver at solver/680/build_type/inc/foo. Good for fixing broken builds. ;-)&lt;br /&gt;
&lt;br /&gt;
2) &lt;br /&gt;
suffix .h (for C calls or first version?) or .hxx (C++) &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A) Family of includes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looking more closely at the list brings to the fore (expression from dictionary ;-) ) that include names are&lt;br /&gt;
informatives. Most of the time, the name gives the function/role.&lt;br /&gt;
What is interesting is the files with name begining with &amp;quot;sal&amp;quot;. sal means System Abstraction Layer + include&amp;#039;s function (or explicit name). &lt;br /&gt;
&lt;br /&gt;
Partial list, for example:&lt;br /&gt;
&lt;br /&gt;
salatype.hxx&lt;br /&gt;
&lt;br /&gt;
salbmp.hxx&lt;br /&gt;
&lt;br /&gt;
salctrlhandle.hxx&lt;br /&gt;
&lt;br /&gt;
salctype.hxx&lt;br /&gt;
&lt;br /&gt;
salframe.hxx&lt;br /&gt;
&lt;br /&gt;
salgdi.hxx&lt;br /&gt;
&lt;br /&gt;
salgeom.hxx&lt;br /&gt;
&lt;br /&gt;
sallayout.hxx (main header for fonts services)&lt;br /&gt;
...&lt;br /&gt;
salmenu&lt;br /&gt;
salnativewidgets&lt;br /&gt;
...etc&lt;br /&gt;
&lt;br /&gt;
Other important families are &amp;quot;sv&amp;quot; and &amp;quot;uno&amp;quot; or &amp;quot;win&amp;quot; (window) prefixed. sal family will be analysed apart.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B) Includes of includes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Some includes are more important than other. To prove this, just have a look is sufficient: some are always needed, and some more rarely.&lt;br /&gt;
&lt;br /&gt;
To verify, a simple test to do in vcl/inc:&lt;br /&gt;
&lt;br /&gt;
egrep -H &amp;quot;#include&amp;quot; ./* | wc -l  gives me 681 lines ! And some of them are the same...&lt;br /&gt;
&lt;br /&gt;
To know more, the precedent command line can be modified to make appear the numerous call &lt;br /&gt;
to the same includes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
egrep -H &amp;quot;#include&amp;quot; ./* | cut -d&amp;quot;#&amp;quot; -f2 | sort &amp;gt; liste.txt&lt;br /&gt;
&lt;br /&gt;
The content of liste.txt is explicit: dllapi.h, sv.h and some other are very important, while some other includes are only one or two times used. We can see too that vos includes are numerous, even if vos is deprecated**&lt;br /&gt;
&lt;br /&gt;
 **see http://wiki.services.openoffice.org/wiki/Source_code_directories&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;m nearly sure that a complete analysis of just this result will give us a lot of information.&lt;br /&gt;
&lt;br /&gt;
I propose to change the order of analysis starting with dllapi.h and sv.h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[to be continued]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B1) &amp;quot;sal&amp;quot; includes family&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[salinst.hxx]] This seems to be the main include file&lt;br /&gt;
&lt;br /&gt;
[[salatype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salctrlhandle.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salctype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salframe.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salgdi.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salgeom.hxx]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[ sallayout.hxx ]]&amp;#039;&amp;#039;&amp;#039; &amp;lt;-- see Native Fonts implementation&lt;br /&gt;
&lt;br /&gt;
[[salgtype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[vcl/inc/salobj.hxx]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B2) Classicals includes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
file: abstdlg.hxx [ means abstract dialog ]&lt;br /&gt;
&lt;br /&gt;
This includes does contain the following classes definitions:&lt;br /&gt;
&lt;br /&gt;
[FIXME] : choose a precise presentation template for classes &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VclAbstractDialog,&lt;br /&gt;
&lt;br /&gt;
VclAbstractTerminateDialog, &lt;br /&gt;
&lt;br /&gt;
VclAbstractRefreshableDialog,&lt;br /&gt;
 &lt;br /&gt;
VclAbstractDialogFactory, &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
uses &amp;lt;tools/solar.h&amp;gt; , &amp;lt;tools/string.hxx&amp;gt; + &lt;br /&gt;
&lt;br /&gt;
&amp;quot;dllapi.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note : dllapi.h is very interesting because when we have to find (for example) a library suffix, SAL_DLLEXTENSSION can replace all suffixes (every OS&amp;#039;s and archs). Just including sal/config.h does it ! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
Window -&amp;gt; what? [FIXME]&lt;br /&gt;
ResId -&amp;gt; what?&lt;br /&gt;
&lt;br /&gt;
Does contain the prototype of VclAbstractDialog, inherit of VCL_DLLPUBLIC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file: dllapi.h [ dll for dynamic linked library ]&lt;br /&gt;
Uses: &amp;lt;sal/config.h&amp;gt; and &amp;gt;sal/types/h&amp;gt;&lt;br /&gt;
includes: VCL_DLLPUBLIC macro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file: accel.h [ means accelerator ]&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
Accelerator &lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
ImplAccelEntry &lt;br /&gt;
{&lt;br /&gt;
public members: &lt;br /&gt;
&lt;br /&gt;
Names&lt;br /&gt;
&lt;br /&gt;
mnId&lt;br /&gt;
maKeyCode&lt;br /&gt;
mpAccel&lt;br /&gt;
mpAutoAccel&lt;br /&gt;
mbEnabled&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function / returns / parameters&lt;br /&gt;
&lt;br /&gt;
ImplGetKeyCode / void / KeyFuncType eFunc, ref rCode1 , ref rCode2, ref rCode3&lt;br /&gt;
&lt;br /&gt;
file: accel.hxx &lt;br /&gt;
&lt;br /&gt;
Uses: &amp;lt;sv.h&amp;gt; , &amp;quot;dllapi.h&amp;quot; ,&amp;lt;tools/resid.hxx&amp;gt;, &amp;lt;&amp;lt;tools/rc.hxx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
ImplAccelData;&lt;br /&gt;
ImplAccelEntry;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Important Links ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Progressive implementation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Font server Implementation&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;[[Fonts starting point and documentation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Sound Implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native Audio and Video]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Printing Implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native_Printing]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Drag and Drop implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native Drag and drop]]&lt;br /&gt;
&lt;br /&gt;
This work is part of http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s&lt;br /&gt;
&lt;br /&gt;
[to be continued:-) ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Ericb|Ericb]] 15:00, 22 Jul 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Aqua]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Ericb&amp;diff=17828</id>
		<title>User:Ericb</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Ericb&amp;diff=17828"/>
		<updated>2006-10-02T06:37:57Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* What? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Public Documentation License Notice==&lt;br /&gt;
&lt;br /&gt;
The contents of this Documentation (excepted Native Port Roadmap),are subject to the Public Documentation License Version 1.0 (the &amp;quot;License&amp;quot;); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at http://www.openoffice.org/licenses/PDL.html.&lt;br /&gt;
The Original Documentation is &amp;quot;Mac OS X native port&amp;quot;. The Initial Writer of the Original Documentation is (JCA) Eric Bachard (C) 2005-2006. All Rights Reserved. (Initial Writer contact(s): ericb@openoffice.org.)&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Mac OS X Native port&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;messagebox cleanup metadata&amp;quot; style=&amp;quot;border:1px solid blue;background-color:#B3FFF5;padding:7px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The first Mac OS X native port objective is make OpenOffice.org run without X11 use, to make it a real Mac application.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The second one is respect Aqua Human interface Guidelines&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; This is a long term work, and every help and/or contributions, like donations** are welcome.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 **see http://contributing.openoffice.org/index.html&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Native Port Roadmap&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;2006&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
* June 2006: work in progress &lt;br /&gt;
&lt;br /&gt;
- Basis: frame, instances, threads, drawing, painting, resizing (Stephan Schaefer, Tino Rachui)&lt;br /&gt;
&lt;br /&gt;
 Done: &lt;br /&gt;
 implement threads&lt;br /&gt;
 create, manage instance&lt;br /&gt;
 create, manage windows (including parents)&lt;br /&gt;
 create, manage events&lt;br /&gt;
 create manage drawing, resizing&lt;br /&gt;
 create, add menus (Pavel Janik)&lt;br /&gt;
 toggle window fullscreen (Pierre de Filippis)&lt;br /&gt;
 make font server work (Stephan Schaefer)&lt;br /&gt;
&lt;br /&gt;
* Current status font support (Stephan Schaefer, 2006/07/28): the following features are basically working now&lt;br /&gt;
** font selection&lt;br /&gt;
** font size&lt;br /&gt;
** simple font attributes (bold, italic)&lt;br /&gt;
&lt;br /&gt;
 Next step: document first part, and propose design&lt;br /&gt;
&lt;br /&gt;
- native filepicker (Oliver Braun)&lt;br /&gt;
&lt;br /&gt;
- native printing implementation (Oliver?)&lt;br /&gt;
&lt;br /&gt;
- native font implementation (Eric Bachard)&lt;br /&gt;
&lt;br /&gt;
* September 2006: &lt;br /&gt;
&lt;br /&gt;
- first proofs of concept: fonts, filepicker .. (more?)&lt;br /&gt;
- show the results (OOoCon 2006?)&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;2007&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
* January 2007: first alpha implementation&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Strategy for native port&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Possible Actions&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
Identify us:&lt;br /&gt;
&lt;br /&gt;
#Complete the arrays below&lt;br /&gt;
#Update photos on frapr.com?&lt;br /&gt;
&lt;br /&gt;
Share the work:&lt;br /&gt;
&lt;br /&gt;
#Divide the work between little Teams&lt;br /&gt;
#Update Todo list regularly -&amp;gt; needs some love these days ... [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s]&lt;br /&gt;
&lt;br /&gt;
Help:&lt;br /&gt;
&lt;br /&gt;
#Teach tools between us&lt;br /&gt;
#Do a debug party on IRC&lt;br /&gt;
#write documentation&lt;br /&gt;
&lt;br /&gt;
Meet us:&lt;br /&gt;
&lt;br /&gt;
#IRC&lt;br /&gt;
#Mac Meeting (like nov2005 in Hamburg?)&lt;br /&gt;
&lt;br /&gt;
Inform:&lt;br /&gt;
&lt;br /&gt;
#Update website regularly&lt;br /&gt;
#Blogs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHO&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Mac Team:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
|Developer \ skills || build || write code || code review || debug/trace (higher is better) || contribute to documentation ||&lt;br /&gt;
|-&lt;br /&gt;
|ericb|| x || x || || 1 || x ||&lt;br /&gt;
|-&lt;br /&gt;
|pjanik|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|ssa|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|maho|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|tinor|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|schmidtm|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|ebischoff|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|obr|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|cl|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|aliscafo|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|fheckl|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Fridrich|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Other resources&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
fonts: ?&lt;br /&gt;
&lt;br /&gt;
events: ?&lt;br /&gt;
&lt;br /&gt;
QA: ?&lt;br /&gt;
&lt;br /&gt;
graphical: ?&lt;br /&gt;
&lt;br /&gt;
Communication: ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHAT&amp;#039;&amp;#039;&amp;#039;: Status of most important tasks&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Task || Names|| Urgency (1=higher)|| Work in Progress || Done || Code review || Debug || Integration || &lt;br /&gt;
|-&lt;br /&gt;
|Get rid of X11|| || 1 || x || x || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Bundle|| || 1 || x || || || || | ||&lt;br /&gt;
|-&lt;br /&gt;
|Drawing|| || 1 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Fonts|| || 1 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Events management|| || 2 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Controls (see list) ||ericb, aliscafo || 2 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native FilePicker|| || 3 || x || x || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native Printing|| || 3 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native SpellChecker|| || 4 || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Player|| || 4 || x || || || || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other tasks:&lt;br /&gt;
&lt;br /&gt;
Help for writing bug lists, status of bugs ..etc&lt;br /&gt;
&lt;br /&gt;
Write howto use gdb, leaks, other tools&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHEN&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
From Christian Lippka (last meeting, 25th of august 2006): &lt;br /&gt;
 Aug 26 00:21:38 ChristianL&lt;br /&gt;
 from my point of view what is missing for point 1:&lt;br /&gt;
 text layout, complete font support, keyboard support,&lt;br /&gt;
 fixing repaint issues, having aqua install and run out of the box&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;September 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Present the current state of the project at the 2006 OpenOffice conference in Lyon and Paris&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Late 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
fix OpenOffice.org launch&lt;br /&gt;
fix drawing (repainting)&lt;br /&gt;
Implement missing methods and fix most important bugs (mainly the one leading to crash) in:&lt;br /&gt;
ATS&lt;br /&gt;
Salgraphics&lt;br /&gt;
Salinstance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;January or February 2007&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
make Java work (works partially)&lt;br /&gt;
make intensive debug&lt;br /&gt;
present something working as alpha&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;June 2007	&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Implementation of:&lt;br /&gt;
native filepicker&lt;br /&gt;
native printing&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;2nd Mac porters meeting&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
=== When? ===&lt;br /&gt;
&lt;br /&gt;
2nd and 3rd of December or 9th and 10th of December&lt;br /&gt;
&lt;br /&gt;
=== Where? ===&lt;br /&gt;
&lt;br /&gt;
 Google Hamburg&lt;br /&gt;
 ABC-Strasse 19&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 Germany&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;How to get there&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Airport: HAM&lt;br /&gt;
 There is a bus connection from the airport. A taxi costs about 10 euros in one direction.&lt;br /&gt;
&lt;br /&gt;
=== What? ===&lt;br /&gt;
&lt;br /&gt;
A fun weekend of hacking! Google will provide the following facilities on-site:&lt;br /&gt;
&lt;br /&gt;
* A conference room for the common sessions (40+ people)&lt;br /&gt;
* a few smaller rooms for hacking workshops&lt;br /&gt;
* 4 G5 workstations for the workshops &amp;#039;&amp;#039;&amp;#039;(PENDING)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Lunch on Saturday and Sunday &amp;#039;&amp;#039;&amp;#039;(PENDING)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
PENDING means this has been authorized but we are still working out the practical details.&lt;br /&gt;
&lt;br /&gt;
=== Where to stay ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB: Rates might not be accurate&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Side Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 Side Hotel&lt;br /&gt;
 Drehbahn 49&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 30-99-90&lt;br /&gt;
 +49 (040) 30-99-93-99 fax&lt;br /&gt;
 info@side-hamburg.de&lt;br /&gt;
 reservation@side-hamburg.de&lt;br /&gt;
 &lt;br /&gt;
 This is a very nice, modern hotel within seven minutes&amp;#039; walk from the office.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category&lt;br /&gt;
 Single Room: €135,00&lt;br /&gt;
 Double Room: €160,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category&lt;br /&gt;
 Single Room: €150,00&lt;br /&gt;
 Double Room: €175,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include breakfast, and all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Four Seasons Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 Raffles Vier Jahreszeiten (Four Seasons Hotel)&lt;br /&gt;
 Neuer Jungfernstieg 9-14&lt;br /&gt;
 +49 (040) 34-94-0&lt;br /&gt;
 +49 (040) 34-94-2600 fax&lt;br /&gt;
 emailus.hvj@raffles.com&lt;br /&gt;
 &lt;br /&gt;
 The name &amp;quot;Four Seasons&amp;quot; speaks for itself.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category (view to the courtyard)&lt;br /&gt;
 Single Room: €155,00&lt;br /&gt;
 Double Room (single occupancy): €180,00&lt;br /&gt;
 Double Room (double occupancy): €205,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category (view to the Alster)&lt;br /&gt;
 Single Room: €220,00&lt;br /&gt;
 Double Room: €270,00&lt;br /&gt;
 &lt;br /&gt;
 These prices do not include breakfast, but do include all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Marriott Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Very near to the office is the:&lt;br /&gt;
 &lt;br /&gt;
 Marriott Hotel&lt;br /&gt;
 ABC-Straße 52&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 350-50&lt;br /&gt;
 &lt;br /&gt;
 Special Rates&lt;br /&gt;
 Standard Deluxe Single or Double Room: €146,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include a French buffet (coffee, tea, croissants, etc).&lt;br /&gt;
 &lt;br /&gt;
 This is a standard chain hotel, within two minutes&amp;#039; walk from the office.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
 &lt;br /&gt;
2) write a list of interested people&lt;br /&gt;
&lt;br /&gt;
 ericb&lt;br /&gt;
 pjanik&lt;br /&gt;
 obr&lt;br /&gt;
 fheckl&lt;br /&gt;
 tra&lt;br /&gt;
 &lt;br /&gt;
 [complete the list]&lt;br /&gt;
&lt;br /&gt;
3) define needed resources &lt;br /&gt;
&lt;br /&gt;
 Food?&lt;br /&gt;
&lt;br /&gt;
4) Find money for travels, rooms and food&lt;br /&gt;
 &lt;br /&gt;
 By plane? &lt;br /&gt;
 come together by car?&lt;br /&gt;
 Note: I&amp;#039;ll propose the amount of money we need to Louis.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
7) Content&lt;br /&gt;
&lt;br /&gt;
 Common sessions / Workshops around native issues: &lt;br /&gt;
 &lt;br /&gt;
 - windowing (salinst*)&lt;br /&gt;
 - redrawing&lt;br /&gt;
 - fonts&lt;br /&gt;
 - controls&lt;br /&gt;
 - native printing&lt;br /&gt;
 - packaging&lt;br /&gt;
 ..etc (propose other)&lt;br /&gt;
&lt;br /&gt;
===Agenda (can be modified)===&lt;br /&gt;
&lt;br /&gt;
[FIXME] create an array ..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Saturday:&lt;br /&gt;
&lt;br /&gt;
- Common session from 12:00 to 15:00 &lt;br /&gt;
&lt;br /&gt;
- Workshops: From 16:00 to 19:00 &lt;br /&gt;
&lt;br /&gt;
[Saturday evening: some dinner in the city? ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sunday:&lt;br /&gt;
&lt;br /&gt;
- Workshops from 10:00 to 12:00&lt;br /&gt;
&lt;br /&gt;
- Conclusions from 13:00 to 14:00&lt;br /&gt;
&lt;br /&gt;
Time to return after ...&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;IRC Mac port meetings&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
This section has been moved to [[MacOSXPortMeetings]].&lt;br /&gt;
&lt;br /&gt;
==Description of the Native Port problem==&lt;br /&gt;
&lt;br /&gt;
=== How does OpenOffice.org work on Mac OS X? ===&lt;br /&gt;
&lt;br /&gt;
Currently, on Mac OS X, OpenOffice.org uses X11, as &amp;quot;client&amp;quot;: X11 is a graphical server, coming from Unix world, and able to run under Linux, *BSD, Solaris, Mac OS X.&lt;br /&gt;
&lt;br /&gt;
 - X11 is run as an application, managed like other Apple applications.&lt;br /&gt;
 - All unix like applications are managed by X11, and from Aqua environment, only X11 is seen as only one applicatiion, &lt;br /&gt;
  even if other Unix/Linux (e.g.) applications are runing.&lt;br /&gt;
&lt;br /&gt;
OpenOffice.org asks X11 to display a window, waits for X11 acknowledgment, and OpenOffice.org displays the window. All transactions use the network, locally or not. the same mechanism is used for everything to be displayed.&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Issues and known problems ===&lt;br /&gt;
&lt;br /&gt;
All events are managed by OpenOffice.org and X11, using the Xlib&lt;br /&gt;
&lt;br /&gt;
Only .ttf fonts type is currently available. Note: &amp;#039;&amp;#039;&amp;#039;system fonts are available &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The rendering is made by X11, not by Mac OS X rendering engine.&lt;br /&gt;
&lt;br /&gt;
X11 and all its clients are seen as one application only: drag and drop protocol does not work because of that (solution: Pasteboard Manager)&lt;br /&gt;
&lt;br /&gt;
==== Other links ====&lt;br /&gt;
&lt;br /&gt;
http://wiki.services.openoffice.org/wiki/List_of_OpenOffice.org_Mac_OS_X_issues_and_problems#&lt;br /&gt;
&lt;br /&gt;
http://wiki.services.openoffice.org/wiki/Printing_problems_with_OpenOffice.org_2.0_for_Mac_OS_X#Reporting_printing_problems&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== What do we have to do?==&lt;br /&gt;
&lt;br /&gt;
* Implement direct access to Apple graphical engine, using Apple API: Quartz2D/CoreGraphics (and replacing Xlib use)&lt;br /&gt;
&lt;br /&gt;
like: instantiate, manage events and threads for a graphical instance + all needed objects, drawing: manage all drawing cases&lt;br /&gt;
&lt;br /&gt;
* Implement native events management, using CarbonEventManager (replacing Xlib management)&lt;br /&gt;
&lt;br /&gt;
* Implement native font use, using Apple Type Server and ATSUI (for Unicode Imagery) (replacing X11 management)&lt;br /&gt;
&lt;br /&gt;
Work in progress: http://wiki.services.openoffice.org/wiki/Fonts_starting_point_and_documentation&lt;br /&gt;
&lt;br /&gt;
* Implement native sound, using QuickTime (replacing Java Media Framework): [[Mac OS X Porting - Native Audio and Video]]&lt;br /&gt;
&lt;br /&gt;
* Implement native Drag and drop, Implementing Pasteboard Manager: [[Mac OS X Porting - Native Drag and drop]]&lt;br /&gt;
&lt;br /&gt;
* Implement Native Filepicker&lt;br /&gt;
&lt;br /&gt;
* Implement Native Printing: current uses cups, but native printing is mandatory: [[Mac OS X Porting - Native_Printing]]&lt;br /&gt;
&lt;br /&gt;
* Implement Apple Spellchecker&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Where is located the code to be modified?&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Most of the changes are located in vcl (Visual Class Layer), for everything graphical, events, fonts, rendering and printing.&lt;br /&gt;
&lt;br /&gt;
Other, for sound and movies will be in avmedia (where the player is implemented in OpenOffice.org sources).&lt;br /&gt;
&lt;br /&gt;
For drag and drop, dtrans is concerned (Pasteboard Manager implementation)&lt;br /&gt;
&lt;br /&gt;
[FIXME]: Filepicker? Apple Spellchecker?&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;How will the new implementation be tested?==&lt;br /&gt;
&lt;br /&gt;
Currently, all openOffice.org code can be compiled without using the Xlib. but of course, a lot of features are missing,&lt;br /&gt;
&lt;br /&gt;
and the final package simply won&amp;#039;t work&lt;br /&gt;
&lt;br /&gt;
In vcl module&amp;quot;, a &amp;#039;&amp;#039;&amp;#039;toy&amp;#039;&amp;#039;&amp;#039; called svdem is built at buildtime. This binary is linked to libvcl* and so all new stuff can be tested.&lt;br /&gt;
&lt;br /&gt;
e.g. : draw anti-aliased lines works well. &lt;br /&gt;
&lt;br /&gt;
Everything implemented in aqua vcl code will be included in libvclplug_aqua, and svdem source code will contain a specific part to proceed tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;messagebox cleanup metadata&amp;quot; style=&amp;quot;border:1px solid blue;background-color:#B3FFF5;padding:7px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The magic is: when all needed features will work with svdem, it will work in the new version of OpenOffice.org !!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME]: add more complete list of features to implement and test.&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;Sort of documentation about VCL around Native Mac OS X port&amp;#039;&amp;#039;&amp;#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do we really need to understand how it works? ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vcl content:&lt;br /&gt;
&lt;br /&gt;
ls -laR | wc -l&lt;br /&gt;
  1750&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Uff 1750 files to analyse :-/&lt;br /&gt;
&lt;br /&gt;
Our purpose is to describe the vcl organisation. The content of vcl is so important, that at the begining, the content will looks a bit confused. e.g. class names ..etc have nothing to do, only description with words and sense, but this will need some time before we can understand everything.&lt;br /&gt;
&lt;br /&gt;
How analyse with more efficiency? After some months to anlalyse &amp;#039;&amp;#039;&amp;#039;&amp;quot;horizontaly&amp;quot;&amp;#039;&amp;#039;&amp;#039;, it appears that list all the content of a directory is not the solution. Of course, we learned a lot, but we now have to complete with &amp;#039;&amp;#039;&amp;#039;&amp;quot;orthogonal&amp;quot;&amp;#039;&amp;#039;&amp;#039; method (compared to the previous one). The first method wasn&amp;#039;t obviously not the good/best way to describe vcl.&lt;br /&gt;
 &lt;br /&gt;
[UPDATE] After some investigations, the use of Design patterns seems to be the most efficient approach to describe vcl. Will try to do so asap.&lt;br /&gt;
&lt;br /&gt;
[FIXME] a different approach (will ask confirmation to Philipp Lohman), could be a description of how it work in runtime. First define what an instance is, a frame, and what exactly is concerned by such &amp;quot;objects&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
With that, we can write a list of different objects all using the same scheme: empty boxes (means pure virtual methods and classes in generic libvvcl), really implemented in the specific part, and finally, the API &amp;quot;encapsulated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The most difficult is to see where the API is used. But for all the parts, this is the same.&lt;br /&gt;
&lt;br /&gt;
Finally, &amp;#039;&amp;#039;&amp;#039;what is important is the design of vcl&amp;#039;&amp;#039;&amp;#039;. Which &amp;#039;&amp;#039;&amp;#039;patterns&amp;#039;&amp;#039;&amp;#039; are used? What are the dependencies, how works the stack for the events, how works the scheduler, the timers too is very important, even fundamental for Aqua implementation. Will have a look at gsl mailing list, and other resources. Probably everything is already (randomly) written somewhere.&lt;br /&gt;
&lt;br /&gt;
=== VCL organisation ===&lt;br /&gt;
&lt;br /&gt;
Thank&amp;#039;s to Philipp Lohmann for this short, but precise description:&lt;br /&gt;
&lt;br /&gt;
Basically vcl is divided in the system dependent and the system independent part. The interface between these two is mostly the Sal interface (every interface name Sal*: SalInstance, SalFrame, SalGraphics, SalPrinter, etc.).&lt;br /&gt;
&lt;br /&gt;
SalInstance is a factory that can create all the other abstracted interfaces of the system dependent part. It also provides the main loop SalInstance::Yield()&lt;br /&gt;
&lt;br /&gt;
SalFrame abstracts any kind of system window.&lt;br /&gt;
&lt;br /&gt;
SalVirtualDevice abstracts an offscreen window (e.g. a Pixmap on X11)&lt;br /&gt;
&lt;br /&gt;
SalPrinter and SalInfoPrinter abstract the system print queues where SalInfoPrinter is for querying and SalPrinter for actual printing.&lt;br /&gt;
&lt;br /&gt;
SalGraphics is an interface produced by either SalFrame, SalVirtualDevice or SalPrinter which is used for actual drawing operations (text, bitmaps, vector graphics)&lt;br /&gt;
&lt;br /&gt;
SalSound is for sound playing.&lt;br /&gt;
&lt;br /&gt;
SalBitmap provides memory for bitmap graphics as well as methods converting this memory to a system handle (e.g. a Pixmap on X11).&lt;br /&gt;
&lt;br /&gt;
SalOpenGL provides OpenGL functionality if available.&lt;br /&gt;
&lt;br /&gt;
SalTimer is an interface for periodically triggering the event queue (to timer implementation).&lt;br /&gt;
&lt;br /&gt;
SalI18NImeStatus handles how the status window of an Input Method Editor (IME) should display (this is mainly X11 specific).&lt;br /&gt;
&lt;br /&gt;
SalSystem has some system specific methods that did not belong anywhere else:-)&lt;br /&gt;
&lt;br /&gt;
Of all these there interfaces is at least one implementation per system (Windows, X11 or Mac). The Unix implementation also has a plugin concept to allow for integration of different native toolkits (currently gtk and Qt) which became necessary for the implementation of Native Widget Framework (NWF) to display controls like their normal desktop counterparts.&lt;br /&gt;
&lt;br /&gt;
Basically the independent part (what is beneath vcl/source directory) has generic methods for drawing, window handling and stuff which it brings into a suitable form and then delegates to the system specific implementaion (located beneath vcl/win for Windows and vcl/unx for the X11 platforms).&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 16:12, 1 July 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
===Sub-directories description ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Organisation of vcl directories&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
&lt;br /&gt;
[[Image:aquavcl_organisation_complete_02.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Directories in vcl. Short description&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; aqua &amp;#039;&amp;#039;&amp;#039;: The name Aqua means Apple look and feel, and is well known as [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html Aqua Human Interface Guidelines]. This look and feel means Mac OS X. The work was begun by (probably) P. luby, Dan Williams Herbert Duerr (most of fonts stuff) and Ed Peterlin. Currently in ruin, this directory does contain a lot of ideas to investigate. The most important part of needed changes for native version (3.0) will be done inside aqua dir inc: does contain all vcl relative includes [PART1]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; prj &amp;#039;&amp;#039;&amp;#039;: Does contain build.lst and d.lst build.lst give us dependencies: probably a lot for vcl, build 98th module over ~148. Everything graphical depends in vcl. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; qa &amp;#039;&amp;#039;&amp;#039; does contain all quality assurancy stuff&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;source&amp;#039;&amp;#039;&amp;#039;: the most important:-) This directory contains common sources for all architectures and OS. Mainly: Windows, Unix: Linux , Mac OS X (X11), Solaris, including generic, kde and gtk plugins, and Aqua (Mac OS X without X11, work currently in progress). &lt;br /&gt;
&lt;br /&gt;
Depending on the OS and the architecture, binaries are built or not.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; test &amp;#039;&amp;#039;&amp;#039;: This directory does contain all the needed stuff for tests. As example, in qa/testdocuments, you&amp;#039;ll find three documents (one writer, one calc and one impress) for tests purpose. &lt;br /&gt;
Other available tests are about memcheck and persistent window state. &lt;br /&gt;
 &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; unx &amp;#039;&amp;#039;&amp;#039;: this directory does contain all unixes stuff. We have to understand what is inside to implement aqua port. For example, a lot of classes/strutures and objects use Xlib calls we have to replace with Carbon/Cocoa call (at least at first time) for Mac OS X native port.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; win &amp;#039;&amp;#039;&amp;#039;: Doing Mac OS X native port, I first believed this directory was not interesting for us, but I was wrong: OpenOffice.org roots are inside this directory, and a lot of comments and resources are inside. Mainly interesting if Carbon is used.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;workben&amp;#039;&amp;#039;&amp;#039;: Does contain a toy called &amp;quot;svdem&amp;quot;. svdem is a binary, used for new implementations. For example, actual aqua development uses svdem intensively, to verify all important properties we need: &lt;br /&gt;
&lt;br /&gt;
- display a window first (al least ...:)) &lt;br /&gt;
&lt;br /&gt;
- close cleanly this window&lt;br /&gt;
&lt;br /&gt;
- display a point&lt;br /&gt;
&lt;br /&gt;
- trace a line&lt;br /&gt;
&lt;br /&gt;
- trace an area &lt;br /&gt;
&lt;br /&gt;
- superpose two areas doing some important graphical operations, (like xor),&lt;br /&gt;
&lt;br /&gt;
- display a character&lt;br /&gt;
&lt;br /&gt;
- display a menu. &lt;br /&gt;
&lt;br /&gt;
- intercept events correctly.&lt;br /&gt;
&lt;br /&gt;
[FIXME] add more tests&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 13:21, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Naming convention ==&lt;br /&gt;
&lt;br /&gt;
* Class names start with upper case letters, to improve readability.&lt;br /&gt;
&lt;br /&gt;
* Implemented Class names are derived from the virtual classes but can of course take arbitrary names.&lt;br /&gt;
To increase readability, it&amp;#039;s recommended to closely follow the base class name.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Impl prefix: means Implementation details&amp;#039;&amp;#039;&amp;#039;. The concerned class or method or function is not used outside of this module, so no external code (or other libraries) can see it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[ Events types using Carbon API (Mac OS X): ]]&amp;#039;&amp;#039;&amp;#039; A lot of events have to be managed in runtime. Here is a short description&lt;br /&gt;
&lt;br /&gt;
- do not freeze because bad event loops&lt;br /&gt;
&lt;br /&gt;
- event types implementation: currently, they are defined in vcl/aqua/inc/aquavclevents.hxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apart: exact sense of hedabu? -&amp;gt; [FIXME] as far as I understood it: it is like &amp;quot;copy&amp;quot; to deliver software into the solver, with extra magic. The header files for example are manipulated so paths need not be exact. &amp;quot;headabu&amp;quot; is supposed to disappear little by little.&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;What do we have to build in vcl?&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Two libraries, corresponding ressources (localized) and a toy so called « svdem »&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Common part&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
in grey on right. The result will be a non architecture dependant library, built in all cases: for instance, libvcl680mxi.dylib on Mac Intel.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Specific part  &amp;quot; a plugin &amp;quot; &amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
Light yellow: aqua part will only concern Mac OS X (non X11) the name will probably be libvcl_aqua680mxi.dylib &lt;br /&gt;
&lt;br /&gt;
As you can see, win means windows part, in blue&lt;br /&gt;
&lt;br /&gt;
For Unix build (Linux, Solaris or current Mac OS X X11), in purple.&lt;br /&gt;
&lt;br /&gt;
Result will be:&lt;br /&gt;
&lt;br /&gt;
libvclplug_PLUGIN680mxi.DLLSUFFIX , where PLUGIN can be iether gen (generic) or gtk (using gtk+) or kde (using qt), and DLLSUFFIX can be either .so (linux) or .dylib (Mac OS X) ...etc (I&amp;#039;m not sure for other cases).&lt;br /&gt;
&lt;br /&gt;
Example: libvcl680mxi.dylib and libvclplug_aqua680mxi.dylib&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;In runtime&amp;#039;&amp;#039;&amp;#039;, libvclplug_aqua will be linked to libvcl680. the first one will contain the real implementation (respecting the API, e.g. Carbon) while the generic libvcl will only contain pure virtual methods ...etc like &amp;quot;empty boxes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Current Aqua content ===&lt;br /&gt;
&lt;br /&gt;
A more complete description of aqua (Mac OS X / no X11 specific): [[Image:Vcl_aqua_organisation_02_tree.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==EXISTING objects to build in aqua==&lt;br /&gt;
&lt;br /&gt;
===Sal APP &amp;quot;everything application&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
[FIXME] add all objects descriptions&lt;br /&gt;
&lt;br /&gt;
==== saldata ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Defined in plugin exclusively&amp;#039;&amp;#039;&amp;#039; (i.e. for headers)&lt;br /&gt;
&lt;br /&gt;
Unix: unx/source/app/saldata.cxx (header in unx/inc)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Aqua: aqua/source/app/saldata.cxx (header in win/inc)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Windows: win/source/app/saldata.cxx (header in aqua/inc)&lt;br /&gt;
&lt;br /&gt;
* Role: saldata contains various kind of data used by the implementation for the concerned platform. &amp;#039;&amp;#039;&amp;#039;It is a bunch of global data collections reserved for the platform&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
It is just completely platform dependent, and nobody except this plugin can see it.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Saldata is something like a &amp;quot;second sal&amp;quot;, but providing an abstraction regarding windowing and graphics&amp;#039;&amp;#039;&amp;#039;, while SAL module provides an abstraction more Operating System oriented) &lt;br /&gt;
&lt;br /&gt;
e.g. : have a look at XRequest array in vcl/unx/source/app/saldata.cxx =&amp;gt; all calls are for Xlib (X11).  Ok, useless there, but interesting:-)&lt;br /&gt;
&lt;br /&gt;
[FIXME]: use Windows implementation could be a good starting point. Nothing is the same, but the current aquavcl cws uses similar objects, and it works very correctly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
saldatax.cxx uses classes SalInstance, SalObject, SalFrame, SalVirtualDevice, SalPrinter and fontList.&lt;br /&gt;
&lt;br /&gt;
Current list of possible objects who can be instantiated/released:&lt;br /&gt;
&lt;br /&gt;
structure SalData: does contain pointers on all kind of objects from other classes used in saldata.&lt;br /&gt;
&lt;br /&gt;
inline functions: [FIXME]: complete the description&lt;br /&gt;
&lt;br /&gt;
- SetSalData:&lt;br /&gt;
- GetSalData:&lt;br /&gt;
- GetAppSalData:&lt;br /&gt;
&lt;br /&gt;
==== salinst ====&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; implemented in vcl/aqua/source/app/salinst.cxx&lt;br /&gt;
&lt;br /&gt;
Role: &lt;br /&gt;
&lt;br /&gt;
* get environment, mutexes, instantiate AquaSalInstance (Ctor, Dtor),&lt;br /&gt;
&lt;br /&gt;
* instantiates/releases a lot of other objects using Get() / CreateObject() / DestroyObject() methods.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current list of possible objects who can be instantiated/released:&lt;br /&gt;
&lt;br /&gt;
 * VirtualDevice [FIXME]: exact role?&lt;br /&gt;
&lt;br /&gt;
 *Printer  &lt;br /&gt;
&lt;br /&gt;
- GetDefaultPrinter/ CreatePrinter() / DestroyPrinter - what a name ;-) -&lt;br /&gt;
&lt;br /&gt;
- InfoPrinter (Get/Create/Delete)&lt;br /&gt;
&lt;br /&gt;
- PrinterQueue (DeletePrinterQueueInfo / GetPrinterQueueInfo / GetPrinterQueueState)&lt;br /&gt;
&lt;br /&gt;
 * System (Create / Delete) [FIXME]: what means system here?&lt;br /&gt;
&lt;br /&gt;
 * Events: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::SetEventCallback()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::SetErrorEvenCallback()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::GetConnectionIdentifier()&lt;br /&gt;
&lt;br /&gt;
 * Menu / MenuItem: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateMenu() / same for DestroyMenu()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateMenuItem / same DestroyMenuItem()&lt;br /&gt;
&lt;br /&gt;
 * Sound: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateSalSound()  =&amp;gt; object to a pointer of SalSound type&lt;br /&gt;
&lt;br /&gt;
Note: AquaSalInstance::DestroySalSound is not implemented (?)&lt;br /&gt;
&lt;br /&gt;
 * Timer: CreateTimer() /&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance:: DestroyTimer() is not yet implemented (?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Class MacImeStatus: inherits of SalI18NImeStatus&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; only there to see if there is a window to toggle into menubar [FIXME]??&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateI18NImeStatus(): instantiates MacImeStatus&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;For futher informations, see: &amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;[[Content of salinst.cxx]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
([[User:Ericb|Ericb]] 16:11, 20 May 2006 (CEST) )&lt;br /&gt;
&lt;br /&gt;
==== salmain ====&lt;br /&gt;
&lt;br /&gt;
Role: if possible, runs the standard vcl application code SVMain()&lt;br /&gt;
&lt;br /&gt;
([[User:Ericb|Ericb]] 16:15, 20 May 2006 (CEST))&lt;br /&gt;
&lt;br /&gt;
==== salsound ====&lt;br /&gt;
&lt;br /&gt;
==== salsys ====&lt;br /&gt;
&lt;br /&gt;
==== saltimer ====&lt;br /&gt;
&lt;br /&gt;
=== Sal GDI (everything Graphical Display Interface) ===&lt;br /&gt;
&lt;br /&gt;
====salgdinativewidgets====&lt;br /&gt;
&lt;br /&gt;
[[native controls]]&lt;br /&gt;
&lt;br /&gt;
==== salatslayout ====&lt;br /&gt;
&lt;br /&gt;
==== salatsuiutils ====&lt;br /&gt;
&lt;br /&gt;
==== salfontutils ====&lt;br /&gt;
&lt;br /&gt;
==== salmathutils ====&lt;br /&gt;
&lt;br /&gt;
==== sal bmp ====&lt;br /&gt;
&lt;br /&gt;
==== salvd ====&lt;br /&gt;
&lt;br /&gt;
==== salframe ====&lt;br /&gt;
&lt;br /&gt;
==== salpixmaputils====&lt;br /&gt;
&lt;br /&gt;
==== salprn ====&lt;br /&gt;
&lt;br /&gt;
====salrectangle====&lt;br /&gt;
&lt;br /&gt;
==== salvd ====&lt;br /&gt;
&lt;br /&gt;
=== Sal Window===&lt;br /&gt;
&lt;br /&gt;
==== salframe ====&lt;br /&gt;
&lt;br /&gt;
====salobj====&lt;br /&gt;
&lt;br /&gt;
== TO BE IMPLEMENTED (missing in Aqua)==&lt;br /&gt;
&lt;br /&gt;
===Audio===&lt;br /&gt;
&lt;br /&gt;
====audioconvert====&lt;br /&gt;
 (obsolete?) &lt;br /&gt;
&lt;br /&gt;
====devaudio====&lt;br /&gt;
(obsolete?)&lt;br /&gt;
&lt;br /&gt;
====native sound====&lt;br /&gt;
&lt;br /&gt;
====salimpsound====&lt;br /&gt;
&lt;br /&gt;
====vsound====&lt;br /&gt;
&lt;br /&gt;
===i18n===&lt;br /&gt;
&lt;br /&gt;
===keysymnames===&lt;br /&gt;
&lt;br /&gt;
===saldisp===&lt;br /&gt;
&lt;br /&gt;
===sm===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME]: is session manager usefull?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is used for Linux, Windows, Mac OS X ...build ? ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Description of the dependencies]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Windows]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[MacOS X]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Linux]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Solaris]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Content of Aqua ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Click here to see the complete list]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Content of vcl/inc&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
1) Where to find includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;foo/bar.hxx&amp;gt; means you can find bar.hxx in the foo module. The new style file is foo/inc/foo/bar.hxx, old style is foo/inc/bar.hxx and sometimes the file is somewhere else in the tree or generated. The deliver process copies/generates the file into solver at solver/680/build_type/inc/foo. Good for fixing broken builds. ;-)&lt;br /&gt;
&lt;br /&gt;
2) &lt;br /&gt;
suffix .h (for C calls or first version?) or .hxx (C++) &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A) Family of includes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looking more closely at the list brings to the fore (expression from dictionary ;-) ) that include names are&lt;br /&gt;
informatives. Most of the time, the name gives the function/role.&lt;br /&gt;
What is interesting is the files with name begining with &amp;quot;sal&amp;quot;. sal means System Abstraction Layer + include&amp;#039;s function (or explicit name). &lt;br /&gt;
&lt;br /&gt;
Partial list, for example:&lt;br /&gt;
&lt;br /&gt;
salatype.hxx&lt;br /&gt;
&lt;br /&gt;
salbmp.hxx&lt;br /&gt;
&lt;br /&gt;
salctrlhandle.hxx&lt;br /&gt;
&lt;br /&gt;
salctype.hxx&lt;br /&gt;
&lt;br /&gt;
salframe.hxx&lt;br /&gt;
&lt;br /&gt;
salgdi.hxx&lt;br /&gt;
&lt;br /&gt;
salgeom.hxx&lt;br /&gt;
&lt;br /&gt;
sallayout.hxx (main header for fonts services)&lt;br /&gt;
...&lt;br /&gt;
salmenu&lt;br /&gt;
salnativewidgets&lt;br /&gt;
...etc&lt;br /&gt;
&lt;br /&gt;
Other important families are &amp;quot;sv&amp;quot; and &amp;quot;uno&amp;quot; or &amp;quot;win&amp;quot; (window) prefixed. sal family will be analysed apart.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B) Includes of includes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Some includes are more important than other. To prove this, just have a look is sufficient: some are always needed, and some more rarely.&lt;br /&gt;
&lt;br /&gt;
To verify, a simple test to do in vcl/inc:&lt;br /&gt;
&lt;br /&gt;
egrep -H &amp;quot;#include&amp;quot; ./* | wc -l  gives me 681 lines ! And some of them are the same...&lt;br /&gt;
&lt;br /&gt;
To know more, the precedent command line can be modified to make appear the numerous call &lt;br /&gt;
to the same includes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
egrep -H &amp;quot;#include&amp;quot; ./* | cut -d&amp;quot;#&amp;quot; -f2 | sort &amp;gt; liste.txt&lt;br /&gt;
&lt;br /&gt;
The content of liste.txt is explicit: dllapi.h, sv.h and some other are very important, while some other includes are only one or two times used. We can see too that vos includes are numerous, even if vos is deprecated**&lt;br /&gt;
&lt;br /&gt;
 **see http://wiki.services.openoffice.org/wiki/Source_code_directories&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;m nearly sure that a complete analysis of just this result will give us a lot of information.&lt;br /&gt;
&lt;br /&gt;
I propose to change the order of analysis starting with dllapi.h and sv.h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[to be continued]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B1) &amp;quot;sal&amp;quot; includes family&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[salinst.hxx]] This seems to be the main include file&lt;br /&gt;
&lt;br /&gt;
[[salatype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salctrlhandle.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salctype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salframe.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salgdi.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salgeom.hxx]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[ sallayout.hxx ]]&amp;#039;&amp;#039;&amp;#039; &amp;lt;-- see Native Fonts implementation&lt;br /&gt;
&lt;br /&gt;
[[salgtype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[vcl/inc/salobj.hxx]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B2) Classicals includes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
file: abstdlg.hxx [ means abstract dialog ]&lt;br /&gt;
&lt;br /&gt;
This includes does contain the following classes definitions:&lt;br /&gt;
&lt;br /&gt;
[FIXME] : choose a precise presentation template for classes &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VclAbstractDialog,&lt;br /&gt;
&lt;br /&gt;
VclAbstractTerminateDialog, &lt;br /&gt;
&lt;br /&gt;
VclAbstractRefreshableDialog,&lt;br /&gt;
 &lt;br /&gt;
VclAbstractDialogFactory, &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
uses &amp;lt;tools/solar.h&amp;gt; , &amp;lt;tools/string.hxx&amp;gt; + &lt;br /&gt;
&lt;br /&gt;
&amp;quot;dllapi.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note : dllapi.h is very interesting because when we have to find (for example) a library suffix, SAL_DLLEXTENSSION can replace all suffixes (every OS&amp;#039;s and archs). Just including sal/config.h does it ! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
Window -&amp;gt; what? [FIXME]&lt;br /&gt;
ResId -&amp;gt; what?&lt;br /&gt;
&lt;br /&gt;
Does contain the prototype of VclAbstractDialog, inherit of VCL_DLLPUBLIC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file: dllapi.h [ dll for dynamic linked library ]&lt;br /&gt;
Uses: &amp;lt;sal/config.h&amp;gt; and &amp;gt;sal/types/h&amp;gt;&lt;br /&gt;
includes: VCL_DLLPUBLIC macro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file: accel.h [ means accelerator ]&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
Accelerator &lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
ImplAccelEntry &lt;br /&gt;
{&lt;br /&gt;
public members: &lt;br /&gt;
&lt;br /&gt;
Names&lt;br /&gt;
&lt;br /&gt;
mnId&lt;br /&gt;
maKeyCode&lt;br /&gt;
mpAccel&lt;br /&gt;
mpAutoAccel&lt;br /&gt;
mbEnabled&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function / returns / parameters&lt;br /&gt;
&lt;br /&gt;
ImplGetKeyCode / void / KeyFuncType eFunc, ref rCode1 , ref rCode2, ref rCode3&lt;br /&gt;
&lt;br /&gt;
file: accel.hxx &lt;br /&gt;
&lt;br /&gt;
Uses: &amp;lt;sv.h&amp;gt; , &amp;quot;dllapi.h&amp;quot; ,&amp;lt;tools/resid.hxx&amp;gt;, &amp;lt;&amp;lt;tools/rc.hxx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
ImplAccelData;&lt;br /&gt;
ImplAccelEntry;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Important Links ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Progressive implementation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Font server Implementation&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;[[Fonts starting point and documentation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Sound Implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native Audio and Video]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Printing Implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native_Printing]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Drag and Drop implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native Drag and drop]]&lt;br /&gt;
&lt;br /&gt;
This work is part of http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s&lt;br /&gt;
&lt;br /&gt;
[to be continued:-) ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Ericb|Ericb]] 15:00, 22 Jul 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Aqua]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17819</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17819"/>
		<updated>2006-10-02T05:25:31Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Dashboard, Sprint1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The goal of the UnHack movement is to make OO.o development cool and satisfying. We operate in 2 week iterations called Sprints and use a mailinglist and IRC to coordinate.&lt;br /&gt;
&lt;br /&gt;
== Dashboard, Sprint001 ==&lt;br /&gt;
&lt;br /&gt;
* Goal: BuildBot, ooo-build and Jam meet&lt;br /&gt;
* Duration: 2006-10-02 to 2006-10-13 (2 weeks)&lt;br /&gt;
* Team: rvojta, pmladek, mikeleib, martink, kaib&lt;br /&gt;
* [http://code.google.com/p/ooo/issues/list?q=label:Sprint001 Tasks]&lt;br /&gt;
&lt;br /&gt;
== Tracking the sprint ==&lt;br /&gt;
&lt;br /&gt;
For every day you keep working send an email to the mailinglist answering the following questions:&lt;br /&gt;
* What did I do since the last meeting?&lt;br /&gt;
* What am I going to do next?&lt;br /&gt;
* Is there anything blocking me?&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. You need to do is find a 2 week period where you can commit 20 hours (10h per week) or more of work. You also need to keep in touch with the team and actively communicate.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17817</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17817"/>
		<updated>2006-10-02T05:23:48Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The goal of the UnHack movement is to make OO.o development cool and satisfying. We operate in 2 week iterations called Sprints and use a mailinglist and IRC to coordinate.&lt;br /&gt;
&lt;br /&gt;
== Dashboard, Sprint1 ==&lt;br /&gt;
&lt;br /&gt;
* Goal: BuildBot, ooo-build and Jam meet&lt;br /&gt;
* Duration: 2006-10-02 to 2006-10-13 (2 weeks)&lt;br /&gt;
* Team: rvojta, pmladek, mikeleib, martink, kaib&lt;br /&gt;
* [http://code.google.com/p/ooo/issues/list?q=label:Sprint001 Tasks]&lt;br /&gt;
&lt;br /&gt;
== Tracking the sprint ==&lt;br /&gt;
&lt;br /&gt;
For every day you keep working send an email to the mailinglist answering the following questions:&lt;br /&gt;
* What did I do since the last meeting?&lt;br /&gt;
* What am I going to do next?&lt;br /&gt;
* Is there anything blocking me?&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. You need to do is find a 2 week period where you can commit 20 hours (10h per week) or more of work. You also need to keep in touch with the team and actively communicate.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Ericb&amp;diff=17762</id>
		<title>User:Ericb</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Ericb&amp;diff=17762"/>
		<updated>2006-09-30T23:52:35Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* &amp;#039;&amp;#039;&amp;#039;2nd Mac porters meeting&amp;#039;&amp;#039;&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Public Documentation License Notice==&lt;br /&gt;
&lt;br /&gt;
The contents of this Documentation (excepted Native Port Roadmap),are subject to the Public Documentation License Version 1.0 (the &amp;quot;License&amp;quot;); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at http://www.openoffice.org/licenses/PDL.html.&lt;br /&gt;
The Original Documentation is &amp;quot;Mac OS X native port&amp;quot;. The Initial Writer of the Original Documentation is (JCA) Eric Bachard (C) 2005-2006. All Rights Reserved. (Initial Writer contact(s): ericb@openoffice.org.)&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Mac OS X Native port&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;messagebox cleanup metadata&amp;quot; style=&amp;quot;border:1px solid blue;background-color:#B3FFF5;padding:7px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The first Mac OS X native port objective is make OpenOffice.org run without X11 use, to make it a real Mac application.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The second one is respect Aqua Human interface Guidelines&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; This is a long term work, and every help and/or contributions, like donations** are welcome.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 **see http://contributing.openoffice.org/index.html&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Native Port Roadmap&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;2006&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
* June 2006: work in progress &lt;br /&gt;
&lt;br /&gt;
- Basis: frame, instances, threads, drawing, painting, resizing (Stephan Schaefer, Tino Rachui)&lt;br /&gt;
&lt;br /&gt;
 Done: &lt;br /&gt;
 implement threads&lt;br /&gt;
 create, manage instance&lt;br /&gt;
 create, manage windows (including parents)&lt;br /&gt;
 create, manage events&lt;br /&gt;
 create manage drawing, resizing&lt;br /&gt;
 create, add menus (Pavel Janik)&lt;br /&gt;
 toggle window fullscreen (Pierre de Filippis)&lt;br /&gt;
 make font server work (Stephan Schaefer)&lt;br /&gt;
&lt;br /&gt;
* Current status font support (Stephan Schaefer, 2006/07/28): the following features are basically working now&lt;br /&gt;
** font selection&lt;br /&gt;
** font size&lt;br /&gt;
** simple font attributes (bold, italic)&lt;br /&gt;
&lt;br /&gt;
 Next step: document first part, and propose design&lt;br /&gt;
&lt;br /&gt;
- native filepicker (Oliver Braun)&lt;br /&gt;
&lt;br /&gt;
- native printing implementation (Oliver?)&lt;br /&gt;
&lt;br /&gt;
- native font implementation (Eric Bachard)&lt;br /&gt;
&lt;br /&gt;
* September 2006: &lt;br /&gt;
&lt;br /&gt;
- first proofs of concept: fonts, filepicker .. (more?)&lt;br /&gt;
- show the results (OOoCon 2006?)&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;2007&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
* January 2007: first alpha implementation&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Strategy for native port&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Possible Actions&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
Identify us:&lt;br /&gt;
&lt;br /&gt;
#Complete the arrays below&lt;br /&gt;
#Update photos on frapr.com?&lt;br /&gt;
&lt;br /&gt;
Share the work:&lt;br /&gt;
&lt;br /&gt;
#Divide the work between little Teams&lt;br /&gt;
#Update Todo list regularly -&amp;gt; needs some love these days ... [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s]&lt;br /&gt;
&lt;br /&gt;
Help:&lt;br /&gt;
&lt;br /&gt;
#Teach tools between us&lt;br /&gt;
#Do a debug party on IRC&lt;br /&gt;
#write documentation&lt;br /&gt;
&lt;br /&gt;
Meet us:&lt;br /&gt;
&lt;br /&gt;
#IRC&lt;br /&gt;
#Mac Meeting (like nov2005 in Hamburg?)&lt;br /&gt;
&lt;br /&gt;
Inform:&lt;br /&gt;
&lt;br /&gt;
#Update website regularly&lt;br /&gt;
#Blogs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHO&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Mac Team:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
|Developer \ skills || build || write code || code review || debug/trace (higher is better) || contribute to documentation ||&lt;br /&gt;
|-&lt;br /&gt;
|ericb|| x || x || || 1 || x ||&lt;br /&gt;
|-&lt;br /&gt;
|pjanik|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|ssa|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|maho|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|tinor|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|schmidtm|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|ebischoff|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|obr|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|cl|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|aliscafo|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|fheckl|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Fridrich|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Other resources&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
fonts: ?&lt;br /&gt;
&lt;br /&gt;
events: ?&lt;br /&gt;
&lt;br /&gt;
QA: ?&lt;br /&gt;
&lt;br /&gt;
graphical: ?&lt;br /&gt;
&lt;br /&gt;
Communication: ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHAT&amp;#039;&amp;#039;&amp;#039;: Status of most important tasks&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Task || Names|| Urgency (1=higher)|| Work in Progress || Done || Code review || Debug || Integration || &lt;br /&gt;
|-&lt;br /&gt;
|Get rid of X11|| || 1 || x || x || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Bundle|| || 1 || x || || || || | ||&lt;br /&gt;
|-&lt;br /&gt;
|Drawing|| || 1 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Fonts|| || 1 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Events management|| || 2 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Controls (see list) ||ericb, aliscafo || 2 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native FilePicker|| || 3 || x || x || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native Printing|| || 3 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native SpellChecker|| || 4 || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Player|| || 4 || x || || || || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other tasks:&lt;br /&gt;
&lt;br /&gt;
Help for writing bug lists, status of bugs ..etc&lt;br /&gt;
&lt;br /&gt;
Write howto use gdb, leaks, other tools&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHEN&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
From Christian Lippka (last meeting, 25th of august 2006): &lt;br /&gt;
 Aug 26 00:21:38 ChristianL&lt;br /&gt;
 from my point of view what is missing for point 1:&lt;br /&gt;
 text layout, complete font support, keyboard support,&lt;br /&gt;
 fixing repaint issues, having aqua install and run out of the box&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;September 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Present the current state of the project at the 2006 OpenOffice conference in Lyon and Paris&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Late 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
fix OpenOffice.org launch&lt;br /&gt;
fix drawing (repainting)&lt;br /&gt;
Implement missing methods and fix most important bugs (mainly the one leading to crash) in:&lt;br /&gt;
ATS&lt;br /&gt;
Salgraphics&lt;br /&gt;
Salinstance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;January or February 2007&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
make Java work (works partially)&lt;br /&gt;
make intensive debug&lt;br /&gt;
present something working as alpha&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;June 2007	&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Implementation of:&lt;br /&gt;
native filepicker&lt;br /&gt;
native printing&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;2nd Mac porters meeting&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
=== When? ===&lt;br /&gt;
&lt;br /&gt;
2nd and 3rd of December or 9th and 10th of December&lt;br /&gt;
&lt;br /&gt;
=== Where? ===&lt;br /&gt;
&lt;br /&gt;
 Google Hamburg&lt;br /&gt;
 ABC-Strasse 19&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 Germany&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;How to get there&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Airport: HAM&lt;br /&gt;
 There is a bus connection from the airport. A taxi costs about 10 euros in one direction.&lt;br /&gt;
&lt;br /&gt;
=== What? ===&lt;br /&gt;
&lt;br /&gt;
A fun weekend of hacking! Google will provide the following facilities on-site:&lt;br /&gt;
&lt;br /&gt;
* A conference room for the common sessions (40+ people)&lt;br /&gt;
* a few smaller rooms for hacking workshops&lt;br /&gt;
* 4 G5 workstations for the workshops &amp;#039;&amp;#039;&amp;#039;(PENDING)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Where to stay ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB: Rates might not be accurate&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;Side Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &lt;br /&gt;
 Side Hotel&lt;br /&gt;
 Drehbahn 49&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 30-99-90&lt;br /&gt;
 +49 (040) 30-99-93-99 fax&lt;br /&gt;
 info@side-hamburg.de&lt;br /&gt;
 reservation@side-hamburg.de&lt;br /&gt;
 &lt;br /&gt;
 This is a very nice, modern hotel within seven minutes&amp;#039; walk from the office.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category&lt;br /&gt;
 Single Room: €135,00&lt;br /&gt;
 Double Room: €160,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category&lt;br /&gt;
 Single Room: €150,00&lt;br /&gt;
 Double Room: €175,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include breakfast, and all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Four Seasons Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 Raffles Vier Jahreszeiten (Four Seasons Hotel)&lt;br /&gt;
 Neuer Jungfernstieg 9-14&lt;br /&gt;
 +49 (040) 34-94-0&lt;br /&gt;
 +49 (040) 34-94-2600 fax&lt;br /&gt;
 emailus.hvj@raffles.com&lt;br /&gt;
 &lt;br /&gt;
 The name &amp;quot;Four Seasons&amp;quot; speaks for itself.&lt;br /&gt;
 &lt;br /&gt;
 Superior Category (view to the courtyard)&lt;br /&gt;
 Single Room: €155,00&lt;br /&gt;
 Double Room (single occupancy): €180,00&lt;br /&gt;
 Double Room (double occupancy): €205,00&lt;br /&gt;
 &lt;br /&gt;
 Deluxe Category (view to the Alster)&lt;br /&gt;
 Single Room: €220,00&lt;br /&gt;
 Double Room: €270,00&lt;br /&gt;
 &lt;br /&gt;
 These prices do not include breakfast, but do include all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Marriott Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Very near to the office is the:&lt;br /&gt;
 &lt;br /&gt;
 Marriott Hotel&lt;br /&gt;
 ABC-Straße 52&lt;br /&gt;
 20354 Hamburg&lt;br /&gt;
 +49 (040) 350-50&lt;br /&gt;
 &lt;br /&gt;
 Special Rates&lt;br /&gt;
 Standard Deluxe Single or Double Room: €146,00&lt;br /&gt;
 &lt;br /&gt;
 These prices include a French buffet (coffee, tea, croissants, etc).&lt;br /&gt;
 &lt;br /&gt;
 This is a standard chain hotel, within two minutes&amp;#039; walk from the office.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
 &lt;br /&gt;
2) write a list of interested people&lt;br /&gt;
&lt;br /&gt;
 ericb&lt;br /&gt;
 pjanik&lt;br /&gt;
 obr&lt;br /&gt;
 fheckl&lt;br /&gt;
 tra&lt;br /&gt;
 &lt;br /&gt;
 [complete the list]&lt;br /&gt;
&lt;br /&gt;
3) define needed resources &lt;br /&gt;
&lt;br /&gt;
 Food?&lt;br /&gt;
&lt;br /&gt;
4) Find money for travels, rooms and food&lt;br /&gt;
 &lt;br /&gt;
 By plane? &lt;br /&gt;
 come together by car?&lt;br /&gt;
 Note: I&amp;#039;ll propose the amount of money we need to Louis.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
7) Content&lt;br /&gt;
&lt;br /&gt;
 Common sessions / Workshops around native issues: &lt;br /&gt;
 &lt;br /&gt;
 - windowing (salinst*)&lt;br /&gt;
 - redrawing&lt;br /&gt;
 - fonts&lt;br /&gt;
 - controls&lt;br /&gt;
 - native printing&lt;br /&gt;
 - packaging&lt;br /&gt;
 ..etc (propose other)&lt;br /&gt;
&lt;br /&gt;
===Agenda (can be modified)===&lt;br /&gt;
&lt;br /&gt;
[FIXME] create an array ..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Saturday:&lt;br /&gt;
&lt;br /&gt;
- Common session from 12:00 to 15:00 &lt;br /&gt;
&lt;br /&gt;
- Workshops: From 16:00 to 19:00 &lt;br /&gt;
&lt;br /&gt;
[Saturday evening: some dinner in the city? ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sunday:&lt;br /&gt;
&lt;br /&gt;
- Workshops from 10:00 to 12:00&lt;br /&gt;
&lt;br /&gt;
- Conclusions from 13:00 to 14:00&lt;br /&gt;
&lt;br /&gt;
Time to return after ...&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;IRC Mac port meetings&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
This section has been moved to [[MacOSXPortMeetings]].&lt;br /&gt;
&lt;br /&gt;
==Description of the Native Port problem==&lt;br /&gt;
&lt;br /&gt;
=== How does OpenOffice.org work on Mac OS X? ===&lt;br /&gt;
&lt;br /&gt;
Currently, on Mac OS X, OpenOffice.org uses X11, as &amp;quot;client&amp;quot;: X11 is a graphical server, coming from Unix world, and able to run under Linux, *BSD, Solaris, Mac OS X.&lt;br /&gt;
&lt;br /&gt;
 - X11 is run as an application, managed like other Apple applications.&lt;br /&gt;
 - All unix like applications are managed by X11, and from Aqua environment, only X11 is seen as only one applicatiion, &lt;br /&gt;
  even if other Unix/Linux (e.g.) applications are runing.&lt;br /&gt;
&lt;br /&gt;
OpenOffice.org asks X11 to display a window, waits for X11 acknowledgment, and OpenOffice.org displays the window. All transactions use the network, locally or not. the same mechanism is used for everything to be displayed.&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Issues and known problems ===&lt;br /&gt;
&lt;br /&gt;
All events are managed by OpenOffice.org and X11, using the Xlib&lt;br /&gt;
&lt;br /&gt;
Only .ttf fonts type is currently available. Note: &amp;#039;&amp;#039;&amp;#039;system fonts are available &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The rendering is made by X11, not by Mac OS X rendering engine.&lt;br /&gt;
&lt;br /&gt;
X11 and all its clients are seen as one application only: drag and drop protocol does not work because of that (solution: Pasteboard Manager)&lt;br /&gt;
&lt;br /&gt;
==== Other links ====&lt;br /&gt;
&lt;br /&gt;
http://wiki.services.openoffice.org/wiki/List_of_OpenOffice.org_Mac_OS_X_issues_and_problems#&lt;br /&gt;
&lt;br /&gt;
http://wiki.services.openoffice.org/wiki/Printing_problems_with_OpenOffice.org_2.0_for_Mac_OS_X#Reporting_printing_problems&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== What do we have to do?==&lt;br /&gt;
&lt;br /&gt;
* Implement direct access to Apple graphical engine, using Apple API: Quartz2D/CoreGraphics (and replacing Xlib use)&lt;br /&gt;
&lt;br /&gt;
like: instantiate, manage events and threads for a graphical instance + all needed objects, drawing: manage all drawing cases&lt;br /&gt;
&lt;br /&gt;
* Implement native events management, using CarbonEventManager (replacing Xlib management)&lt;br /&gt;
&lt;br /&gt;
* Implement native font use, using Apple Type Server and ATSUI (for Unicode Imagery) (replacing X11 management)&lt;br /&gt;
&lt;br /&gt;
Work in progress: http://wiki.services.openoffice.org/wiki/Fonts_starting_point_and_documentation&lt;br /&gt;
&lt;br /&gt;
* Implement native sound, using QuickTime (replacing Java Media Framework): [[Mac OS X Porting - Native Audio and Video]]&lt;br /&gt;
&lt;br /&gt;
* Implement native Drag and drop, Implementing Pasteboard Manager: [[Mac OS X Porting - Native Drag and drop]]&lt;br /&gt;
&lt;br /&gt;
* Implement Native Filepicker&lt;br /&gt;
&lt;br /&gt;
* Implement Native Printing: current uses cups, but native printing is mandatory: [[Mac OS X Porting - Native_Printing]]&lt;br /&gt;
&lt;br /&gt;
* Implement Apple Spellchecker&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Where is located the code to be modified?&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Most of the changes are located in vcl (Visual Class Layer), for everything graphical, events, fonts, rendering and printing.&lt;br /&gt;
&lt;br /&gt;
Other, for sound and movies will be in avmedia (where the player is implemented in OpenOffice.org sources).&lt;br /&gt;
&lt;br /&gt;
For drag and drop, dtrans is concerned (Pasteboard Manager implementation)&lt;br /&gt;
&lt;br /&gt;
[FIXME]: Filepicker? Apple Spellchecker?&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;How will the new implementation be tested?==&lt;br /&gt;
&lt;br /&gt;
Currently, all openOffice.org code can be compiled without using the Xlib. but of course, a lot of features are missing,&lt;br /&gt;
&lt;br /&gt;
and the final package simply won&amp;#039;t work&lt;br /&gt;
&lt;br /&gt;
In vcl module&amp;quot;, a &amp;#039;&amp;#039;&amp;#039;toy&amp;#039;&amp;#039;&amp;#039; called svdem is built at buildtime. This binary is linked to libvcl* and so all new stuff can be tested.&lt;br /&gt;
&lt;br /&gt;
e.g. : draw anti-aliased lines works well. &lt;br /&gt;
&lt;br /&gt;
Everything implemented in aqua vcl code will be included in libvclplug_aqua, and svdem source code will contain a specific part to proceed tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;messagebox cleanup metadata&amp;quot; style=&amp;quot;border:1px solid blue;background-color:#B3FFF5;padding:7px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The magic is: when all needed features will work with svdem, it will work in the new version of OpenOffice.org !!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME]: add more complete list of features to implement and test.&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;Sort of documentation about VCL around Native Mac OS X port&amp;#039;&amp;#039;&amp;#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do we really need to understand how it works? ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vcl content:&lt;br /&gt;
&lt;br /&gt;
ls -laR | wc -l&lt;br /&gt;
  1750&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Uff 1750 files to analyse :-/&lt;br /&gt;
&lt;br /&gt;
Our purpose is to describe the vcl organisation. The content of vcl is so important, that at the begining, the content will looks a bit confused. e.g. class names ..etc have nothing to do, only description with words and sense, but this will need some time before we can understand everything.&lt;br /&gt;
&lt;br /&gt;
How analyse with more efficiency? After some months to anlalyse &amp;#039;&amp;#039;&amp;#039;&amp;quot;horizontaly&amp;quot;&amp;#039;&amp;#039;&amp;#039;, it appears that list all the content of a directory is not the solution. Of course, we learned a lot, but we now have to complete with &amp;#039;&amp;#039;&amp;#039;&amp;quot;orthogonal&amp;quot;&amp;#039;&amp;#039;&amp;#039; method (compared to the previous one). The first method wasn&amp;#039;t obviously not the good/best way to describe vcl.&lt;br /&gt;
 &lt;br /&gt;
[UPDATE] After some investigations, the use of Design patterns seems to be the most efficient approach to describe vcl. Will try to do so asap.&lt;br /&gt;
&lt;br /&gt;
[FIXME] a different approach (will ask confirmation to Philipp Lohman), could be a description of how it work in runtime. First define what an instance is, a frame, and what exactly is concerned by such &amp;quot;objects&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
With that, we can write a list of different objects all using the same scheme: empty boxes (means pure virtual methods and classes in generic libvvcl), really implemented in the specific part, and finally, the API &amp;quot;encapsulated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The most difficult is to see where the API is used. But for all the parts, this is the same.&lt;br /&gt;
&lt;br /&gt;
Finally, &amp;#039;&amp;#039;&amp;#039;what is important is the design of vcl&amp;#039;&amp;#039;&amp;#039;. Which &amp;#039;&amp;#039;&amp;#039;patterns&amp;#039;&amp;#039;&amp;#039; are used? What are the dependencies, how works the stack for the events, how works the scheduler, the timers too is very important, even fundamental for Aqua implementation. Will have a look at gsl mailing list, and other resources. Probably everything is already (randomly) written somewhere.&lt;br /&gt;
&lt;br /&gt;
=== VCL organisation ===&lt;br /&gt;
&lt;br /&gt;
Thank&amp;#039;s to Philipp Lohmann for this short, but precise description:&lt;br /&gt;
&lt;br /&gt;
Basically vcl is divided in the system dependent and the system independent part. The interface between these two is mostly the Sal interface (every interface name Sal*: SalInstance, SalFrame, SalGraphics, SalPrinter, etc.).&lt;br /&gt;
&lt;br /&gt;
SalInstance is a factory that can create all the other abstracted interfaces of the system dependent part. It also provides the main loop SalInstance::Yield()&lt;br /&gt;
&lt;br /&gt;
SalFrame abstracts any kind of system window.&lt;br /&gt;
&lt;br /&gt;
SalVirtualDevice abstracts an offscreen window (e.g. a Pixmap on X11)&lt;br /&gt;
&lt;br /&gt;
SalPrinter and SalInfoPrinter abstract the system print queues where SalInfoPrinter is for querying and SalPrinter for actual printing.&lt;br /&gt;
&lt;br /&gt;
SalGraphics is an interface produced by either SalFrame, SalVirtualDevice or SalPrinter which is used for actual drawing operations (text, bitmaps, vector graphics)&lt;br /&gt;
&lt;br /&gt;
SalSound is for sound playing.&lt;br /&gt;
&lt;br /&gt;
SalBitmap provides memory for bitmap graphics as well as methods converting this memory to a system handle (e.g. a Pixmap on X11).&lt;br /&gt;
&lt;br /&gt;
SalOpenGL provides OpenGL functionality if available.&lt;br /&gt;
&lt;br /&gt;
SalTimer is an interface for periodically triggering the event queue (to timer implementation).&lt;br /&gt;
&lt;br /&gt;
SalI18NImeStatus handles how the status window of an Input Method Editor (IME) should display (this is mainly X11 specific).&lt;br /&gt;
&lt;br /&gt;
SalSystem has some system specific methods that did not belong anywhere else:-)&lt;br /&gt;
&lt;br /&gt;
Of all these there interfaces is at least one implementation per system (Windows, X11 or Mac). The Unix implementation also has a plugin concept to allow for integration of different native toolkits (currently gtk and Qt) which became necessary for the implementation of Native Widget Framework (NWF) to display controls like their normal desktop counterparts.&lt;br /&gt;
&lt;br /&gt;
Basically the independent part (what is beneath vcl/source directory) has generic methods for drawing, window handling and stuff which it brings into a suitable form and then delegates to the system specific implementaion (located beneath vcl/win for Windows and vcl/unx for the X11 platforms).&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 16:12, 1 July 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
===Sub-directories description ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Organisation of vcl directories&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
&lt;br /&gt;
[[Image:aquavcl_organisation_complete_02.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Directories in vcl. Short description&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; aqua &amp;#039;&amp;#039;&amp;#039;: The name Aqua means Apple look and feel, and is well known as [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html Aqua Human Interface Guidelines]. This look and feel means Mac OS X. The work was begun by (probably) P. luby, Dan Williams Herbert Duerr (most of fonts stuff) and Ed Peterlin. Currently in ruin, this directory does contain a lot of ideas to investigate. The most important part of needed changes for native version (3.0) will be done inside aqua dir inc: does contain all vcl relative includes [PART1]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; prj &amp;#039;&amp;#039;&amp;#039;: Does contain build.lst and d.lst build.lst give us dependencies: probably a lot for vcl, build 98th module over ~148. Everything graphical depends in vcl. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; qa &amp;#039;&amp;#039;&amp;#039; does contain all quality assurancy stuff&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;source&amp;#039;&amp;#039;&amp;#039;: the most important:-) This directory contains common sources for all architectures and OS. Mainly: Windows, Unix: Linux , Mac OS X (X11), Solaris, including generic, kde and gtk plugins, and Aqua (Mac OS X without X11, work currently in progress). &lt;br /&gt;
&lt;br /&gt;
Depending on the OS and the architecture, binaries are built or not.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; test &amp;#039;&amp;#039;&amp;#039;: This directory does contain all the needed stuff for tests. As example, in qa/testdocuments, you&amp;#039;ll find three documents (one writer, one calc and one impress) for tests purpose. &lt;br /&gt;
Other available tests are about memcheck and persistent window state. &lt;br /&gt;
 &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; unx &amp;#039;&amp;#039;&amp;#039;: this directory does contain all unixes stuff. We have to understand what is inside to implement aqua port. For example, a lot of classes/strutures and objects use Xlib calls we have to replace with Carbon/Cocoa call (at least at first time) for Mac OS X native port.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; win &amp;#039;&amp;#039;&amp;#039;: Doing Mac OS X native port, I first believed this directory was not interesting for us, but I was wrong: OpenOffice.org roots are inside this directory, and a lot of comments and resources are inside. Mainly interesting if Carbon is used.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;workben&amp;#039;&amp;#039;&amp;#039;: Does contain a toy called &amp;quot;svdem&amp;quot;. svdem is a binary, used for new implementations. For example, actual aqua development uses svdem intensively, to verify all important properties we need: &lt;br /&gt;
&lt;br /&gt;
- display a window first (al least ...:)) &lt;br /&gt;
&lt;br /&gt;
- close cleanly this window&lt;br /&gt;
&lt;br /&gt;
- display a point&lt;br /&gt;
&lt;br /&gt;
- trace a line&lt;br /&gt;
&lt;br /&gt;
- trace an area &lt;br /&gt;
&lt;br /&gt;
- superpose two areas doing some important graphical operations, (like xor),&lt;br /&gt;
&lt;br /&gt;
- display a character&lt;br /&gt;
&lt;br /&gt;
- display a menu. &lt;br /&gt;
&lt;br /&gt;
- intercept events correctly.&lt;br /&gt;
&lt;br /&gt;
[FIXME] add more tests&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 13:21, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Naming convention ==&lt;br /&gt;
&lt;br /&gt;
* Class names start with upper case letters, to improve readability.&lt;br /&gt;
&lt;br /&gt;
* Implemented Class names are derived from the virtual classes but can of course take arbitrary names.&lt;br /&gt;
To increase readability, it&amp;#039;s recommended to closely follow the base class name.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Impl prefix: means Implementation details&amp;#039;&amp;#039;&amp;#039;. The concerned class or method or function is not used outside of this module, so no external code (or other libraries) can see it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[ Events types using Carbon API (Mac OS X): ]]&amp;#039;&amp;#039;&amp;#039; A lot of events have to be managed in runtime. Here is a short description&lt;br /&gt;
&lt;br /&gt;
- do not freeze because bad event loops&lt;br /&gt;
&lt;br /&gt;
- event types implementation: currently, they are defined in vcl/aqua/inc/aquavclevents.hxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apart: exact sense of hedabu? -&amp;gt; [FIXME] as far as I understood it: it is like &amp;quot;copy&amp;quot; to deliver software into the solver, with extra magic. The header files for example are manipulated so paths need not be exact. &amp;quot;headabu&amp;quot; is supposed to disappear little by little.&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;What do we have to build in vcl?&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Two libraries, corresponding ressources (localized) and a toy so called « svdem »&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Common part&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
in grey on right. The result will be a non architecture dependant library, built in all cases: for instance, libvcl680mxi.dylib on Mac Intel.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Specific part  &amp;quot; a plugin &amp;quot; &amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
Light yellow: aqua part will only concern Mac OS X (non X11) the name will probably be libvcl_aqua680mxi.dylib &lt;br /&gt;
&lt;br /&gt;
As you can see, win means windows part, in blue&lt;br /&gt;
&lt;br /&gt;
For Unix build (Linux, Solaris or current Mac OS X X11), in purple.&lt;br /&gt;
&lt;br /&gt;
Result will be:&lt;br /&gt;
&lt;br /&gt;
libvclplug_PLUGIN680mxi.DLLSUFFIX , where PLUGIN can be iether gen (generic) or gtk (using gtk+) or kde (using qt), and DLLSUFFIX can be either .so (linux) or .dylib (Mac OS X) ...etc (I&amp;#039;m not sure for other cases).&lt;br /&gt;
&lt;br /&gt;
Example: libvcl680mxi.dylib and libvclplug_aqua680mxi.dylib&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;In runtime&amp;#039;&amp;#039;&amp;#039;, libvclplug_aqua will be linked to libvcl680. the first one will contain the real implementation (respecting the API, e.g. Carbon) while the generic libvcl will only contain pure virtual methods ...etc like &amp;quot;empty boxes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Current Aqua content ===&lt;br /&gt;
&lt;br /&gt;
A more complete description of aqua (Mac OS X / no X11 specific): [[Image:Vcl_aqua_organisation_02_tree.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==EXISTING objects to build in aqua==&lt;br /&gt;
&lt;br /&gt;
===Sal APP &amp;quot;everything application&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
[FIXME] add all objects descriptions&lt;br /&gt;
&lt;br /&gt;
==== saldata ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Defined in plugin exclusively&amp;#039;&amp;#039;&amp;#039; (i.e. for headers)&lt;br /&gt;
&lt;br /&gt;
Unix: unx/source/app/saldata.cxx (header in unx/inc)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Aqua: aqua/source/app/saldata.cxx (header in win/inc)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Windows: win/source/app/saldata.cxx (header in aqua/inc)&lt;br /&gt;
&lt;br /&gt;
* Role: saldata contains various kind of data used by the implementation for the concerned platform. &amp;#039;&amp;#039;&amp;#039;It is a bunch of global data collections reserved for the platform&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
It is just completely platform dependent, and nobody except this plugin can see it.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Saldata is something like a &amp;quot;second sal&amp;quot;, but providing an abstraction regarding windowing and graphics&amp;#039;&amp;#039;&amp;#039;, while SAL module provides an abstraction more Operating System oriented) &lt;br /&gt;
&lt;br /&gt;
e.g. : have a look at XRequest array in vcl/unx/source/app/saldata.cxx =&amp;gt; all calls are for Xlib (X11).  Ok, useless there, but interesting:-)&lt;br /&gt;
&lt;br /&gt;
[FIXME]: use Windows implementation could be a good starting point. Nothing is the same, but the current aquavcl cws uses similar objects, and it works very correctly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
saldatax.cxx uses classes SalInstance, SalObject, SalFrame, SalVirtualDevice, SalPrinter and fontList.&lt;br /&gt;
&lt;br /&gt;
Current list of possible objects who can be instantiated/released:&lt;br /&gt;
&lt;br /&gt;
structure SalData: does contain pointers on all kind of objects from other classes used in saldata.&lt;br /&gt;
&lt;br /&gt;
inline functions: [FIXME]: complete the description&lt;br /&gt;
&lt;br /&gt;
- SetSalData:&lt;br /&gt;
- GetSalData:&lt;br /&gt;
- GetAppSalData:&lt;br /&gt;
&lt;br /&gt;
==== salinst ====&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; implemented in vcl/aqua/source/app/salinst.cxx&lt;br /&gt;
&lt;br /&gt;
Role: &lt;br /&gt;
&lt;br /&gt;
* get environment, mutexes, instantiate AquaSalInstance (Ctor, Dtor),&lt;br /&gt;
&lt;br /&gt;
* instantiates/releases a lot of other objects using Get() / CreateObject() / DestroyObject() methods.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current list of possible objects who can be instantiated/released:&lt;br /&gt;
&lt;br /&gt;
 * VirtualDevice [FIXME]: exact role?&lt;br /&gt;
&lt;br /&gt;
 *Printer  &lt;br /&gt;
&lt;br /&gt;
- GetDefaultPrinter/ CreatePrinter() / DestroyPrinter - what a name ;-) -&lt;br /&gt;
&lt;br /&gt;
- InfoPrinter (Get/Create/Delete)&lt;br /&gt;
&lt;br /&gt;
- PrinterQueue (DeletePrinterQueueInfo / GetPrinterQueueInfo / GetPrinterQueueState)&lt;br /&gt;
&lt;br /&gt;
 * System (Create / Delete) [FIXME]: what means system here?&lt;br /&gt;
&lt;br /&gt;
 * Events: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::SetEventCallback()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::SetErrorEvenCallback()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::GetConnectionIdentifier()&lt;br /&gt;
&lt;br /&gt;
 * Menu / MenuItem: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateMenu() / same for DestroyMenu()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateMenuItem / same DestroyMenuItem()&lt;br /&gt;
&lt;br /&gt;
 * Sound: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateSalSound()  =&amp;gt; object to a pointer of SalSound type&lt;br /&gt;
&lt;br /&gt;
Note: AquaSalInstance::DestroySalSound is not implemented (?)&lt;br /&gt;
&lt;br /&gt;
 * Timer: CreateTimer() /&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance:: DestroyTimer() is not yet implemented (?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Class MacImeStatus: inherits of SalI18NImeStatus&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; only there to see if there is a window to toggle into menubar [FIXME]??&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateI18NImeStatus(): instantiates MacImeStatus&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;For futher informations, see: &amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;[[Content of salinst.cxx]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
([[User:Ericb|Ericb]] 16:11, 20 May 2006 (CEST) )&lt;br /&gt;
&lt;br /&gt;
==== salmain ====&lt;br /&gt;
&lt;br /&gt;
Role: if possible, runs the standard vcl application code SVMain()&lt;br /&gt;
&lt;br /&gt;
([[User:Ericb|Ericb]] 16:15, 20 May 2006 (CEST))&lt;br /&gt;
&lt;br /&gt;
==== salsound ====&lt;br /&gt;
&lt;br /&gt;
==== salsys ====&lt;br /&gt;
&lt;br /&gt;
==== saltimer ====&lt;br /&gt;
&lt;br /&gt;
=== Sal GDI (everything Graphical Display Interface) ===&lt;br /&gt;
&lt;br /&gt;
====salgdinativewidgets====&lt;br /&gt;
&lt;br /&gt;
[[native controls]]&lt;br /&gt;
&lt;br /&gt;
==== salatslayout ====&lt;br /&gt;
&lt;br /&gt;
==== salatsuiutils ====&lt;br /&gt;
&lt;br /&gt;
==== salfontutils ====&lt;br /&gt;
&lt;br /&gt;
==== salmathutils ====&lt;br /&gt;
&lt;br /&gt;
==== sal bmp ====&lt;br /&gt;
&lt;br /&gt;
==== salvd ====&lt;br /&gt;
&lt;br /&gt;
==== salframe ====&lt;br /&gt;
&lt;br /&gt;
==== salpixmaputils====&lt;br /&gt;
&lt;br /&gt;
==== salprn ====&lt;br /&gt;
&lt;br /&gt;
====salrectangle====&lt;br /&gt;
&lt;br /&gt;
==== salvd ====&lt;br /&gt;
&lt;br /&gt;
=== Sal Window===&lt;br /&gt;
&lt;br /&gt;
==== salframe ====&lt;br /&gt;
&lt;br /&gt;
====salobj====&lt;br /&gt;
&lt;br /&gt;
== TO BE IMPLEMENTED (missing in Aqua)==&lt;br /&gt;
&lt;br /&gt;
===Audio===&lt;br /&gt;
&lt;br /&gt;
====audioconvert====&lt;br /&gt;
 (obsolete?) &lt;br /&gt;
&lt;br /&gt;
====devaudio====&lt;br /&gt;
(obsolete?)&lt;br /&gt;
&lt;br /&gt;
====native sound====&lt;br /&gt;
&lt;br /&gt;
====salimpsound====&lt;br /&gt;
&lt;br /&gt;
====vsound====&lt;br /&gt;
&lt;br /&gt;
===i18n===&lt;br /&gt;
&lt;br /&gt;
===keysymnames===&lt;br /&gt;
&lt;br /&gt;
===saldisp===&lt;br /&gt;
&lt;br /&gt;
===sm===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME]: is session manager usefull?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is used for Linux, Windows, Mac OS X ...build ? ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Description of the dependencies]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Windows]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[MacOS X]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Linux]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Solaris]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Content of Aqua ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Click here to see the complete list]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Content of vcl/inc&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
1) Where to find includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;foo/bar.hxx&amp;gt; means you can find bar.hxx in the foo module. The new style file is foo/inc/foo/bar.hxx, old style is foo/inc/bar.hxx and sometimes the file is somewhere else in the tree or generated. The deliver process copies/generates the file into solver at solver/680/build_type/inc/foo. Good for fixing broken builds. ;-)&lt;br /&gt;
&lt;br /&gt;
2) &lt;br /&gt;
suffix .h (for C calls or first version?) or .hxx (C++) &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A) Family of includes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looking more closely at the list brings to the fore (expression from dictionary ;-) ) that include names are&lt;br /&gt;
informatives. Most of the time, the name gives the function/role.&lt;br /&gt;
What is interesting is the files with name begining with &amp;quot;sal&amp;quot;. sal means System Abstraction Layer + include&amp;#039;s function (or explicit name). &lt;br /&gt;
&lt;br /&gt;
Partial list, for example:&lt;br /&gt;
&lt;br /&gt;
salatype.hxx&lt;br /&gt;
&lt;br /&gt;
salbmp.hxx&lt;br /&gt;
&lt;br /&gt;
salctrlhandle.hxx&lt;br /&gt;
&lt;br /&gt;
salctype.hxx&lt;br /&gt;
&lt;br /&gt;
salframe.hxx&lt;br /&gt;
&lt;br /&gt;
salgdi.hxx&lt;br /&gt;
&lt;br /&gt;
salgeom.hxx&lt;br /&gt;
&lt;br /&gt;
sallayout.hxx (main header for fonts services)&lt;br /&gt;
...&lt;br /&gt;
salmenu&lt;br /&gt;
salnativewidgets&lt;br /&gt;
...etc&lt;br /&gt;
&lt;br /&gt;
Other important families are &amp;quot;sv&amp;quot; and &amp;quot;uno&amp;quot; or &amp;quot;win&amp;quot; (window) prefixed. sal family will be analysed apart.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B) Includes of includes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Some includes are more important than other. To prove this, just have a look is sufficient: some are always needed, and some more rarely.&lt;br /&gt;
&lt;br /&gt;
To verify, a simple test to do in vcl/inc:&lt;br /&gt;
&lt;br /&gt;
egrep -H &amp;quot;#include&amp;quot; ./* | wc -l  gives me 681 lines ! And some of them are the same...&lt;br /&gt;
&lt;br /&gt;
To know more, the precedent command line can be modified to make appear the numerous call &lt;br /&gt;
to the same includes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
egrep -H &amp;quot;#include&amp;quot; ./* | cut -d&amp;quot;#&amp;quot; -f2 | sort &amp;gt; liste.txt&lt;br /&gt;
&lt;br /&gt;
The content of liste.txt is explicit: dllapi.h, sv.h and some other are very important, while some other includes are only one or two times used. We can see too that vos includes are numerous, even if vos is deprecated**&lt;br /&gt;
&lt;br /&gt;
 **see http://wiki.services.openoffice.org/wiki/Source_code_directories&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;m nearly sure that a complete analysis of just this result will give us a lot of information.&lt;br /&gt;
&lt;br /&gt;
I propose to change the order of analysis starting with dllapi.h and sv.h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[to be continued]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B1) &amp;quot;sal&amp;quot; includes family&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[salinst.hxx]] This seems to be the main include file&lt;br /&gt;
&lt;br /&gt;
[[salatype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salctrlhandle.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salctype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salframe.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salgdi.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salgeom.hxx]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[ sallayout.hxx ]]&amp;#039;&amp;#039;&amp;#039; &amp;lt;-- see Native Fonts implementation&lt;br /&gt;
&lt;br /&gt;
[[salgtype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[vcl/inc/salobj.hxx]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B2) Classicals includes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
file: abstdlg.hxx [ means abstract dialog ]&lt;br /&gt;
&lt;br /&gt;
This includes does contain the following classes definitions:&lt;br /&gt;
&lt;br /&gt;
[FIXME] : choose a precise presentation template for classes &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VclAbstractDialog,&lt;br /&gt;
&lt;br /&gt;
VclAbstractTerminateDialog, &lt;br /&gt;
&lt;br /&gt;
VclAbstractRefreshableDialog,&lt;br /&gt;
 &lt;br /&gt;
VclAbstractDialogFactory, &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
uses &amp;lt;tools/solar.h&amp;gt; , &amp;lt;tools/string.hxx&amp;gt; + &lt;br /&gt;
&lt;br /&gt;
&amp;quot;dllapi.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note : dllapi.h is very interesting because when we have to find (for example) a library suffix, SAL_DLLEXTENSSION can replace all suffixes (every OS&amp;#039;s and archs). Just including sal/config.h does it ! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
Window -&amp;gt; what? [FIXME]&lt;br /&gt;
ResId -&amp;gt; what?&lt;br /&gt;
&lt;br /&gt;
Does contain the prototype of VclAbstractDialog, inherit of VCL_DLLPUBLIC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file: dllapi.h [ dll for dynamic linked library ]&lt;br /&gt;
Uses: &amp;lt;sal/config.h&amp;gt; and &amp;gt;sal/types/h&amp;gt;&lt;br /&gt;
includes: VCL_DLLPUBLIC macro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file: accel.h [ means accelerator ]&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
Accelerator &lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
ImplAccelEntry &lt;br /&gt;
{&lt;br /&gt;
public members: &lt;br /&gt;
&lt;br /&gt;
Names&lt;br /&gt;
&lt;br /&gt;
mnId&lt;br /&gt;
maKeyCode&lt;br /&gt;
mpAccel&lt;br /&gt;
mpAutoAccel&lt;br /&gt;
mbEnabled&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function / returns / parameters&lt;br /&gt;
&lt;br /&gt;
ImplGetKeyCode / void / KeyFuncType eFunc, ref rCode1 , ref rCode2, ref rCode3&lt;br /&gt;
&lt;br /&gt;
file: accel.hxx &lt;br /&gt;
&lt;br /&gt;
Uses: &amp;lt;sv.h&amp;gt; , &amp;quot;dllapi.h&amp;quot; ,&amp;lt;tools/resid.hxx&amp;gt;, &amp;lt;&amp;lt;tools/rc.hxx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
ImplAccelData;&lt;br /&gt;
ImplAccelEntry;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Important Links ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Progressive implementation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Font server Implementation&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;[[Fonts starting point and documentation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Sound Implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native Audio and Video]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Printing Implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native_Printing]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Drag and Drop implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native Drag and drop]]&lt;br /&gt;
&lt;br /&gt;
This work is part of http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s&lt;br /&gt;
&lt;br /&gt;
[to be continued:-) ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Ericb|Ericb]] 15:00, 22 Jul 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Aqua]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=User:Ericb&amp;diff=17761</id>
		<title>User:Ericb</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=User:Ericb&amp;diff=17761"/>
		<updated>2006-09-30T23:40:54Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Todo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Public Documentation License Notice==&lt;br /&gt;
&lt;br /&gt;
The contents of this Documentation (excepted Native Port Roadmap),are subject to the Public Documentation License Version 1.0 (the &amp;quot;License&amp;quot;); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at http://www.openoffice.org/licenses/PDL.html.&lt;br /&gt;
The Original Documentation is &amp;quot;Mac OS X native port&amp;quot;. The Initial Writer of the Original Documentation is (JCA) Eric Bachard (C) 2005-2006. All Rights Reserved. (Initial Writer contact(s): ericb@openoffice.org.)&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Mac OS X Native port&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;messagebox cleanup metadata&amp;quot; style=&amp;quot;border:1px solid blue;background-color:#B3FFF5;padding:7px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The first Mac OS X native port objective is make OpenOffice.org run without X11 use, to make it a real Mac application.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The second one is respect Aqua Human interface Guidelines&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; This is a long term work, and every help and/or contributions, like donations** are welcome.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 **see http://contributing.openoffice.org/index.html&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Native Port Roadmap&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;2006&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
* June 2006: work in progress &lt;br /&gt;
&lt;br /&gt;
- Basis: frame, instances, threads, drawing, painting, resizing (Stephan Schaefer, Tino Rachui)&lt;br /&gt;
&lt;br /&gt;
 Done: &lt;br /&gt;
 implement threads&lt;br /&gt;
 create, manage instance&lt;br /&gt;
 create, manage windows (including parents)&lt;br /&gt;
 create, manage events&lt;br /&gt;
 create manage drawing, resizing&lt;br /&gt;
 create, add menus (Pavel Janik)&lt;br /&gt;
 toggle window fullscreen (Pierre de Filippis)&lt;br /&gt;
 make font server work (Stephan Schaefer)&lt;br /&gt;
&lt;br /&gt;
* Current status font support (Stephan Schaefer, 2006/07/28): the following features are basically working now&lt;br /&gt;
** font selection&lt;br /&gt;
** font size&lt;br /&gt;
** simple font attributes (bold, italic)&lt;br /&gt;
&lt;br /&gt;
 Next step: document first part, and propose design&lt;br /&gt;
&lt;br /&gt;
- native filepicker (Oliver Braun)&lt;br /&gt;
&lt;br /&gt;
- native printing implementation (Oliver?)&lt;br /&gt;
&lt;br /&gt;
- native font implementation (Eric Bachard)&lt;br /&gt;
&lt;br /&gt;
* September 2006: &lt;br /&gt;
&lt;br /&gt;
- first proofs of concept: fonts, filepicker .. (more?)&lt;br /&gt;
- show the results (OOoCon 2006?)&lt;br /&gt;
&lt;br /&gt;
===&amp;#039;&amp;#039;&amp;#039;2007&amp;#039;&amp;#039;&amp;#039;===&lt;br /&gt;
&lt;br /&gt;
* January 2007: first alpha implementation&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Strategy for native port&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Possible Actions&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
Identify us:&lt;br /&gt;
&lt;br /&gt;
#Complete the arrays below&lt;br /&gt;
#Update photos on frapr.com?&lt;br /&gt;
&lt;br /&gt;
Share the work:&lt;br /&gt;
&lt;br /&gt;
#Divide the work between little Teams&lt;br /&gt;
#Update Todo list regularly -&amp;gt; needs some love these days ... [http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s]&lt;br /&gt;
&lt;br /&gt;
Help:&lt;br /&gt;
&lt;br /&gt;
#Teach tools between us&lt;br /&gt;
#Do a debug party on IRC&lt;br /&gt;
#write documentation&lt;br /&gt;
&lt;br /&gt;
Meet us:&lt;br /&gt;
&lt;br /&gt;
#IRC&lt;br /&gt;
#Mac Meeting (like nov2005 in Hamburg?)&lt;br /&gt;
&lt;br /&gt;
Inform:&lt;br /&gt;
&lt;br /&gt;
#Update website regularly&lt;br /&gt;
#Blogs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHO&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Mac Team:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
|Developer \ skills || build || write code || code review || debug/trace (higher is better) || contribute to documentation ||&lt;br /&gt;
|-&lt;br /&gt;
|ericb|| x || x || || 1 || x ||&lt;br /&gt;
|-&lt;br /&gt;
|pjanik|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|ssa|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|maho|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|tinor|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|schmidtm|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|ebischoff|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|obr|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|cl|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|aliscafo|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|fheckl|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Fridrich|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Other resources&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
fonts: ?&lt;br /&gt;
&lt;br /&gt;
events: ?&lt;br /&gt;
&lt;br /&gt;
QA: ?&lt;br /&gt;
&lt;br /&gt;
graphical: ?&lt;br /&gt;
&lt;br /&gt;
Communication: ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHAT&amp;#039;&amp;#039;&amp;#039;: Status of most important tasks&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;vertical-align:top; text-align:left; background-color:#efefef;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#d6d6d6;font-weight:bold;&amp;quot; &lt;br /&gt;
| Task || Names|| Urgency (1=higher)|| Work in Progress || Done || Code review || Debug || Integration || &lt;br /&gt;
|-&lt;br /&gt;
|Get rid of X11|| || 1 || x || x || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Bundle|| || 1 || x || || || || | ||&lt;br /&gt;
|-&lt;br /&gt;
|Drawing|| || 1 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Fonts|| || 1 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Events management|| || 2 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Controls (see list) ||ericb, aliscafo || 2 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native FilePicker|| || 3 || x || x || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native Printing|| || 3 || x || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Native SpellChecker|| || 4 || || || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Player|| || 4 || x || || || || || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other tasks:&lt;br /&gt;
&lt;br /&gt;
Help for writing bug lists, status of bugs ..etc&lt;br /&gt;
&lt;br /&gt;
Write howto use gdb, leaks, other tools&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WHEN&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
From Christian Lippka (last meeting, 25th of august 2006): &lt;br /&gt;
 Aug 26 00:21:38 ChristianL&lt;br /&gt;
 from my point of view what is missing for point 1:&lt;br /&gt;
 text layout, complete font support, keyboard support,&lt;br /&gt;
 fixing repaint issues, having aqua install and run out of the box&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;September 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Present the current state of the project at the 2006 OpenOffice conference in Lyon and Paris&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Late 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
fix OpenOffice.org launch&lt;br /&gt;
fix drawing (repainting)&lt;br /&gt;
Implement missing methods and fix most important bugs (mainly the one leading to crash) in:&lt;br /&gt;
ATS&lt;br /&gt;
Salgraphics&lt;br /&gt;
Salinstance&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;January or February 2007&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
make Java work (works partially)&lt;br /&gt;
make intensive debug&lt;br /&gt;
present something working as alpha&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;June 2007	&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Implementation of:&lt;br /&gt;
native filepicker&lt;br /&gt;
native printing&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;2nd Mac porters meeting&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
=== When? ===&lt;br /&gt;
&lt;br /&gt;
2nd and 3rd of December or 9th and 10th of December&lt;br /&gt;
&lt;br /&gt;
=== Where? ===&lt;br /&gt;
&lt;br /&gt;
Google Hamburg&lt;br /&gt;
ABC-Strasse 19&lt;br /&gt;
20354 Hamburg&lt;br /&gt;
Deutschland&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;How to get there&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Airport: HAM&lt;br /&gt;
There is a bus connection from the airport. A taxi costs about 10 euros in one direction.&lt;br /&gt;
&lt;br /&gt;
=== Where to stay ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB: Rates might not be accurate&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Side Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Side Hotel&lt;br /&gt;
Drehbahn 49&lt;br /&gt;
20354 Hamburg&lt;br /&gt;
+49 (040) 30-99-90&lt;br /&gt;
+49 (040) 30-99-93-99 fax&lt;br /&gt;
info@side-hamburg.de&lt;br /&gt;
reservation@side-hamburg.de&lt;br /&gt;
&lt;br /&gt;
This is a very nice, modern hotel within seven minutes&amp;#039; walk from the office.&lt;br /&gt;
&lt;br /&gt;
Superior Category&lt;br /&gt;
Single Room: €135,00&lt;br /&gt;
Double Room: €160,00&lt;br /&gt;
&lt;br /&gt;
Deluxe Category&lt;br /&gt;
Single Room: €150,00&lt;br /&gt;
Double Room: €175,00&lt;br /&gt;
&lt;br /&gt;
These prices include breakfast, and all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Four Seasons Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Raffles Vier Jahreszeiten (Four Seasons Hotel)&lt;br /&gt;
Neuer Jungfernstieg 9-14&lt;br /&gt;
+49 (040) 34-94-0&lt;br /&gt;
+49 (040) 34-94-2600 fax&lt;br /&gt;
emailus.hvj@raffles.com&lt;br /&gt;
&lt;br /&gt;
The name &amp;quot;Four Seasons&amp;quot; speaks for itself.&lt;br /&gt;
&lt;br /&gt;
Superior Category (view to the courtyard)&lt;br /&gt;
Single Room: €155,00&lt;br /&gt;
Double Room (single occupancy): €180,00&lt;br /&gt;
Double Room (double occupancy): €205,00&lt;br /&gt;
&lt;br /&gt;
Deluxe Category (view to the Alster)&lt;br /&gt;
Single Room: €220,00&lt;br /&gt;
Double Room: €270,00&lt;br /&gt;
&lt;br /&gt;
These prices do not include breakfast, but do include all taxes.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Marriott Hotel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Very near to the office is the:&lt;br /&gt;
&lt;br /&gt;
Marriott Hotel&lt;br /&gt;
ABC-Straße 52&lt;br /&gt;
20354 Hamburg&lt;br /&gt;
+49 (040) 350-50&lt;br /&gt;
&lt;br /&gt;
Special Rates&lt;br /&gt;
Standard Deluxe Single or Double Room: €146,00&lt;br /&gt;
&lt;br /&gt;
These prices include a French buffet (coffee, tea, croissants, etc).&lt;br /&gt;
&lt;br /&gt;
This is a standard chain hotel, within two minutes&amp;#039; walk from the office.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Todo===&lt;br /&gt;
&lt;br /&gt;
1) define location and date&lt;br /&gt;
 Easy to attend for all people coming&lt;br /&gt;
 Some University?&lt;br /&gt;
 An airport close to the meeting is prefered&lt;br /&gt;
 &lt;br /&gt;
2) write a list of interested people&lt;br /&gt;
&lt;br /&gt;
 ericb&lt;br /&gt;
 pjanik&lt;br /&gt;
 obr&lt;br /&gt;
 fheckl&lt;br /&gt;
 tra&lt;br /&gt;
 &lt;br /&gt;
 [complete the list]&lt;br /&gt;
&lt;br /&gt;
3) define needed resources &lt;br /&gt;
&lt;br /&gt;
 rooms for 10 to 20 people (as cheap as possible)&lt;br /&gt;
 Food?&lt;br /&gt;
 Hardware: 1 per workshop -&amp;gt; 4 machines would be great&lt;br /&gt;
&lt;br /&gt;
4) Find money for travels, rooms and food&lt;br /&gt;
 &lt;br /&gt;
 By plane? &lt;br /&gt;
 come together by car?&lt;br /&gt;
 Note: I&amp;#039;ll propose the amount of money we need to Louis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Location&lt;br /&gt;
&lt;br /&gt;
 Last minute : Hamburg will probably be prefered.&lt;br /&gt;
&lt;br /&gt;
 Pavel proposed Prague (Florian and me would have prefered),  but probably not possible.&lt;br /&gt;
 &lt;br /&gt;
 [FIXME]&lt;br /&gt;
&lt;br /&gt;
6) Duration &lt;br /&gt;
&lt;br /&gt;
 A weekend: e.g. Saturday 2nd / Sunday 3rd december 2006  &lt;br /&gt;
&lt;br /&gt;
 Other possibilities: Saturday 9th / Sunday 10th december 2006&lt;br /&gt;
                      Begin of January 2007&lt;br /&gt;
 &lt;br /&gt;
7) Content&lt;br /&gt;
&lt;br /&gt;
 Common sessions / Workshops around native issues: &lt;br /&gt;
 &lt;br /&gt;
 - windowing (salinst*)&lt;br /&gt;
 - redrawing&lt;br /&gt;
 - fonts&lt;br /&gt;
 - controls&lt;br /&gt;
 - native printing&lt;br /&gt;
 - packaging&lt;br /&gt;
 ..etc (propose other)&lt;br /&gt;
&lt;br /&gt;
===Agenda (can be modified)===&lt;br /&gt;
&lt;br /&gt;
[FIXME] create an array ..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Saturday:&lt;br /&gt;
&lt;br /&gt;
- Common session from 12:00 to 15:00 &lt;br /&gt;
&lt;br /&gt;
- Workshops: From 16:00 to 19:00 &lt;br /&gt;
&lt;br /&gt;
[Saturday evening: some dinner in the city? ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sunday:&lt;br /&gt;
&lt;br /&gt;
- Workshops from 10:00 to 12:00&lt;br /&gt;
&lt;br /&gt;
- Conclusions from 13:00 to 14:00&lt;br /&gt;
&lt;br /&gt;
Time to return after ...&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;IRC Mac port meetings&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
This section has been moved to [[MacOSXPortMeetings]].&lt;br /&gt;
&lt;br /&gt;
==Description of the Native Port problem==&lt;br /&gt;
&lt;br /&gt;
=== How does OpenOffice.org work on Mac OS X? ===&lt;br /&gt;
&lt;br /&gt;
Currently, on Mac OS X, OpenOffice.org uses X11, as &amp;quot;client&amp;quot;: X11 is a graphical server, coming from Unix world, and able to run under Linux, *BSD, Solaris, Mac OS X.&lt;br /&gt;
&lt;br /&gt;
 - X11 is run as an application, managed like other Apple applications.&lt;br /&gt;
 - All unix like applications are managed by X11, and from Aqua environment, only X11 is seen as only one applicatiion, &lt;br /&gt;
  even if other Unix/Linux (e.g.) applications are runing.&lt;br /&gt;
&lt;br /&gt;
OpenOffice.org asks X11 to display a window, waits for X11 acknowledgment, and OpenOffice.org displays the window. All transactions use the network, locally or not. the same mechanism is used for everything to be displayed.&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== Issues and known problems ===&lt;br /&gt;
&lt;br /&gt;
All events are managed by OpenOffice.org and X11, using the Xlib&lt;br /&gt;
&lt;br /&gt;
Only .ttf fonts type is currently available. Note: &amp;#039;&amp;#039;&amp;#039;system fonts are available &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The rendering is made by X11, not by Mac OS X rendering engine.&lt;br /&gt;
&lt;br /&gt;
X11 and all its clients are seen as one application only: drag and drop protocol does not work because of that (solution: Pasteboard Manager)&lt;br /&gt;
&lt;br /&gt;
==== Other links ====&lt;br /&gt;
&lt;br /&gt;
http://wiki.services.openoffice.org/wiki/List_of_OpenOffice.org_Mac_OS_X_issues_and_problems#&lt;br /&gt;
&lt;br /&gt;
http://wiki.services.openoffice.org/wiki/Printing_problems_with_OpenOffice.org_2.0_for_Mac_OS_X#Reporting_printing_problems&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== What do we have to do?==&lt;br /&gt;
&lt;br /&gt;
* Implement direct access to Apple graphical engine, using Apple API: Quartz2D/CoreGraphics (and replacing Xlib use)&lt;br /&gt;
&lt;br /&gt;
like: instantiate, manage events and threads for a graphical instance + all needed objects, drawing: manage all drawing cases&lt;br /&gt;
&lt;br /&gt;
* Implement native events management, using CarbonEventManager (replacing Xlib management)&lt;br /&gt;
&lt;br /&gt;
* Implement native font use, using Apple Type Server and ATSUI (for Unicode Imagery) (replacing X11 management)&lt;br /&gt;
&lt;br /&gt;
Work in progress: http://wiki.services.openoffice.org/wiki/Fonts_starting_point_and_documentation&lt;br /&gt;
&lt;br /&gt;
* Implement native sound, using QuickTime (replacing Java Media Framework): [[Mac OS X Porting - Native Audio and Video]]&lt;br /&gt;
&lt;br /&gt;
* Implement native Drag and drop, Implementing Pasteboard Manager: [[Mac OS X Porting - Native Drag and drop]]&lt;br /&gt;
&lt;br /&gt;
* Implement Native Filepicker&lt;br /&gt;
&lt;br /&gt;
* Implement Native Printing: current uses cups, but native printing is mandatory: [[Mac OS X Porting - Native_Printing]]&lt;br /&gt;
&lt;br /&gt;
* Implement Apple Spellchecker&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;Where is located the code to be modified?&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Most of the changes are located in vcl (Visual Class Layer), for everything graphical, events, fonts, rendering and printing.&lt;br /&gt;
&lt;br /&gt;
Other, for sound and movies will be in avmedia (where the player is implemented in OpenOffice.org sources).&lt;br /&gt;
&lt;br /&gt;
For drag and drop, dtrans is concerned (Pasteboard Manager implementation)&lt;br /&gt;
&lt;br /&gt;
[FIXME]: Filepicker? Apple Spellchecker?&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 11:39, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==&amp;#039;&amp;#039;&amp;#039;How will the new implementation be tested?==&lt;br /&gt;
&lt;br /&gt;
Currently, all openOffice.org code can be compiled without using the Xlib. but of course, a lot of features are missing,&lt;br /&gt;
&lt;br /&gt;
and the final package simply won&amp;#039;t work&lt;br /&gt;
&lt;br /&gt;
In vcl module&amp;quot;, a &amp;#039;&amp;#039;&amp;#039;toy&amp;#039;&amp;#039;&amp;#039; called svdem is built at buildtime. This binary is linked to libvcl* and so all new stuff can be tested.&lt;br /&gt;
&lt;br /&gt;
e.g. : draw anti-aliased lines works well. &lt;br /&gt;
&lt;br /&gt;
Everything implemented in aqua vcl code will be included in libvclplug_aqua, and svdem source code will contain a specific part to proceed tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;messagebox cleanup metadata&amp;quot; style=&amp;quot;border:1px solid blue;background-color:#B3FFF5;padding:7px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The magic is: when all needed features will work with svdem, it will work in the new version of OpenOffice.org !!&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME]: add more complete list of features to implement and test.&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;Sort of documentation about VCL around Native Mac OS X port&amp;#039;&amp;#039;&amp;#039; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do we really need to understand how it works? ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
vcl content:&lt;br /&gt;
&lt;br /&gt;
ls -laR | wc -l&lt;br /&gt;
  1750&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Uff 1750 files to analyse :-/&lt;br /&gt;
&lt;br /&gt;
Our purpose is to describe the vcl organisation. The content of vcl is so important, that at the begining, the content will looks a bit confused. e.g. class names ..etc have nothing to do, only description with words and sense, but this will need some time before we can understand everything.&lt;br /&gt;
&lt;br /&gt;
How analyse with more efficiency? After some months to anlalyse &amp;#039;&amp;#039;&amp;#039;&amp;quot;horizontaly&amp;quot;&amp;#039;&amp;#039;&amp;#039;, it appears that list all the content of a directory is not the solution. Of course, we learned a lot, but we now have to complete with &amp;#039;&amp;#039;&amp;#039;&amp;quot;orthogonal&amp;quot;&amp;#039;&amp;#039;&amp;#039; method (compared to the previous one). The first method wasn&amp;#039;t obviously not the good/best way to describe vcl.&lt;br /&gt;
 &lt;br /&gt;
[UPDATE] After some investigations, the use of Design patterns seems to be the most efficient approach to describe vcl. Will try to do so asap.&lt;br /&gt;
&lt;br /&gt;
[FIXME] a different approach (will ask confirmation to Philipp Lohman), could be a description of how it work in runtime. First define what an instance is, a frame, and what exactly is concerned by such &amp;quot;objects&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
With that, we can write a list of different objects all using the same scheme: empty boxes (means pure virtual methods and classes in generic libvvcl), really implemented in the specific part, and finally, the API &amp;quot;encapsulated&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The most difficult is to see where the API is used. But for all the parts, this is the same.&lt;br /&gt;
&lt;br /&gt;
Finally, &amp;#039;&amp;#039;&amp;#039;what is important is the design of vcl&amp;#039;&amp;#039;&amp;#039;. Which &amp;#039;&amp;#039;&amp;#039;patterns&amp;#039;&amp;#039;&amp;#039; are used? What are the dependencies, how works the stack for the events, how works the scheduler, the timers too is very important, even fundamental for Aqua implementation. Will have a look at gsl mailing list, and other resources. Probably everything is already (randomly) written somewhere.&lt;br /&gt;
&lt;br /&gt;
=== VCL organisation ===&lt;br /&gt;
&lt;br /&gt;
Thank&amp;#039;s to Philipp Lohmann for this short, but precise description:&lt;br /&gt;
&lt;br /&gt;
Basically vcl is divided in the system dependent and the system independent part. The interface between these two is mostly the Sal interface (every interface name Sal*: SalInstance, SalFrame, SalGraphics, SalPrinter, etc.).&lt;br /&gt;
&lt;br /&gt;
SalInstance is a factory that can create all the other abstracted interfaces of the system dependent part. It also provides the main loop SalInstance::Yield()&lt;br /&gt;
&lt;br /&gt;
SalFrame abstracts any kind of system window.&lt;br /&gt;
&lt;br /&gt;
SalVirtualDevice abstracts an offscreen window (e.g. a Pixmap on X11)&lt;br /&gt;
&lt;br /&gt;
SalPrinter and SalInfoPrinter abstract the system print queues where SalInfoPrinter is for querying and SalPrinter for actual printing.&lt;br /&gt;
&lt;br /&gt;
SalGraphics is an interface produced by either SalFrame, SalVirtualDevice or SalPrinter which is used for actual drawing operations (text, bitmaps, vector graphics)&lt;br /&gt;
&lt;br /&gt;
SalSound is for sound playing.&lt;br /&gt;
&lt;br /&gt;
SalBitmap provides memory for bitmap graphics as well as methods converting this memory to a system handle (e.g. a Pixmap on X11).&lt;br /&gt;
&lt;br /&gt;
SalOpenGL provides OpenGL functionality if available.&lt;br /&gt;
&lt;br /&gt;
SalTimer is an interface for periodically triggering the event queue (to timer implementation).&lt;br /&gt;
&lt;br /&gt;
SalI18NImeStatus handles how the status window of an Input Method Editor (IME) should display (this is mainly X11 specific).&lt;br /&gt;
&lt;br /&gt;
SalSystem has some system specific methods that did not belong anywhere else:-)&lt;br /&gt;
&lt;br /&gt;
Of all these there interfaces is at least one implementation per system (Windows, X11 or Mac). The Unix implementation also has a plugin concept to allow for integration of different native toolkits (currently gtk and Qt) which became necessary for the implementation of Native Widget Framework (NWF) to display controls like their normal desktop counterparts.&lt;br /&gt;
&lt;br /&gt;
Basically the independent part (what is beneath vcl/source directory) has generic methods for drawing, window handling and stuff which it brings into a suitable form and then delegates to the system specific implementaion (located beneath vcl/win for Windows and vcl/unx for the X11 platforms).&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 16:12, 1 July 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
===Sub-directories description ===&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Organisation of vcl directories&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
&lt;br /&gt;
[[Image:aquavcl_organisation_complete_02.jpg]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;#039;&amp;#039;&amp;#039;Directories in vcl. Short description&amp;#039;&amp;#039;&amp;#039; ====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; aqua &amp;#039;&amp;#039;&amp;#039;: The name Aqua means Apple look and feel, and is well known as [http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html Aqua Human Interface Guidelines]. This look and feel means Mac OS X. The work was begun by (probably) P. luby, Dan Williams Herbert Duerr (most of fonts stuff) and Ed Peterlin. Currently in ruin, this directory does contain a lot of ideas to investigate. The most important part of needed changes for native version (3.0) will be done inside aqua dir inc: does contain all vcl relative includes [PART1]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; prj &amp;#039;&amp;#039;&amp;#039;: Does contain build.lst and d.lst build.lst give us dependencies: probably a lot for vcl, build 98th module over ~148. Everything graphical depends in vcl. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; qa &amp;#039;&amp;#039;&amp;#039; does contain all quality assurancy stuff&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;source&amp;#039;&amp;#039;&amp;#039;: the most important:-) This directory contains common sources for all architectures and OS. Mainly: Windows, Unix: Linux , Mac OS X (X11), Solaris, including generic, kde and gtk plugins, and Aqua (Mac OS X without X11, work currently in progress). &lt;br /&gt;
&lt;br /&gt;
Depending on the OS and the architecture, binaries are built or not.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; test &amp;#039;&amp;#039;&amp;#039;: This directory does contain all the needed stuff for tests. As example, in qa/testdocuments, you&amp;#039;ll find three documents (one writer, one calc and one impress) for tests purpose. &lt;br /&gt;
Other available tests are about memcheck and persistent window state. &lt;br /&gt;
 &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; unx &amp;#039;&amp;#039;&amp;#039;: this directory does contain all unixes stuff. We have to understand what is inside to implement aqua port. For example, a lot of classes/strutures and objects use Xlib calls we have to replace with Carbon/Cocoa call (at least at first time) for Mac OS X native port.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; win &amp;#039;&amp;#039;&amp;#039;: Doing Mac OS X native port, I first believed this directory was not interesting for us, but I was wrong: OpenOffice.org roots are inside this directory, and a lot of comments and resources are inside. Mainly interesting if Carbon is used.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;workben&amp;#039;&amp;#039;&amp;#039;: Does contain a toy called &amp;quot;svdem&amp;quot;. svdem is a binary, used for new implementations. For example, actual aqua development uses svdem intensively, to verify all important properties we need: &lt;br /&gt;
&lt;br /&gt;
- display a window first (al least ...:)) &lt;br /&gt;
&lt;br /&gt;
- close cleanly this window&lt;br /&gt;
&lt;br /&gt;
- display a point&lt;br /&gt;
&lt;br /&gt;
- trace a line&lt;br /&gt;
&lt;br /&gt;
- trace an area &lt;br /&gt;
&lt;br /&gt;
- superpose two areas doing some important graphical operations, (like xor),&lt;br /&gt;
&lt;br /&gt;
- display a character&lt;br /&gt;
&lt;br /&gt;
- display a menu. &lt;br /&gt;
&lt;br /&gt;
- intercept events correctly.&lt;br /&gt;
&lt;br /&gt;
[FIXME] add more tests&lt;br /&gt;
&lt;br /&gt;
[[User:Ericb|Ericb]] 13:21, 3 June 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Naming convention ==&lt;br /&gt;
&lt;br /&gt;
* Class names start with upper case letters, to improve readability.&lt;br /&gt;
&lt;br /&gt;
* Implemented Class names are derived from the virtual classes but can of course take arbitrary names.&lt;br /&gt;
To increase readability, it&amp;#039;s recommended to closely follow the base class name.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Impl prefix: means Implementation details&amp;#039;&amp;#039;&amp;#039;. The concerned class or method or function is not used outside of this module, so no external code (or other libraries) can see it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[ Events types using Carbon API (Mac OS X): ]]&amp;#039;&amp;#039;&amp;#039; A lot of events have to be managed in runtime. Here is a short description&lt;br /&gt;
&lt;br /&gt;
- do not freeze because bad event loops&lt;br /&gt;
&lt;br /&gt;
- event types implementation: currently, they are defined in vcl/aqua/inc/aquavclevents.hxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apart: exact sense of hedabu? -&amp;gt; [FIXME] as far as I understood it: it is like &amp;quot;copy&amp;quot; to deliver software into the solver, with extra magic. The header files for example are manipulated so paths need not be exact. &amp;quot;headabu&amp;quot; is supposed to disappear little by little.&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;&amp;#039;What do we have to build in vcl?&amp;#039;&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
Two libraries, corresponding ressources (localized) and a toy so called « svdem »&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Common part&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
in grey on right. The result will be a non architecture dependant library, built in all cases: for instance, libvcl680mxi.dylib on Mac Intel.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Specific part  &amp;quot; a plugin &amp;quot; &amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
&lt;br /&gt;
Light yellow: aqua part will only concern Mac OS X (non X11) the name will probably be libvcl_aqua680mxi.dylib &lt;br /&gt;
&lt;br /&gt;
As you can see, win means windows part, in blue&lt;br /&gt;
&lt;br /&gt;
For Unix build (Linux, Solaris or current Mac OS X X11), in purple.&lt;br /&gt;
&lt;br /&gt;
Result will be:&lt;br /&gt;
&lt;br /&gt;
libvclplug_PLUGIN680mxi.DLLSUFFIX , where PLUGIN can be iether gen (generic) or gtk (using gtk+) or kde (using qt), and DLLSUFFIX can be either .so (linux) or .dylib (Mac OS X) ...etc (I&amp;#039;m not sure for other cases).&lt;br /&gt;
&lt;br /&gt;
Example: libvcl680mxi.dylib and libvclplug_aqua680mxi.dylib&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;In runtime&amp;#039;&amp;#039;&amp;#039;, libvclplug_aqua will be linked to libvcl680. the first one will contain the real implementation (respecting the API, e.g. Carbon) while the generic libvcl will only contain pure virtual methods ...etc like &amp;quot;empty boxes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Current Aqua content ===&lt;br /&gt;
&lt;br /&gt;
A more complete description of aqua (Mac OS X / no X11 specific): [[Image:Vcl_aqua_organisation_02_tree.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==EXISTING objects to build in aqua==&lt;br /&gt;
&lt;br /&gt;
===Sal APP &amp;quot;everything application&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
[FIXME] add all objects descriptions&lt;br /&gt;
&lt;br /&gt;
==== saldata ====&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Defined in plugin exclusively&amp;#039;&amp;#039;&amp;#039; (i.e. for headers)&lt;br /&gt;
&lt;br /&gt;
Unix: unx/source/app/saldata.cxx (header in unx/inc)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Aqua: aqua/source/app/saldata.cxx (header in win/inc)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Windows: win/source/app/saldata.cxx (header in aqua/inc)&lt;br /&gt;
&lt;br /&gt;
* Role: saldata contains various kind of data used by the implementation for the concerned platform. &amp;#039;&amp;#039;&amp;#039;It is a bunch of global data collections reserved for the platform&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
It is just completely platform dependent, and nobody except this plugin can see it.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Saldata is something like a &amp;quot;second sal&amp;quot;, but providing an abstraction regarding windowing and graphics&amp;#039;&amp;#039;&amp;#039;, while SAL module provides an abstraction more Operating System oriented) &lt;br /&gt;
&lt;br /&gt;
e.g. : have a look at XRequest array in vcl/unx/source/app/saldata.cxx =&amp;gt; all calls are for Xlib (X11).  Ok, useless there, but interesting:-)&lt;br /&gt;
&lt;br /&gt;
[FIXME]: use Windows implementation could be a good starting point. Nothing is the same, but the current aquavcl cws uses similar objects, and it works very correctly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
saldatax.cxx uses classes SalInstance, SalObject, SalFrame, SalVirtualDevice, SalPrinter and fontList.&lt;br /&gt;
&lt;br /&gt;
Current list of possible objects who can be instantiated/released:&lt;br /&gt;
&lt;br /&gt;
structure SalData: does contain pointers on all kind of objects from other classes used in saldata.&lt;br /&gt;
&lt;br /&gt;
inline functions: [FIXME]: complete the description&lt;br /&gt;
&lt;br /&gt;
- SetSalData:&lt;br /&gt;
- GetSalData:&lt;br /&gt;
- GetAppSalData:&lt;br /&gt;
&lt;br /&gt;
==== salinst ====&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; implemented in vcl/aqua/source/app/salinst.cxx&lt;br /&gt;
&lt;br /&gt;
Role: &lt;br /&gt;
&lt;br /&gt;
* get environment, mutexes, instantiate AquaSalInstance (Ctor, Dtor),&lt;br /&gt;
&lt;br /&gt;
* instantiates/releases a lot of other objects using Get() / CreateObject() / DestroyObject() methods.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current list of possible objects who can be instantiated/released:&lt;br /&gt;
&lt;br /&gt;
 * VirtualDevice [FIXME]: exact role?&lt;br /&gt;
&lt;br /&gt;
 *Printer  &lt;br /&gt;
&lt;br /&gt;
- GetDefaultPrinter/ CreatePrinter() / DestroyPrinter - what a name ;-) -&lt;br /&gt;
&lt;br /&gt;
- InfoPrinter (Get/Create/Delete)&lt;br /&gt;
&lt;br /&gt;
- PrinterQueue (DeletePrinterQueueInfo / GetPrinterQueueInfo / GetPrinterQueueState)&lt;br /&gt;
&lt;br /&gt;
 * System (Create / Delete) [FIXME]: what means system here?&lt;br /&gt;
&lt;br /&gt;
 * Events: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::SetEventCallback()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::SetErrorEvenCallback()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::GetConnectionIdentifier()&lt;br /&gt;
&lt;br /&gt;
 * Menu / MenuItem: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateMenu() / same for DestroyMenu()&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateMenuItem / same DestroyMenuItem()&lt;br /&gt;
&lt;br /&gt;
 * Sound: &lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateSalSound()  =&amp;gt; object to a pointer of SalSound type&lt;br /&gt;
&lt;br /&gt;
Note: AquaSalInstance::DestroySalSound is not implemented (?)&lt;br /&gt;
&lt;br /&gt;
 * Timer: CreateTimer() /&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance:: DestroyTimer() is not yet implemented (?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Class MacImeStatus: inherits of SalI18NImeStatus&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; only there to see if there is a window to toggle into menubar [FIXME]??&lt;br /&gt;
&lt;br /&gt;
AquaSalInstance::CreateI18NImeStatus(): instantiates MacImeStatus&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;For futher informations, see: &amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;[[Content of salinst.cxx]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
([[User:Ericb|Ericb]] 16:11, 20 May 2006 (CEST) )&lt;br /&gt;
&lt;br /&gt;
==== salmain ====&lt;br /&gt;
&lt;br /&gt;
Role: if possible, runs the standard vcl application code SVMain()&lt;br /&gt;
&lt;br /&gt;
([[User:Ericb|Ericb]] 16:15, 20 May 2006 (CEST))&lt;br /&gt;
&lt;br /&gt;
==== salsound ====&lt;br /&gt;
&lt;br /&gt;
==== salsys ====&lt;br /&gt;
&lt;br /&gt;
==== saltimer ====&lt;br /&gt;
&lt;br /&gt;
=== Sal GDI (everything Graphical Display Interface) ===&lt;br /&gt;
&lt;br /&gt;
====salgdinativewidgets====&lt;br /&gt;
&lt;br /&gt;
[[native controls]]&lt;br /&gt;
&lt;br /&gt;
==== salatslayout ====&lt;br /&gt;
&lt;br /&gt;
==== salatsuiutils ====&lt;br /&gt;
&lt;br /&gt;
==== salfontutils ====&lt;br /&gt;
&lt;br /&gt;
==== salmathutils ====&lt;br /&gt;
&lt;br /&gt;
==== sal bmp ====&lt;br /&gt;
&lt;br /&gt;
==== salvd ====&lt;br /&gt;
&lt;br /&gt;
==== salframe ====&lt;br /&gt;
&lt;br /&gt;
==== salpixmaputils====&lt;br /&gt;
&lt;br /&gt;
==== salprn ====&lt;br /&gt;
&lt;br /&gt;
====salrectangle====&lt;br /&gt;
&lt;br /&gt;
==== salvd ====&lt;br /&gt;
&lt;br /&gt;
=== Sal Window===&lt;br /&gt;
&lt;br /&gt;
==== salframe ====&lt;br /&gt;
&lt;br /&gt;
====salobj====&lt;br /&gt;
&lt;br /&gt;
== TO BE IMPLEMENTED (missing in Aqua)==&lt;br /&gt;
&lt;br /&gt;
===Audio===&lt;br /&gt;
&lt;br /&gt;
====audioconvert====&lt;br /&gt;
 (obsolete?) &lt;br /&gt;
&lt;br /&gt;
====devaudio====&lt;br /&gt;
(obsolete?)&lt;br /&gt;
&lt;br /&gt;
====native sound====&lt;br /&gt;
&lt;br /&gt;
====salimpsound====&lt;br /&gt;
&lt;br /&gt;
====vsound====&lt;br /&gt;
&lt;br /&gt;
===i18n===&lt;br /&gt;
&lt;br /&gt;
===keysymnames===&lt;br /&gt;
&lt;br /&gt;
===saldisp===&lt;br /&gt;
&lt;br /&gt;
===sm===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[FIXME]: is session manager usefull?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is used for Linux, Windows, Mac OS X ...build ? ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Description of the dependencies]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Windows]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[MacOS X]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Linux]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Solaris]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Content of Aqua ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Click here to see the complete list]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Content of vcl/inc&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Notes: &lt;br /&gt;
&lt;br /&gt;
1) Where to find includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;foo/bar.hxx&amp;gt; means you can find bar.hxx in the foo module. The new style file is foo/inc/foo/bar.hxx, old style is foo/inc/bar.hxx and sometimes the file is somewhere else in the tree or generated. The deliver process copies/generates the file into solver at solver/680/build_type/inc/foo. Good for fixing broken builds. ;-)&lt;br /&gt;
&lt;br /&gt;
2) &lt;br /&gt;
suffix .h (for C calls or first version?) or .hxx (C++) &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;A) Family of includes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Looking more closely at the list brings to the fore (expression from dictionary ;-) ) that include names are&lt;br /&gt;
informatives. Most of the time, the name gives the function/role.&lt;br /&gt;
What is interesting is the files with name begining with &amp;quot;sal&amp;quot;. sal means System Abstraction Layer + include&amp;#039;s function (or explicit name). &lt;br /&gt;
&lt;br /&gt;
Partial list, for example:&lt;br /&gt;
&lt;br /&gt;
salatype.hxx&lt;br /&gt;
&lt;br /&gt;
salbmp.hxx&lt;br /&gt;
&lt;br /&gt;
salctrlhandle.hxx&lt;br /&gt;
&lt;br /&gt;
salctype.hxx&lt;br /&gt;
&lt;br /&gt;
salframe.hxx&lt;br /&gt;
&lt;br /&gt;
salgdi.hxx&lt;br /&gt;
&lt;br /&gt;
salgeom.hxx&lt;br /&gt;
&lt;br /&gt;
sallayout.hxx (main header for fonts services)&lt;br /&gt;
...&lt;br /&gt;
salmenu&lt;br /&gt;
salnativewidgets&lt;br /&gt;
...etc&lt;br /&gt;
&lt;br /&gt;
Other important families are &amp;quot;sv&amp;quot; and &amp;quot;uno&amp;quot; or &amp;quot;win&amp;quot; (window) prefixed. sal family will be analysed apart.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B) Includes of includes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Some includes are more important than other. To prove this, just have a look is sufficient: some are always needed, and some more rarely.&lt;br /&gt;
&lt;br /&gt;
To verify, a simple test to do in vcl/inc:&lt;br /&gt;
&lt;br /&gt;
egrep -H &amp;quot;#include&amp;quot; ./* | wc -l  gives me 681 lines ! And some of them are the same...&lt;br /&gt;
&lt;br /&gt;
To know more, the precedent command line can be modified to make appear the numerous call &lt;br /&gt;
to the same includes files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
egrep -H &amp;quot;#include&amp;quot; ./* | cut -d&amp;quot;#&amp;quot; -f2 | sort &amp;gt; liste.txt&lt;br /&gt;
&lt;br /&gt;
The content of liste.txt is explicit: dllapi.h, sv.h and some other are very important, while some other includes are only one or two times used. We can see too that vos includes are numerous, even if vos is deprecated**&lt;br /&gt;
&lt;br /&gt;
 **see http://wiki.services.openoffice.org/wiki/Source_code_directories&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&amp;#039;m nearly sure that a complete analysis of just this result will give us a lot of information.&lt;br /&gt;
&lt;br /&gt;
I propose to change the order of analysis starting with dllapi.h and sv.h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[to be continued]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B1) &amp;quot;sal&amp;quot; includes family&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[salinst.hxx]] This seems to be the main include file&lt;br /&gt;
&lt;br /&gt;
[[salatype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salctrlhandle.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salctype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salframe.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salgdi.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[salgeom.hxx]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[ sallayout.hxx ]]&amp;#039;&amp;#039;&amp;#039; &amp;lt;-- see Native Fonts implementation&lt;br /&gt;
&lt;br /&gt;
[[salgtype.hxx]]&lt;br /&gt;
&lt;br /&gt;
[[vcl/inc/salobj.hxx]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;B2) Classicals includes&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
file: abstdlg.hxx [ means abstract dialog ]&lt;br /&gt;
&lt;br /&gt;
This includes does contain the following classes definitions:&lt;br /&gt;
&lt;br /&gt;
[FIXME] : choose a precise presentation template for classes &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VclAbstractDialog,&lt;br /&gt;
&lt;br /&gt;
VclAbstractTerminateDialog, &lt;br /&gt;
&lt;br /&gt;
VclAbstractRefreshableDialog,&lt;br /&gt;
 &lt;br /&gt;
VclAbstractDialogFactory, &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
uses &amp;lt;tools/solar.h&amp;gt; , &amp;lt;tools/string.hxx&amp;gt; + &lt;br /&gt;
&lt;br /&gt;
&amp;quot;dllapi.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note : dllapi.h is very interesting because when we have to find (for example) a library suffix, SAL_DLLEXTENSSION can replace all suffixes (every OS&amp;#039;s and archs). Just including sal/config.h does it ! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
Window -&amp;gt; what? [FIXME]&lt;br /&gt;
ResId -&amp;gt; what?&lt;br /&gt;
&lt;br /&gt;
Does contain the prototype of VclAbstractDialog, inherit of VCL_DLLPUBLIC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file: dllapi.h [ dll for dynamic linked library ]&lt;br /&gt;
Uses: &amp;lt;sal/config.h&amp;gt; and &amp;gt;sal/types/h&amp;gt;&lt;br /&gt;
includes: VCL_DLLPUBLIC macro&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
file: accel.h [ means accelerator ]&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
Accelerator &lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
ImplAccelEntry &lt;br /&gt;
{&lt;br /&gt;
public members: &lt;br /&gt;
&lt;br /&gt;
Names&lt;br /&gt;
&lt;br /&gt;
mnId&lt;br /&gt;
maKeyCode&lt;br /&gt;
mpAccel&lt;br /&gt;
mpAutoAccel&lt;br /&gt;
mbEnabled&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function / returns / parameters&lt;br /&gt;
&lt;br /&gt;
ImplGetKeyCode / void / KeyFuncType eFunc, ref rCode1 , ref rCode2, ref rCode3&lt;br /&gt;
&lt;br /&gt;
file: accel.hxx &lt;br /&gt;
&lt;br /&gt;
Uses: &amp;lt;sv.h&amp;gt; , &amp;quot;dllapi.h&amp;quot; ,&amp;lt;tools/resid.hxx&amp;gt;, &amp;lt;&amp;lt;tools/rc.hxx&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Classes:&lt;br /&gt;
&lt;br /&gt;
ImplAccelData;&lt;br /&gt;
ImplAccelEntry;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Important Links ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Progressive implementation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Font server Implementation&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;[[Fonts starting point and documentation]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Sound Implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native Audio and Video]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Native Printing Implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native_Printing]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Drag and Drop implementation&amp;#039;&amp;#039;&amp;#039;: [[Mac OS X Porting - Native Drag and drop]]&lt;br /&gt;
&lt;br /&gt;
This work is part of http://wiki.services.openoffice.org/wiki/Mac_OS_X_Porting_-_Work_Areas/Todo%27s&lt;br /&gt;
&lt;br /&gt;
[to be continued:-) ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Ericb|Ericb]] 15:00, 22 Jul 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Aqua]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17554</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17554"/>
		<updated>2006-09-27T11:30:45Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The goal of the UnHack movement is to make OO.o development cool and satisfying. We operate using [http://www.controlchaos.com/about/ Scrum], a lightweight agile process with iterations called &amp;#039;&amp;#039;&amp;#039;Sprints&amp;#039;&amp;#039;&amp;#039;. The progress of each Sprint is tracked using the &amp;#039;&amp;#039;&amp;#039;Sprint Backlog&amp;#039;&amp;#039;&amp;#039; and the &amp;#039;&amp;#039;&amp;#039;Burndown Chart&amp;#039;&amp;#039;&amp;#039;. Our long term tasks are tracked in the &amp;#039;&amp;#039;&amp;#039;Product Backlog&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Dashboard, Sprint1 ==&lt;br /&gt;
&lt;br /&gt;
* Status: &amp;#039;&amp;#039;&amp;#039;planning&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Duration: 2006-10-02 to 2006-10-13 (2 weeks)&lt;br /&gt;
* Team: rvojta, pmladek, mikeleib, martink, kaib&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown Chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Daily Scrum Meetings ==&lt;br /&gt;
&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to answer three questions during each daily Scrum:&lt;br /&gt;
* What did I do since the last meeting?&lt;br /&gt;
* What am I going to do next?&lt;br /&gt;
* Is there anything blocking me?&lt;br /&gt;
&lt;br /&gt;
Post your answers to the IRC channel before the phone meeting, the ScrumMaster will summarize the meeting to the mailinglist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17553</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17553"/>
		<updated>2006-09-27T11:11:31Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Operated using [http://www.controlchaos.com/about/ Scrum]. Scrum is a lightweight agile process working in iterations called &amp;#039;&amp;#039;&amp;#039;Sprints&amp;#039;&amp;#039;&amp;#039;. The progress of each Sprint is tracked using the &amp;#039;&amp;#039;&amp;#039;Sprint Backlog&amp;#039;&amp;#039;&amp;#039; and the &amp;#039;&amp;#039;&amp;#039;Burndown Chart&amp;#039;&amp;#039;&amp;#039;. Our long term tasks are tracked in the &amp;#039;&amp;#039;&amp;#039;Product Backlog&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Dashboard, Sprint1 ==&lt;br /&gt;
&lt;br /&gt;
* Status: &amp;#039;&amp;#039;&amp;#039;planning&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Duration: 2006-10-02 to 2006-10-13 (2 weeks)&lt;br /&gt;
* Team: rvojta, pmladek, mikeleib, martink, kaib&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown Chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Daily Scrum Meetings ==&lt;br /&gt;
&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to answer three questions during each daily Scrum:&lt;br /&gt;
* What did I do since the last meeting?&lt;br /&gt;
* What am I going to do next?&lt;br /&gt;
* Is there anything blocking me?&lt;br /&gt;
&lt;br /&gt;
Post your answers to the IRC channel before the phone meeting, the ScrumMaster will summarize the meeting to the mailinglist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17552</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17552"/>
		<updated>2006-09-27T11:05:21Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Dashboard, Sprint1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Operated using [http://www.controlchaos.com/about/ Scrum]. Scrum is a lightweight agile process working in iterations called &amp;#039;&amp;#039;&amp;#039;Sprints&amp;#039;&amp;#039;&amp;#039;. The progress of each Sprint is tracked using the &amp;#039;&amp;#039;&amp;#039;Sprint Backlog&amp;#039;&amp;#039;&amp;#039; and the &amp;#039;&amp;#039;&amp;#039;Burndown Chart&amp;#039;&amp;#039;&amp;#039;. Our long term tasks are tracked in the &amp;#039;&amp;#039;&amp;#039;Product Backlog&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Dashboard, Sprint1 ==&lt;br /&gt;
&lt;br /&gt;
* Status: &amp;#039;&amp;#039;&amp;#039;planning&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Duration: 2006-10-02 to 2006-10-13 (2 weeks)&lt;br /&gt;
* Team: rvojta, pmladek, mikeleib, martink, kaib&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown Chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Daily Scrum Meetings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to answer three questions during each daily Scrum:&lt;br /&gt;
* What did I do since the last meeting?&lt;br /&gt;
* What am I going to do next?&lt;br /&gt;
* Is there anything blocking me?&lt;br /&gt;
&lt;br /&gt;
Post your answers to the IRC channel before the phone meeting, the ScrumMaster will summarize the meeting to the mailinglist.&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17551</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17551"/>
		<updated>2006-09-27T11:02:51Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Operated using [http://www.controlchaos.com/about/ Scrum]. Scrum is a lightweight agile process working in iterations called &amp;#039;&amp;#039;&amp;#039;Sprints&amp;#039;&amp;#039;&amp;#039;. The progress of each Sprint is tracked using the &amp;#039;&amp;#039;&amp;#039;Sprint Backlog&amp;#039;&amp;#039;&amp;#039; and the &amp;#039;&amp;#039;&amp;#039;Burndown Chart&amp;#039;&amp;#039;&amp;#039;. Our long term tasks are tracked in the &amp;#039;&amp;#039;&amp;#039;Product Backlog&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Dashboard, Sprint1 ==&lt;br /&gt;
&lt;br /&gt;
* Status: &amp;#039;&amp;#039;&amp;#039;planning&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Duration: 2006-10-02 to 2006-10-13 (2 weeks)&lt;br /&gt;
* Team: rvojta, mikeleib, martink, kaib&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown Chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Daily Scrum Meetings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to answer three questions during each daily Scrum:&lt;br /&gt;
* What did I do since the last meeting?&lt;br /&gt;
* What am I going to do next?&lt;br /&gt;
* Is there anything blocking me?&lt;br /&gt;
&lt;br /&gt;
Post your answers to the IRC channel before the phone meeting, the ScrumMaster will summarize the meeting to the mailinglist.&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17550</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17550"/>
		<updated>2006-09-27T10:39:30Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard, Sprint1 ==&lt;br /&gt;
&lt;br /&gt;
* Status: &amp;#039;&amp;#039;&amp;#039;planning&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Duration: 2006-10-02 to 2006-10-13&lt;br /&gt;
* Team: rvojta, mikeleib, martink, kaib&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Daily Scrum Meetings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to answer three questions during each daily Scrum:&lt;br /&gt;
* What did I do since the last meeting?&lt;br /&gt;
* What am I going to do next?&lt;br /&gt;
* Is there anything blocking me?&lt;br /&gt;
&lt;br /&gt;
Post your answers to the IRC channel before the phone meeting, the ScrumMaster will summarize the meeting to the mailinglist.&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== The Scrum Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links have more information about Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17549</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17549"/>
		<updated>2006-09-27T10:37:56Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard, Sprint1 ==&lt;br /&gt;
&lt;br /&gt;
* Status: &amp;#039;&amp;#039;&amp;#039;planning&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Duration: 2006-10-02 to 2006-10-13&lt;br /&gt;
* Team: rvojta, mikeleib, martink, kaib&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
You need to answer three questions during each daily Scrum: What did I do since the last meeting, what am I going to do next and is there anything blocking me. Post your answers to the IRC channel before the phone meeting, the ScrumMaster will summarize the results to the mailinglist.&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== The Scrum Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links have more information about Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17548</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17548"/>
		<updated>2006-09-27T10:32:43Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard, Sprint1 ==&lt;br /&gt;
&lt;br /&gt;
* Status: &amp;#039;&amp;#039;&amp;#039;planning&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Duration: 2006-10-02 to 2006-10-13&lt;br /&gt;
* Team: rvojta, mikeleib, martink, kaib&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links have more information about Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17547</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17547"/>
		<updated>2006-09-27T10:27:46Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* Status: Sprint 1, 02-Oct to 13-Oct &amp;#039;&amp;#039;&amp;#039;(planning)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links have more information about Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17546</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17546"/>
		<updated>2006-09-27T10:27:35Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* Status: Sprint 1, 02-Oct to 13-Oct &amp;#039;&amp;#039;&amp;#039;(planning)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links have more information about Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17545</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17545"/>
		<updated>2006-09-27T10:26:58Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Dashboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* Status: Sprint 1, 02-Oct to 13-Oct &amp;#039;&amp;#039;&amp;#039;(planning)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
Communication:&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* Mailinglist: unhack-oo@googlegroups.com&lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links have more information about Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17544</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17544"/>
		<updated>2006-09-27T10:26:07Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Process */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* Status: Sprint 1, 02-Oct to 13-Oct &amp;#039;&amp;#039;&amp;#039;(planning)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
Communication:&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links have more information about Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17543</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17543"/>
		<updated>2006-09-27T10:25:26Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* How do I join the team? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* Status: Sprint 1, 02-Oct to 13-Oct &amp;#039;&amp;#039;&amp;#039;(planning)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
Communication:&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 20 hours (10h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links give a brief summary of Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17542</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17542"/>
		<updated>2006-09-27T10:25:01Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* How do I join the team? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* Status: Sprint 1, 02-Oct to 13-Oct &amp;#039;&amp;#039;&amp;#039;(planning)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
Communication:&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week sprint where you can commit at least 30 hours (15h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links give a brief summary of Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17541</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17541"/>
		<updated>2006-09-27T10:24:31Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* Status: Sprint 1, 02-Oct to 13-Oct &amp;#039;&amp;#039;&amp;#039;(planning)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
Communication:&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
== How do I join the team? ==&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week period where you can commit at least 30 hours (15h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links give a brief summary of Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17540</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17540"/>
		<updated>2006-09-27T10:21:29Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
* Status: Sprint 1, 02-Oct to 13-Oct &amp;#039;&amp;#039;&amp;#039;(planning)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
Communication:&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Scrum 1: 10.00 CET&lt;br /&gt;
* Scrum 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Team for Sprint 1 ==&lt;br /&gt;
&lt;br /&gt;
* rvojta&lt;br /&gt;
* mikeleib&lt;br /&gt;
* martink&lt;br /&gt;
* kaib (Product Owner, ScrumMaster)&lt;br /&gt;
&lt;br /&gt;
=== How do I join the team? ===&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. There are only two requirements, but both are mandatory:&lt;br /&gt;
# Look at your calendar and find a 2 week period where you can commit at least 30 hours (15h per week) of work&lt;br /&gt;
# You need to attend at least one Scrum per day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes.&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links give a brief summary of Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17539</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17539"/>
		<updated>2006-09-27T10:07:20Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We deconstruct OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Status: Preparing for Sprint 1 kickoff on the 2 Oct 2006&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
Communication:&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Meeting 1: 10.00 CET&lt;br /&gt;
* Meeting 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Team:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* rvojta&lt;br /&gt;
* mikeleib&lt;br /&gt;
* martink&lt;br /&gt;
* kaib&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Product Owner:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ScrumMaster:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== So how do I join the team? ===&lt;br /&gt;
&lt;br /&gt;
You only need to commit to one 2 week sprint at a time. The Team is open to both hobbyist and professional developers of any alignment. Here is a short checklist:&lt;br /&gt;
* Look at your calendar and find a 2 week period where you can commit at least 30 hours (15h per week) of work&lt;br /&gt;
* You need to attend at least one daily Scrum each working day. &amp;#039;&amp;#039;&amp;#039;Attending daily Scrums is vital.&amp;#039;&amp;#039;&amp;#039;. The meetings usually take less than ten minutes. If you feel you can&amp;#039;t attend, this process is probably not for you.&lt;br /&gt;
* &amp;#039;&amp;#039;Optional:&amp;#039;&amp;#039; Attend the Sprint Planning and Sprint Review meetings&lt;br /&gt;
&lt;br /&gt;
Those who are part of the team are called pigs, everyone else is a chicken: [http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens].&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
The UnHack movement is operated using Scrum, a lightweight agile process. We use 2 week sprints (iterations) and two daily Scrums to account for time zone differences. The following two links give a brief summary of Scrum:&lt;br /&gt;
&lt;br /&gt;
* [http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
* [http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17495</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17495"/>
		<updated>2006-09-26T14:22:21Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We unbuild OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Status: Preparing for Sprint 1 kickoff on the 2nd of October&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
Communication:&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Meeting 1: 10.00 CET&lt;br /&gt;
* Meeting 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
&lt;br /&gt;
[http://wiki.scrums.org/index.cgi?PigsAndChickens Pigs and Chickens]&lt;br /&gt;
&lt;br /&gt;
To be a pig you need to commit. We work in two week sprints and you are either in or out. Your commitment can be big or small, but you need to be clear to yourself and &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Team:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* rvojta&lt;br /&gt;
* mikeleib&lt;br /&gt;
* martink&lt;br /&gt;
* kaib&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Product Owner:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ScrumMaster:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
About Scrum:&lt;br /&gt;
[http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
[http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;br /&gt;
&lt;br /&gt;
== Chickens ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Spectators:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* ause&lt;br /&gt;
* thorsten&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17493</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17493"/>
		<updated>2006-09-26T13:52:35Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;We unbuild OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Dashboard ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Status: Preparing for Sprint 1 kickoff on the 2nd of October&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Sprint Backlog&lt;br /&gt;
* Burndown chart&lt;br /&gt;
* [http://spreadsheets.google.com/ccc?key=piRs4DLO2nrcwvgKvL74NbQ Product Backlog]&lt;br /&gt;
&lt;br /&gt;
Communication:&lt;br /&gt;
* IRC: #unhack-oo at [freenode.net]&lt;br /&gt;
&lt;br /&gt;
Daily Scrum Meetings:&lt;br /&gt;
* Meeting 1: 10.00 CET&lt;br /&gt;
* Meeting 2: 17.00 CET 08.00 PST&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
&lt;br /&gt;
A chicken and a pig were brainstorming... &lt;br /&gt;
&lt;br /&gt;
 Chicken: &lt;br /&gt;
    Let&amp;#039;s start a restaurant!&lt;br /&gt;
 Pig:&lt;br /&gt;
    What would we call it?&lt;br /&gt;
 Chicken: &lt;br /&gt;
    Ham n&amp;#039; Eggs!&lt;br /&gt;
 Pig:&lt;br /&gt;
    No thanks. I&amp;#039;d be committed, but you&amp;#039;d only be involved&lt;br /&gt;
&lt;br /&gt;
Only the Team, Product Owner and ScrumMaster are pigs. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Team:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* rvojta&lt;br /&gt;
* mikeleib&lt;br /&gt;
* martink&lt;br /&gt;
* kaib&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Product Owner:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ScrumMaster:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
About Scrum:&lt;br /&gt;
[http://www.controlchaos.com/about/ ControlChaos]&lt;br /&gt;
[http://www.scrumalliance.org/index.php/scrum_alliance/for_everyone/what_is_scrum ScrumAlliance]&lt;br /&gt;
&lt;br /&gt;
== Chickens ==&lt;br /&gt;
&lt;br /&gt;
These people are interested but not committed:&lt;br /&gt;
* ause&lt;br /&gt;
* thorsten&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17488</id>
		<title>UnHack</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=UnHack&amp;diff=17488"/>
		<updated>2006-09-26T13:04:56Z</updated>

		<summary type="html">&lt;p&gt;KaiB: The page of the UnHack movement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= UnHack =&lt;br /&gt;
&amp;#039;&amp;#039;We unbuild OpenOffice.org&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pigs ==&lt;br /&gt;
&lt;br /&gt;
A chicken and a pig were brainstorming... &lt;br /&gt;
&lt;br /&gt;
 Chicken: &lt;br /&gt;
    Let&amp;#039;s start a restaurant!&lt;br /&gt;
 Pig:&lt;br /&gt;
    What would we call it?&lt;br /&gt;
 Chicken: &lt;br /&gt;
    Ham n&amp;#039; Eggs!&lt;br /&gt;
 Pig:&lt;br /&gt;
    No thanks. I&amp;#039;d be committed, but you&amp;#039;d only be involved&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Team:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* rvojta&lt;br /&gt;
* mikeleib&lt;br /&gt;
* martink&lt;br /&gt;
* kaib&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Product Owner:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ScrumMaster:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
How to be a pig? Your commitment can be large or small, the key is that you commit. The Product Owner has the final say with priorities and once a sprint has started the Team has absolute say on how to implement things.&lt;br /&gt;
&lt;br /&gt;
== Chickens ==&lt;br /&gt;
&lt;br /&gt;
These people are interested but not committed:&lt;br /&gt;
* ause&lt;br /&gt;
* thorsten&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=BuildSpeedup&amp;diff=15817</id>
		<title>BuildSpeedup</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=BuildSpeedup&amp;diff=15817"/>
		<updated>2006-08-28T18:46:38Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* BuildSpeedup summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BuildSpeedup summary ==&lt;br /&gt;
&lt;br /&gt;
Make the OO.o build system the coolest on the planet! OpenOffice is one of the largest and most interesting open source projects that exists. The target of the BuildSpeedup project is to make the build system the coolest one around. A reliable and fast build system has several direct and inderect impacts, maybe most importantly it is the first thing a new contributor comes across when they pick up the project. Main main target audience is an contributor running a high-mid level desktop. Secondary target is people running build farms (notably Sun). Specification for Jam build prototype [[SpecJamBuild]].&lt;br /&gt;
&lt;br /&gt;
* Simple test harness to figure out the speed of different build tools: [http://wiki.services.openoffice.org/mwiki/images/1/11/Buildtest.tgz Buildtest.tgz]&lt;br /&gt;
* Paper on prototype for setting up and building OO.o on large compilation cluster: [http://wiki.services.openoffice.org/wiki/Image:Build_j50.tgz Build_j50.tgz]&lt;br /&gt;
&lt;br /&gt;
== How to report build profile logs ==&lt;br /&gt;
&lt;br /&gt;
Thank you for sending in a build profile log. The more logs we have, the easier it is to focus our effort correctly. Here are the steps to producing a build log:&lt;br /&gt;
&lt;br /&gt;
# Apply the latest patch from http://www.openoffice.org/issues/show_bug.cgi?id=60948 to your source tree&lt;br /&gt;
# in the dmake directory type &amp;quot;make clean; make&amp;quot;. In the root directory type &amp;quot;./bootstrap&amp;quot;&lt;br /&gt;
# When building redirect stderr and stdout to the logfile. In tcsh &amp;quot;build --all |&amp;amp; tee myconfigdesc_build.log&amp;quot; will do the trick. You can alternatively use cat instead of tee to speed up the build slightly. You need to build in a single go and in a single process (no parallell building)&lt;br /&gt;
# Check that the log contains markers like &amp;quot;s target 1234 foo.obj&amp;quot;. If not, then report&lt;br /&gt;
# Compress the log with zip/gz&lt;br /&gt;
# When you send in your log URL to mailto:kaib@openoffice.org please provide a short description of the build type:&lt;br /&gt;
#* Important configure options (like --with-lang=?)&lt;br /&gt;
#* OS/compiler/generic hardware description&lt;br /&gt;
#* No-change, partial or full build (we are especially looking for full builds)&lt;br /&gt;
#* External accelerators like ccache&lt;br /&gt;
&lt;br /&gt;
Thank you again for contributing! --[[User:KaiB|KaiB]] 16:25, 25 January 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== Profile results ==&lt;br /&gt;
&lt;br /&gt;
Here are some initial profile results. These were done on a HP development desktop with 4GB of RAM. Due to various reasons there is a margin of error in all results, but the largest culprits are pretty clear.&lt;br /&gt;
&lt;br /&gt;
=== Full rebuild from scratch ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time spent&lt;br /&gt;
! Target type (file extension)&lt;br /&gt;
|- &lt;br /&gt;
| 33.2%&lt;br /&gt;
| C/C++ compilation (obj)&lt;br /&gt;
|- &lt;br /&gt;
| 27%&lt;br /&gt;
| dmake/build.pl (time not attributed to any target)&lt;br /&gt;
|-&lt;br /&gt;
| 22.0%&lt;br /&gt;
| Dependency generation (dpcc)&lt;br /&gt;
|-&lt;br /&gt;
| 3.7%&lt;br /&gt;
| SDK installer (sdkoo_en-US)&lt;br /&gt;
|-&lt;br /&gt;
| 1.3%&lt;br /&gt;
| Unknown, build related (last_target)&lt;br /&gt;
|-&lt;br /&gt;
| 1.2%&lt;br /&gt;
| Linking (dll)&lt;br /&gt;
|-&lt;br /&gt;
| 1.1%&lt;br /&gt;
| Openoffice installer (openoffice_en-US)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Running time: 62296 s targets: 45927 s 73%&lt;br /&gt;
&lt;br /&gt;
As a benchmark, a Mozilla Firefox build corrected for differences in source code size takes about 25% of the OO.o build time.&lt;br /&gt;
&lt;br /&gt;
=== Nothing changed rebuild ===&lt;br /&gt;
&lt;br /&gt;
Basically profiling the build in a non-changed source tree.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time spent&lt;br /&gt;
! Target type (file extension)&lt;br /&gt;
|- &lt;br /&gt;
| 54.8%&lt;br /&gt;
| SDK installer (sdkoo_en-US)&lt;br /&gt;
|-&lt;br /&gt;
| 19%&lt;br /&gt;
| dmake/build.pl (time not attributed to any target)&lt;br /&gt;
|-&lt;br /&gt;
| 16.2%&lt;br /&gt;
| OpenOffice installer (openoffice_en-US)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Running time: 4209 s targets: 3431 s 81%&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
This is a workarea for ideas and notes regarding the speeding up of the build process. --[[User:KaiB|KaiB]] 12:50, 16 January 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* Newest dmake version: cws_src680_dmake43p01)&lt;br /&gt;
* solenv/inc define global targets&lt;br /&gt;
* potential modules: KaiB: transex3, tools, svx, binfilter - small to huge :)&lt;br /&gt;
* helpcontent2 --with-lang=ALL (there are open issues on this already)&lt;br /&gt;
* batched compiles&lt;br /&gt;
* Interix instead of cygwin&lt;br /&gt;
* dependency generation&lt;br /&gt;
&lt;br /&gt;
Existing possibly useful Build Speed related tweaks:&lt;br /&gt;
* export nodep=true&lt;br /&gt;
* export NO_HIDS=true&lt;br /&gt;
* build.pl -P parallel flag&lt;br /&gt;
* dmake -P parallel flag and/or MAXPROCESS (cws_src680_dmake43p01 has fixes for some problems there)&lt;br /&gt;
* dmake -s flag for less verbose output&lt;br /&gt;
* for gcj users targetedaot workspace to ahead of time compile (only) HelpLinker and FCFGMerge java build tools&lt;br /&gt;
=== transex3 ===&lt;br /&gt;
&lt;br /&gt;
Started by tackling this small module. Initial full compile time was 137 sec.&lt;br /&gt;
&lt;br /&gt;
== build_profile_analyzer.py ==&lt;br /&gt;
&lt;br /&gt;
(NB. Move this to an attachment once the Wiki accepts .py files)&lt;br /&gt;
&lt;br /&gt;
 # Copyright 2006 Google Inc.&lt;br /&gt;
 #&lt;br /&gt;
 # Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 # you may not use this file except in compliance with the License.&lt;br /&gt;
 # You may obtain a copy of the License at&lt;br /&gt;
 #&lt;br /&gt;
 #     http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 #&lt;br /&gt;
 # Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 # distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 # See the License for the specific language governing permissions and&lt;br /&gt;
 # limitations under the License.&lt;br /&gt;
 &lt;br /&gt;
 # OO.o build profile analyzer. To get the required patches look at:&lt;br /&gt;
 # http://wiki.services.openoffice.org/wiki/BuildSpeedup&lt;br /&gt;
 # Author: Kai Backman, kaib@google.com&lt;br /&gt;
 &lt;br /&gt;
 import os&lt;br /&gt;
 import re&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 def SortProfileTimes(lhs, rhs):&lt;br /&gt;
   if lhs[1] &amp;lt; rhs[1] : return 1&lt;br /&gt;
   elif rhs[1] &amp;lt; lhs[1] : return -1&lt;br /&gt;
   else : return 0&lt;br /&gt;
 &lt;br /&gt;
 def ProcessLogFile(file_name, target_durations):&lt;br /&gt;
 #  print &amp;quot;Processing file: &amp;quot; + file_name&lt;br /&gt;
   file = open(file_name)&lt;br /&gt;
   start_time = 0&lt;br /&gt;
   end_time = 0&lt;br /&gt;
 &lt;br /&gt;
   target_start = 0&lt;br /&gt;
   target_name = &amp;quot;&amp;quot;&lt;br /&gt;
   line = file.readline()&lt;br /&gt;
   while line != &amp;quot;&amp;quot; :&lt;br /&gt;
     tokens = line[:-1].split(&amp;quot; &amp;quot;)&lt;br /&gt;
     line = file.readline()&lt;br /&gt;
 &lt;br /&gt;
     if len(tokens) &amp;lt; 2 : continue&lt;br /&gt;
     if tokens[1] == &amp;quot;build&amp;quot; :&lt;br /&gt;
       if tokens[0] == &amp;quot;s&amp;quot; :&lt;br /&gt;
         start_time = int(tokens[2]) * 1000&lt;br /&gt;
       elif tokens[0] == &amp;quot;e&amp;quot; :&lt;br /&gt;
         end_time = int(tokens[2]) * 1000&lt;br /&gt;
     elif tokens[1] == &amp;quot;target&amp;quot; :&lt;br /&gt;
       if tokens[0] == &amp;quot;s&amp;quot;:&lt;br /&gt;
         target_start = int(tokens[2])&lt;br /&gt;
         target_name = tokens[3]&lt;br /&gt;
       elif tokens[0] == &amp;quot;e&amp;quot; and target_name == tokens[3]:&lt;br /&gt;
         target_duration = int(tokens[2]) - target_start&lt;br /&gt;
         target_tokens = tokens[3].split(&amp;quot;.&amp;quot;)&lt;br /&gt;
         target_class = target_tokens[len(target_tokens) - 1]&lt;br /&gt;
         if target_durations.has_key(target_class) :&lt;br /&gt;
           target_durations[target_class] += target_duration&lt;br /&gt;
         else :&lt;br /&gt;
           target_durations[target_class] = target_duration&lt;br /&gt;
   file.close()&lt;br /&gt;
   return end_time - start_time&lt;br /&gt;
   return &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
   target_durations = {}&lt;br /&gt;
   total_time = 0&lt;br /&gt;
   for file_name in sys.argv[1:] :&lt;br /&gt;
     total_time += ProcessLogFile(file_name, target_durations)&lt;br /&gt;
 &lt;br /&gt;
   profile = target_durations.items()&lt;br /&gt;
   profile.sort(SortProfileTimes)&lt;br /&gt;
   total_target_time = 0&lt;br /&gt;
   for target_iter in profile :&lt;br /&gt;
     target_promille = target_iter[1] * 1000 / total_time&lt;br /&gt;
     if target_promille &amp;gt; 0 :&lt;br /&gt;
       print &amp;quot;%6.ds %3.d.%1.d%% %s&amp;quot; % (target_iter[1] / 1000, target_promille/10,&lt;br /&gt;
                                       target_promille % 10, target_iter[0])&lt;br /&gt;
     total_target_time += target_iter[1]&lt;br /&gt;
   print &amp;quot;Running time: %d s targets: %d s %d%%&amp;quot; % (total_time / 1000, total_target_time / 1000,&lt;br /&gt;
                                                    total_target_time * 100 / total_time)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=BuildSpeedup&amp;diff=15795</id>
		<title>BuildSpeedup</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=BuildSpeedup&amp;diff=15795"/>
		<updated>2006-08-28T10:18:20Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* BuildSpeedup summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BuildSpeedup summary ==&lt;br /&gt;
&lt;br /&gt;
Make the OO.o build system the coolest on the planet! OpenOffice is one of the largest and most interesting open source projects that exists. The target of the BuildSpeedup project is to make the build system the coolest one around. A reliable and fast build system has several direct and inderect impacts, maybe most importantly it is the first thing a new contributor comes across when they pick up the project. Main main target audience is an contributor running a high-mid level desktop. Secondary target is people running build farms (notably Sun). Specification for Jam build prototype [[SpecJamBuild]].&lt;br /&gt;
&lt;br /&gt;
* Simple test harness to figure out the speed of different build tools: [http://wiki.services.openoffice.org/mwiki/images/1/11/Buildtest.tgz Buildtest.tgz]&lt;br /&gt;
&lt;br /&gt;
== How to report build profile logs ==&lt;br /&gt;
&lt;br /&gt;
Thank you for sending in a build profile log. The more logs we have, the easier it is to focus our effort correctly. Here are the steps to producing a build log:&lt;br /&gt;
&lt;br /&gt;
# Apply the latest patch from http://www.openoffice.org/issues/show_bug.cgi?id=60948 to your source tree&lt;br /&gt;
# in the dmake directory type &amp;quot;make clean; make&amp;quot;. In the root directory type &amp;quot;./bootstrap&amp;quot;&lt;br /&gt;
# When building redirect stderr and stdout to the logfile. In tcsh &amp;quot;build --all |&amp;amp; tee myconfigdesc_build.log&amp;quot; will do the trick. You can alternatively use cat instead of tee to speed up the build slightly. You need to build in a single go and in a single process (no parallell building)&lt;br /&gt;
# Check that the log contains markers like &amp;quot;s target 1234 foo.obj&amp;quot;. If not, then report&lt;br /&gt;
# Compress the log with zip/gz&lt;br /&gt;
# When you send in your log URL to mailto:kaib@openoffice.org please provide a short description of the build type:&lt;br /&gt;
#* Important configure options (like --with-lang=?)&lt;br /&gt;
#* OS/compiler/generic hardware description&lt;br /&gt;
#* No-change, partial or full build (we are especially looking for full builds)&lt;br /&gt;
#* External accelerators like ccache&lt;br /&gt;
&lt;br /&gt;
Thank you again for contributing! --[[User:KaiB|KaiB]] 16:25, 25 January 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
== Profile results ==&lt;br /&gt;
&lt;br /&gt;
Here are some initial profile results. These were done on a HP development desktop with 4GB of RAM. Due to various reasons there is a margin of error in all results, but the largest culprits are pretty clear.&lt;br /&gt;
&lt;br /&gt;
=== Full rebuild from scratch ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time spent&lt;br /&gt;
! Target type (file extension)&lt;br /&gt;
|- &lt;br /&gt;
| 33.2%&lt;br /&gt;
| C/C++ compilation (obj)&lt;br /&gt;
|- &lt;br /&gt;
| 27%&lt;br /&gt;
| dmake/build.pl (time not attributed to any target)&lt;br /&gt;
|-&lt;br /&gt;
| 22.0%&lt;br /&gt;
| Dependency generation (dpcc)&lt;br /&gt;
|-&lt;br /&gt;
| 3.7%&lt;br /&gt;
| SDK installer (sdkoo_en-US)&lt;br /&gt;
|-&lt;br /&gt;
| 1.3%&lt;br /&gt;
| Unknown, build related (last_target)&lt;br /&gt;
|-&lt;br /&gt;
| 1.2%&lt;br /&gt;
| Linking (dll)&lt;br /&gt;
|-&lt;br /&gt;
| 1.1%&lt;br /&gt;
| Openoffice installer (openoffice_en-US)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Running time: 62296 s targets: 45927 s 73%&lt;br /&gt;
&lt;br /&gt;
As a benchmark, a Mozilla Firefox build corrected for differences in source code size takes about 25% of the OO.o build time.&lt;br /&gt;
&lt;br /&gt;
=== Nothing changed rebuild ===&lt;br /&gt;
&lt;br /&gt;
Basically profiling the build in a non-changed source tree.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time spent&lt;br /&gt;
! Target type (file extension)&lt;br /&gt;
|- &lt;br /&gt;
| 54.8%&lt;br /&gt;
| SDK installer (sdkoo_en-US)&lt;br /&gt;
|-&lt;br /&gt;
| 19%&lt;br /&gt;
| dmake/build.pl (time not attributed to any target)&lt;br /&gt;
|-&lt;br /&gt;
| 16.2%&lt;br /&gt;
| OpenOffice installer (openoffice_en-US)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Running time: 4209 s targets: 3431 s 81%&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
This is a workarea for ideas and notes regarding the speeding up of the build process. --[[User:KaiB|KaiB]] 12:50, 16 January 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* Newest dmake version: cws_src680_dmake43p01)&lt;br /&gt;
* solenv/inc define global targets&lt;br /&gt;
* potential modules: KaiB: transex3, tools, svx, binfilter - small to huge :)&lt;br /&gt;
* helpcontent2 --with-lang=ALL (there are open issues on this already)&lt;br /&gt;
* batched compiles&lt;br /&gt;
* Interix instead of cygwin&lt;br /&gt;
* dependency generation&lt;br /&gt;
&lt;br /&gt;
Existing possibly useful Build Speed related tweaks:&lt;br /&gt;
* export nodep=true&lt;br /&gt;
* export NO_HIDS=true&lt;br /&gt;
* build.pl -P parallel flag&lt;br /&gt;
* dmake -P parallel flag and/or MAXPROCESS (cws_src680_dmake43p01 has fixes for some problems there)&lt;br /&gt;
* dmake -s flag for less verbose output&lt;br /&gt;
* for gcj users targetedaot workspace to ahead of time compile (only) HelpLinker and FCFGMerge java build tools&lt;br /&gt;
=== transex3 ===&lt;br /&gt;
&lt;br /&gt;
Started by tackling this small module. Initial full compile time was 137 sec.&lt;br /&gt;
&lt;br /&gt;
== build_profile_analyzer.py ==&lt;br /&gt;
&lt;br /&gt;
(NB. Move this to an attachment once the Wiki accepts .py files)&lt;br /&gt;
&lt;br /&gt;
 # Copyright 2006 Google Inc.&lt;br /&gt;
 #&lt;br /&gt;
 # Licensed under the Apache License, Version 2.0 (the &amp;quot;License&amp;quot;);&lt;br /&gt;
 # you may not use this file except in compliance with the License.&lt;br /&gt;
 # You may obtain a copy of the License at&lt;br /&gt;
 #&lt;br /&gt;
 #     http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
 #&lt;br /&gt;
 # Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
 # distributed under the License is distributed on an &amp;quot;AS IS&amp;quot; BASIS,&lt;br /&gt;
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
 # See the License for the specific language governing permissions and&lt;br /&gt;
 # limitations under the License.&lt;br /&gt;
 &lt;br /&gt;
 # OO.o build profile analyzer. To get the required patches look at:&lt;br /&gt;
 # http://wiki.services.openoffice.org/wiki/BuildSpeedup&lt;br /&gt;
 # Author: Kai Backman, kaib@google.com&lt;br /&gt;
 &lt;br /&gt;
 import os&lt;br /&gt;
 import re&lt;br /&gt;
 import sys&lt;br /&gt;
 &lt;br /&gt;
 def SortProfileTimes(lhs, rhs):&lt;br /&gt;
   if lhs[1] &amp;lt; rhs[1] : return 1&lt;br /&gt;
   elif rhs[1] &amp;lt; lhs[1] : return -1&lt;br /&gt;
   else : return 0&lt;br /&gt;
 &lt;br /&gt;
 def ProcessLogFile(file_name, target_durations):&lt;br /&gt;
 #  print &amp;quot;Processing file: &amp;quot; + file_name&lt;br /&gt;
   file = open(file_name)&lt;br /&gt;
   start_time = 0&lt;br /&gt;
   end_time = 0&lt;br /&gt;
 &lt;br /&gt;
   target_start = 0&lt;br /&gt;
   target_name = &amp;quot;&amp;quot;&lt;br /&gt;
   line = file.readline()&lt;br /&gt;
   while line != &amp;quot;&amp;quot; :&lt;br /&gt;
     tokens = line[:-1].split(&amp;quot; &amp;quot;)&lt;br /&gt;
     line = file.readline()&lt;br /&gt;
 &lt;br /&gt;
     if len(tokens) &amp;lt; 2 : continue&lt;br /&gt;
     if tokens[1] == &amp;quot;build&amp;quot; :&lt;br /&gt;
       if tokens[0] == &amp;quot;s&amp;quot; :&lt;br /&gt;
         start_time = int(tokens[2]) * 1000&lt;br /&gt;
       elif tokens[0] == &amp;quot;e&amp;quot; :&lt;br /&gt;
         end_time = int(tokens[2]) * 1000&lt;br /&gt;
     elif tokens[1] == &amp;quot;target&amp;quot; :&lt;br /&gt;
       if tokens[0] == &amp;quot;s&amp;quot;:&lt;br /&gt;
         target_start = int(tokens[2])&lt;br /&gt;
         target_name = tokens[3]&lt;br /&gt;
       elif tokens[0] == &amp;quot;e&amp;quot; and target_name == tokens[3]:&lt;br /&gt;
         target_duration = int(tokens[2]) - target_start&lt;br /&gt;
         target_tokens = tokens[3].split(&amp;quot;.&amp;quot;)&lt;br /&gt;
         target_class = target_tokens[len(target_tokens) - 1]&lt;br /&gt;
         if target_durations.has_key(target_class) :&lt;br /&gt;
           target_durations[target_class] += target_duration&lt;br /&gt;
         else :&lt;br /&gt;
           target_durations[target_class] = target_duration&lt;br /&gt;
   file.close()&lt;br /&gt;
   return end_time - start_time&lt;br /&gt;
   return &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
   target_durations = {}&lt;br /&gt;
   total_time = 0&lt;br /&gt;
   for file_name in sys.argv[1:] :&lt;br /&gt;
     total_time += ProcessLogFile(file_name, target_durations)&lt;br /&gt;
 &lt;br /&gt;
   profile = target_durations.items()&lt;br /&gt;
   profile.sort(SortProfileTimes)&lt;br /&gt;
   total_target_time = 0&lt;br /&gt;
   for target_iter in profile :&lt;br /&gt;
     target_promille = target_iter[1] * 1000 / total_time&lt;br /&gt;
     if target_promille &amp;gt; 0 :&lt;br /&gt;
       print &amp;quot;%6.ds %3.d.%1.d%% %s&amp;quot; % (target_iter[1] / 1000, target_promille/10,&lt;br /&gt;
                                       target_promille % 10, target_iter[0])&lt;br /&gt;
     total_target_time += target_iter[1]&lt;br /&gt;
   print &amp;quot;Running time: %d s targets: %d s %d%%&amp;quot; % (total_time / 1000, total_target_time / 1000,&lt;br /&gt;
                                                    total_target_time * 100 / total_time)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=HowToCWS&amp;diff=15322</id>
		<title>HowToCWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=HowToCWS&amp;diff=15322"/>
		<updated>2006-08-15T11:10:57Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= HowToCWS using Subversion =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB:&amp;#039;&amp;#039;&amp;#039; This page is about working with the OpenOffice.org ChildWorkSpace (CWS) commit process using Subversion as the version control system. The workflow described here is used by many community developers but some Sun engineers might find it interesting as well.&lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
Prerquisites: You have your CWS system setup for Subversion support and a [[MixedTree]] without the sc module.&lt;br /&gt;
&lt;br /&gt;
 1  export CWS_WORK_STAMP=&amp;lt;your_username&amp;gt;svntest01&lt;br /&gt;
 2  cwscreate -s SRC680 m180 $CWS_WORK_STAMP&lt;br /&gt;
 3  cwsadd -c sc&lt;br /&gt;
 4  echo // Replace this with hacking| cat sc/source/filter/excel/biffdump.cxx -&lt;br /&gt;
 5  cwsresync -m m181 sc&lt;br /&gt;
 6  cwsresync -c sc&lt;br /&gt;
 7  cwsresync -l m181&lt;br /&gt;
 8  mkdir /tmp/__analyze_$(CWS_WORK_STAMP); cd /tmp/__analyze_$(CWS_WORK_STAMP)&lt;br /&gt;
 9  cwsanalyze sc&lt;br /&gt;
&lt;br /&gt;
Comments:&lt;br /&gt;
# Required for correct operation of the cws* tools&lt;br /&gt;
# Note the &amp;#039;-s&amp;#039; flag that tags the CWS as subversion enabled&lt;br /&gt;
# The &amp;#039;-c&amp;#039; flag checks out that module into your tree. If you already had a subversion &amp;#039;sc&amp;#039; directory you could omit the flag and use the faster &amp;#039;switch&amp;#039; operation.&lt;br /&gt;
#&lt;br /&gt;
# cwsresync supports in place resync using Subversion. You can always revert or modify the changes before commit&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# Pick any temp dir you want&lt;br /&gt;
# cwsanalyze (and cwsintegrate) extract the CWS changes and analyze/integrate against the CVS head. This is the point where a Subversion CWS is merged back into the upstreams CVS repository.&lt;br /&gt;
&lt;br /&gt;
=== Setup for existing CWS users ===&lt;br /&gt;
&lt;br /&gt;
# Install Subversion from the [http://subversion.tigris.org Subversion site] or use the one included with your distribution. &amp;#039;&amp;#039;&amp;#039;Warning: Cygwin SVN is broken and will not work!&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Add these lines to your .cwsrc:&lt;br /&gt;
 # Subversion server root&lt;br /&gt;
 SVN_SERVER_ROOT=https://ooo-svn.osuosl.org&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=HowToCWS&amp;diff=15321</id>
		<title>HowToCWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=HowToCWS&amp;diff=15321"/>
		<updated>2006-08-15T11:10:41Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= .. using Subversion =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB:&amp;#039;&amp;#039;&amp;#039; This page is about working with the OpenOffice.org ChildWorkSpace (CWS) commit process using Subversion as the version control system. The workflow described here is used by many community developers but some Sun engineers might find it interesting as well.&lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
Prerquisites: You have your CWS system setup for Subversion support and a [[MixedTree]] without the sc module.&lt;br /&gt;
&lt;br /&gt;
 1  export CWS_WORK_STAMP=&amp;lt;your_username&amp;gt;svntest01&lt;br /&gt;
 2  cwscreate -s SRC680 m180 $CWS_WORK_STAMP&lt;br /&gt;
 3  cwsadd -c sc&lt;br /&gt;
 4  echo // Replace this with hacking| cat sc/source/filter/excel/biffdump.cxx -&lt;br /&gt;
 5  cwsresync -m m181 sc&lt;br /&gt;
 6  cwsresync -c sc&lt;br /&gt;
 7  cwsresync -l m181&lt;br /&gt;
 8  mkdir /tmp/__analyze_$(CWS_WORK_STAMP); cd /tmp/__analyze_$(CWS_WORK_STAMP)&lt;br /&gt;
 9  cwsanalyze sc&lt;br /&gt;
&lt;br /&gt;
Comments:&lt;br /&gt;
# Required for correct operation of the cws* tools&lt;br /&gt;
# Note the &amp;#039;-s&amp;#039; flag that tags the CWS as subversion enabled&lt;br /&gt;
# The &amp;#039;-c&amp;#039; flag checks out that module into your tree. If you already had a subversion &amp;#039;sc&amp;#039; directory you could omit the flag and use the faster &amp;#039;switch&amp;#039; operation.&lt;br /&gt;
#&lt;br /&gt;
# cwsresync supports in place resync using Subversion. You can always revert or modify the changes before commit&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
# Pick any temp dir you want&lt;br /&gt;
# cwsanalyze (and cwsintegrate) extract the CWS changes and analyze/integrate against the CVS head. This is the point where a Subversion CWS is merged back into the upstreams CVS repository.&lt;br /&gt;
&lt;br /&gt;
=== Setup for existing CWS users ===&lt;br /&gt;
&lt;br /&gt;
# Install Subversion from the [http://subversion.tigris.org Subversion site] or use the one included with your distribution. &amp;#039;&amp;#039;&amp;#039;Warning: Cygwin SVN is broken and will not work!&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Add these lines to your .cwsrc:&lt;br /&gt;
 # Subversion server root&lt;br /&gt;
 SVN_SERVER_ROOT=https://ooo-svn.osuosl.org&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=HowToCWS&amp;diff=15320</id>
		<title>HowToCWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=HowToCWS&amp;diff=15320"/>
		<updated>2006-08-15T11:02:57Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How To CWS using Subversion =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB:&amp;#039;&amp;#039;&amp;#039; This page is about working with the OpenOffice.org ChildWorkSpace (CWS) commit process using Subversion as the version control system. The workflow described here is used by many community developers but some Sun engineers might find it interesting as well.&lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
&lt;br /&gt;
=== Workflow ===&lt;br /&gt;
Prerquisites: You have your CWS system setup for Subversion support and a [[MixedTree]] without the sc module.&lt;br /&gt;
&lt;br /&gt;
 1  export CWS_WORK_STAMP=&amp;lt;your_username&amp;gt;svntest01&lt;br /&gt;
 2  cwscreate -s SRC680 m180 $CWS_WORK_STAMP&lt;br /&gt;
 3  cwsadd -c sc&lt;br /&gt;
 4  echo // Replace this with hacking| cat sc/source/filter/excel/biffdump.cxx -&lt;br /&gt;
 5  cwsresync -m m181 sc&lt;br /&gt;
 6  mkdir /tmp/__analyze_$(CWS_WORK_STAMP); cd /tmp/__analyze_$(CWS_WORK_STAMP)&lt;br /&gt;
 7  cwsanalyze sc&lt;br /&gt;
&lt;br /&gt;
=== Setup for existing CWS users ===&lt;br /&gt;
&lt;br /&gt;
# Install Subversion from the [http://subversion.tigris.org Subversion site] or use the one included with your distribution. &amp;#039;&amp;#039;&amp;#039;Warning: Cygwin SVN is broken and will not work!&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Add these lines to your .cwsrc:&lt;br /&gt;
 # Subversion server root&lt;br /&gt;
 SVN_SERVER_ROOT=https://ooo-svn.osuosl.org&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=HowToCWS&amp;diff=15319</id>
		<title>HowToCWS</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=HowToCWS&amp;diff=15319"/>
		<updated>2006-08-15T10:50:28Z</updated>

		<summary type="html">&lt;p&gt;KaiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How To CWS using Subversion =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NB:&amp;#039;&amp;#039;&amp;#039; This page is about working with the OpenOffice.org ChildWorkSpace (CWS) commit process using Subversion as the version control system. The workflow described here is used by many community developers but some Sun engineers might find it interesting as well.&lt;br /&gt;
&lt;br /&gt;
== Quick walkthrough ==&lt;br /&gt;
&lt;br /&gt;
Prerquisites: You have your CWS system setup for Subversion support and a MixedTree without the sc module.&lt;br /&gt;
&lt;br /&gt;
 1  export CWS_WORK_STAMP=&amp;lt;your_username&amp;gt;svntest01&lt;br /&gt;
 2  cwscreate -s SRC680 m181 $CWS_WORK_STAMP&lt;br /&gt;
 3  cwsadd -c sc&lt;br /&gt;
 4&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Hacking&amp;diff=13949</id>
		<title>Hacking</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Hacking&amp;diff=13949"/>
		<updated>2006-07-14T09:29:18Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* prj/d.lst */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== My first hack ==&lt;br /&gt;
&lt;br /&gt;
So - we&amp;#039;ve built and run OO.o, and we want to prove to ourselves that it is in fact possible to hack on it. So in a new terminal do this:&lt;br /&gt;
&lt;br /&gt;
 cd build/src680-m66&lt;br /&gt;
 . ./LinuxIntelEnv.Set.sh&lt;br /&gt;
 cd vcl&lt;br /&gt;
&lt;br /&gt;
Now have a hack at vcl/source/window/menu.cxx (Menu::SetItemText);&lt;br /&gt;
(near line 1770) I suggest manually applying this change:&lt;br /&gt;
&lt;br /&gt;
 -               pData-&amp;gt;aText = rStr;&lt;br /&gt;
 +               pData-&amp;gt;aText = String(rStr).Reverse();&lt;br /&gt;
&lt;br /&gt;
Then save. ( You can find more sensible things to hack in the [[Tutorials]] )&lt;br /&gt;
&lt;br /&gt;
You&amp;#039;re still in vcl/ yes ? then type &amp;#039;build debug=true&amp;#039;; wait for the scrolling text to stop; (5 seconds?). Now re-run&lt;br /&gt;
&amp;lt;code&amp;gt;soffice -writer&amp;lt;/code&amp;gt;. You should notice the effect in the menus.&lt;br /&gt;
If not, ensure the previous soffice.bin was dead with&lt;br /&gt;
&amp;lt;code&amp;gt;killall -9 soffice.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; for day to day hacking you want to just run &amp;#039;build&amp;#039; inside the source tree. It is also highly recommended to work inside a copy of the build tree, and generate / test patches in an un-hacked version.  To copy just the build/src680-m66 directory elsewhere, you need to use the [[ relocate ]] tool.&lt;br /&gt;
&lt;br /&gt;
== Read the Fine manual ==&lt;br /&gt;
&lt;br /&gt;
With the power of C++ comes the ability to shoot yourself in the foot all the more easily; (and implicitly), cf. &amp;lt;em&amp;gt;Holub, Rules for C and C++ programming, McGraw-Hill, 95&amp;lt;/em&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;p&amp;gt;&lt;br /&gt;
      The best way to prepare yourself for battle is to read the&lt;br /&gt;
      [http://tools.openoffice.org/CodingGuidelines.sxw OpenOffice coding guidelines], and for the easily confused c&amp;#039;tor / d&amp;#039;tor is short for&lt;br /&gt;
      constructor / destructor.&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sending patches ==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;p&amp;gt;&lt;br /&gt;
      It is seldom clear which module a patch resides in in bugzilla.&lt;br /&gt;
      A quick way to try and work this out is to do:&lt;br /&gt;
      &amp;lt;code&amp;gt;cvs status &amp;lt;somefile&amp;gt; | head&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      This should give a &amp;#039;Repository Revision:&amp;#039; line, with a path, the&lt;br /&gt;
      2nd fragment of this is the project name,&lt;br /&gt;
      &amp;lt;code&amp;gt;ooo-build/bin/owner&amp;lt;/code&amp;gt; automates that process for you.&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&lt;br /&gt;
      In addition, since the mapping of module names to IssueZilla&lt;br /&gt;
      tickets is rather contorted &amp;amp;amp; un-documented, if you know&lt;br /&gt;
      what module the bug is in, use [http://go-ooo.org/bug.html http://go-ooo.org/bug.html]&lt;br /&gt;
      page to file it.&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Starting the right app ==&lt;br /&gt;
    &amp;lt;p&amp;gt;&lt;br /&gt;
      As you start soffice.bin, there are several useful parameters to&lt;br /&gt;
      use to accelerate your debugging experience; particularly&lt;br /&gt;
      &amp;lt;code&amp;gt;-writer&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-calc&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-draw&amp;lt;/code&amp;gt;,&lt;br /&gt;
      and (the wizardly painful) &amp;lt;code&amp;gt;-impress&amp;lt;/code&amp;gt; arguments.&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Understanding D&amp;#039; make (man) ==&lt;br /&gt;
&lt;br /&gt;
While the build system is in similar to many other systems, it is also perhaps slightly different. The overview is that each module is &amp;lt;i&amp;gt;built&amp;lt;/i&amp;gt;, and then the results are &amp;lt;i&amp;gt;delivered&amp;lt;/i&amp;gt; into the [http://www.openoffice.org/dev_docs/source/solver.html solver]. Each module builds against the headers in the solver. Thus there are a few intricacies.&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;li id=&amp;quot;build&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;i&amp;gt;build&amp;lt;/i&amp;gt; &amp;amp;mdash; this perl script &amp;lt;i&amp;gt;solenv/bin/build.pl&amp;lt;/i&amp;gt; is&lt;br /&gt;
	  used in conjunction with [[Hacking#prj/build.lst|prj/build.lst]]&lt;br /&gt;
	  to ensure that every module that is needed is built first.&amp;lt;br/&amp;gt;&lt;br /&gt;
	  build then un-winds internal module dependencies, and builds&lt;br /&gt;
	  each module with a chdir, dmake pair.&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;li id=&amp;quot;deliver&amp;quot;&amp;gt;&lt;br /&gt;
	  &amp;lt;i&amp;gt;deliver&amp;lt;/i&amp;gt; &amp;amp;mdash; this perl script &amp;lt;i&amp;gt;solenv/bin/deliver.pl&amp;lt;/i&amp;gt;&lt;br /&gt;
	  installs headers, and libraries (etc.) into the solver, as&lt;br /&gt;
	  informed by [[Hacking#prj/d.lst|prj/d.lst]]. Crucially&lt;br /&gt;
	  deliver ensures that the date stamp on any file that is&lt;br /&gt;
	  installed to the solver is the same as that in the module&amp;#039;s&lt;br /&gt;
	  directory. This ensures, that (particularly for headers) that&lt;br /&gt;
	  there is no dependency cascade triggering re-builds in other&lt;br /&gt;
	  modules.&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Standard directories ===&lt;br /&gt;
&lt;br /&gt;
There are various standard directories and files in most of the modules that make up OO.o, here are some of the more useful:&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;prj&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
**&amp;#039;&amp;#039;build.lst&amp;#039;&amp;#039; &amp;amp;mdash; this lists directories to be made, &amp;#039;^#&amp;#039; comments are allowed, the order of the list is immaterial see [[Hacking#prj/build.lst | detail]], it is dictates &amp;#039;&amp;#039;build&amp;#039;&amp;#039;&amp;#039;s operation.&lt;br /&gt;
**&amp;#039;&amp;#039;d.lst&amp;#039;&amp;#039; &amp;amp;mdash; this file describes the &amp;#039;&amp;#039;deliver&amp;#039;&amp;#039; process, see [[Hacking#prj/d.lst | detail]].&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;util&amp;#039;&amp;#039;&amp;#039; &amp;amp;mdash; typically the util directory is charged with glueing together the sub-libraries for each sub-module into a single large library, adding system library dependencies, building GUI resource files etc. All the work is described in &amp;#039;&amp;#039;makefile.mk&amp;#039;&amp;#039;, this is usually the last directory to be built in a project.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;inc&amp;#039;&amp;#039;&amp;#039; &amp;amp;mdash; public headers are typically separated into an &amp;#039;inc&amp;#039; directory, these will be installed into the solver by the &amp;#039;deliver&amp;#039; phase (using [[Hacking#prj/d.lst | prj/d.lst]])&lt;br /&gt;
&lt;br /&gt;
Build&amp;#039;s mode of operation is to invoke &amp;#039;dmake&amp;#039; in each of the projects&amp;#039; directories with a given dependency order. dmake then executes the rules in makefile.mk.&lt;br /&gt;
&lt;br /&gt;
=== prj/build.lst ===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
    On first view build.lst looks scary:&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
vc      vcl : NAS:nas FREETYPE:freetype psprint rsc sot ucbhelper unotools sysui NULL&lt;br /&gt;
vc      vcl                      usr1   -       all     vc_mkout NULL&lt;br /&gt;
vc      vcl\source\unotypes      nmake  -       all     vc_unot NULL&lt;br /&gt;
vc      vcl\source\glyphs        nmake  -       all     vc_glyphs vc_unot NULL&lt;br /&gt;
...&lt;br /&gt;
vc	vcl\mac\source\src	 nmake	-	m	vc__srcm vc_unot NULL&lt;br /&gt;
vc	vcl\util		 nmake	-	all	vc_util vc__plug.u vc__appa.u vc__appm.m vc__appu.u vc__appw.w vc__gdim.m vc__gdiu.u vc__gdiw.w vc__srcm.m vc__srcu.u vc__srcw.w vc__wina.u vc__winm.m vc__winu.u vc__winw.w vc__du.u vc__gtka.u vc__gtkw.u vc__gtkg.u vc__kde.u vc_app vc_ctrl vc_gdi vc_hlp vc_src vc_win vc_glyphs NULL&lt;br /&gt;
      &amp;lt;/pre&amp;gt;&lt;br /&gt;
so we need to try and un-pack what&amp;#039;s going on here, which is in fact not&lt;br /&gt;
as odd as it might seem at first glance. Firstly lists are terminated&lt;br /&gt;
by the &amp;#039;NULL&amp;#039; string. Every line is prefixed by a shortcut which has to be unique, no two modules are allowed to have the same shortcut.&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
         &amp;lt;li&amp;gt;&lt;br /&gt;
	   First active line contains a &amp;#039;:&amp;#039;, this describes the&lt;br /&gt;
	   fact that this project (vcl) depends on these other modules&lt;br /&gt;
	   &amp;#039;nas&amp;#039;, &amp;#039;freetype&amp;#039;, &amp;#039;psprint&amp;#039; etc. to be built first. This is&lt;br /&gt;
	   for inter-project dependencies.&lt;br /&gt;
	 &amp;lt;/li&amp;gt;&lt;br /&gt;
	 &amp;lt;li&amp;gt;&lt;br /&gt;
	   Some modules have a CAPITALS:lowercase arrangement; the first&lt;br /&gt;
	   segment is a conditional, driven by a space delimited list in&lt;br /&gt;
	   the BUILD_TYPE environment variable at build time.&lt;br /&gt;
	 &amp;lt;/li&amp;gt;&lt;br /&gt;
	 &amp;lt;li&amp;gt;&lt;br /&gt;
	   Then we have a redundant line &amp;#039;usr1&amp;#039; [ for fun ? ], in fact&lt;br /&gt;
	   only lines containing the magic string &amp;#039;nmake&amp;#039; are valid after&lt;br /&gt;
	   this.&lt;br /&gt;
	 &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	 &amp;lt;li&amp;gt;&lt;br /&gt;
The next lines describe internal project directory dependencies&lt;br /&gt;
and look like:&lt;br /&gt;
	     &amp;lt;pre&amp;gt;&lt;br /&gt;
[shortcut] [path to dir to build] nmake - [flags] [unique-name] [deps...] NULL&lt;br /&gt;
vc           vcl\source\glyphs    nmake -   all     vc_glyphs   vc_unot   NULL&lt;br /&gt;
	     &amp;lt;/pre&amp;gt;&lt;br /&gt;
	   &amp;lt;i&amp;gt;shortcut&amp;lt;/i&amp;gt; is not used; &amp;lt;i&amp;gt;flags&amp;lt;/i&amp;gt; determines which platforms&lt;br /&gt;
	   this builds on; usually single char platform codes: &amp;#039;dnpum&amp;#039; &amp;#039;u&amp;#039; being&lt;br /&gt;
	   Unix. The higher up the system, the more stuff is flagged &amp;#039;all&amp;#039;.&amp;lt;br/&amp;gt;&lt;br /&gt;
	   &amp;lt;i&amp;gt;unique-name&amp;lt;/i&amp;gt; this is a magic name, used by other lines to&lt;br /&gt;
	   describe an internal dependency. &amp;lt;i&amp;gt;deps...&amp;lt;/i&amp;gt; any number of names of&lt;br /&gt;
	   other directories in this file, that must be built before this one. If such prerequisite dir is built for special platforms only, the platform code has to be appended to its magic name.&lt;br /&gt;
	 &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So we see in the vcl case that &amp;lt;i&amp;gt;vcl\source\unotypes&amp;lt;/i&amp;gt; (vc_unot) has to be built before &amp;lt;i&amp;gt;vcl\source\glyphs&amp;lt;/i&amp;gt; (vc_glyphs). For Mac &amp;lt;i&amp;gt;vcl\mac\source\src&amp;lt;/i&amp;gt; (vc__srcm) has to be built before &amp;lt;i&amp;gt;vcl\util&amp;lt;/i&amp;gt; (vc_util) It is &amp;#039;&amp;#039;&amp;#039;important&amp;#039;&amp;#039;&amp;#039; to understand that the order of the list is ~immaterial, and instead of a simple ordered list, we have a more complex internal dependency system &amp;amp;mdash; this contrasts with most other make systems.&lt;br /&gt;
&lt;br /&gt;
There is also documentation [http://tools.openoffice.org/tools/build.html here] on it.&lt;br /&gt;
&lt;br /&gt;
=== deliver, deliver.log and prj/d.lst ===&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;p&amp;gt;&lt;br /&gt;
      The syntax of d.lst is more comprehensible than build.lst, it omits&lt;br /&gt;
      some default actions, such as copying build.lst into&lt;br /&gt;
      &amp;lt;i&amp;gt;inc/&amp;amp;lt;module&amp;amp;gt;/build.lst&amp;lt;/i&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&lt;br /&gt;
      A line is of the form:&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
[action]: [arguments]&lt;br /&gt;
mkdir:    %_DEST%\inc%_EXT%\external&lt;br /&gt;
      &amp;lt;/pre&amp;gt;&lt;br /&gt;
where if &amp;#039;[action]:&amp;#039; is omitted, it defaults to the &amp;#039;copy&amp;#039; action. Typical actions are &amp;lt;i&amp;gt;copy&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;mkdir&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;touch&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;hedabu&amp;lt;/i&amp;gt;, &amp;lt;i&amp;gt;dos&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;linklib&amp;lt;/i&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
   &amp;lt;p&amp;gt;&lt;br /&gt;
      The &amp;#039;hedabu&amp;#039; action is particularly interesting, inasmuch that it&lt;br /&gt;
      cosmetically re-formats the header to shrink it on install and adds the module name to the include path (&amp;#039;&amp;#039;#include &amp;quot;my_header.hxx&amp;quot;&amp;#039;&amp;#039; becomes &amp;#039;&amp;#039;#include &amp;lt;my_module/my_header.hxx&amp;gt;&amp;#039;&amp;#039;). Otherwise&lt;br /&gt;
      it&amp;#039;s much like the copy action.&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;&lt;br /&gt;
      During the action, various macro variables are expanded some of which are:&lt;br /&gt;
      &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;%__SRC% &amp;amp;mdash; distribution directory name eg. &amp;lt;i&amp;gt;unxlngi4.pro&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	  %_DEST% &amp;amp;mdash; absolute path into solver eg.&lt;br /&gt;
	  &amp;lt;i&amp;gt;/opt/OpenOffice/OOO_STABLE_1/solver/641/unxlngi4.pro&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;/li&amp;gt;&lt;br /&gt;
	&amp;lt;li&amp;gt;&lt;br /&gt;
	  %_EXT% &amp;amp;mdash; (unusual) way of having minor updates eg. 641.1,&lt;br /&gt;
	  typically used to version every base sub-directory.&lt;br /&gt;
        &amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;/ul&amp;gt;&lt;br /&gt;
Typically then, if indeed you need to add a rule (cf. implicit directory copies), it will be of the form:&lt;br /&gt;
      &amp;lt;pre&amp;gt;&lt;br /&gt;
..\%__SRC%\inc\sal\*.h %_DEST%\inc%_EXT%\sal\*.h&lt;br /&gt;
      &amp;lt;/pre&amp;gt;&lt;br /&gt;
NB. relative paths are relative to the &amp;#039;prj/&amp;#039; directory.&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes you might run into the situation where you&amp;#039;d like to remove the delivered files from solver. Your configuration might have changed and they are no longer needed. &amp;quot;deliver -delete&amp;quot; does just that, however you might still need to delete &amp;quot;deliver.log&amp;quot; files manually as well.&lt;br /&gt;
&lt;br /&gt;
== Can I get a &amp;lt;code&amp;gt;char *&amp;lt;/code&amp;gt;, please? ==&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;p&amp;gt;&lt;br /&gt;
      Just barely.  OO.o has at least six string wrappers, although the C&lt;br /&gt;
      implementations are of little interest:&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;p&amp;gt;&lt;br /&gt;
	  &amp;lt;code&amp;gt;rtl_String&amp;lt;/code&amp;gt; &amp;amp;mdash; sal/inc/rtl/string.h&amp;lt;br&amp;gt;&lt;br /&gt;
	  &amp;quot;Normal&amp;quot; string plus reference counting.&lt;br /&gt;
	  &amp;lt;code&amp;gt;rtlstring-&amp;lt;/code&amp;gt;&amp;amp;gt;&amp;lt;code&amp;gt;buffer&amp;lt;/code&amp;gt; is useful, as is&lt;br /&gt;
	  &amp;lt;code&amp;gt;rtlstring-&amp;lt;/code&amp;gt;&amp;amp;gt;&amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt;.  This object encapsulates&lt;br /&gt;
	  an generic 8bit string - of unknown encoding. Feel free to treat&lt;br /&gt;
	  &amp;lt;code&amp;gt;rtlstring-&amp;lt;/code&amp;gt;&amp;amp;gt;&amp;lt;code&amp;gt;buffer&amp;lt;/code&amp;gt; as your beloved &amp;lt;code&amp;gt;char *&amp;lt;/code&amp;gt;.&lt;br /&gt;
	  If you really want to look at the implementation of some&lt;br /&gt;
	  &amp;lt;code&amp;gt;rtl_String&amp;lt;/code&amp;gt; function and lxr nor grep can help you, have&lt;br /&gt;
	  a look at sal/rtl/source/strtmpl.c.&lt;br /&gt;
	&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;p&amp;gt;&lt;br /&gt;
	  &amp;lt;code&amp;gt;OString&amp;lt;/code&amp;gt; &amp;amp;mdash; sal/inc/rtl/string.hxx&amp;lt;br&amp;gt;&lt;br /&gt;
	  Simply a rtl_String wrapped inside a &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;; you&lt;br /&gt;
	  can use &amp;lt;code&amp;gt;ostring.pData&amp;lt;/code&amp;gt; to get at the rtl_String&lt;br /&gt;
	  (it&amp;#039;s public).  &amp;lt;code&amp;gt;OString&amp;lt;/code&amp;gt; has reasonably useful&lt;br /&gt;
	  methods for if you need them.&lt;br /&gt;
	&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;p&amp;gt;&lt;br /&gt;
	  &amp;lt;code&amp;gt;rtl_uString&amp;lt;/code&amp;gt; &amp;amp;mdash; sal/inc/rtl/ustring.h&amp;lt;br&amp;gt;&lt;br /&gt;
	  &amp;quot;Normal&amp;quot; Unicode string, similar to rtl_String, and&lt;br /&gt;
	  refcounted as well.  However, this one always comes in UCS-2&lt;br /&gt;
	  encoding, presumably to be compatible with Java&amp;#039;s&lt;br /&gt;
	  questionable choices. &lt;br /&gt;
	  See &amp;lt;code&amp;gt;rtl_String&amp;lt;/code&amp;gt; above to find where the implementation&lt;br /&gt;
	  of some &amp;lt;code&amp;gt;rtl_uString&amp;lt;/code&amp;gt;functions is hidden.&lt;br /&gt;
	&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
	&amp;lt;p&amp;gt;&lt;br /&gt;
	  &amp;lt;code&amp;gt;OUString&amp;lt;/code&amp;gt; &amp;amp;mdash; sal/inc/rtl/ustring.hxx&amp;lt;br&amp;gt; &lt;br /&gt;
	  An rtl_uString wrapped inside a &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt;.  This is&lt;br /&gt;
	  what most of the OO.o code uses to pass strings around.&lt;br /&gt;
	  To convert an &amp;lt;code&amp;gt;OString&amp;lt;/code&amp;gt; to an &amp;lt;code&amp;gt;OUString&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	  it is necessary to specify the character set of the&lt;br /&gt;
	  &amp;lt;code&amp;gt;OString&amp;lt;/code&amp;gt; see; &amp;lt;code&amp;gt;sal/inc/rtl/textenc.h&amp;lt;/code&amp;gt;&lt;br /&gt;
	  &amp;amp;mdash; the only interesting case is &amp;lt;code&amp;gt;RTL_TEXTENCODING_UTF8&amp;lt;/code&amp;gt;&lt;br /&gt;
	&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&lt;br /&gt;
	  &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; &amp;amp;mdash; tools/inc/string.hxx&amp;lt;br&amp;gt;&lt;br /&gt;
	  This is an obsolete string class, aliased to &amp;#039;UniString&amp;#039;.&lt;br /&gt;
	  It has a number of limitations such as a 64k length limit.&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A couple of conversion functions are really useful here, particularly:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;rtl::OString aOString = ::rtl::OUStringToOString (aOUString, RTL_TEXTENCODING_UTF8);&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;And the reverse:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;rtl::OUString aOUString = ::rtl::OStringToOUString (aOString, RTL_TEXTENCODING_UTF8);&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you just want to programattically print out a string for debugging purposes you probably want define a macro like :&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;#define CHAR_POINTER(THE_OUSTRING) ::rtl::OUStringToOString (THE_OUSTRING, RTL_TEXTENCODING_UTF8).pData-&amp;gt;buffer&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;and use it like :&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;printf ( &amp;quot;SvXMLNamespaceMap::AddIfKnown : %s / %s\n&amp;quot;, CHAR_POINTER(rPrefix), CHAR_POINTER(rName) );&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br/&amp;gt;In ooo-build you can use stream operator&amp;lt;&amp;lt; to dump OUString easily for debugging purposes; like &amp;lt;code&amp;gt;std::cerr &amp;lt;&amp;lt; &amp;quot;The string is: &amp;quot; &amp;lt;&amp;lt; aOUString &amp;lt;&amp;lt; std::endl;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To print the value of rtl::OUString directly in the debugger, you can use &amp;lt;code&amp;gt;dbg_dump()&amp;lt;/code&amp;gt;.  It is intended to be called interactively from the debugger, in both debug and non-debug builds of OOo.  You can see the definition in sal/rtl/source/debugprint.cxx.&lt;br /&gt;
&lt;br /&gt;
Some code snippets about manipulating those objects can be found on the codesnippets service page : [http://codesnippets.services.openoffice.org/Office/cpp.xml]&lt;br /&gt;
&lt;br /&gt;
== Linkoo &amp;amp; Limitations ==&lt;br /&gt;
    &amp;lt;p&amp;gt;&lt;br /&gt;
      Linkoo is the tool that implements the &amp;lt;code&amp;gt;-l&amp;lt;/code&amp;gt;&lt;br /&gt;
      functionality of &amp;lt;tt&amp;gt;[[bin/ooinstall]]&amp;lt;/tt&amp;gt;. It essentially&lt;br /&gt;
      sym-links files of similar names into your local tree,&lt;br /&gt;
      allowing a fast development iteration.&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&lt;br /&gt;
      It is however slightly limited - some of the modules&lt;br /&gt;
      cannot be linked for various reasons; these are:&lt;br /&gt;
      &amp;lt;code&amp;gt;cppuhelper&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;configmgr&amp;lt;/code&amp;gt;,&lt;br /&gt;
      thus in the rare case that these are altered, they&lt;br /&gt;
      must be copied manually into &amp;lt;code&amp;gt;/opt/OOInstall/program&amp;lt;/code&amp;gt;.&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition symlinks cannot be used for soffice.bin, and this is more commonly altered - it has to be installed from &amp;lt;code&amp;gt;desktop/unxlngi4.pro/bin/soffice&amp;lt;/code&amp;gt; NB. with an appended &amp;#039;.bin&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
*[[Debugging]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=CPAN_install&amp;diff=13472</id>
		<title>CPAN install</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=CPAN_install&amp;diff=13472"/>
		<updated>2006-07-04T15:40:06Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Short guide for CPAN downloads=&lt;br /&gt;
As you might need to install additional perl modules to build OOo 2.0 or to use the tinderbox script this document describes briefly how to access and use CPAN.&lt;br /&gt;
&lt;br /&gt;
==What is CPAN?==&lt;br /&gt;
CPAN is the Comprehensive Perl Archive Network, a large collection of Perl software and documentation. You can begin exploring from either http://www.cpan.org/, http://www.perl.com/CPAN/ or any of the mirrors listed at http://www.cpan.org/SITES.html and http://mirror.cpan.org/.&lt;br /&gt;
&lt;br /&gt;
Note that CPAN is also the name of a Perl module, CPAN.pm, which is used to download and install Perl software from the CPAN archive.&lt;br /&gt;
&lt;br /&gt;
This page tells you only enough to use this Perl module to install additional perl modules. You may find the documentation for it by using perldoc CPAN via the command line or on the web at http://search.cpan.org/author/JHI/perl-5.8.0/lib/CPAN.pm.&lt;br /&gt;
&lt;br /&gt;
==Install a module with CPAN.==&lt;br /&gt;
&lt;br /&gt;
If you are behind a firewall set FTP_PASSIVE to 1.&lt;br /&gt;
&lt;br /&gt;
 $ export FTP_PASSIVE=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Start the CPAN module.&lt;br /&gt;
&lt;br /&gt;
 $ perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
If this is your first time you use this module you have to answer some questions of this module. Just follow the directions on your screen.&lt;br /&gt;
&lt;br /&gt;
For example, if you want to install the Mail::Sender module do it like:&lt;br /&gt;
&lt;br /&gt;
 cpan&amp;gt; install Mail::Sender&lt;br /&gt;
&lt;br /&gt;
Typing help gets you some online help.&lt;br /&gt;
&lt;br /&gt;
 cpan&amp;gt; help&lt;br /&gt;
&lt;br /&gt;
And typing quit quits the module.&lt;br /&gt;
&lt;br /&gt;
 cpan&amp;gt; quit&lt;br /&gt;
&lt;br /&gt;
This is everything you need to know to use the CPAN module.&lt;br /&gt;
&lt;br /&gt;
== Detailed installation instructions ==&lt;br /&gt;
&lt;br /&gt;
Especially on win32 there are some issues with Crypt::SSLeay. &amp;#039;&amp;#039;&amp;#039;CPAN&amp;#039;&amp;#039;&amp;#039; designates modules that can be installed using CPAN directly, &amp;#039;&amp;#039;&amp;#039;MANUAL&amp;#039;&amp;#039;&amp;#039; indicate modules that &amp;#039;&amp;#039;must&amp;#039;&amp;#039; be installed manually (really!). The installation order is also important. Phase 1 must be installed before Phase 2 (and the internal order is significant)&lt;br /&gt;
&lt;br /&gt;
Phase 1: Everyone&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;CPAN:&amp;#039;&amp;#039;&amp;#039; perl -MCPAN -e &amp;#039;install Archive::Zip&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;CPAN:&amp;#039;&amp;#039;&amp;#039; perl -MCPAN -e &amp;#039;install XML::Parser&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Phase 2: For committers&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;MANUAL:&amp;#039;&amp;#039;&amp;#039; Crypt::SSLeay. The CPAN installation is broken.&lt;br /&gt;
## Download and unpack the installation tarball: http://www.perl.com/CPAN/modules/by-module/Crypt/Crypt-SSLeay-0.51.tar.gz&lt;br /&gt;
## Apply this patch: [http://www.openoffice.org/nonav/issues/showattachment.cgi/37505/ssleay_fix.patch ssleay.patch] (the rationale for the patch can be found [http://rt.cpan.org/Public/Bug/Display.html?id=16735 here])&lt;br /&gt;
## perl Makefile.PL&lt;br /&gt;
## make; make test; make install&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;CPAN:&amp;#039;&amp;#039;&amp;#039; perl -MCPAN -e &amp;#039;install LWP::UserAgent&amp;#039; &lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;CPAN:&amp;#039;&amp;#039;&amp;#039; perl -MCPAN -e &amp;#039;install SOAP::Lite&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Problem:&amp;#039;&amp;#039;&amp;#039; Win32/Cygwin: /bin/sh: -c: line 0: unexpected EOF while looking for matching `&amp;quot;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solution:&amp;#039;&amp;#039;&amp;#039; Either your LIB or INCLUDE environment variable ends with a trailing &amp;quot;\&amp;quot; (backslash). This backslash espaces a double quote used by certain makefiles to protect variables passed to the shell. The shell then can&amp;#039;t find the matching double quote and dies. This happens notably with SOAP::Lite and other CWS cpan modules.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; OOo build doesn&amp;#039;t need LIB or INCLUDE to be set, so you can safely unset them as well.&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=CPAN_install&amp;diff=13471</id>
		<title>CPAN install</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=CPAN_install&amp;diff=13471"/>
		<updated>2006-07-04T14:46:40Z</updated>

		<summary type="html">&lt;p&gt;KaiB: /* Detailed installation instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Short guide for CPAN downloads=&lt;br /&gt;
As you might need to install additional perl modules to build OOo 2.0 or to use the tinderbox script this document describes briefly how to access and use CPAN.&lt;br /&gt;
&lt;br /&gt;
==What is CPAN?==&lt;br /&gt;
CPAN is the Comprehensive Perl Archive Network, a large collection of Perl software and documentation. You can begin exploring from either http://www.cpan.org/, http://www.perl.com/CPAN/ or any of the mirrors listed at http://www.cpan.org/SITES.html and http://mirror.cpan.org/.&lt;br /&gt;
&lt;br /&gt;
Note that CPAN is also the name of a Perl module, CPAN.pm, which is used to download and install Perl software from the CPAN archive.&lt;br /&gt;
&lt;br /&gt;
This page tells you only enough to use this Perl module to install additional perl modules. You may find the documentation for it by using perldoc CPAN via the command line or on the web at http://search.cpan.org/author/JHI/perl-5.8.0/lib/CPAN.pm.&lt;br /&gt;
&lt;br /&gt;
==Install a module with CPAN.==&lt;br /&gt;
&lt;br /&gt;
If you are behind a firewall set FTP_PASSIVE to 1.&lt;br /&gt;
&lt;br /&gt;
 $ export FTP_PASSIVE=&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Start the CPAN module.&lt;br /&gt;
&lt;br /&gt;
 $ perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
If this is your first time you use this module you have to answer some questions of this module. Just follow the directions on your screen.&lt;br /&gt;
&lt;br /&gt;
For example, if you want to install the Mail::Sender module do it like:&lt;br /&gt;
&lt;br /&gt;
 cpan&amp;gt; install Mail::Sender&lt;br /&gt;
&lt;br /&gt;
Typing help gets you some online help.&lt;br /&gt;
&lt;br /&gt;
 cpan&amp;gt; help&lt;br /&gt;
&lt;br /&gt;
And typing quit quits the module.&lt;br /&gt;
&lt;br /&gt;
 cpan&amp;gt; quit&lt;br /&gt;
&lt;br /&gt;
This is everything you need to know to use the CPAN module.&lt;br /&gt;
&lt;br /&gt;
== Detailed installation instructions ==&lt;br /&gt;
&lt;br /&gt;
Especially on win32 there are some issues with Crypt::SSLeay. &amp;#039;&amp;#039;&amp;#039;CPAN&amp;#039;&amp;#039;&amp;#039; designates modules that can be installed using CPAN directly, &amp;#039;&amp;#039;&amp;#039;MANUAL&amp;#039;&amp;#039;&amp;#039; indicate modules that &amp;#039;&amp;#039;must&amp;#039;&amp;#039; be installed manually (really!). The installation order is also important. Phase 1 must be installed before Phase 2 (and the internal order is significant)&lt;br /&gt;
&lt;br /&gt;
Phase 1: Everyone&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;CPAN:&amp;#039;&amp;#039;&amp;#039; perl -MCPAN -e &amp;#039;install Archive::Zip&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;CPAN:&amp;#039;&amp;#039;&amp;#039; perl -MCPAN -e &amp;#039;install XML::Parser&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Phase 2: For committers&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;MANUAL:&amp;#039;&amp;#039;&amp;#039; Crypt::SSLeay. The CPAN installation is broken.&lt;br /&gt;
## Download and unpack the installation tarball: http://www.perl.com/CPAN/modules/by-module/Crypt/Crypt-SSLeay-0.51.tar.gz&lt;br /&gt;
## Apply this patch: [http://www.openoffice.org/nonav/issues/showattachment.cgi/37505/ssleay_fix.patch ssleay.patch] (the rationale for the patch can be found [http://rt.cpan.org/Public/Bug/Display.html?id=16735 here])&lt;br /&gt;
## perl Makefile.PL&lt;br /&gt;
## make; make test; make install&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;CPAN:&amp;#039;&amp;#039;&amp;#039; perl -MCPAN -e &amp;#039;install LWP::UserAgent&amp;#039; &lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;CPAN:&amp;#039;&amp;#039;&amp;#039; perl -MCPAN -e &amp;#039;install SOAP::Lite&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Problem:&amp;#039;&amp;#039;&amp;#039; Win32/Cygwin: /bin/sh: -c: line 0: unexpected EOF while looking for matching `&amp;quot;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solution:&amp;#039;&amp;#039;&amp;#039; Either your LIB or INCLUDE environment variable ends with a trailing &amp;quot;\&amp;quot; (backslash). This backslash espaces a double quote used by certain makefiles to protect variables passed to the shell. The shell then can&amp;#039;t find the matching double quote and dies. This happens notably with SOAP::Lite and other CWS cpan modules.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; If you really have the environment variables LIB and INCLUDE set better consider yourself a wizard that is able to deal with CPAN (compiling cygwin programs in general) problems as you are most propably mixing gcc and MSVC here. Don&amp;#039;t set LIB and INCLUDE, the OOo build doesn&amp;#039;t need them.&lt;/div&gt;</summary>
		<author><name>KaiB</name></author>
	</entry>
</feed>