Google I/O 2012 - What's Possible with the Google Drive SDK

Uploaded by GoogleDevelopers on 03.07.2012


NICOLAS GARNER: All right, so hello everyone and welcome.
My name is Nicolas, and I'm the Developer Advocate working
on Google Drive.
During the session, we're going to see what is possible
with the Google Drive SDK, and especially what some companies
have accomplished by integrating with the SDK.
As you all probably know by now, Google Drive launched a
couple months ago.
And what's interesting is it launched with an [? AZK ?]
that doesn't only allow you to you interact with files, like
read and write files on Drive, but that also allows
third-party application to deeply integrate with the
Google Drive user interface.
For instance, you can now, using third-party application,
open files directly from the Google Drive UI, and these
files that handle the file formats that you click on will
appear in the Open With contextual menu.
For example here on the screen, a user could
right-click on this PNG file and choose to open it with
Pixlr Editor, for instance, if the user has installed it.
In the same way, we let users create files directly from the
Google Drive user interface.
So inside of Create Menu, alongside creating a new
Google Document, a new Google Presentation, or a new Google
Spreadsheet, we also list the application that the user has
installed that support creating new files.
Again, for instance, Pixlr Editor.
And we currently have a little bit more than 40 applications
on the Chrome Web Store today that handle a wide variety of
file formats.
And I'm actually going to show you a few of these, explain
you a few of these.
The first one, which I already mentioned quickly before, is
the Pixlr Editor.
So Pixlr Editor is actually a really cool, feature-compete,
online image editor.
It lets you open many, many file formats, and even
professional ones, because it has features
like layers or filters.
Basically, lots of the features that you can find in
a professional image editor on your desktop today is
available on Pixlr Editor.
So using Pixlr and its drive integration today, you can
very quickly edit and create new images on your Drive.
So within a few clicks, you can simply edit an image and
save it back to Drive.
Another interesting app is Balsamiq.
Balsamiq is this mockup editor, [? mocks ?] editor.
So whenever you're, for example, designing a website,
a web application, or a desktop application, you can
use Balsamiq to quickly mock the user interface.
So if you're brainstorming or designing, you should really
give Balsamiq Mockup a try.
And what's interesting is Balsamiq chose to create a
Drive only version of their app.
They have, for example, a desktop version of their app.
They had already an online version of their app, and they
made a standalone Drive only version of their app, so that
allowed them to ship that even faster.
They didn't have to handle merging Google Drive users
with their users, and adding the Drive feature.
People who use their Drive version of their app are
always Google Drive users, and that made things a little bit
easier for them during the implementation.
And what's cool with their Drive integration now is that
you can, for example, interact on the same file using their
desktop app and their online app.
So whenever you're, for example, on the plane, you
could edit a mockup using the desktop up.
And whenever you're traveling, or at a friend's house, you
could open the same file that got synchronized through their
Google Drive sync client using the online
version of their app.
And have you heard of Hello Fax?
Who has used Hello Fax here in the room?
It's a pretty popular app on Google Drive.
It allows you to actually quickly fax documents online,
and the Drive integration makes it actually even better
and even faster.
So actually, I'm going to fax a document right now.
So let me switch to my Google Drive here, and I've displayed
a bunch of the PDFs that were on my Drive.
And this is a simple PDF that just says hello
that I want to fax.
So all I have to do is right-click on it and choose
Open With Hello Fax.
I installed Hello Fax before on my Drive, and I get
redirected to Hello Fax.
So Hello Fax has actually these two features.
It has an online signature management feature and an
online faxing feature.
What I want to do is fax the document, so one click here.
And as you can see here, Hello Fax is fetching the PDF
version my file.
Here it got it.
And all I have to do is Copy, Paste a phone number.
Here is our Mountain View office fax, and I'm simply
going to fax that to the Mountain View office in here.
The fax is being sent.
So Hello Fax has a lot of cool features.
It's going to let you know if the fax was successful with an
email, or if it failed for any reason.

And I don't know if you've saw that, but I didn't have to
sign into Hello Fax.
I didn't sign into Hello Fax before the demo here.
Hello Fax automatically signed me in using our OpenID Connect
end points.
So the same time it getting access to the Drive file, it
also fetched my user information, knew who I was,
and automatically signed me in my Hello Fax account.
And actually even better, if you don't have a Hello Fax
account and you open Hello Fax from Drive the first time,
it's automatically going to create an account for you,
again using our OpenID connecting points.
So that makes a really, really good first-time user
experience, and actually even give you free fax credits.
So you can open any file from Drive using Hello Fax and
start faxing it right away.
So here my fax was successful.
Another cool feature is you can receive
faxes from Hello Fax.
I think that's a paying feature, but you can get a
number, and when people send you faxes, they're going to
write that fax as a PDF file inside your Google Drive.
So that's one of the really cool things with the Drive
version of Hello Fax.

Let me switch back to the presentation.

We have here with us today three people that worked
really hard on integrating Google Drive with their
And they're going to show you a bit more of what you can do
by integrating with Hello Fax.
And actually they are going to go a little bit more deeper,
show you a bit of code.
So it's going to be nice.
And they're going to use both versions of the SDK, you
you'll see what was already possible with version one of
the SDK, what is now possible with the newly-launched-- we
launched that this morning--
version two of the SDK, and they'll also showcase some
mobile usage of the version two of our SDK.
And the first person I'd like to invite on stage has been
part of our version one Trusted Tester program.
And actually, I think it's fair to say that they have the
deepest version one integration, and the most
complete and deepest version one integration.
So please welcome Till Vollmer, the CEO and Founder
of my MindMeister.
Thank you.

TILL VOLLMER: Thank you.
My name is Till Vollmer, and I'm the CEO and Founder of
MindMeister, which is an online collaboration platform,
online mind mapping platform.
In case you don't know what mind mapping, a little, short
introduction to that.
You see on the screen a mind map, which is actually
graphical form of representation of structured
On this mind map, for example, we see meeting minutes with
participants, with agenda, with the goals of the meeting,
and you structure all your thoughts around the meeting in
this mind map.
There are lots of use cases for mind mapping.
For example innovation management, project planning,
even website planning, like how to structure my website
with all the sub pages, et cetera.
And there are some personal usages of mind maps.
For example vacation planning, or even people who plan their
wedding with MindMeister.
On the technical side, we are using Ruby on Rails with
Apache in front and with MySQL in the background.
We also have mobile clients.
You see our Android version here.
Of course we have iPhone, iPad, and we will soon launch
an Android tablet version.

A few words to MindMeister itself, or the company behind
it is called Meister Labs.
It was established in 2006.
We nearly needed one year to bring up the first version of
MindMeister, and we had a soft beta launch in February 2007.
And since then, we are now nearly at 1.5 million
registered users.
We are profitable since two and a half years, and we are
working with a premium model, of course, which means we have
a free version, and we have three paid editions to get
revenue and to continue developing our product.
We were very honored to be one of the first beta testers with
Google Apps Marketplace a couple of years ago.
That was the first time we were in contact with Google,
and also Google Chrome Web Store integration, and we are
very pleased to be part of the Google Drive
beta test as well.
And I have to say really that we get a lot of users through
all the source, Google, so it actually is a really great
integration so far.
And we are looking forward for version two.

When the beta test was conducted, we looked at the
API to actually try to figure out what can
we do with the API?
Where are the best pinpoints to create a great experience
for the users?
And so we came up with a list of things that we could do.
Of course the obvious things that we already have seen is
to Create new thing, like for us it's Create new mind map.
Edit existing mind maps, in there we also wanted to
support various different formats.
There are a lot of mind mapping formats out there.
For example, mind manager [? former ?], or iXmind or
Free Mind, so we wanted to be also the
editor for these formats.
Then Import mind maps to Drive, of
course, from our platform.
Indexing, that was available through the API.
Export mind maps to Drive.
Adding attachments from Drive.
And then, of course, MindMeister supports real time
collaboration like, for example, Google Docs or Google
Spreadsheets, and we wanted to even take this
level to the platform.
And I hope to show you that in a minute.
And then we added-- because we already were in a run, let's
say, or in a sprint of implementing features, so we
thought, OK let's do the whole thing, syncing mind maps,
backup, et cetera.

What kind of APIs did we use through the integration?
Because we created the use in the background as well, we
needed to access the information.
So we had OAuth 2.0, OpenID Connect.
We also used user info profile and user info email to get the
email address of the user and to get access to his first
name, last name to create the credentials on our side.
And then we used the Drive file API to store and get the
files from Drive.
We also used the contact API just to invite
people to our mind maps.
And last but not least, the Picker API to actually get
content from Drive into our product.

Let's switch to the demonstration.

First of all, before you can use MindMeister in Drive, you
need to install the application through
the Chrome Web Store.
And once this is done, you can actually go to Drive and
create a mind map from there.
So we just press the Create button, go to More, and then
we should just say Mind Map.
And in case the user doesn't exist at this point, it's
created the background.
The user on our side is created in the background.
Everything is set up, and the editor shows up, and we can
start creating the mind map.
Let's plan a vacation.

And let's do a trip to New York, for example.
You can just outline your whole--
we say [INAUDIBLE]
for example.
And continue mind map your vacation.
I'm doing the whole thing here.
And if we switch back to the listing, we immediately see
our mind map in Drive, so it's already synced in the
background to Drive.
And I can also open it from there again.
But let's take another mind map that I created
MindMeister Google integration here, which is actually a
summary of what I told you before in the slides.
And you see all the information also visually here
with icons, with graphics, et cetera.
And from here I can do various things through Drive, or with
the help of Drive.
For example I can export this into various formats.
And let's take for example a PowerPoint file, which is
basically slides.
And I can just press a button here, Export to Google Drive,
and the mind map is converted into slides and then stored in
the Google drive.
Hold on, if I go back here we see here it is, and if I open
it, it's basically a conversion of the mind map
into slides that I can probably edit, pep up a little
bit and have a nice presentation
out of the mind map.
So back to the mind map, we can also import files that are
in Google Drive, for example images.
So let's upload a file here from Drive.
I have prepared a little Android tablet screenshot from
our upcoming release.
Just take that, and see it's here as an attachment, and you
see a nice tablet version of MindMeister on the tablet.

I can also invite people to do the [INAUDIBLE] collaboration.
So I already set up this mind map to have a collaborator.
I can do that through Drive as well.
I just go to the Share button in Drive and invite someone
else, which is my colleague here in the first row.
And he just joined me, Mr. [INAUDIBLE].
And we can mind map together on the mind map, or let him do
the work by adding new ideas to the product
section, for example.
So we have an iPad version and an iPhone version, so we
support all of the real time collaboration.
And all the content is stored in Google Drive.

Last but not least, if we go back to our product,
MindMeister, we have a couple of features here as well that
are based on Drive.
If I go to the Settings, for example--

first of all, you see all the mind maps that are actually in
sync or that are stored in Google Drive from here.
And you can enable sync mode.
So on our Tools tab we have Google Drive sync.
And this syncs the mind maps back and forth, which means
that they are stored in Google Drive, but they also stored in
our product.
And we have a kind of table that maps the IDs from
MindMeister to the IDs of the Google Document.
We also have an export feature here where you can export to
Google Drive.
So it packs all your MindMeister files into one zip
file and stores it as a backup in Google Drive.
Last but not least, the last thing I want to show is you
can also share from MindMeister.
We can actually share a mind map here, and we get through
the Contacts API my friends from Google.
So I can--
the Google Contacts, and I can share the mind map, and
they'll get notification and can join me in the
collaborative session.
I think there's one thing that I forgot, which
is basically the--
oh the Picker API, I showed that already.
That's it for the demo.
Thanks for listening.
Back to Nicolas.

NICOLAS GARNER: Thank you Till.
I'd like to thank Till and his team for doing such great work
on their integration.
I know they've worked really hard.
And I really like this real time collaboration
feature they have.
And now with their Drive integration, it really feels
that you're using any other native Google
Document format, right?
You can just share a mind map on a Drive
with any other users.
If both of them open it from Drive, they will be put in
That's really cool, and that's the same kind of experience we
have in Google Documents, or Google Spreadsheets, or Google
And now it feels the same, for example, on MindMeister.
So thanks again.
Now, well I've already unveiled who it was.
The second company who's here with us today is Cloud9 IDE.
They've been part of our Drive SDK version two Trusted Tester
program, so they have some really cool stuff to show you.
So please welcome Rik Arends, the CTO and
Founder of Cloud9 IDE.

RIK ARENDS: I think I have a few slides here.

Oh, wrong computer?
This computer.
So what is Cloud9 IDE?
We're building a complete IDE in the cloud.
That means collaborative editing, running your code--
Python, Ruby, PHP, and Node.js.
Cloud9 is built on HTML5 and Node.js.
So those are our native technologies.
We have code completion for JavaScript, which is a fairly
unique feature, because JavaScript is weekly typed, so
we have a lot of effort in code analysis going on.
And all your code is running in your
workspace in the cloud.
So you don't have any differences anymore between
workspaces, which is really great if you're trying to work
instead of trying to
synchronize environment variables.

You get your own little bit of Compute and Run for your code
online exactly geared towards development.
Teams can avoid configuration issues, management issues.
We have a full terminal now.
We just released this today.
So you can do Vim and all these kinds of editing.
And the workspace URL is a sharable URL.
So one of the really cool features I just saw was that
if you integrate from Drive, you can enable your
collaboration features in a similar way.
That's not an integration that we've done yet, but it looks
very interesting.
So I said we use Node.js as our back end technology, which
is awesome and a challenge, because it means that we can
scale very well, but we also have full dynamic
code base in the back.
So that means you have to think about how you do things.
So the Google Drive integration API, Cloud9 uses a
virtual file system behind the IDE.
And this virtual file system effectively abstracts all our
file access.
So that means that to make a very nice mapping to Google
Drive, we effectively mapped our virtual file system in the
back to the Google Drive API.
So here you can see that you can then save a JavaScript
file from Cloud9 directly onto your Google Drive, which is of
course very basic.
But it is nonetheless very useful to be able to use a
full IDE on your Drive.
Right now we've virtualized access, so that means that
where accessing the API for every file.
We don't actually sync your entire Drive contents to a
server of ours, but that could definitely be a cool feature
if you also want to run your Java source.
But it will take extra time if you just want to edit it.
Another thing is images and upload.
Here we're going to upload an image and show it in Drive.

My video cut short.
But I want to show you some code, some actual code that we
use for this integration.

This is effectively our Drive integration
code that we're using.
This is Node.js.
We talk to OAuth with a token, and then we effectively just
talk against the HTTP APIs here, iteratively to get our
files and build up the virtual file system.

One of the optimizations that we run into is that maybe I
didn't look at the 2.0 APIs yet, but maybe one of the APIs
can make it a lot easier to do batch processing of lists of
files, because everything is stored by ID.
You have to do a lot of requests to get IDs.
There are definitely ways to get more
tight integration going.
So if you do it really in a basic way, it might take too
long to get all the information from Drive that
you want to represent in your UI.
So there's different ways to do it.
I definitely could say that we still have some optimization
here, but it's actually a pretty clean and
simple API to talk to.

And another thing I wanted to show was what was coming up
for Cloud9, because it's a nice demo moment.
And you can all see that this text editor starts to become a
little bit chuggy when it scrolls.
For that reason, we have used another cool feature that
Google is enabling for many developers, and that is to use
WebGL as a text viewer.
So this is actually sub-pixel anti-aliased text now.
So the browser is becoming an actual really cool platform
with Drive in Chrome, as you can see.
You can do this kind of performance on a MacBook Air,
which is not necessarily the most overpowered video card.
I think we can see where we're going in terms of
responsiveness of the application.
So soon with Google Drive and an application like Cloud9,
the whole experience of the application will actually
start improving desktop applications.
You don't have to bother where your files are anymore.
They're in the cloud.
You don't have to actually get a lesser experience, because
we can now get a better experience on the web.
And another really cool feature that's a little bit of
a lab project-- this will make it out into the release pretty
quickly, but this one is a real bit more tricky--
and that is that because you have now more screen space,
you can actually start to do full code
traces of all your code.

It's two different screens.
But as you can see, I just reloaded the server, and it
dumped a full code trace of what is going on in the
Node.js code here.
This is a very simple Node example that is just loading
files, and doing web sockets, and that kind of stuff.
But you can see that as soon as we get more and more lines
of information that are useful to see what's going on, we
might also want to get a more
high-detailed view on the data.
So if you can scroll through code tracings like this, then
it's going to be pretty awesome.
The only problem is as soon as I turn on tracing, I
effectively blowout of virtual NIC somewhere.
So we're going to have to make sure that we stream the data
to the client in a cloud appropriate manner.
But other than that, these are the two features
that I wanted to show.
I think I also have a video of collaboration.
That's going on, let's see, did I fall out of my
presentation somehow?

All right, well then collaboration will have to
wait online.
You can try it out right now online.
We will release the Google Drive integration as soon as
we think it's performance ready to go, but it's
going to come out.

You can try Cloud9 online right now.
We had a big launch today, so I'm a little bit tired
actually after working all night.
But it's pretty awesome.
We have real time collaboration on code, your
own terminal, and the cloud is going to be awesome.
Thanks Google.

NICOLAS GARNER: All right, thank you Rik.
What I actually really like about Cloud9 integrating with
Drive is that you can use Cloud9 to edit your code, your
Java files for example.
But you'll be able to use other applications, for
example Pixlr Editor to create the image assets of your
project if you're creating a website or webapp, or even
to schedule the development of your website, and any other
applications you could think of that are integrated with
Google Drive, and keep all these files inside the same
drive folder.
So that's what's going to be really cool is all this
interaction between all these apps.
And Cloud9, thanks for integrating.
I was really waiting for this actually, personally.
I think it's an awesome think what you just did.

The third company who is here with us today is actually
pretty known to most Android users in the room, since they
were developing the official image gallery that was shipped
with most Android phones.
And they're now extending their horizon and have
prepared some really cool stuff to show you, using the
version two of our SDK.
So please welcome Austin Shoemaker, the CTO and Founder
of Cooliris.

So quick introduction to Cooliris.
We're a Palo Alto based company of 14.
Two things that we're mostly known for, one is
the Cooliris 3D wall.
This is a browser plug-in that has seen about 45 million
installs on desktop browsers.
And also, as Nicolas mentioned, we develop Android
Gallery app that shipped with Nexus phones back in the day,
and even through today.
What we're now focused on is enabling a better, more
personally relevant, more immersive experience to
discover media on mobile and web platforms.
And so we think we can really bring together your personal
cloud with the social networking space, and create a
much more intertwined experience.
And we'll show you some of that today.
When we were deciding how to integrate with Google Drive,
we had four goals for this demo.
The first is to build a visual timeline of all of your media
that's in Drive.
The second is to enable you to search by name
or text in the images.
So one really cool thing Drive does is indexes your images
for text using OCR, and also recognizes landmarks in images
and indexes those as text as well.
Super cool.
And the third is instant upload from
camera directly to drive.
And finally, the app is enabled to update in real time
as things change in the Drive.
And then after the demo, I'll explain how we
built all these things.
So this is our tablet app here.
So I can just jump into Google Drive.
This shows me all of the media that's in my Drive, so I can
browse through it in this timeline.
I can select any photo to view it in high resolution.
So I don't have to navigate in and out of folders and go
forward and back in my browser.
And, in addition to just browsing
content, I can search.
So the first thing I'll search for is flower.
So the cool thing is that these are not
actually called flower.
It's recognizing that there are flowers in these pictures.
This is all Google's demo.
So we get credit for this, but this is fricken cool, right?

So if it can recognize objects, another thing it can
recognize actually is landmarks.
So if I search for Taj Mahal, it will go through and find
all of the images that actually
contain the Taj Mahal.
And one really cool thing--
we just dumped a bunch of photos from our
India trip on here.
In this photo it recognized the Taj Mahal behind a bunch
of my teammates.
So this technology is just amazing, and we're able to
leverage it automatically by just doing a query.
And finally I'll do a search for a place.
So I can look for Germany.
And we found this almost by coincidence.
It's actually finding landmarks in the images.
It knows they're in Germany, and then it's
showing them in the app.
So these are all pictures of places in Germany.
So it's really powerful and automatic.
So that's an example of browsing and searching media
on my drive using the v2 API.
The next thing I'd like to show you is how this
integrates with sharing in Google Drive.
So I'll switch over here.
Here I have two different Google Drive
accounts logged in.
I have this folder of images from Barcelona, and I'd like
to share that to the account that's signed in over here.

So I can just go to the standard Google Drive Sharing
API, and then Add the demo accounts.

And now that that's been shared, I believe
those photos are new.
I think so.

Yep, so you can see that the photos from this folder have
been shared into my primary feed.
So the next thing I'd like to show is actually camera
We've built a very simple camera app.

And I can take pictures, and that's uploading now, and just
finished uploading.
So now it appears in the Drive pretty instantly.
So I'll take another couple pictures over here, and then
as those upload, those will stream through the Drive, and
then we get changes from the API, and they'll appear in the
tablet screen.
So those are the photos that I just took.

And one really cool thing you can do with this integration,
because we use Google APIs to do single sign on with our
account, in our app you can share photos to private
So here I can select one of these photos I just took, and
actually say I want to share these photos into one of my
So I have this conversation going on with people back at
the office for Google I/O, so I can just tap here and it
drops my photos into the conversation.
And now I can go out and view that conversation here, and
here are all the photos that I just shared.
So all of these files came from my camera, through Google
Drive, into our back end service, and to the users that
were in that group.
So really easy to integrate between the two services.

And that is what I wanted to demo.
So now we'll get into how did we build this, and a couple
things that we learned while doing it that maybe will be
helpful for those of you who are planning on doing some
So things that we used, the Objective-C client library is
in alpha now, so you can get that.
That will handle OAuth authentication, authorization,
and then provides a wrapper around the API that makes it a
bit easier to use.
So we use OpenID Connect with OAuth 2.0, so that gives us
the user's email address and profile, very easy.
We request the drive scope.
So there are different scopes that you can request to
authorize to different things in Google Drive.
The drive scope gives you access to
all the user's files.
This lets you build something that accesses everything.
The drive.file scope gives you access to files that are
created or opened by the app, but since we wanted to let you
access everything, we request this scope.
And we're using API's from the v2 release of the API.
For browsing and searching images, this is our recipe.
We request the files list, and you can specify a query.
One cool thing about Google Drive
Queries is their structure.
You can actually give it a conjunction of search terms.
So here what we do is we request from the full text
index something that contains what user types, so like
"sunset." We request only images, and we request things
that haven't been trashed.
And then when this response comes back, you get a list of
file objects, and it includes the next link that you can use
to paginate through.
So really easy to get a paginateable list of results
for a specific query.
And a couple of things to note, you can go and make your
requests way faster if you do these things, and it's
documented on the API, but I just wanted to
quickly point it out.
Partial responses--
there's a ton of metadata that gets returned with every file,
so if you say which attributes you care about, it can return
a partial response which is much more compact, and it
loads a lot faster.
You can reduce the page size.
So if you say maxResults and set it to something like 20,
the page sizes will be smaller, and then you can page
more frequently and lower your initial load time.
Enabling Gzip responses is easy, and it makes responses
come back faster.
And they're more tips on the API website,
which is really cool.
This is the next thing that we did.
You saw the real time updating.
There's not yet a push API, but we're able to implement
efficient change pulling by synchronizing from the change
list that's built into the API.
This is basically the best way to load a collection and then
bring it up to date.
So About basically tells you about the status of the Drive.
So all of the information that you need to know.
The most interesting one for this is largestChangeid.
So every update to Drive increments the
Changeid for the Drive.
And that gives you a number you can
use to pull for changes.
So you first get the largestChangeid, which is then
going to be a lower bound for the changes in
any subsequent request.
So when you get files, then any changes that occur after
that will be since the largestChangeid that you got
in step one.
So after you start paging through files, you can start
to actually pull changes at whatever rate you want, or
when people hit refresh, and you pass startChangeid with
the one greater than the largest Changeid
that you got before.
And this way you can, instead of re-querying and pulling the
entire list of results back, you can
get just what's changed.
And so if you say includeDeleted equals true,
it'll give you tombstones, which you can use to remove
stuff that has been removed from the Drive
from your local cache.
So if you use the ID of the file, it's really easy to do
You can see, OK here's a change file.
This is the local cache I have.
I can either update it or move it if the deleted
flag is set to true.
And then it returns a new largestChangeid which you can
use in your next request.
So this is the recipe for that.
It's pretty quick to implement and very fast.
And there are rumors that they push channel will come in the
future, and then we will be able to avoid the evil of
polling, but in the meantime, that's how you do it.
And then for uploading, there are three ways you
can upload to Drive.
So for our camera app we looked at these possibilities.
Media is the simplest one, though it's limited to two
megabytes, and you add megadata.
So we picked multipart.
It's a simple HTTP request multipart MIME document.
The first part is metadata, so you can specify the title and
any other information you want.
And then the other part is the binary data.
So we use that.
There's also a resumable upload type, which is useful
if you have a large upload and you want to be able to
continue from where you left off if you get interrupted.
So that's great for large uploads
on unreliable networks.

Using the API has been a really great experience.
And I think that the search powered by OCR and image
recognition is really, really useful and awesome, and it's
great to get that for free.
And looking forward to--
push notifications will be great; getting more metadata
around files, like image metadata, Exif; and actually
getting information from the recognizer
are on my wish list.
Though there's a lot of work with now.
And it's very exciting to be able to build experiences
around this product.
So that is all I have today.
Thank you for your time.

NICOLAS GARNER: All right, Austin.
Thank you, Austin.
It's actually a really cool showcase of the OCR image
recognition that is built in Google Drive and not available
to you through the API.
So everyone, there is still a lot of space left for you to
For example, as far as I know, there is no application that
handles the following file formats that are listed here.
Personally I'd really like to see an animated GIF editor.
That'd be pretty cool.
But most generally, I think most apps could make good use
of integrating with a user managed storage, such as
Google Drive, And we really, really need you guys to build
cool and useful Drive apps that will make Google Drive a
really interesting online storage
solution for our users.
That's going to be one of the big, big selling points for
Google Drives is your apps actually.
So please guys, build great apps.
And that's it actually.
Thank you very much for coming.

And of course I'd like to thank again Till, Rik, and
Austin for all the work they've done.
And we'll be happy to take questions, all of us.
So guys, if you can come on stage.
And if anyone has questions, please feel free to walk close
to the microphones in the room.

They're all fleeing.

All right, cool, we have one question here.
AUDIENCE: The Objective-C client API.
Is that something you built yourself,
or is it open source?
NICOLAS GARNER: Sorry, could you repeat?
I didn't get the beginning.
AUDIENCE: The [? iPad ?] app with what the Objective-C
client API.
Is it a open source client--
AUSTIN SHOEMAKER: The Objective-C client library?
It's open source.
NICOLAS GARNER: Yes, I think we released it this week, or
like a few days ago.
It's built by Google, and it's available--
I mean, it was already available for our other APIs
we had, and we just released a Google Drive version of it.
It allows you to easily do things like authorization and
authentication using OS/2.
That's all built in for you, and then all the useful Drive
API access.
We made that really easy as well.
Thank you.
Yeah, OK in front.
AUDIENCE: Does Cloud9 support regular Java?
I didn't see it on the list of supported languages.
RIK ARENDS: We've just released the fact that you
have your own workspace where you can run Java, and C, and
anything you want.
We actually have a Java debug integration that is very far
along, but we're just trying to figure out how to actually
deliver this in cloud scale, because it requires a lot more
server side processing than what we're used to do.
So with the new VM support you can run it, and when we get
the right data streams wired up you can also debug it.
AUDIENCE: Thank you.
I'll also be using Mindmeld.
I've been using [INAUDIBLE] to do the exact
same thing for years.
So that looks really cool.
Thank you.
RIK ARENDS: Thank you.
AUDIENCE: All right, this is kind of a more general
question for just Drive in general.
So I know you guys have Picasa and Google+ photos that you
guys store photos and videos, but that's kind of separate
from Drive.
Is there any plans to integrate that?
Because right now there's a cool video editor application
that uses Drive, but you can't access any of the videos or
photos in Google+.
NICOLAS GARNER: So your question is about a possible
Picasa and YouTube merge with Google Drive.
AUDIENCE: Or just even videos from Picasa that you
NICOLAS GARNER: So actually, we have the program manager
from Drive right there.
You can probably reply to this question in a more appropriate
way that I can.
AUDIENCE: All right.
NICOLAS GARNER: Can you share the answer with us for the
video on the microphone.

GOOGLE DRIVE PROGRAM MANAGER: So nothing too specific, but
these are definitely things we're thinking about doing,
because we'd want to bring the power of Drive apps to all
this different content.
But still very early in that process.
Thank you very much.
Next question.
AUDIENCE: I'm working on an app that asks the user to
upload images to then be used later to be displayed on the
web on behalf of that user.
And in the past, I've worked with Picasa web to do that
work, or they'll publish their images to Picasa web, and then
that will get pulled into the app.
Should I continue to use Picasa web for that, or should
I switch that over to Google Drive?
NICOLAS GARNER: Could you repeat again your question,
especially the beginning?
It's just that we get bad feedback from here.
So I have an app that allows the user to upload images that
they would then later use to share with other people.
Should I continue to use Picasa web for that, or should
I switch that over to use Google Drive?
NICOLAS GARNER: That's a good question.

Picasa is really nice to share your image publicly.
Google Drive is really powerful to share your images
only to a selected set of people, and you get nice
integration like what you've seen with Pixlr
Editor, where you can--
I mean if you share your image was someone in Google Drive,
these people will be able to edit it or open it with Pixlr
for example.
That's something you don't get the right now on Picasa.
The pica size is a little bit better for sharing the image
just publicly.
People can see your albums, and stuff like this.
So for now, it's up to you to make that choice, and
hopefully we can work on some better Picasa and Google Drive
integration in the future and provide an even better
experience, the better of both.
Thank you.
AUDIENCE: My question is about the--
how granular is the scope limitation on applications
that use Google Drive?
In the example that was shown, you have a scope for your
entire Google Drive.
Can you limit by, let's say, file type, like only images,
for example?
NICOLAS GARNER: So not right now.
Right now the only scopes that are available are the full
access scope.
So for example the one you guys are using at Cooliris and
you guys are using at Cloud9.
And for example, MindMeister here is using the other type
of scope, which is the profile scope.
And in here, you have to actually use the Google Drive
UI to open files.
And only the file that has been opened through to Drive
UI, or through the picker-- there's also a little
JavaScript widget which you can integrate
into your web app--
and only the files that the user has manually selected to
open through our UI will be wait listed for you to access
through the API.
So this is the profile scope, only accesses the files that
the user has chosen to open.
But we're working on more scopes as well.
That's actually a really good idea, for example, allowing an
app only to access images, or allowing an app to only access
files that are in a specific folder, for example.
That's a pretty good feature request and definitely some
things that we are considering which might get
added in the future.
So thank you.
AUDIENCE: So, just interested in the Google Drive offline
And so if I'm collaborating with somebody else, and I go
jump on a plane, and then they're changing the document,
I'm just wondering with each application what I could
In other words, is it like [? GitHub ?] like replication?
Is it like a paragraph level replication?
Is it document level replication
when I sync back up?
NICOLAS GARNER: So you're talking when you're using
specifically the sync clients, right, and all the files get
synced to your hard disk?
So actually if you modify them with anything and you come
back online, this file will automatically detect the
changes, and when you get your connection back we'll start
syncing them back to Google Drive.
It's currently how it works.
So as soon as you get back online, the sync client will
start sending the changed files back to Google Drive.
Does that answer your question, sir?
AUDIENCE: Not quite, because I'm interested in Federated
databases, at what level I'm able to merge.
Is it at the document level, so in other words, if we both
make a change--
NICOLAS GARNER: You mean, if two persons change the same
file, and in a different way, and want to
merge that doc, right?
So currently, actually I don't really know how that works.
I think it's probably the latest that's going to win.
So the one with the latest date that we're going to keep.
We don't currently merge, as far as I know, the content of
the files themselves.
Though we're working on some stuff in that area that are
going to be available in the API, but I can't tell you more
at that point.
So that will be useful in that area.
AUDIENCE: Thanks very much.
It's a good answer.
AUDIENCE: A related question, on the Cloud9 app that you
were showing earlier, it looked like you had multiple
people coordinating on the same workspace.
Is there any synchronization going on through your Drive
API, or is that all out of band?
RIK ARENDS: Well we were just accessing, effectively, the
API like a virtual file system.
So another way to do it is to sync to your local drive,
which is actually a really good idea if
you want to run code.
The way to think of the collaborative workspace is
that it's really a single workspace, so
you're working together.
It's not a synchronization thing like get or anything.
You're working together on the same files.
Or you're working on your own workspace, and then you use
get to sync source.
It's two different ways of collaboration.
AUDIENCE: Right, but in the virtual file system case in
prior systems that do things like that, if you have
multiple users on the virtual file system at the same time,
and this is a connectionless kind of environment on the
web, what happens if the connection drops for a little
bit, so both of--
RIK ARENDS: We have a collaboration algorithm that
deals with that.
So it's like OT but different.
It's a different algorithm that's behind
the actual text syncing.
It's actually really interesting.
We can talk about that.
But that's more of a--
you're collaboratively working on the document, and if
something dies, and you go offline, and you close your
browser, then your edit stuff in that browser will be gone
unless you have been online.

It's ethereal, so you do need to make sure that you save
your file, or that one person takes the
authority on the file.
It will autosave, but it doesn't really take the
responsibility away that you're actually writing code.
Yeah I think I'll have to take it offline.
RIK ARENDS: So it works for the real case, but you could
always find an edge case, like, yeah I went offline, and
then I flew there, and then I wrote some code, and then I
flipped my computer, and now I have two de-synced things.
You could also just copy some code over.
You don't have to implement get to have use cases that are
really far out solved.
AUDIENCE: Right, well that's why recent file systems
usually don't do multiple users mapping the same file
for right at the same time.
RIK ARENDS: Yes, I think we need to separate those use
cases pretty clearly, so you can have two different ways of
dealing with synchronization.

RIK ARENDS: Can only use offline files on a Chromebook,
or can I view pictures through a Cooliris plug-in on a
Chromebook if they're offline?
AUSTIN SHOEMAKER: So how would the user access Google Drive
if they're offline in Cooliris?
AUDIENCE: On the Chromebook.
AUSTIN SHOEMAKER: Well right now, this is an online demo.
So every time you do something it makes an API request.
So if we wanted to, we could synchronize the image metadata
and thumbnails to the local device and let you browse
through it, and then use the changes API to sync and bring
it up to date.
So we could do an incremental update when you come online.
So we haven't built that, but it would be easy to build
using the API.
And the second question was, for the scope in the Drive
list, it's limited to the files you've registered, is
that correct?
Or you can see other files that you have registered?
NICOLAS GARNER: Sorry, can you again say the beginning of
your question?
AUDIENCE: Yes, for the Google Drive list API, if I've
registered my plug in with one particular file type, is the
scope limited to only seeing that particular file type, or
can I see other file types?
So for example, let's say I have registered jpeg.
Can I see PDFs as well?
NICOLAS GARNER: If you're listing files using the API--
so there is actually--
I think you guys are doing that.
You're filtering on the images.
You're probably using the search query parameter?
AUSTIN SHOEMAKER: We use files list, and in the query
parameters you can say MIME type equals and then specify
the MIME type that you want to filter by.
In terms of access control, the drive scope gives you
access to all files.
The drive dot file scope gives you access only to files
opened or created by the Google Drive
API, as Nicolas said.
So you can filter using the API, but there's no way to get
permission to a single file type via [INAUDIBLE] scope.
Not just scope, but when you search, specifically you can
search and list files of only certain MIME types, which you
can list, and you can list multiple MIME types, right?

Another question?
AUDIENCE: Last question maybe.
Cloud9 is great.
I use it for Node.js development, thank you.
Is there any chance that you will actually build in the
synchronization to Google Drive?
It would be a really nice and quick way to get a local
instance of my Node.js app running as a snapshot or
working directly, instead of using get.
RIK ARENDS: Yeah totally.
I really like the idea of synchronizing the Google Drive
or part of a sub-directory of Google Drive--
preferably not the whole thing--
to one of our cloud workspaces.
I think that's a really cool way to do it.

We do have to put some fences up, as I said, about the use
cases because, DVCS doesn't exist for no reason.
And so you need to make sure that if you collaborate, you
collaborate with different people in different time
zones, you can use DVCS because you're not pair
And when you're actively on Skype or on a new fancy HTML 5
audio link, which we'll hopefully have soon, you can
use clicks, Cloud9 to pair program and to do that.
So the gradient between this asynchronous collaboration and
a synchronous collaboration will fill in over time with
different types of code review, asynchronous,
integration with issues, there's a whole gradient in
between, but that will take time.
All right, thank you.
AUDIENCE: All right.
NICOLAS GARNER: All right, if this is it, thank you very
much again everyone for staying and for attending.
And Thank you guys in implementing
Drive on your product.