3. 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 ?
4. 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/
8. 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
10. Synchronisation of notes
• Local file sync + external
transfer (gvfs, sshfs etc)
• WebDAV
• Tomboy WebSync
http://www.flickr.com/photos/eugene/186980377/
11. 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
12. 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
13. Ubuntu One
• Canonicals cloud
offering
• Notes - via Tomboy
• Files
• Free - up to 2GB, 50GB
USD10 a month
• https://one.ubuntu.com/
14. Snowy
• Python - Django based
• django-piston, django-
revision
• Multi user
• Actively under
development
• AGPL
15. 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
16. DEMO
(I hope its not fscked) http://icanhascheezburger.com/2007/03/12/is-it-safe/
18. Introspection
Allows for the
client to determine
information about
the server
http://icanhascheezburger.com/2009/01/04/funny-pictures-is-where-da-rubs-gok/
20. 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/
21. Authorisation - OAuth
• Uses OAuth
• Allows secure
connection
without needing to
store usernames
and password -
stores access
token
http://forums.vwvortex.com/zerothread?id=4468563
22. 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)
23. 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/
24. 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/ http://geekz.co.uk/lovesraymond/archive/stallmans-tarball
2008/sep/29/cloud.computing.richard.stallman
25. AGPL - Why bother?
• GPL -modify, and
study,
freedom to
redistribute source code
- only to recipients of
the program
• AGPLof these freedoms
scope
- broadens the
to those who use the
application over
the internet