File: taskjuggler.xml.in

package info (click to toggle)
taskjuggler 2.3.0-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 8,764 kB
  • ctags: 3,700
  • sloc: cpp: 36,852; sh: 12,761; xml: 5,541; perl: 5,207; makefile: 269; python: 258; lisp: 67
file content (739 lines) | stat: -rw-r--r-- 30,147 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.3//EN" "/usr/share/xml/docbook/schema/dtd/4.3/docbookx.dtd" [
 <!ENTITY ChangeLog SYSTEM "ChangeLog.xml">
 <!ENTITY FirstProject SYSTEM "FirstProject.xml">
 <!ENTITY UsageGuide SYSTEM "UsageGuide.xml">
 <!ENTITY SyntaxReference SYSTEM "SyntaxReference.xml">
 <!ENTITY PropertyReference SYSTEM "GenPropertyReference.xml">
 <!ENTITY Example SYSTEM "Example.xml">
 <!ENTITY Freeze_Example SYSTEM
   "../../TestSuite/Syntax/Correct/Freeze.tjp">
]>
<book id="index">
<bookinfo><title>The TaskJuggler Manual</title>
<authorgroup>
<author>
	<firstname>Chris</firstname><surname>Schl&auml;ger</surname>
</author>
<author>
	<firstname>Marc</firstname><surname>R&uuml;hrschneck</surname>
</author>
</authorgroup>
<copyright>
	<year>2001, 2002, 2003, 2004, 2005, 2006</year>
	<holder>Chris Schl&auml;ger</holder>
</copyright>
<date>Version @VERSION@</date>
<releaseinfo>@VERSION@</releaseinfo>
<abstract>
<para>
This document describes TaskJuggler version @VERSION@
</para>
</abstract>

<keywordset>
<keyword>TaskJuggler</keyword>
<keyword>Project Management</keyword>
<keyword>Gantt Chart</keyword>
<keyword>Task</keyword>
<keyword>Resources</keyword>
</keywordset>
</bookinfo>

<preface id="about_this_document"><title>About this document</title>
<para>
This document describes TaskJuggler version @VERSION@
</para>

<para>The <application>TaskJuggler</application> manual consists of
two parts. The first part contains general usage information and a
tutorial. The tutorial is highly recommended for all first-time
TaskJuggler users. It is a very good introduction to many TaskJuggler
concepts and features. The second part is the language
reference.</para>

</preface>

<chapter id="introduction"><title>Introduction</title>
<sect1 id="about_taskjuggler"><title>About TaskJuggler</title>

<para>TaskJuggler is a modern and powerful project management tool. Its new
approach to project planning and tracking is far superior to the
commonly used Gantt chart editing tools. It has already been
successfully used in many projects and scales easily to projects with
hundreds of resources and thousands of tasks.</para>

<para>TaskJuggler is an Open Source tools for serious project managers. It
covers the complete spectrum of project management tasks from the
first idea to the completion of the project. It assists you during
project scoping, resource assignment, cost and revenue planing, risk
and communication management.</para>

<para>TaskJuggler provides an optimizing scheduler that computes your
project time lines and resource assignments based on the project
outline and the constrains that you have provided. The build-in
resource balancer and consistency checker offload you from having to
worry about irrelevant details and ring the alarm if the project gets
out of hand. Its flexible "as many details as necessary"-approach
allows you to still plan your project as you go, making it also ideal
for new management strategies such as Extreme Programming and Agile
Project Management.</para>

<para>If you are about to build a skyscraper or just want to put together
your colleague's shift plan for the next month, TaskJuggler is the
right tool for you. If you just want to draw nice looking Gantt charts
to impress your boss or your investors, TaskJuggler might not be right
for you. It takes some effort to master its power, but it will become
a companion you don't want to miss anymore.</para>

</sect1>
<sect1 id="features_and_highlights"><title>Features and Highlights</title>

<para>
<itemizedlist mark='opencircle'>

<listitem><para>Manages tasks, resources and costs in one package</para></listitem>

<listitem><para>Automatic resource leveling, tasks conflict resolutions, and task filtering</para></listitem>

<listitem><para>Comprehensive and flexible views and reports so you can find the
information you need when you need it</para></listitem>

<listitem><para>Build-in templates to get you started (you can also save your own schedules as templates for future use)</para></listitem>

<listitem><para>Project tracking and status reporting</para></listitem>

<listitem><para>Graphical User Interface to conveniently edit your projects, view and generate Gamtt charts and reports</para></listitem>

<listitem><para>Unlimited number of scenarios (baselines) of same project for what-if analysis</para></listitem>

<listitem><para>CSV data export for exchange with Office Suites</para></listitem>
<listitem><para>Risk analysis</para></listitem>

<listitem><para>Project breakdown and management team support</para></listitem>

<listitem><para>Flexible working hours and vacation handling</para></listitem>

<listitem><para>Support for shift working</para></listitem>

<listitem><para>Multiple time zone support</para></listitem>

<listitem><para>Tasks may have initial costs, finishing costs</para></listitem>

<listitem><para>Resources may have running costs</para></listitem>

<listitem><para>Support for profit/loss analysis</para></listitem>

<listitem><para>HTML and XML report generation</para></listitem>

<listitem><para>Powerful project description syntax with macro support</para></listitem>

<listitem><para>Support for central resource allocation database</para></listitem>

</itemizedlist>
</para>

</sect1>
<sect1 id="taskjuggler_on_the_web"><title>TaskJuggler on the Web</title>

<para>The official TaskJuggler web site can be found at <ulink
url="http://www.taskjuggler.org">
http://www.taskjuggler.org</ulink>.</para>

<para>Since the developers are mostly busy project managers
themselves, we have created a <ulink
url="http://www.taskjuggler.org/FUDforum2">forum</ulink> for users to
help each other.</para>

</sect1>
&ChangeLog;
<sect1 id="how_to_contribute"><title>How to Contribute</title>

<sect2 id="why_contribute"><title>Why contribute?</title>

<para>TaskJuggler is an Open Source Project. It was developed by
volunteers mostly in their spare time. Made available under the GNU
General Public license and similar licenses, TaskJuggler can be shared
and used free of charge by anybody who respects the license
conditions. Does that mean you can use it without worrying about
anything? Clearly not! Though users have no legal obligation to
contribute, you should feel a moral obligation to support Open Source
in whatever way you can. This can range from helping out other
users with their first Linux installation to actively contributing to
the TaskJuggler Project, not just as a programmer. The following section
describes, how you can
contribute to any of the components that are part of the TaskJuggler
software releases.</para>

</sect2>
<sect2 id="preparing_a_contribution"><title>Preparing a
contribution</title>

<para>To get started you need to download the most current development
snapshot from the <ulink
url="http://www.taskjuggler.org/download.php">TaskJuggler Download
Site</ulink>. The development snapshot is updated once a day to
provide access to the most recent developments. It is important that you
use a very recent snapshot as the developers have probably made changes
in the same files as you. This increases the chance for change
collisions which could mean recreating your contribution from scratch.</para>

<para>Unpack the tarball as described in the installation section.
Then rename the taskjuggler directory to something like
<varname>taskjuggler-yourname</varname>. Then unpack the tarball again
in the same place as before. You should now have a directory that
contains two identical directory trees, each with a slightly different
name of the top-level directory of each tree.</para>

<para>Next you need to find the files where you want to make your
modifications. Please make your changes only in the
<varname>taskjuggler-yourname</varname> directory. The other directory
must be left unmodified. We need it later on to create a file that
just contains your changes. Sometimes files will be generated from
other files. Do not change those generated files. Your changes will be
overwritten the next time you call the make utility. To identify those
files, some familiarity with make and other Linux tools are
helpful. Whenever there is a file with the same base name and the extension
<varname>.in</varname> in the same directory, then the file is
generated from the <varname>.in</varname>-file. You need to modify the
<varname>.in</varname>-file, not the one with just the base
name. Another indicator is the fact that the file is not part of the
tarball. With few exceptions that can be identified by the .in-file rule
above, the tarball does not contain any generated files.</para>

</sect2>
<sect2 id="creating_a_patch"><title>Creating a Patch</title>

<para>When you are done with your changes, it's a good idea to test them.
Type

<screen>make</screen>

in the <varname>taskjuggler-yourname</varname> directory. If
there are no errors, you can check or test the result. If everything
builds fine, you can then remove all generated files again by typing 

<screen>make distclean</screen>

Now you can generate a file that just contains
your modifications by typing
<screen>diff -ru taskjuggler-svn taskjuggler-yourname > taskjuggler-yourname.diff</screen>

Inspect the generated diff file
<varname>taskjuggler-yourname.diff</varname> and make sure it only
contains diffs for files that you have changed and the changes are the
way you want them to be. If there are generated files included in the diff,
please remove those files and regenerate the diff.</para>

<para>The diff utility performs a line-by-line
comparisons of the files. Try to only make changes
that have an impact on the generated files. Do you change indentation
or line wrapping of paragraphs. These kind of changes increase the
size of diff files and make it much harder to evaluate the patches.
When making changes to the program code, please use our coding
style. If your contribution is large enough to justify a
copyright claim, please indicate what copyright you claim in the patch. For
modifications
to existing files, we will assume that your contribution falls under the
same license as the modified file. All new files will need to contain a
license declaration, preferably GPL.</para>

</sect2>
<sect2 id="contributing_translations"><title>Contributing Translations</title>

<para>Another possible area of contribution are translation of
TaskJuggler into languages other than US English. Our development
process is in principle prepared for translations, but the first
translation will definitely be a bit difficult to do. TaskJuggler has
several hundred messages and more than hundred pages of documentation.
Any translation is a significant effort and an ongoing commitment.
TaskJuggler is still actively developed and this will require the
translations to be updated as well. Please understand that we do not
want to ship partial or outdated translations to our users,
so please ensure you or a group of people are willing to maintain the
translations.</para>

</sect2>
<sect2 id="some_final_words_to_contributors"><title>Some final words
to Contributors</title>

<para>We do welcome all contributions but please understand that we
reserve the right to reject any contribution that does not follow the
above guidelines or otherwise conflicts with the goals of the
TaskJuggler team. It is a good idea to contact the team prior to
making any larger efforts.</para>

</sect2>
</sect1>
</chapter>
<chapter id="installation"><title>Installation</title>
<sect1 id="obtaining_taskjuggler"><title>Obtaining TaskJuggler </title>

<para>TaskJuggler may be obtained from the following web site:</para>

<para><ulink url="http://www.taskjuggler.org">
http://www.taskjuggler.org</ulink></para>
</sect1>
<sect1 id="the_taskjuggler_components"><title>The TaskJuggler
Components</title>

<para>TaskJuggler consists of several modular components that you
may or may not need. TaskJuggler also uses some additional tools. We
have avoided to re-invent the wheel again wherever possible.
We tried to keep the dependency list reasonably small,
nevertheless can it be challenging for an inexperienced user to build
and install TaskJuggler from source code. Most users are probably
better served by using binary packages from their distributor. Almost
every mainstream 
distribution has TaskJuggler included in recent version of their
product. If not, you might like to contact them to inform them that
they are missing an essential package.</para>

<para>This version of TaskJuggler was built and tested on SuSE Linux
10.0 and 10.1 on various hardware platforms.</para>

<sect2 id="the_graphical_use_interface"><title>The Graphical User
Interfaces</title>

<para>With version 2.2 came a new graphical front-end. It's an integrated
Project management environment.</para>

<para>The front-end is called
<computeroutput>TaskJugglerUI</computeroutput>.
Don't confuse this with <computeroutput>taskjuggler</computeroutput>
which is the commandline version. When you want to start TaskJugglerUI
from a shell, you need to type it with the capital letters.</para>

<para>The graphical front-ends make use of the libraries of the <ulink
url="www.kde.org">K Desktop Environment</ulink>. We recommend to use
at least version 3.4. Earlier version will probably work as well, but
we have not tested them.</para>

</sect2>
<sect2 id="the_command_line_tool_taskjuggler"><title>The command line
tool taskjuggler</title>

<para>To build and run TaskJuggler, you need:</para>

<para><itemizedlist mark='opencircle'>

<listitem><para>Qt &mdash; The <ulink
url="ftp://ftp.trolltech.com/qt/source"> Qt C++ class library</ulink>
version 3.3 or higher</para></listitem>

<listitem><para> GNU Compiler Collection &mdash; We are currently
using GCC 4.0 to develop TaskJuggler. Since we try to write the code
platform independent and ANSI standard compliant it should work with
most other compilers as well.</para></listitem>

</itemizedlist></para>

<para>The requirements listed are enough to build and use the command line
program that translates project descriptions into HTML or XML reports.
If you want to built this documentation or use the tools to process
the XML files you need to install the additional dependencies. If any
of the following dependencies are not matched, the configure script
will issue a warning but will not fail.</para>

</sect2>
<sect2 id="the_taskjuggler_documentation"><title>The TaskJuggler
Documentation</title>

<para><itemizedlist mark='opencircle'>

<listitem><para>DocBook4 &mdash; The <ulink
url="http://www.oasis-open.org/docbook/">DocBook</ulink> system with
additional stylesheets and utilities.</para></listitem>

<listitem><para>docbook-utils&mdash; The <ulink
url="ftp://sources.redhat.com/pub/docbook-tools">jade wrapper
scripts</ulink> from Eric Bischoff.</para></listitem>

<listitem><para>OpenJade &mdash; The <ulink
url="http://openjade.sourceforge.net/">OpenJade</ulink>
system.</para></listitem>

<listitem><para>JadeTeX &mdash; If you want to build the Postscript
version of the documentation you need the <ulink
url="ftp://ftp.dante.de/tex-archive/macros/jadetex">JadeTeX</ulink>
macro package for <ulink
url="http://www.tug.org/teTeX">teTeX</ulink>.</para></listitem>

<listitem><para>XSLT Processor &mdash; like xsltproc from the <ulink
url="http://xmlsoft.org/XSLT/">libxslt</ulink>
package.</para></listitem>

<listitem><para>Meinproc &mdash; the XSLT processor for the <ulink
url="http://www.kde.org">KDE</ulink> Helpcenter. You only need
meinproc in case you want to build the GUI. meinproc is part of any
KDE distribution.</para></listitem>

<listitem><para>dvips &mdash; This is usually part of your TeX system
like <ulink
url="http://www.tug.org/teTeX">te_latex</ulink>.</para></listitem>

</itemizedlist></para>

</sect2>
<sect2 id="contributed_stuff"><title>Contributed Stuff</title>

<para>Several people have contributed useful tools for TaskJuggler
users. These tools can be found in the Contrib directory of the source
code package. Please refer to the included README files for
installation information.</para>

</sect2>

</sect1>
<sect1 id="compilation_and_installation"><title>Compilation and
Installation</title> <para>
Before compiling TaskJuggler you need to set the
<computeroutput>QTDIR</computeroutput> environment variable to the
base directory of your Qt version. This is normally
<computeroutput>/usr/lib64/qt3</computeroutput> or
<computeroutput>/usr/lib/qt3</computeroutput>.</para>

<para>To compile and install TaskJuggler on your system, type the following 
in the base directory of the TaskJuggler distribution:</para>

<para><screen>
% ./configure
% make
% make install
</screen></para>

<para>Since TaskJuggler uses <computeroutput>autoconf</computeroutput>, you
should have no trouble compiling it. TaskJuggler has some weak or
non-mandatory dependencies. If any of there are not satisfied, a
warning is issued. In case a mandatory dependency is not found, an
error is displayed and the configuration program stops. If you have
problems, please report them to the TaskJuggler user forum at
<ulink url="http://www.taskjuggler.org/FUDforum2">
http://www.taskjuggler.org/FUDforum2</ulink> in English. Someone
there can help you out.</para>

<para>In case you want to build TaskJuggler without the graphical
front-ends, you can disable them during them configuration
process:</para>

<para><screen>
% ./configure --with-kde-support=no --prefix=/usr/local
% make
% make install
</screen></para>

</sect1>
</chapter> 
<chapter id="usage"><title>Usage</title> 
<sect1 id="basics"><title>Basics</title>

<para>TaskJuggler uses one or more text files to describe a project.
The main project should be placed in a file with the
<computeroutput>.tjp</computeroutput> extension. This main project may
contain several sub-projects. Such sub-projects should be placed in
files with the <computeroutput>.tji</computeroutput> extension. These
sub-projects are included in the main project during compile
time.</para>

<para>When TaskJuggler is used with other tools the project
description or the reports may also be in XML format. The recommended
extension for such files is
<computeroutput>.tjx</computeroutput>.</para>

</sect1> 
<sect1 id="general_usage"><title>General Usage</title>

<para>To use the graphical front-end simply start it from the menu.
Depending on your Linux Distribution you will usually find it under
Office/Project Management or a similar entry. To start it from a shell
type</para>

<para><screen>
% TaskJugglerUI
</screen> </para>

<para>The commandline version of TaskJuggler works like a compiler.
You provide the source files, it computes the contents and creates the
output files.</para>

<para>Let's say you have a project file called
<filename>AcSo.tjp</filename>. It contains the tasks of your project
and their dependencies. To schedule the project and create report
files you have to ask TaskJuggler to process it.</para>

<para><screen>
% taskjuggler AcSo.tjp
</screen> </para>

<para>TaskJuggler will try to schedule all tasks with the specified
conditions and generate the reports that were requested with the <link
linkend="PROPERTY_htmltaskreport">htmltaskreport</link>, <link
linkend="PROPERTY_htmlresourcereport">htmlresourcereport</link> or other report
properties in the input file.</para>

</sect1> 
<sect1 id="the_command_line_options"><title> The Command Line
Options</title>

<para><simplelist type="horiz" columns="2">

<member>--help</member>
<member>Print all command line options with a short
description.</member>

<member>--version</member>
<member>Print the version and copyright info.</member>

<member>-v</member><member>Same as '--version'.</member>

<member>-s</member><member>Stop TaskJuggler run after syntax check.
This option is for testing and debugging purposes only.</member>

<member>-M</member><member>Output fragment of a Makefile that lists
the dependencies of the passed TaskJuggler files.</member>

<member>--makefile &lt;file&gt;</member><member>Similar to '-M' but write
the dependency information into the specified file.</member>

<member>--maxerrors N</member><member>Specifies the number of errors
after which TaskJuggler stops checking the input files. If N is 0
all errors are displayed.</member>

<member>--nodepcheck</member>
<member>Do not check for dependency loops. The loop detector uses an
algorithm that needs exponentially more time the bigger the dependency
network gets. So for large projects it can be desirable to skip the
dependency loop detection. This does not affect the task scheduling
but can lead to error messages that are difficult to associate with the
dependency specification that is wrong.</member>

<member>--debug N</member>
<member>Print debug output, N must be between 0 and 4, the higher N
the more output is printed. This option is for testing and debugging
purposes only.</member>

<member>--dbmode N</member>
<member>Limit debug output to certain modules of the code. N is a bit
mask. Each set bit activates output of a certain module. Currently the
following modules are supported: Project File Reader (1), Project
Scheduler (2), Task Scheduler (4), Resource Scheduler (8), Expression
Tree Evaluator (16). This option is for testing and debugging purposes
only.</member>

<member>--updatedb</member>
<member>Update the Kotrus database with the new resource usage
information.</member>

</simplelist></para>

<para>Calling TaskJuggler with . as input filename will cause reading
from stdin. To redirect output to stdout you can specify -- as
filename for reports. This feature can for example be used to generate
dynamic HTML pages from CGI scripts.</para>

</sect1> 
<sect1 id="reporting_bugs_and_sending_feedback"><title>Reporting Bugs
and Sending Feedback</title>

<para>All official releases of TaskJuggler are meant to be stable
releases unless explicitly noted differently. But our test suite is
still very small and some features are not tested automatically very
well. So it's very likely that your current version of TaskJuggler
contains some bugs. If you find a bug please follow this
procedure:</para>

<para><itemizedlist mark='opencircle'>

<listitem><para>Read this manual to make sure that it is actually a
bug and not a feature.</para></listitem>

<listitem><para>Check the TaskJuggler <ulink
url="http://www.taskjuggler.org">web page</ulink>.
Possibly the bug was already found and a patch or workaround
exists.</para></listitem>

<listitem><para>Try to create a test project that is as small as
possible but still reproduces the bug.</para></listitem>

<listitem><para>Send the test project and a detailed description of
the problem to the developer forum at <ulink
url="http://www.taskjuggler.org/FUDforum2">http://www.taskjuggler.org/FUDforum2</ulink>.</para></listitem>

</itemizedlist></para>

</sect1> 
</chapter>
&FirstProject;
&UsageGuide;
&SyntaxReference;
&PropertyReference;

<chapter id="example"><title>The Example: Accounting Software</title>
&Example;
</chapter>

<chapter id="migrating_from_taskjuggler_1_x_to_2_x"><title>Migrating
from TaskJuggler 1.x to 2.x</title>

<sect1 id="achieving_compatibility"><title>Achieving compatibility</title>

<para>Are you also frustrated by tools that can't read the data of
their earlier incarnations? After all those files contain your
valuable data and the first impression that the wonderful new version
makes is it's failure to read your old files. With TaskJuggler we
like to spare you such situations as much as possible. But TaskJuggler
1.x was written to solve the problems that we encountered. By
releasing it to the general public we learned that TaskJuggler is also
very useful to many other people. Some contacted us to tell us that
it would be even more useful to them, if TaskJuggler could have this
or that new feature. In many cases we added these new features but we
learned more and more that some parts of the original TaskJuggler
design were not flexible enough to support some new features. For
TaskJuggler 2.x we decided to change TaskJuggler to a more flexible
design even if this meant that some syntax constructs would no longer
be supported.</para>

<para>As TaskJuggler uses plain text file as its main data format,
you will always to able to read in your old files. But in some
cases, you need to change certain syntax constructs to the new syntax.
When TaskJuggler processes a file with deprecated syntax it will
generate an error message. This usually contains a hint, how the
statement should look like in new syntax. The following sections
discuss the conceptual changes and what statements need to be
changed.</para>

<sect2 id="syntax_changes"><title>Syntax changes</title>

<para>TaskJugger 1.x could only handle two scenarios with the fixed
name <computeroutput>plan</computeroutput> and
<computeroutput>actual</computeroutput>. TaskJuggler 2.0 can now
handle any number of scenarios. Scenario specific task attributes have
to be prefixed with the scenario ID followed by a colon. The
attributes starting with 'plan' or 'actual' have been
deprecated.</para>

<para>HTML reports are now a lot more flexible. New CSS
elements have being used and the table elements are customizable now.
Old stylesheets will no longer work, since the attribute names have
changed. A HTML report contains CSS attribute class specification if
you provide a custom stylesheet definition with <link
linkend="PROPERTY_rawstylesheet">rawstylesheet</link>.</para>

<para>The scenario name is no longer displayed by default if
more than one scenario is included in a report. A column
<computeroutput>scenario</computeroutput> must be explicitly added if
the scenario name should be reported for each line. The attributes
'showactual' and 'hideplan' have been deprecated. The <link
linkend="PROPERTY_scenarios">scenarios</link> attribute now
controls which scenarios should be shown.</para>

<para>The format of numbers and currency values can now be
specified with <link
linkend="PROPERTY_numberformat">numberformat</link> and <link
linkend="PROPERTY_currencyformat">currencyformat</link>. The old
keyword currencydigits has been deprecated.</para>

<para><link
linkend="PROPERTY_workinghours">workinghours</link> and <link
linkend="PROPERTY_currency">currency</link> are no longer global
properties. They are now optional attributes of the project
property.</para>

<para>Container tasks in export reports no longer have fixed
start and end date if they have their sub tasks exported as
well.</para>

<para>The functions for <link
linkend="TYPE_LOGICALEXPRESSION">Logical Expressions</link> are now using
capital letters to improve their readability. The all lowercase
versions are still supported, but the recommended versions are now the
ones with intermixed uppercase letters.
<computeroutput>isTaskOfProject</computeroutput> was added as new
query function.</para>

<para>Support for new XML format has been added. The old
format is still supported. TJ can read both old and new format XML
files but will use the new XML format for output.</para>

</sect2>
<sect2 id="scheduler_changes"><title>Scheduler changes</title>

<para>Length and duration tasks with resource
allocations are no longer trimmed to the first and last resource
allocation. This can lead to different schedules.</para>

<para>'length' based task now use the global working hours
and global vacation settings as a criteria of what is a working day.
The tasks now always end during working hours and not at
midnight.</para>

<para>The maximum allocation of a resource for a task is no
longer limited by default. <link
linkend="PROPERTY_maxeffort">maxeffort</link> now defaults to 0
(unlimited) instead of 1.0 (8 hours per day). To have the same
behaviour as in TaskJuggler 1.x version you need to specify
<computeroutput>maxeffort 1.0</computeroutput> before any resource
definition. This change was made since many users were confused when
after increasing the daily working hours resources were still only
allocated 8 hours per day.</para>

</sect2>
</sect1>
</chapter>
<chapter id="FAQ"><title>Questions and Answers</title>
<sect1 id="general_questions"><title>General Questions</title>

<para>Q: Why does taskjuggler use Qt when it's not an X11
application?</para>
<para>A: Qt is a very powerful library that is much more than just a
widget library. TaskJuggler uses Qt for all kinds of internal data
types like lists and arrays. It also uses the Unicode functions, the
SQL database interface and the XML support of Qt.</para>

</sect1>
<sect1 id="compiling_and_installation"><title>Compiling and
installation</title>

<para>Q: Can TaskJuggler be compiled and used on Windows?</para>
<para>A: Probably yes, but we have never tried it. It should compile
but may require some minor tweaks of the source. You should have
good knowledge of C++ and Qt when you try this. Please let us know if you
were successful.</para>
</sect1>
<sect1 id="FAQ_usage"><title>Usage</title>
<para>Nothing here yet.</para>
</sect1>
</chapter>
<chapter id="copyright"><title>Copyright</title>

<para>TaskJuggler Copyright 2001, 2002, 2003, 2004, 2005 Chris
Schl&auml;ger &lt;cs@suse.de&gt;</para>

<para>This program is free software. You can redistribute it and modify it
under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.</para> 

<para>This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.</para>

<para>You should have received a copy of the GNU General Public License
along with this program. If not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</para>

</chapter>
<chapter><title>Trademarks</title>

<para>Linux is a registered trademark of Linus Torvalds.</para>

<para>KDE and the K Desktop environment are a registered trademark of
KDE e. V.</para>

<para>TaskJuggler is a trademark of Chris Schl&auml;er.</para>

<para>UNIX is a registered trademark and The Open Group is a trademark of
The Open Group in the US and other countries.</para>

</chapter>
</book>