Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Should we publish a separate module (gem) for each Google Cloud service? #341

Closed
quartzmo opened this issue Sep 30, 2015 · 2 comments · Fixed by #813
Closed

Should we publish a separate module (gem) for each Google Cloud service? #341

quartzmo opened this issue Sep 30, 2015 · 2 comments · Fixed by #813
Assignees
Labels
packaging type: question Request for information or clarification. Not an issue.

Comments

@quartzmo
Copy link
Member

This is the gcloud-ruby specific discussion of the broader conversation in gcloud-common, #30, Should separate APIs be separately installable?. See also @jgeewax's comment in gcloud-node #91.

@quartzmo quartzmo added type: question Request for information or clarification. Not an issue. packaging labels Sep 30, 2015
@blowmage
Copy link
Contributor

This has been discussed before and the current monolithic direction was chosen.

My opinion is that they should be separate. We can manage versions independently, and release hotfixes for one service gem without requiring the other service gems to be updated. I think we should follow what rspec does and have the main gcloud gem have dependencies on all the service gems. And we should have a gcloud-core gem that contains shared infrastructure like Error and Backoff.

gcloud -> gcloud-datastore, gcloud-storage, gcloud-pubsub
gcloud-datastore -> gcloud-core, beefcake (protobuf lib)
gcloud-storage -> gcloud-core
gcloud-pubsub -> gcloud-core

The current behavior would remain, you require gcloud and you get all the services available. But, if you wanted to only use Storage you could depend on gcloud-storage and require gcloud/storage and only have that code. The caveat for this is that right now the unused services aren't loaded and memory isn't used, but the dependencies may be loaded if you are using Bundler and configured it to load everything. This approach would also make development and documentation more difficult since it would span several projects.

@blowmage
Copy link
Contributor

monolith

@blowmage blowmage added this to the v1.0.0 milestone Jun 17, 2016
quartzmo added a commit that referenced this issue Aug 3, 2016
Modularize into separate gems

[closes #341]
@quartzmo quartzmo modified the milestones: Natural Language, v1.0.0 Aug 26, 2016
quartzmo added a commit to quartzmo/google-cloud-ruby that referenced this issue Aug 26, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
packaging type: question Request for information or clarification. Not an issue.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants