Freeing the cloud, one service at a time

946 views

Published on

This talk presents an approach to building free network services and introduces Libravatar, a Django-based project to provide a federated and Open Source alternative to the Gravatar profile image hosting service, a centralised web service used by a large number of social sites in the cloud.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
946
On SlideShare
0
From Embeds
0
Number of Embeds
68
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Freeing the cloud, one service at a time

  1. 1. freeing the cloudone (small) service at a time François Marier francois@catalyst.net.nz
  2. 2. open source desktopapplications
  3. 3. SaaS
  4. 4. privacy ®
  5. 5. autonomy control
  6. 6. 1980s
  7. 7. 100% free operating systems
  8. 8. started replacing allproprietary programs one at a time
  9. 9. “Developers of network services are encouraged to:● Use the GNU Affero GPL, a license designed specifically for network service software, to ensure that users of services have the ability to examine the source or implement their own service.● Develop freely-licensed alternatives to existing popular but non-Free network services. ”● Develop software that can replace centralized services and data storage with distributed software and data deployment, giving control back to users. Franklin Street Statement, 14 July 2008
  10. 10. start replacing allproprietary services one at a time
  11. 11. libreprojects.net
  12. 12. looking for a small one...
  13. 13. 2. assign to email address1. upload photo
  14. 14. 101
  15. 15. FMarier@GMail.com
  16. 16. fmarier@gmail.com
  17. 17. f52a1d3d8c39868fc92cf70828821635
  18. 18. http://www.gravatar.com/avatar/f52a1d3d8c39868fc92cf70828821635.jpg
  19. 19. <img src=”http://www.gravatar.com/avatar/ f52a1d3d8c39868fc92cf70828821635.jpg”>
  20. 20. <img src=”http://www.gravatar.com/avatar/ f52a1d3d8c39868fc92cf70828821635.jpg”>
  21. 21. started to write a replacement
  22. 22. Libravatar
  23. 23. “80%” of what does protected accounts
  24. 24. “80%” of what does G / PG / X ratings XMLRPC API
  25. 25. must fit into the world
  26. 26. must fit into the world use the same API
  27. 27. must fit into the world use the same API be a Twitter client
  28. 28. use the same APIhttps://api.twitter.com/statuses /show/123.xmlhttps://identi.ca/api/statuses /show/123.xml
  29. 29. be a Twitter client
  30. 30. must fit into the world use the same API be a Gravatar client
  31. 31. use the same API http://www.gravatar.com/avatar/f52a1d3d8c39868fc92cf70828821635.jpg http://cdn.libravatar.org/avatar/f52a1d3d8c39868fc92cf70828821635.jpg
  32. 32. be a Gravatar client
  33. 33. Now, how about making it better?
  34. 34. Federation via DNS_avatars._tcp SRV avatars.catalyst.net.nz
  35. 35. IPv6
  36. 36. IPv6 SHA256
  37. 37. IPv6 SHA256 OpenID
  38. 38. IPv6 SHA256 OpenIDLDAP
  39. 39. IPv6 SHA256 OpenID AccountLDAP Export
  40. 40. IPv6 SHA256 OpenID Account PhotoLDAP Export Importers
  41. 41. What does it look like?
  42. 42. Live demo!
  43. 43. photos uploadedor imported by users Django
  44. 44. photos uploaded or imported by users Djangostatic files on disk
  45. 45. avatars sent to photos uploaded third parties or imported by users Apache Django(mod_rewrite) static files on disk
  46. 46. avatars sent to photos uploaded third parties or imported by users high traffic Apache low traffic Django(mod_rewrite) (static) (dynamic) static files on disk
  47. 47. avatars sent to photos uploaded third parties or imported by users Apache Django(mod_rewrite) static files on disk
  48. 48. avatars sent to photos uploaded third parties or imported by users Apache Django(mod_rewrite) Gearman Crop, resize static files Queue and optimise on disk
  49. 49. avatars sent to photos uploaded third parties or imported by users Apache Django(mod_rewrite) Gearman Crop, resize static files Queue and optimise on disk
  50. 50. avatars sent to avatars sent to avatars sent to photos uploaded third parties third parties third parties or imported by users Apache Apache Apache Django(mod_rewrite) (mod_rewrite) (mod_rewrite) Gearman Crop, resize static files static files static files Queue and optimise on disk on disk on disk
  51. 51. Who uses it?
  52. 52. --- a/IkiWiki/Plugin/comments.pm+++ b/IkiWiki/Plugin/comments.pm@@ -187,6 +188,16 @@ sub preprocess { $commentauthor = $commentuser; }++ eval use Libravatar::URL;++ if (! $@) {+ my $email = IkiWiki::userinfo_get($commentuser, email);++ if (defined $email) {+ $commentauthoravatar = libravatar_url(email => $email);+ }+ } } else { if (defined $params{ip}) {--- a/templates/comment.tmpl+++ b/templates/comment.tmpl@@ -1,6 +1,10 @@ <TMPL_IF HTML5><article class="comment" id="<TMPL_VAR COMMENTID>"> <TMPL_ELSE><div class="comment" id="<TMPL_VAR COMMENTID>"></TMPL_IF>+<TMPL_IF COMMENTAUTHORAVATAR><div class="comment-avatar">+<img src="<TMPL_VAR COMMENTAUTHORAVATAR>" alt="" />+</div></TMPL_IF>+ <TMPL_IF HTML5><header class="comment-subject"><TMPL_ELSE><div class="comment-subject"></TMPL_IF> <TMPL_IF PERMALINK>
  53. 53. --- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tt@@ -675,6 +678,9 @@ YAHOO.util.Event.onContentReady("furtherm", function () { [% ELSE %] <div class="commentline"> [% IF ( ShowReviewer ) %]+ [% IF ( review.avatarurl ) %]+ <img class="avatar" src="[% review.avatarurl %]" height="80" width="80"/>+ [% END %] <h5> Comment by [% review.title %]--- a/opac/opac-detail.pl+++ b/opac/opac-detail.pl@@ -295,6 +295,13 @@ $template->param( ocoins => GetCOinSBiblio($biblionumber), );+my $libravatar_available = 0;+eval use Libravatar::URL;+if (! $@) {+ $libravatar_available = 1;+} my $reviews = getreviews( $biblionumber, 1 ); my $loggedincommenter;@@ -303,6 +310,9 @@ foreach ( @$reviews ) { $_->{title} = $borrowerData->{title}; $_->{surname} = $borrowerData->{surname}; $_->{firstname} = $borrowerData->{firstname};+ if ($libravatar_available and $borrowerData->{email}) {+ $_->{avatarurl} = libravatar_url(email => $borrowerData->{email});+ } $_->{userid} = $borrowerData->{userid}; $_->{cardnumber} = $borrowerData->{cardnumber};
  54. 54. Get involved! ● write a pluginwww.libravatar.org libravatar.onlinegroups.netlaunchpad.net/libravatar #libravatar on chat.freenode.net
  55. 55. Get involved! ● write a plugin ● host a mirrorwww.libravatar.org libravatar.onlinegroups.netlaunchpad.net/libravatar #libravatar on chat.freenode.net
  56. 56. Get involved! ● write a plugin ● host a mirror ● translate the UIwww.libravatar.org libravatar.onlinegroups.netlaunchpad.net/libravatar #libravatar on chat.freenode.net
  57. 57. Get involved! ● write a plugin ● host a mirror ● translate the UI ● create an account today!www.libravatar.org libravatar.onlinegroups.netlaunchpad.net/libravatar #libravatar on chat.freenode.net
  58. 58. Questions? ideas for Libravatar? other easy services to replace? fmarier fmarierhttp://feeding.cloud.geek.nz
  59. 59. Photo creditsStorm clouds: http://www.flickr.com/photos/johnson7/1460568819/Linen texture: http://www.flickr.com/photos/zooboing/4715048673/Name tag: http://www.flickr.com/photos/stevegarfield/833593377/Cloud sign: http://www.flickr.com/photos/jamescridland/4122948535/Facebook data center: http://www.flickr.com/photos/traftery/5596941479/First web server: http://www.flickr.com/photos/scobleizer/2251820987/Bradley Kuhn: https://secure.wikimedia.org/wikipedia/en/wiki/File:Bkuhn-2008-08-20.jpgBenjamin Mako Hill: http://www.flickr.com/photos/soulfish/2374876735Mike Linksvayer: http://www.flickr.com/photos/joi/2595169497/Luis Villa: http://tieguy.org/pics/Wedding/Honeymoon/Highlights/New-Zealand/img_2145Henri Poole: http://www.flickr.com/photos/weblogsky/9271675/Evan Prodromou: http://www.flickr.com/photos/christopheducamp/4469158609/Jonathan Gray: http://www.flickr.com/photos/jwyg/4497000847/Aaron Swartz: http://www.flickr.com/photos/creativecommons/3111021669/Evan Prodromou presenting: http://www.flickr.com/photos/walkah/4831658754 Copyright © 2011 François Marier Released under the terms of the Creative Commons Attribution Share Alike 3.0 Unported Licence

×