Download - MojoMojo - the Elegant wiki, Catalyst-powered

Transcript
Page 1: MojoMojo - the Elegant wiki, Catalyst-powered

MojoMojoThe Elegant wiki, Catalyst-powered

Dan Dascalescu (dandv)

YAPC::NA2009-Jun-23

Twitter: mojomojowiki

Page 2: MojoMojo - the Elegant wiki, Catalyst-powered

Yet Another Perl Wiki?

Not really.

Page 3: MojoMojo - the Elegant wiki, Catalyst-powered

Wikimatrix

Page 4: MojoMojo - the Elegant wiki, Catalyst-powered

…and more

Page 5: MojoMojo - the Elegant wiki, Catalyst-powered

Perl wikis

• TWiki– Foswiki fork

• Socialtext• UseMod

– Oddmuse

• PodWiki• ikiwiki• November• WebGUI

Page 6: MojoMojo - the Elegant wiki, Catalyst-powered

Differentiating wiki features

• Hosted vs. install your own

• Storage: text files vs. database

• Page structure: flat vs. hierarchical

• Editing usability – preview?

• Folksonomy: tags?

• Access control

Page 7: MojoMojo - the Elegant wiki, Catalyst-powered

Storage

• Flat text– Scales “reasonably well”, ~10k pages– CERN: “users of larger webs will

experience slower search and index response times”

– Yahoo!: >300k pages, but slow

• Database– Mediawiki– Pages in the millions

Page 8: MojoMojo - the Elegant wiki, Catalyst-powered
Page 9: MojoMojo - the Elegant wiki, Catalyst-powered
Page 10: MojoMojo - the Elegant wiki, Catalyst-powered

Page structure

Tree hierarchy Flat structure

/geography/europe/france/paris Paris

/geography/usa/texas/paris Paris, Texas

/mythology/greek/paris Paris (mythology)

/botany/paris Paris (genus)

Page 11: MojoMojo - the Elegant wiki, Catalyst-powered

When hierarchy doesn’t cut it

You encounter this dog in a park in Paris, France

Page 12: MojoMojo - the Elegant wiki, Catalyst-powered

SuperFantastic - “Buddha Dog”, http://www.flickr.com/photos/35423169@N00/50088733

Under what path do you wiki about this?

Page 13: MojoMojo - the Elegant wiki, Catalyst-powered

Q: Which hierarchical path?

• travel/france/fun

• travel/fun/france

• fun/animals

• fun/travel

• animals/fun

Page 14: MojoMojo - the Elegant wiki, Catalyst-powered

A: it doesn’t really matter

• Add tags:– travel– France– Paris– animals– dog– fun– Prozac

Page 15: MojoMojo - the Elegant wiki, Catalyst-powered

Editing usability

• Wikipedia editing study

Bolt|peters user experience - http://boltpeters.com/wikipedia/

Page 16: MojoMojo - the Elegant wiki, Catalyst-powered

Study finding

• The vast majority of users pulled up another instance of the Wikipedia page they were editing in order to see what it "really" looked like.

Page 17: MojoMojo - the Elegant wiki, Catalyst-powered

Usability recommendation

• Provide users a live preview of what the page looks like as the user edits it.

Page 18: MojoMojo - the Elegant wiki, Catalyst-powered

WYSIWYG not a panacea yet

• Show me the code

• Crippled - dive demo at Foswiki

Page 19: MojoMojo - the Elegant wiki, Catalyst-powered

Access control

Page 20: MojoMojo - the Elegant wiki, Catalyst-powered

Wiki theory

• “Everyone should be able edit any page”

Page 21: MojoMojo - the Elegant wiki, Catalyst-powered

Theory vs. practice

• In theory, there is no difference between theory and practice.In practice, there is.- Yogi Berra

Page 22: MojoMojo - the Elegant wiki, Catalyst-powered

Wiki practice

• The Movable Type wiki (the old, unofficial one) was closed down due to vandalism they couldn’t stop. - Deane Barker, Gadgetopia, http://gadgetopia.com/post/6595

Page 23: MojoMojo - the Elegant wiki, Catalyst-powered

Other features

• Extensibility

• Markup language

Page 24: MojoMojo - the Elegant wiki, Catalyst-powered

Perl wiki candidates

Page 25: MojoMojo - the Elegant wiki, Catalyst-powered

TWiki

• Evil

• Use Foswiki

Page 26: MojoMojo - the Elegant wiki, Catalyst-powered

Foswiki

• Forked off TWiki

• Storage: text files in RCS

• Page structure: 2-level, web/page

• Tags: no

• Markup language: TWiki only (+HTML)

• Preview: static, sequential; or WYSIWYG

• Tons of plugins

Page 27: MojoMojo - the Elegant wiki, Catalyst-powered

Foswiki:- flat structure+ breadcrumbs

Page 28: MojoMojo - the Elegant wiki, Catalyst-powered

ikiwiki

• Storage: text files in RCS

• Markup language: flexible

• Preview: static - code then output

• Tags: no

• Barebones

• Last release: 2008-Oct

Page 29: MojoMojo - the Elegant wiki, Catalyst-powered
Page 30: MojoMojo - the Elegant wiki, Catalyst-powered

November

• Storage: ?

• Page structure: ?

• Tags: ?

• Markup language: ?

• Preview: ?

Page 31: MojoMojo - the Elegant wiki, Catalyst-powered

PodWiki

• Storage: text files

• Markup language: multiple

• Abandoned since 2007

Page 32: MojoMojo - the Elegant wiki, Catalyst-powered

Socialtext

• Hosted• Target: mostly enterprise• Socialtext Open source code on GitHub• Storage: PostgreSQL via DBI• Markup language: multiple• Socialtext Unplugged works offline via

TiddlyWiki + synching• 3 people on #socialtext

– Topic: #socialtext - your place for git help

Page 33: MojoMojo - the Elegant wiki, Catalyst-powered
Page 34: MojoMojo - the Elegant wiki, Catalyst-powered

UseModWiki

• Derived from the original arcane WikiWikiWeb

• Links are always like “GlueTheWordsTogether”

• Abandoned since 2007

• OddMuse forked off it

Page 35: MojoMojo - the Elegant wiki, Catalyst-powered

Oddmuse

• Storage: text files (no RCS)

• Page structure: abandoned children

• Preview: static - output then code

• Markup language: plugins

• “Oddmuse is one Perl script” (CGI)

• 7 folks on #oddmuse

Page 36: MojoMojo - the Elegant wiki, Catalyst-powered

Who’s the parent of this page?

Page 37: MojoMojo - the Elegant wiki, Catalyst-powered

WebGUI

• Popular as a CMS• A massive case of Not Invented Here Syndrome:

– Auth.pm– Cache.pm– Session.pm– SQL.pm: “Package for interfacing with SQL

databases. This package implements Perl DBI functionality in a less code-intensive manner and adds some extra functionality.”

Page 38: MojoMojo - the Elegant wiki, Catalyst-powered

The problems so far

• Storage in text files

• Preview sucks

• No hierarchical page structure

• No tags

Page 39: MojoMojo - the Elegant wiki, Catalyst-powered

MojoMojo

• A Web2.0 wiki, web-server and database-backend agnostic, with live side-by-side AJAX preview, hierarchical page structure, pluggable syntax (HTML + Markdown/Textile, POD), tags, page permissions, RSS feeds, conflict resolution via 3-way merge, attachments with photo gallery, skinning, built-in search, localized in 9 languages, and plugins for DocBook,

Page 40: MojoMojo - the Elegant wiki, Catalyst-powered

Authors

• Marcus Ramberg

• On GitHub:– http://github.com/marcusramberg/mojomojo

Page 41: MojoMojo - the Elegant wiki, Catalyst-powered

Technology

• Catalyst• DBIx::Class, SQL nested set trees• Template::Toolkit• HTML::FormFu• KinoSearch• Algorithm::Diff• HTML::Defang• …and the rest of CPAN

Page 42: MojoMojo - the Elegant wiki, Catalyst-powered

Live preview, try it @ mojomojo.org

Page 43: MojoMojo - the Elegant wiki, Catalyst-powered

Hierarchical page structureand breadcrumbs

Page 44: MojoMojo - the Elegant wiki, Catalyst-powered

Pluggable syntax

• Formatter chain runs in order:– HTML::Defang– [[Wikilinks]]– POD– Markdown/Textile

Page 45: MojoMojo - the Elegant wiki, Catalyst-powered

Skinnable

Page 46: MojoMojo - the Elegant wiki, Catalyst-powered
Page 47: MojoMojo - the Elegant wiki, Catalyst-powered
Page 48: MojoMojo - the Elegant wiki, Catalyst-powered
Page 49: MojoMojo - the Elegant wiki, Catalyst-powered
Page 50: MojoMojo - the Elegant wiki, Catalyst-powered
Page 51: MojoMojo - the Elegant wiki, Catalyst-powered

RSS feeds

Page 52: MojoMojo - the Elegant wiki, Catalyst-powered

Extending MojoMojo(live demos)

Page 53: MojoMojo - the Elegant wiki, Catalyst-powered

Creating a simple formatter

• A CPAN hyperlink

• {{cpan My::Module}} -> http://search.cpan.org/perldoc?My::Module

Page 54: MojoMojo - the Elegant wiki, Catalyst-powered

MojoMojo’s Future

• Major efforts:– Moosify– KiokuDB?– Migrate MediaWiki databases

• 40+ suggestions at http://mojomojo.ideascale.com

Page 55: MojoMojo - the Elegant wiki, Catalyst-powered

Resources

• http://mojomojo.org

• #mojomojo on irc.perl.org

• Twitter: mojomojowiki

• mojomojo.ideascale.com - suggestions

• Source code on GitHub

Page 56: MojoMojo - the Elegant wiki, Catalyst-powered

<clap/>