TheUbuntuOneAppDeveloperProgramme

Dev Week -- The Ubuntu One App Developer Programme -- aquarius -- Tue, Mar 1st, 2011

   1 [18:01] <aquarius> Hi, all!
   2 [18:01] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2011/03/01/%23ubuntu-classroom.html following the conclusion of the session.
   3 [18:01] <aquarius> I'm Stuart Langridge, from the Ubuntu One team, and I'm here to talk about our upcoming app developer programme.
   4 [18:01] <aquarius> Do please ask questions throughout the talk: in the #ubuntu-classroom-chat channel, write QUESTION: here is my question
   5 [18:02] <aquarius> Up until now, your ability as developers to do cool things with Ubuntu One has been limited.
   6 [18:02] <aquarius> But I'm going to change all that.
   7 [18:02] <aquarius> We want to make it possible, and easy, for you to add the cloud to your apps and to make new apps for the cloud
   8 [18:02] <aquarius> So we do all the heavy lifting, and your users (and you!) get the benefits.
   9 [18:03] <aquarius> Imagine, for example, you've made a recipe manager application.
  10 [18:03] <aquarius> So you can type in all the recipes you like to cook, and you've got a permanent record of them.
  11 [18:04] <aquarius> (For me, that would be: get a pizza base; put pepperoni on it. You'll be better at that than me.)
  12 [18:04] <aquarius> Don't really want to take your laptop into the kitchen, though, of course.
  13 [18:04] <aquarius> So, build a mobile app which you sign into with Ubuntu One, and have that show all your recipes too.
  14 [18:04] <aquarius> And a web app which you sign into with Ubuntu One, so that you can look up recipes while you're at a friend's house.
  15 [18:05] <aquarius> This is the sort of thing that we want to make easy; giving your users and you quick access to the Ubuntu One technology.
  16 [18:05] <aquarius> Mobile access to your data; web app access to your data; saving files direct into Ubuntu One; publishing files and photos from all your apps; adding playlists to the Ubuntu One music streaming app; streaming the user's own music into a game you've written.
  17 [18:06] <aquarius> This stuff is all being heavily worked on right now as we speak.
  18 [18:06] <aquarius> So this talk won't be too detailed with specifics, because they might change.
  19 [18:06] <aquarius> I want to give you a flavour of what will soon be possible, and answer questions, and give some pointers, and get your thoughts.
  20 [18:06] <aquarius> Also, this is Developer Week, so I can talk about what the components we're working on are and then admire all the cool ways you all come up with for snapping them together, rather than waiting for marketing to come up with a "product" for you to use :)
  21 [18:07] <aquarius> So, some components that can be snapped together.
  22 [18:08] <aquarius> You'll be able to sign in to a web application with Ubuntu One.
  23 [18:08] <aquarius> This means that you don't have to manage your own identity system, think about password renewal, all that.
  24 [18:09] <aquarius> This is just like "sign in with Facebook" or "sign in with Twitter"; it's OpenID-based, and lets your users sign in to a web app and you'll know their Ubuntu identity.
  25 [18:10] <aquarius> And that identity is shared everywhere; you can build web apps and mobile apps and Windows apps and Ubuntu apps which all share the same identity and know who they're talking to.
  26 [18:11] <aquarius> Once you've signed in to an app with Ubuntu One, that app can ask for permission to work with your data.
  27 [18:11] <aquarius> This lets you, developers, build applications that work on the desktop, on the web, on mobile phones.
  28 [18:12] <aquarius> The recipe manager example I mentioned above is one sort of thing you could do, there
  29 [18:12] <aquarius> Your users use the nice recipe manager app on Ubuntu, which you've build with Quickly or whatever you prefer
  30 [18:12] <aquarius> And then they can go to yourrecipemanager.com and sign in with Ubuntu One
  31 [18:13] <aquarius> yourrecipemanager.com then asks them for permission to access their "recipes" database
  32 [18:13] <aquarius> and can then show them all their recipes on the web!
  33 [18:14] <aquarius> Your app (yourrecipemanager.com) does this via OAuth; it goes through the standard OAuth dance to get an OAuth token which can be used to access the user's recipes CouchDB database
  34 [18:14] <aquarius> And your users can be happy that it's secure, because yourrecipemanager.com will only have access to their recipes database; it can't read their contacts, or their files, or their credit card info.
  35 [18:15] <ClassBot> fisch246 asked: about when can this kind of stuff be implemented? 11.04? 11.10? 12.04?
  36 [18:16] <aquarius> fisch246, everything I'm talking about today should be available for the 11.04 release.
  37 [18:16] <ClassBot> th3pr0ph3t asked: Isn't it too early to start building apps for ubuntu one? -- I mean that thing can hardly sync files
  38 [18:17] <aquarius> th3pr0ph3t, the 11.04 release will bring some massive improvements to all the Ubuntu One services -- data, music, files
  39 [18:18] <aquarius> the stuff I've talked about so far is around data, and I'll get on to files in a bit :)
  40 [18:18] <aquarius> But you can imagine sharing other sorts of data between applications.
  41 [18:18] <aquarius> Imagine, for example, an achievements system.
  42 [18:19] <aquarius> You write a few games; some on the web, some on mobile phones, some on the Ubuntu desktop, some on Windows.
  43 [18:19] <aquarius> And every time the user achieves something in a game, you save that achievement to that user's "achievements" database.
  44 [18:19] <aquarius> On Ubuntu, you'd save it into desktopcouch, and Ubuntu One will take care of synchronising that into the cloud.
  45 [18:20] <aquarius> On Android, your game would include the DroidCouch library which gives you simple access to save data directly into the user's personal cloud databases.
  46 [18:20] <aquarius> On the web, your game's backend could use the u1couch Python library to do the same thing, save directly into the cloud, or you could just use the underlying REST API (which is just standard CouchDB with OAuth signing; u1couch is just a wrapper)
  47 [18:21] <aquarius> Or you could write your own wrapper library for PHP or Rails or Flash or whatever you prefer (and then tell me about it so I can point to the documentation for it!)
  48 [18:21] <aquarius> At that point, all your games save achievements to the same place, so all your games can show you the achievements you've won in any game
  49 [18:22] <aquarius> And, as before, you can set up yourachievements.com where a user can log in and see all their achievements.
  50 [18:22] <ClassBot> dael99 asked: everything will be web-based? Will some kid of API be available to use trough Python, Java or C directly?
  51 [18:23] <aquarius> dael99, certainly not everything is web-based. Ubuntu One is about you working with your stuff on your own terms
  52 [18:23] <aquarius> So part of that is that your data is everywhere, if you want it to be.
  53 [18:23] <aquarius> You can work with the copy that's in the cloud, or with the local copy of it, whether that's data, files, music, whatever.
  54 [18:24] <aquarius> For working with data in the cloud, there'll be web-based APIs, and then wrappers for those APIs for various languages.
  55 [18:24] <aquarius> So you'll be able to, for example, just import a Python library and write code Pythonically with that API, and hardly even have to care that that API goes off to the cloud to do its work. As far as you're concerned, it's just Python.
  56 [18:25] <ClassBot> chadadavis asked: How does local caching of settings and data work? Can there be a bidirectional pipe between gconf (or dconf, or whatever) and ubuntuone?
  57 [18:25] <aquarius> chadadavis, yes, there could be; it would be possible to write a desktopcouch backend for {g,d}conf.
  58 [18:26] <aquarius> There are a couple of interesting problems to solve, there; most applications don't distinguish between "stuff I care about which is specific to this machine" and "stuff I care about generally".
  59 [18:26] <aquarius> Imagine, for example, that an app stores its window position in dconf
  60 [18:26] <aquarius> syncing that to your netbook might be a problem.
  61 [18:26] <aquarius> So there are some fun issues around that, but it would certainly be possible to do if you wanted to.
  62 [18:27] <ClassBot> darkdevil_ asked: will there be any feature with which I will be able to sync my Ubuntu One cloud with any existing non Ubuntu One clouds?
  63 [18:27] <aquarius> darkdevil_, that depends on precisely what you mean.
  64 [18:28] <aquarius> Your data is stored in CouchDB. So you can replicate data from Ubuntu One to any other CouchDB anywhere, and the reverse.
  65 [18:28] <aquarius> Your files are also accessible via the API, so you can pull files out of Ubuntu One directly and push them into another cloud provider if you want to, and the reverse.
  66 [18:28] <aquarius> These are the components that you'll be able to snap together.
  67 [18:29] <ClassBot> davidboy asked: There's going to be PHP bindings right?  So I can write web apps that take advantage of U1, etc.
  68 [18:29] <aquarius> Certainly it will be entirely possible to write PHP bindings; the APIs that your web apps will talk to are just HTTP, so anything that can do HTTP requests (which PHP happily can) will be able to use them.
  69 [18:30] <aquarius> So you will be able to use PHP to talk to Ubuntu One out of the box.
  70 [18:30] <aquarius> It might be cool for someone to write a wrapper library to make that sort of thing even easier for PHP developers
  71 [18:31] <aquarius> I don't think we'd do that on the Ubuntu One team ourselves, because (a) we're not PHP developers, and (b) it's best for us to concentrate on making the APIs great. But one of the things I'd love to do is point at those wrapper libraries from the main API documentation
  72 [18:31] <aquarius> There's loads of stuff you can do with shared data.
  73 [18:31] <aquarius> But Ubuntu One's not just about data.
  74 [18:32] <aquarius> Take the music streaming service, for example.
  75 [18:32] <aquarius> You can currently stream music to Android and iPhone, and you'll be able to add that music to the cloud from Ubuntu and Windows.
  76 [18:32] <aquarius> Maybe you want to be able to stream music back to your Ubuntu machine without syncing it, or your Mac, or your Palm Pre, or your LG mobile phone, or your toaster.
  77 [18:33] <aquarius> So, just use the music streaming API, which is a simple REST HTTP API, based on the Subsonic API, or help people to get at their music by showing them our HTML5 web player for streaming music.
  78 [18:33] <aquarius> But there's more interesting ideas around music streaming than just "listen to the music".
  79 [18:33] <aquarius> Playlists, for example. The Ubuntu One Streaming apps on Android and iPhone know how to create playlists.
  80 [18:34] <aquarius> But how they do that is not a secret. Your playlists are just stored in your cloud databases.
  81 [18:34] <aquarius> (well, they will be once this stuff exists. See above point about how all this is being written. :))
  82 [18:35] <aquarius> So, why not sync your playlists from Banshee or Rhythmbox or Amarok or Exaile or Quod Libet or iTunes or Windows Media Player?
  83 [18:35] <aquarius> Copy the playlists from your media player into desktopcouch on Ubuntu or into the cloud directly with u1couch on Windows or the Mac or anywhere else, in the correct format, and those playlists will instantly show up on your phone!
  84 [18:35] <aquarius> A simple example of this is https://code.launchpad.net/~sil/%2Bjunk/m3u2u1ms/ which is a quick script I wrote to take an m3u playlist and store it in desktopcouch on Ubuntu.
  85 [18:35] <aquarius> So you can make your Banshee playlists available to the Ubuntu One app on your Android phone by exporting them as m3u and then importing them with the script.
  86 [18:36] <aquarius> Tighter integration is great, here; what we want to do is to make it easy for you all to build the stuff that you want on top of Ubuntu One.
  87 [18:36] <aquarius> So if you want to have your Amarok playlists available for streaming, it should be possible to do.
  88 [18:36] <aquarius> I rather like the idea of playing a Flash game on the web and having the background music be the most appropriate music chosen from *my* music collection. That'd be cool.
  89 [18:37] <ClassBot> jderose asked: Will U1 ever offer continuous CouchDB replication? Like say *someone* was developing a distributed video editor with real-time collaboration :)
  90 [18:37] <aquarius> jderose, cor, just imagine if someone was doing that, eh? (you should all watch jderose's lightning talk at the end of the week ;))
  91 [18:38] <aquarius> Continuous replication: not planned right now. (There are some big issues with turning it on for lots and lots and lots and lots and lots of databases, which is what we have.)
  92 [18:38] <aquarius> It's something I want to continue to investigate, though.
  93 [18:39] <aquarius> Ubuntu One also, as you know, does file sync.
  94 [18:39] <aquarius> But just syncing files is already taken care of by Ubuntu One itself, on Ubuntu and Windows.
  95 [18:39] <aquarius> What's more interesting is working with those files.
  96 [18:39] <aquarius> So, for example, imagine being able to instantly, one-click-ly, publish a file from your application to a public URL and then tweet that URL.
  97 [18:40] <aquarius> Instant get-this-out-there-ness from your apps.
  98 [18:40] <aquarius> The screenshot tool Shutter, for example, can do this already; PrtSc to take a screenshot, then "Export > Ubuntu One".
  99 [18:41] <aquarius> They did a bunch of hard work to do that, and I massively applaud them; nice one Shutter team!
 100 [18:41] <aquarius> Based on what they did, that's the sort of thing that should be easier to do.
 101 [18:41] <aquarius> So there will be easy-to-use APIs so your apps can do the same. Imagine quickly sharing your newly created image or document or recipe with the world.
 102 [18:41] <aquarius> Your app could have a button to "store all my files in the cloud", or "publish all my files when I save them", or "automatically share files that are part of Project X with my boss".
 103 [18:42] <aquarius> More to the point, you'll be able to work with files directly *in* the cloud.
 104 [18:42] <aquarius> So a backup program, for example, could back up your files straight into Ubuntu One and not sync them to your local machines.
 105 [18:43] <aquarius> And of course being able to save things in and out of the cloud means that you can get an Ubuntu One sync solution on other platforms.
 106 [18:43] <aquarius> So you could work with your files from your non-Android mobile phone (we've already got the great mkarnicki working on that for Android!)
 107 [18:44] <aquarius> Build a fuse or gvfs backend for Ubuntu or Fedora or SuSE or Arch Linux. Build a WebDAV server which works with Ubuntu One and mount your Ubuntu One storage as a remote folder on your Mac.
 108 [18:44] <aquarius> And web apps can work with your cloud too, for files as well as data.
 109 [18:45] <aquarius> Imagine, say, a torrent client, running on the web, which can download something like a movie or music from legittorrents.info and save it directly into your cloud storage.
 110 [18:45] <aquarius> So you see an album you want on that torrent site (say, Ghosts I by Nine Inch Nails) and go tell this web torrent client about it (and you've signed in to that web torrent client with Ubuntu One)
 111 [18:45] <aquarius> And the website then downloads that NIN album directly into your personal cloud -- which of course makes it available for streaming direct to your phone.
 112 [18:47] <aquarius> You could do that with videos as well: choose a torrentable video (say, Beyond the Game, the documentary about World of Warcraft) and download that directly into your cloud, if someone built the web torrent client.
 113 [18:47] <aquarius> (Of course, that would be cooler if Ubuntu One offered a video streaming service as well as music streaming, wouldn't it. Hm... ;-)
 114 [18:48] <aquarius> But it's not just about your content for yourself; think about sharing.
 115 [18:48] <aquarius> Ubuntu One lets you share a folder with people. This would be great for distribution.
 116 [18:48] <aquarius> Imagine that you publish an online magazine.
 117 [18:48] <aquarius> So, you create a folder on your desktop, and put issues of the magazine in it.
 118 [18:49] <aquarius> Then, you put a button on your website saying "Sign in with Ubuntu One to get our magazine".
 119 [18:49] <aquarius> When someone signs in, your website connects to the Ubuntu One files API, with your private OAuth token, and adds that signed-in user to the list of people that your magazine folder is shared with.
 120 [18:49] <aquarius> Then, whenever your magazine has a new issue, you just drop it into that folder on your desktop.
 121 [18:49] <aquarius> (Or even upload it to Ubuntu One directly through the website.)
 122 [18:49] <aquarius> All the subscribed people will get the new issue instantly, on all the machines they want it on, and in the cloud.
 123 [18:50] <aquarius> You could distribute anything like this. Imagine a podcast, or chapters of a novel.
 124 [18:50] <aquarius> It would also work for paid-for content; when someone pays, have your code share a folder with them, and put their paid-for stuff in that folder. That's all doable through the files API.
 125 [18:51] <aquarius> We're building the files API itself (an HTTP-based REST API) and also some wrappers for it to make it easier to use in your apps from Python and the like.
 126 [18:51] <ClassBot> There are 10 minutes remaining in the current session.
 127 [18:51] <aquarius> OK, I've talked about a blizzard of ideas that'll be made possible, and shown you almost no code.
 128 [18:51] <aquarius> Which is because, as mentioned at the beginning, a lot of this code is currently being written and tested as part of the 11.04 release :)
 129 [18:52] <aquarius> However, code is nothing without documentation, and that's really important.
 130 [18:52] <aquarius> My main task for this cycle is to build documentation for all of this stuff; how to use Ubuntu One and all the APIs we provide in the cloud, on Android, on Windows, on iOS, on Ubuntu.
 131 [18:52] <aquarius> So there'll be documentation for all this stuff so all of you clever people can build things that I haven't even dreamed of.
 132 [18:53] <aquarius> We did some user research (thanks ivanka and the user research team!) on which sites have great API documentation and which don't, so we have an idea of good directions to go in.
 133 [18:53] <aquarius> And I'm working away feverishly on getting an alpha version out!
 134 [18:54] <aquarius> So, to summarise, since I'm running out of time: what the app developer programme is all about is giving all of you the chance to use Ubuntu One as a piece of infrastructure...like Gtk, or Python's urllib module, or PHP's curl bindings.
 135 [18:55] <aquarius> When you want your users, or you, to be able to get at their data on their terms, from anywhere, then you should be able to use Ubuntu One to do that
 136 [18:55] <aquarius> So, what I'd like to know is: what are your cool ideas? What help do you need from me in making them happen? What do you want to use Ubuntu One for in your apps and your scripts and your work?
 137 [18:55] <ClassBot> davidboy asked: So when will the documentation be up? :D
 138 [18:56] <ClassBot> There are 5 minutes remaining in the current session.
 139 [18:56] <aquarius> davidboy, at 11.04 release! That's the deadline :)
 140 [18:57] <aquarius> So you'll be able to start working with this stuff once natty comes out -- but we're documenting and building APIs for all sorts of platforms, as I said; for Ubuntu 11.04, for the web, for Windows and Android.
 141 [18:57] <aquarius> So your apps can be anywhere and all work together :)
 142 [18:57] <ClassBot> chadadavis asked: URL to current code / docs / wiki, so that we can follow development?
 143 [18:58] <aquarius> at the moment there isn't one, because half of the APIs aren't yet written. There are blueprints you can look at which show some of this work
 144 [18:58] <aquarius> and I'd like to get an alpha version of the documentation up as early as possible
 145 [18:58] <aquarius> OK, I've got 2 minutes left: any final questions?
 146 

MeetingLogs/devweek1103/TheUbuntuOneAppDeveloperProgramme (last edited 2011-03-02 06:03:04 by nigelbabu)