We’ve teamed up with API Usability Testing to offer you usability reviews for different APIs. API Usability Testing offer remote API usability testing where tests are performed by a broad range of software developers who have different experience and qualifications.
We’re starting with the Dropbox API and we’ll be doing it for other providers on a regular basis. Please get in touch If you’d like to see a review of a specific API.
Dropbox API usability tests were performed by developers with a range of experience six to eight years working with all the major programming languages. All tests were done using Node.js on three different platforms:
- Apple OSX;
- MS Windows 7;
- Ubuntu 14.04.
The test is divided into five sections, starting with authorization and ending with writing a record into a Dropbox datastore.
Obtaining authorization credentials
All testers reported that they couldn’t find an official Node.js SDK or a tutorial on how to use this programming language to interact with the Dropbox API.
On the positive side, being able to generate OAuth credentials without writing any code is much appreciated and really helps when you’re starting to write a client.
Obtaining information about the authorized user
This was a fairly simple task to test, as reported. All developers could easily access information about the authorized user by following the appropriate documentation.
Uploading a file
Although the task looks relatively simple, some of the testers had trouble using 3rd party modules. In one of the cases there was a problem with the file name itself and in another case, a specific object attribute that should be public was found to be private.
Another note is related with the dropbox-js Node.js module: the source code is available under the official Dropbox GitHub account but the module itself is considered unofficial.
This might create a confusion among developers because it’s not clear why this particular module is under the official Dropbox GitHub account.
Creating a new datastore
Although the available documentation was considered satisfactory, lack of availability of this feature on 3rd party modules made the task complex to handle.
Some of the testers had to spend 1 hour trying to understand why the 3rd party module wasn’t behaving as expected and then implemented the feature from scratch.
Writing a record into the datastore
Some of the developers reported that they couldn’t really understand how to push information into the datastore because they couldn’t understand the correct syntax.
The issue is with the documentation that might not be the best for an audience that doesn’t know what a delta is and is more used to deal with tables and records.
Because there’s no specific reference about creating a record it might be hard to associate the /datastores/put_delta method with record creation.
Summary
The biggest issue developers found is related with the lack of an official Node.js module. Without an official SDK they had to put bits and pieces together from different Node.js modules to make things work.
The official documentation didn’t add much value because it lacked a specific Node.js tutorial or, at least some examples using this programming language, testers reported.
Another suggestion is related with 3rd party modules, where Dropbox should officially test and approve the SDKs that are linked from their documentation.
All in all, Dropbox API is well designed and fits well into its target use cases. Documentation could be improved, making developer on boarding experience much smoother.
Original test results
The original detailed test results, as reported by API Usability Testing can be found at the following links:
Each report provides detailed information about the tasks performed and also the code used to perform different tests.
Thanks for doing this! Clearly there’s a lot of work we could do to improve things for Node.js developers. Frankly, I’m impressed that all three developers managed to work with the Datastore API despite there being no library (from us or a third party) for using that API with Node.js.
I’d be curious to see how a similar usability study would go if a supported language/library were used (e.g. Python or Objective-C).
Feel free to reach out if you have any questions about the Dropbox platform: smarx@dropbox.com. I work on Dropbox’s developer relations team.
Thanks for the comment, Steve!
I’m sure the results would be better it a supported language were used but Node.js is increasingly gaining popularity and it would be great if Dropbox started supporting it.
nice website and nice review!
Pingback: Usability Review: Dropbox API | API Usability Testing – The fastest way to get feedback on your API
Nice writeup and tests! I’d love to see a more intuitive chunked upload interface in the node library (without micro-managing the chunk cursor) – a major gotcha in uploading large files with writeFile in node’s async environment is keeping these enormous buffers in memory, which doesn’t scale out too well.
Thanks Michael!
Are there any other APIs that you’d like to see tested?