mojomojo - the elegant wiki, catalyst-powered
DESCRIPTION
MojoMojo is the most complex open source Catalyst application developed to date. It is a Web2.0 wiki with AJAX live preview, hierarchical structure, tags, diffs, pluggable syntax, permissions/ACL, attachments, RSS feeds, a photo gallery, edit conflict resolution via 3-way merge, themes/skinning, localization, built-in full-text search, and a reverse index. Since it's built on top of the Perl Catalyst Web framework, MojoMojo supports any Web server, and includes its own standalone one. It also support any database backend supported by the DBIx::Class ORM, and has been successfully tested with PostgreSQL, SQLite, and MySQL.TRANSCRIPT
![Page 1: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/1.jpg)
MojoMojoThe Elegant wiki, Catalyst-powered
Dan Dascalescu (dandv)
YAPC::NA2009-Jun-23
Twitter: mojomojowiki
![Page 2: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/2.jpg)
Yet Another Perl Wiki?
Not really.
![Page 3: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/3.jpg)
Wikimatrix
![Page 4: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/4.jpg)
…and more
![Page 5: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/5.jpg)
Perl wikis
• TWiki– Foswiki fork
• Socialtext• UseMod
– Oddmuse
• PodWiki• ikiwiki• November• WebGUI
![Page 6: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/6.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/7.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/8.jpg)
![Page 9: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/9.jpg)
![Page 10: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/10.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/11.jpg)
When hierarchy doesn’t cut it
You encounter this dog in a park in Paris, France
![Page 12: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/12.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/13.jpg)
Q: Which hierarchical path?
• travel/france/fun
• travel/fun/france
• fun/animals
• fun/travel
• animals/fun
![Page 14: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/14.jpg)
A: it doesn’t really matter
• Add tags:– travel– France– Paris– animals– dog– fun– Prozac
![Page 15: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/15.jpg)
Editing usability
• Wikipedia editing study
Bolt|peters user experience - http://boltpeters.com/wikipedia/
![Page 16: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/16.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/17.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/18.jpg)
WYSIWYG not a panacea yet
• Show me the code
• Crippled - dive demo at Foswiki
![Page 19: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/19.jpg)
Access control
![Page 20: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/20.jpg)
Wiki theory
• “Everyone should be able edit any page”
![Page 21: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/21.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/22.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/23.jpg)
Other features
• Extensibility
• Markup language
![Page 24: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/24.jpg)
Perl wiki candidates
![Page 25: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/25.jpg)
TWiki
• Evil
• Use Foswiki
![Page 26: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/26.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/27.jpg)
Foswiki:- flat structure+ breadcrumbs
![Page 28: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/28.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/29.jpg)
![Page 30: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/30.jpg)
November
• Storage: ?
• Page structure: ?
• Tags: ?
• Markup language: ?
• Preview: ?
![Page 31: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/31.jpg)
PodWiki
• Storage: text files
• Markup language: multiple
• Abandoned since 2007
![Page 32: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/32.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/33.jpg)
![Page 34: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/34.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/35.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/36.jpg)
Who’s the parent of this page?
![Page 37: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/37.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/38.jpg)
The problems so far
• Storage in text files
• Preview sucks
• No hierarchical page structure
• No tags
![Page 39: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/39.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/40.jpg)
Authors
• Marcus Ramberg
• On GitHub:– http://github.com/marcusramberg/mojomojo
![Page 41: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/41.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/42.jpg)
Live preview, try it @ mojomojo.org
![Page 43: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/43.jpg)
Hierarchical page structureand breadcrumbs
![Page 44: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/44.jpg)
Pluggable syntax
• Formatter chain runs in order:– HTML::Defang– [[Wikilinks]]– POD– Markdown/Textile
![Page 45: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/45.jpg)
Skinnable
![Page 46: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/46.jpg)
![Page 47: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/47.jpg)
![Page 48: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/48.jpg)
![Page 49: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/49.jpg)
![Page 50: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/50.jpg)
![Page 51: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/51.jpg)
RSS feeds
![Page 52: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/52.jpg)
Extending MojoMojo(live demos)
![Page 53: MojoMojo - the Elegant wiki, Catalyst-powered](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/53.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/54.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/55.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062513/554bc3bfb4c90594278b5341/html5/thumbnails/56.jpg)
<clap/>