Linux Format - UK (2020-03)

(Antfer) #1
68 LXF260 March 2020 http://www.linuxformat.com

TUTORIALS Project management


/SCHEDULED/ start date for it on the following day,
and its /DEADLINE/ to accommodate the /EFFORT/ it
requires. In this way, you can build a plan for all the
tasks in your project, assign their schedule, and easily
review them in Column View to see what’s next. You can
add these values with the *org-schedule* and *org-
deadline* commands, respectively, and they’ll appear
between the task headline and the Properties drawer.

Sharing & collaborating
But what if you want to communicate this to others in a
team? What if you need to collaborate with others? For
example, updating teammates or managers on a
project’s progress? Fortunately, as the old Emacs credo
goes, “There’s a package for that!” A great way to share
your project with others is through the use of a Gantt
chart, which will:
Display all the tasks in the project
Illustrate their dependencies, if any
Show when they’re scheduled to start and end
Demonstrate any progress made
And, by coincidence, these are all the things we’ve
spent all this time configuring! There are a couple of
different options to produce Gantt charts from Org-
Mode source, but for this example we’ll use the
TaskJuggler tool. While this was once a GUI application
in the same vein as GanttProject or Calligra Plan, it’s
now a package of terminal programs with an optional
server. But in this case, we’ll simply use the package’s
*org-taskjuggler* commands to do the heavy lifting for
us. This package should be included with most Org-
Mode distributions, and since Org-Mode is included in
Emacs by default in recent versions, chances are you
already have it. Try searching for the exporter by using
M-x to bring up the command buffer, then type in
“taskjuggler.” If options remain, you’re all set on the
Emacs side.
Next, make sure TaskJuggler is installed. On Ubuntu,
this is easy from the terminal:
sudo apt install tj3
As it’s a Ruby program, you can also install the
TaskJuggler gem if that’s your preference:
gem install taskjuggler
Use the magic M-x (Alt-x) keystroke and enter:
*org-taskjuggler-export-process-and-open*
This will do a couple of things in the same directory as
your Org file:

(^1) It will export your Org file to a TJP file, which is the
standard TaskJuggler format.
(^2) It will process your TJP file, scheduling your tasks
according to what resources are available (by default,
it’s just yourself) and how much time you have.
After adding these columns, you can start to fill in
their values directly from Columns View. Using the
arrow keys to move over to the /SCHEDULED/ column
of the first task, press the E key. This is the key that
enables you to edit the contents of the cell. But look – at
the bottom of the window, a calendar will appear.
Because this property is known to hold dates, clicking a
date on the calendar will insert the value in correct Org-
Mode datestamp format. Not too shabby for a plain text
program, eh?
It’s all busy work
While the actual amount of work something will take is
/effort/, how long that work will span on a calendar is
referred to as /duration/. There’s a reason these two
aren’t the same thing. You may estimate that one task
will take you four hours to complete. However, if you
have other responsibilities that only leave you with two
hours a day to dedicate to that task, then the duration
of that task will be two days.
This is where the /SCHEDULED/ and /DEADLINE/
special properties come in. Knowing that a task will
begin on, say, 20 December, and that it will require two
days, you can set its /SCHEDULED/ date for that day
and its /DEADLINE/ as 21 December. Then provided
the next task is dependent on the first, you can set the
Don’t forget, you
can still place
text-based
content after
the headline
and associated
data (e.g.
properties and
LOGBOOK). This
is a great place
to stash detailed
instructions,
links to other
resources, or
anything that
will help your
team get their
tasks done.
ORG-MODE PROPERTIES
Properties are similar to the Tags we introduced in LXF241, in that
they’re metadata about a headline (or task, in our case). However,
they’re different in the following ways: you can only enter a single
value for a particular property in a given headline, and there are
special properties with built-in functionality.
You designate a property by enclosing it in colons. All properties are
placed in the /Properties Drawer/, which comes immediately after
the headline, starts with :PROPERTIES: and finishes with :END:. You
can toggle it open and closed with the Tab key, just like a headline. For
example, the following shows this structure for a custom property
called /URL/:



  • This is my headline.
    :PROPERTIES:
    :URL: http://www.linuxformat.com
    :END:
    Alternatively, you can specify properties that apply to the entire
    document by putting them in the header. Header properties are
    placed at the very beginning of the file, and start with #+ rather than
    a colon (they still end with one though). For example, if you set up
    your /TODO/ statuses in the header, they’d be available for all tasks
    and sub-tasks throughout the rest of the file unless you specifically
    override them. Check out the Org-Mode documentation on properties
    for more details on what they can do (https://orgmode.org/guide/
    Properties.html#Properties). The Plan chart from TaskJuggler is a traditional Gantt, giving you a
    one-shot view of the entire project.
    Once you add
    relevant planning
    properties to your
    Column View, it
    becomes a useful
    format for review.
    68 LXF260March 2020 666March 20TkinMg0k
    TUTORIALS Project management
    /SCHEDULED/startdateforitonthefollowingday,
    andits/DEADLINE/toaccommodatethe/EFFORT/it
    requires.Inthisway,youcanbuildaplanforallthe
    tasksinyourproject,assigntheirschedule,andeasily
    reviewtheminColumnViewtoseewhat’snext.Youcan
    addthesevalueswiththeorg-scheduleandorg-
    deadline
    commands,respectively,andthey’llappear
    betweenthetaskheadlineandthePropertiesdrawer.
    Sharing&collaborating
    Butwhatifyouwanttocommunicatethistoothersina
    team?Whatifyouneedtocollaboratewithothers?For
    example,updatingteammatesormanagersona
    project’sprogress?Fortunately,astheoldEmacscredo
    goes,“There’sapackageforthat!”Agreatwaytoshare
    yourprojectwithothersisthroughtheuseofaGantt
    chart,whichwill:
    Displayallthetasksintheproject
    Illustratetheirdependencies,ifany
    Showwhenthey’rescheduledtostartandend
    Demonstrateanyprogressmade
    And,bycoincidence,theseareallthethingswe’ve
    spentallthistimeconfiguring!Thereareacoupleof
    differentoptionstoproduceGanttchartsfromOrg-
    Modesource,butforthisexamplewe’llusethe
    TaskJugglertool.WhilethiswasonceaGUIapplication
    inthesameveinasGanttProjectorCalligraPlan,it’s
    nowapackageofterminalprogramswithanoptional
    server.Butinthiscase,we’llsimplyusethepackage’s
    org-taskjugglercommandstodotheheavyliftingfor
    us.ThispackageshouldbeincludedwithmostOrg-
    Modedistributions,andsinceOrg-Modeisincludedin
    Emacsbydefaultinrecentversions,chancesareyou
    alreadyhaveit.Trysearchingfortheexporterbyusing
    M-xtobringupthecommandbuffer,thentypein
    “taskjuggler.”Ifoptionsremain,you’reallsetonthe
    Emacsside.
    Next,makesureTaskJugglerisinstalled.OnUbuntu,
    thisiseasyfromtheterminal:
    sudoaptinstalltj3
    Asit’saRubyprogram,youcanalsoinstallthe
    TaskJugglergemifthat’syourpreference:
    geminstalltaskjuggler
    UsethemagicM-x(Alt-x)keystrokeandenter:
    org-taskjuggler-export-process-and-open
    Thiswilldoacoupleofthingsinthesamedirectoryas
    yourOrgfile:
    (^1) ItwillexportyourOrgfiletoaTJPfile,whichisthe
    standardTaskJugglerformat.
    (^2) ItwillprocessyourTJPfile,schedulingyourtasks
    accordingtowhatresourcesareavailable(bydefault,
    it’sjustyourself)andhowmuchtimeyouhave.
    After adding these columns, you can start to fill in
    their values directly from Columns View. Using the
    arrow keys to move over to the /SCHEDULED/ column
    of the first task, press the E key. This is the key that
    enables you to edit the contents of the cell. But look – at
    the bottom of the window, a calendar will appear.
    Because this property is known to hold dates, clicking a
    date on the calendar will insert the value in correct Org-
    Mode datestamp format. Not too shabby for a plain text
    program, eh?
    It’s all busy work
    While the actual amount of work something will take is
    /effort/, how long that work will span on a calendar is
    referred to as /duration/. There’s a reason these two
    aren’t the same thing. You may estimate that one task
    will take you four hours to complete. However, if you
    have other responsibilities that only leave you with two
    hours a day to dedicate to that task, then the duration
    ofthattaskwillbetwodays.
    Thisiswherethe/SCHEDULED/and/DEADLINE/
    specialpropertiescomein.Knowingthatataskwill
    beginon,say, 20 December,andthatitwillrequiretwo
    days,youcansetits/SCHEDULED/dateforthatday
    andits/DEADLINE/as 21 December.Thenprovided
    thenexttaskisdependentonthefirst,youcansetthe
    Don’tforget,you
    canstillplace
    text-based
    contentafter
    theheadline
    andassociated
    data(e.g.
    propertiesand
    LOGBOOK).This
    isa greatplace
    tostashdetailed
    instructions,
    linkstoother
    resources,or
    anythingthat
    willhelpyour
    teamgettheir
    tasksdone.
    ORG-MODEPROPERTIES
    PropertiesaresimilartotheTagsweintroducedinLXF241,inthat
    they’remetadataaboutaheadline(ortask,inourcase).However,
    they’redifferentinthefollowingways:youcanonlyenterasingle
    valueforaparticularpropertyinagivenheadline,andthereare
    specialpropertieswithbuilt-infunctionality.
    Youdesignateapropertybyenclosingitincolons.Allpropertiesare
    placedinthe/PropertiesDrawer/,whichcomesimmediatelyafter
    theheadline,startswith:PROPERTIES:andfinisheswith:END:.You
    cantoggleitopenandclosedwiththeTabkey,justlikeaheadline.For
    example,thefollowingshowsthisstructureforacustomproperty
    called/URL/:

  • Thisismyheadline.
    :PROPERTIES:
    :URL:http://www.linuxformat.com
    :END:
    Alternatively,youcanspecifypropertiesthatapplytotheentire
    documentbyputtingthemintheheader.Headerpropertiesare
    placedattheverybeginningofthefile,andstartwith#+ratherthan
    acolon(theystillendwithonethough).Forexample,ifyousetup
    your/TODO/statusesintheheader,they’dbeavailableforalltasks
    andsub-tasksthroughouttherestofthefileunlessyouspecifically
    overridethem.CheckouttheOrg-Modedocumentationonproperties
    formoredetailsonwhattheycando(https://orgmode.org/guide/
    Properties.html#Properties). The Plan chart from TaskJuggler is a traditional Gantt, giving you a
    one-shot view of the entire project.
    Once you add
    relevant planning
    properties to your
    Column View, it
    becomes a useful
    format for review.

Free download pdf