Tomboy WebSync Explained25 Oct 2009 foss.my 2009
Mohanaraj Gopala [email protected]
We take FOSS seriously in Malaysia
Questions for you?
• Use Tomboy or any other application for note taking ?
• More then one machine ?
• Keep notes in sync ?
• Built a GUI app that speaks to web service ?
• Does OAuth authentication ?
• Synchronises data into the cloud ?
• Use some for of hosted application ? (webmail, fileshare, notes/todo, pics etc. ?)
• Concern about/Considered your freedoms?
• Data portability ?
Not your grandma’s notepad
• Actively developed - 5 years , released 1.0 on 21st of Sept 2009
• Wiki - links
• Notebooks - group notes
• Search
• Background save
• Formatting
• Add-in system
• Really cool developers - sandy, brad etc
• Active community - IRC, mailing list
• Built on Mono
• Ports : Conboy (https://garage.maemo.org/projects/conboy/), Gnote (http://live.gnome.org/Gnote), Tomdroid (https://launchpad.net/tomdroid)
http://www.flickr.com/photos/sparktography/64946647/
Platform support
• Mac
• Windows
• Linux
• Android - alpha
• Maemo
Add-in ecosystem
• Extensive add-in collection
• Blogposting
• Latex
• Bugzilla
• Evolution
• Many more - http://live.gnome.org/Tomboy/PluginList
Add-in development
• Built on Mono.Addins framework
• Different type of Add-Ins
• Note add-in
• Application add-in
• Sync add-in
http://www.halloweencostumeideas.com/adult-plug-socket-costume.html
Getting Tomboy 1.0
• Mac, Windows, Src -http://projects.gnome.org/tomboy/download.html
• Ubuntu - https://launchpad.net/~tomboy-packagers/+archive/stable
• SUSE (one click)- data:text/x-suse-ymu,http://armstrong-clan.net/dump/tomboy.ymp
• Fedora, Centos, Slackware, etc ? - Build instructions - http://live.gnome.org/Tomboy/Developers
Synchronisation of notes
• Local file sync + external transfer (gvfs, sshfs etc)
• WebDAV
• Tomboy WebSync
http://www.flickr.com/photos/eugene/186980377/
Tomboy WebSync• Communicates over
HTTP to keep the server and the Tomboy client in sync
• Browser sends and receives data from websites
• Tomboy sends and receives data from Snowy - JSON
Tomboy WebSync
• Client server HTTP based protocol with JSON representation for data and metadata
• Benefits from HTTP- compression, caching, authentication etc.
• Client implemented as add-in in Tomboy 1.0
• Server implementations
• Snowy
• Midgard CMS
• Ubuntu ONE
Ubuntu One
• Canonicals cloud offering
• Notes - via Tomboy
• Files
• Free - up to 2GB, 50GB USD10 a month
• https://one.ubuntu.com/
Snowy
• Python - Django based
• django-piston, django-revision
• Multi user
• Actively under development
• AGPL
Getting Snowy
• URL - http://live.gnome.org/Snowy
• git clone git://git.gnome.org/snowy
• Install dependencies, python related, django
• Run using django server or install on apache via WSGI - http://live.gnome.org/Snowy/WSGI
(I hope its not fscked)DEMO
http://icanhascheezburger.com/2007/03/12/is-it-safe/
Sync steps
• Introspection
• Authorisation
• Data synchronisation
http://www.flickr.com/photos/mar00ned/188634413/
Introspection
Allows for the client to determine information about the server
http://icanhascheezburger.com/2009/01/04/funny-pictures-is-where-da-rubs-gok/
Introspectionhttp://tomboysync/api/1.0/
http://tomboysync/api/1.0/user
Authorisation
Allows for the server to ensure that the client is authorised to access the data
http://icanhascheezburger.com/2009/10/24/funny-pictures-you-can-trust-me/
Authorisation - OAuth
• Uses OAuth
• Allows secure connection without needing to store usernames and password - stores access token
http://forums.vwvortex.com/zerothread?id=4468563
Synchronisation
• Subversion - like
• There is a running version number for the notes on the server
• Local copy of notes are like working directory
• When sync starts Tomboy requests changes since the latest version in its local repository
• Download changes - apply against local copy (svn up)
• Uploads local changes (svn commit)
Handling conflicts
• Happens when there are local changes to a note that has also been changed on the server or a different client
• Determined client side
• Overwrite or rename http://icanhascheezburger.com/2007/08/21/mow-mow-mow-me-mow-mow/
AGPL - Why bother?"It's stupidity. It's worse than stupidity: it's a marketing hype campaign,"
"It's just as bad as using a proprietary program. .... If you use a proprietary program or somebody else's web server,
you're defenseless..."
RMS - http://www.guardian.co.uk/technology/2008/sep/29/cloud.computing.richard.stallman
http://geekz.co.uk/lovesraymond/archive/stallmans-tarball
AGPL - Why bother?
• GPL - freedom to study, modify, and redistribute source code - only to recipients of the program
• AGPL - broadens the scope of these freedoms to those who use the application over the internet
Summary