We are always working on providing new APIs for Dart. If you have been using Google services from Dart, we are happy to say that the Dart Team is now supporting a client library for accessing a set of APIs to Google services.
Most Google services have an API described by the Google Discovery Service. This includes both Apps APIs (such as Gmail and Drive) and Cloud APIs (such as Cloud Datastore and Cloud Storage).
Based on previous work by GDEs Adam Singer and Gerwin Sturm, the Dart Team has built an API generator to create Dart client libraries enabling access to Google services. We recently published the following two packages on pub.dartlang.org:
The googleapis package contains all the APIs that are available in a stable version. The googleapis_beta package contains the APIs that are currently in beta and possible only available through a Limited Preview program. We will be updating these packages on a monthly basis to ensure that they provide access to new services as they become available.
Along with the generated APIs, we have published a googleapis_auth package that handles all the different authorization models supported to access the APIs from different environments. Using googleapis_auth makes it easy to use the client libraries in a standalone application, on a Google Compute Engine instance, or in the browser.
To get started using the libraries, take a look at the GitHub repository googleapis_examples. The examples cover both Dart code that runs in the browser and Dart code that runs as a standalone program, demonstrating how to access Google Drive and Google Cloud Storage.
For other discussions, see https://groups.google.com/a/dartlang.org/
For HOWTO questions, visit http://stackoverflow.com/tags/dart
To file a bug report or feature request, go to http://www.dartbug.com/new
To unsubscribe from this group and stop receiving emails from it, send an email to misc+uns...@dartlang.org.
However I think the benefit of having all APIs in one package outweighs this.
Maybe for avoid version nightmare of different packages.
Cheers
--
For more news and information, visit https://plus.google.com/+dartlang
To join the conversation, visit https://groups.google.com/a/dartlang.org/
To unsubscribe from this group and stop receiving emails from it, send an email to announce+u...@dartlang.org.
I like the idea that you have one-stop shopping for all Google APIs this way. All these APIs operate the same way, and when you start using one extending to the next one becomes much easier. Discoverability is just better - It provides a clear view of which APIs are available and in which versions.
Publishing 65 packages with longer names is not convenient.
Also as APIs gets deprecated (this is especially the case for the googleapis_beta package) we can just remove them, and there are no "stale" API package sitting in pub.dartlang.org.
The main reasons for having to bump the version number is when one API changes its interface. In some cases these changes also lead to changes in the wire protocol - in which case switching to the new version might even be required.
Of cause this opens the issue when depending packages are also using one of these packages and you get a violation constraint. However, this can still happen when splitting into several packages if the same API is used.
On Tue, Sep 23, 2014 at 7:24 AM, 'Søren Gjesse' via Dart Misc <mi...@dartlang.org> wrote:I like the idea that you have one-stop shopping for all Google APIs this way. All these APIs operate the same way, and when you start using one extending to the next one becomes much easier. Discoverability is just better - It provides a clear view of which APIs are available and in which versions.Yeah, that makes sense. Though it does reiterate that we have more work to do on package discoverability in general. Unfortunately, we've never had the resources to work on that side of things. :(Publishing 65 packages with longer names is not convenient.This is a fair point, though I personally lean towards making package consumption more convenient than package publishing. If it's better for users to consume a bunch of small packages (not that I'm saying it necessarily is in this case), I'd be willing to make it more of a hassle to publish them to get that. Packages are consumed more frequently than they are produced.
Also as APIs gets deprecated (this is especially the case for the googleapis_beta package) we can just remove them, and there are no "stale" API package sitting in pub.dartlang.org.There won't be a stale package, but there will still be old versions of the monolithic googleapis_beta package that contain those deprecated APIs.
The main reasons for having to bump the version number is when one API changes its interface. In some cases these changes also lead to changes in the wire protocol - in which case switching to the new version might even be required.I think my main worry here is that you'll be stuck on a very fast-moving version treadmill. Now when any of the APIs makes a change, you have to bump the version and republish all of them. With 65 packages, you may find yourself at major version 4,328 before you know it.Revving major versions frequently makes your package very hard for users to consume. Shared constraints are common, and a constraint on a package always excludes the next major version that hasn't been released yet (since it may break the package using it). When you rev major versions frequently, it means other packages using you get outdated quickly.That in itself isn't a problem. Users will just keep using the older version of your package. Where it is a problem is when users have shared dependencies on packages that all depend on googleapis_beta. There's a good chance those two (or more) packages won't depend on the same major version (since the window of time where that was the latest version is small) and you'll end up with a constraint failure.You can ask the analyzer folks how much pain that caused. :(Of cause this opens the issue when depending packages are also using one of these packages and you get a violation constraint. However, this can still happen when splitting into several packages if the same API is used.
This is true, but the solver handles a large number of stable packages more easily than a small number of quickly changing ones. It's simpler to pick the latest version of a hundred packages than it is to try to determine which of a small set of packages it should start backtracking on.Cheers!- bob
--
For other discussions, see https://groups.google.com/a/dartlang.org/
For HOWTO questions, visit http://stackoverflow.com/tags/dart
To file a bug report or feature request, go to http://www.dartbug.com/new
To unsubscribe from this group and stop receiving emails from it, send an email to misc+uns...@dartlang.org.
I'm surprized there's no response.
What do you think about providing a bunch of separate, separately-versioned packages as well as one "one-stop shopping" package that just depends on and re-exports all of the separate packages?
I don't see a problem by publishing a package that is not useful on its own.This needs one line in the readme and should be done.If someone wastes time by trying to use a package that says in the readmeDon't use this package as a direct dependency, it is only to be used by other Google API packages.he is beyond help.