Scott Penrose


Scott is an expert software developer with over 30 years experience, specialising in education, automation and remote data.

OddMuse is by far one of the best wikis around. Of course this depends on your definition. Mine is about customisation and simplicity. I want to be able to completely control the look and feel, have up to 1000s of wikis per domain and be able to add any number of modules. This is not possible with many wikis which are designed for domain specific purposes (e.g. MediaWiki - excellent as the WikiPedia wiki, or Twiki an excellent Tech team tool).

I have extended OddMuse with a number of modules...

  • XXX List modules
  • Modules I use
    • Creole
    • Questionasker
  • Modules I wrote
    • header
    • category search and content
    • search ?

Command Line Import

Is actually quite easy thanks to CGI.

  • export WikiDataDir=/var/www/Where/Ever/Your/Wiki/Is
  • /usr/lib/cgi-bin/ title="$title" text='$text'

That is about it. Don't forget to quote your title and text.

Very simple import from Twiki

NOTE: This is changing format from Twiki default to Creole

while (<>) {
        my $name = $_;
        open (IN, $name);
        my $buffer = "";
        while (<IN>) {
                $buffer .= $_;
        close IN;

        # Get the title
        my $title = $name;
        $title =~ s/\.txt//;

        # Fix page content
        $buffer =~ s/'/"/g;
        $buffer =~ s/^%META.*$//mg;
        $buffer =~ s/^\-\-\-\+\s+(.+)$/= $1 =/mg;
        $buffer =~ s/^\-\-\-\+\+\s+(.+)$/== $1 ==/mg;
        $buffer =~ s/^\-\-\-\+\+\+\s+(.+)$/=== $1 ===/mg;
        $buffer =~ s/^   \* /* /mg;
        $buffer =~ s/^      \* /** /mg;
        $buffer =~ s/^         \* /*** /mg;

        print qq{/usr/lib/cgi-bin/ title="$title" text='$buffer'\n};


  • XML Import/Export - be able to move between wikis
  • Statistics - most/least popular - usage, links, people who visited me also visited...
    • This should be done generally in Apache - but would be an excellent addition
  • Email notification - subscribe to changes - hook into the save function.
  • Delayed indexing - allow a wait on Lucene updates for SPAM changes - easy to do

See Also

  • Perl
  • Social Networks