Welcome

TWiki as a toolbox for bottom-up web applications

Situation pre Wiki

  • No central documentation system in the IT department
  • Most of the knowledge esp. about workflows only implicit
    • You have to go and ask
    • People must be available

Wiki paradigm in brief

  • Collection of HTML pages (topics)
  • In place editing with simple markup (WikiML)
  • Easy cross-referencing using WikiWords (CamelCase)
  • Revision control

Prominent Wiki implementations:
  • Mediawiki
  • Moinmoin
  • TWiki

See my talk at last Hepix in Karlsruhe

TWiki praise

TWiki: A Wiki focussed on cooperate intranets

  • Integrated access control on a per web and per topic basis
  • Attachment support
  • Tracing of most recent changes
    • Syndication with RSS newsfeeds
    • Email notifications
  • Hundreds of plugins and add-ons
  • Implementation in Perl based on the UNIX toolbox:
    • Filesystem based
    • RCS for revision control
    • Search using grep
  • Powerful markup including macros

Current status

  • Central installation of TWiki since 2 years
    • Substantial growth during the last six month
      • Nevertheless satisfactory performance and usability (since upgrade to recent TWiki release and hardware)
    • Central documentation and coordination tool of the IT department
    • Separate wikis for CBM and Hades collaborations:
      • Virtual Wikis : run on the same server, common codebase
      • Distinct topics, attachments and users

Statistics

GSI wiki key figures for September 2005:

  • Total users: 270
  • New registrations: 50
  • Topics: 2600
  • Topic views: 90000
  • Topic edits: 4000
  • Attachment uploads: 800

TWiki pros and cons

Cons

  • Recent TWiki vulnerabilities
    • Debian package already secured by hardening patch cool
  • lock, modify, unlock (RCS) instead of copy, edit, merge
    • Content loss due to early lock release (only once?)
  • Editor a bit too simple:
  • No offline editing

Pros

  • Shallow learning curve
  • Tables are easily operated thanks to EditTablePlugin and TablePlugin
  • Inspirational like a good toy (a geek tool?)

  • (T?)Wiki is an excellent toolbox for modelling workflows
    • bottom-up approach

Vacation Calendar

 
Name
arrow_leftarrow_right
Oct
  Mo
3
Tu
4
We
5
Th
6
Fr
7
  Mo
10
Tu
11
We
12
Th
13
Fr
14
  Mo
17
Tu
18
We
19
Th
20
Fr
21
  Mo
24
Tu
25
We
26
Th
27
Fr
28
  Mo
31
Christo         indifferent, speechlessindifferent, speechlessindifferent, speechlessindifferent, speechlessindifferent, speechless  yes              
Hans      radioactive                        
Helmut                   coolcool  cool       
Sergei         yes          yes          
Walter         indifferent, speechlessindifferent, speechlessindifferent, speechlessindifferent, speechlessindifferent, speechless                 

  • 20 Oct 2005 - 24 Oct 2005 - Helmut
  • 10 Oct 2005 - 14 Oct 2005 - Walter - Hepix SLAC
  • 10 Oct 2005 - 14 Oct 2005 - Christo - Hepix SLAC
  • 07 Oct 2005 - Hans - ill - radioactive
  • 17 Oct 2005 - Christo
  • 10 Oct 2005 - Sergei
  • 21 Oct 2005 - Sergei

Meeting minutes à la TWiki

  • Topic name or full-text search, optionally with regular expressions
    • Display of search results may be completely customized
      • may contain partial content from of the search results using pattern matching

  • Retrieve a list of existing meeting minutes formatted as a table:
%SEARCH{"MeetingMinutes[0-9]{6}" scope="topic" regex="on" limit="12"
        nosearch="on" reverse="on" nototal="on" 
        header="| *Date* | *Minute taker* | *Latest change* | *Revision* |" 
        format="|  [[$topic][$pattern(.*? (\d+[ .]+\S+[ .]+\d+).*)]]  |  $createwikiusername  |  $date by $wikiusername  |    $rev  |"
}%

Meeting minutes à la TWiki

Templates and Forms

  • New minutes are created via a simple webform:
<form name="new" action="%SCRIPTURLPATH%/edit%SCRIPTSUFFIX%/%INTURLENCODE{"%WEB%"}%/">
     <input type="text" name="topic" value="MeetingMinutes%SERVERTIME{$ye$mo$day}%" size="23" />
     <input type="hidden" name="templatetopic" value="MeetingMinutesEditTemplate" />
     <input type="hidden" name="formtemplate"  value="MeetingMinutesForm" />
     <input type="submit" value="create" />
</form>

  • The created topic uses the given template

  • The meeting participants are listed using the associated DataForms:
| *Name* | *Type* | *Size* | *Values* | *Tooltip message* |
| Participant | checkbox+buttons |  7  | FirstParticipant, SecondParticipant, ... |  |

Slide 10 of 17

Meeting minutes à la TWiki

Finalization

  • Probably meeting minutes must not be changed after all participants agreed on their content (i.e. ISO 9000)
  • TWiki:Plugins/ApprovalPlugin models this workflow

Slide 11 of 17

List of server topics

  • %SEARCH{...}% again ...

  • Topic creation form
    • Special topic template

  • InterwikiPlugin: Shortcuts to GSI's hardware database web-frontend
    • GsiDbDetail:lxdv10

Slide 12 of 17

List of server topics

CommentPlugin for logbook entries

  • %COMMENT{type="logbook"}%

%TMPL:DEF{PROMPT:logbook}%
<textarea %DISABLED% name="comment">%MESSAGE%</textarea>
<input %DISABLED% type="submit" value="Add entry"/>
%TMPL:END%

%TMPL:DEF{OUTPUT:logbook}%%POS:AFTER%
| %DATE% | %URLPARAM{"comment" newline="<br />"}% | %WIKIUSERNAME% | 
%TMPL:END%

No such template def 'PROMPT:logbook'
08 Oct 2005
Condition clear

Slide 13 of 17

A light-weight Trouble Ticket System

ActionTrackerPlugin:
  • %ACTION{closed="10-Oct-2005" due="10-Oct-2005" creator="Main.ChristopherHuhn" state="closed" who="Main.ChristopherHuhn"}% Hepix talk at SLAC
Assigned to Due date Description State Notify  
Christo 2005-10-10 Hepix talk at SLAC (go to action) closed HpcGroup edit

  • %ACTIONSEARCH{...}% for todo lists
  • actionnotify cron job

Slide 14 of 17

A light-weight Trouble Ticket System

No such template def 'PROMPT:incident'
Assigned to Due date Description State Notify  
WalterSchoen 2005-10-17 Alles kaputt
- Created by Christo, 07 Oct 2005 21:28:56 (go to action)
closed edit

Slide 15 of 17

Carpool token management

Participant Tokens
Burkhard
2
edit
Kilian
3
edit
Michael
7
edit
Marc
-4
edit
Stefan
-8
edit
Sum
0
edit


Next driver (token count -8): Stefan
Modus operandi:
  • Drivers earn one point for each fellow passenger
  • Passengers must give away one point per ride

  • SpreadSheetPlugin for calculations: %CALC{"$IF( $SUM(R2:C2..R6:C2) = 0, Error! Sum must be 0! , )"}%

  • ChartPlugin for the diagram: %CHART{type="bar" table="carpooltokens" data="R2:C2..R6:C2" xaxis="R2:C1..R6:C1" yaxis="on" datalabel="box"}%

Slide 16 of 17

Next projects

  • Portal for system announcements
    • Replace all wall shell script mess
    • Form-based input
    • Distribution with RSS
    • Category-based cleanup

  • Email notifications enhancements
    • Immediate notifications
    • Subscribers list form
    • Plugin to automatically subscripe editors

Slide 17 of 17