-
Notifications
You must be signed in to change notification settings - Fork 250
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
Split this repo? #317
Comments
Thanks for laying this out Tim. I haven't used any of the gnostic tools so please take my suggestion with a grain of salt. I feel like the first approach would make it much easier for projects that import gnostic to upgrade. I went through the experience of upgrading from a It seems like both suggestions go down the route of splitting up the dependencies. In terms of timeline, how quickly would we be able to get approval for a new repo to split up the code? |
Hi @timburks I'm not sure I understand option 1 entirely, what do you mean by: That said, it seem like there already is an established pattern, that supports your second option. There is currently 3 very different uses of this repo.
It might make sense to have a clean repo for Hope that helps. |
Just one more thought: I actually really like the idea of a one-stop project, that can handle everything. |
Structurally, I agree that moving Practically, from the perspective of a kubernetes maintainer, I don't have strong feelings if the openapiv2 / openapiv3 libraries/packages are made available with minimal dependencies (yaml, protobuf, etc) via another module. We have exactly two repos we would need to update, k8s.io/kube-openapi and k8s.io/kubernetes, and could manage that without too much trouble. I'm more interested in being able to quickly pick up library updates without the additional dependencies. |
After further discussion with @Jefftree , I've created a new repo https://github.com/google/gnostic-models that is intended to be a shadow of the gnostic models that
The main repo would stay as-is with multiple child projects, which I think is consistent with @morphar's suggestion that this would help us maintain consistency among projects. Future efforts like https://github.com/google/gnostic-grpc might now be better done in the main repo. As familiarity with and ease-of-use of the Go module system grows, gnostic may become a multi-module repo, but that wouldn't be an urgent need. Users of models could get lightweight, low-dependency distributions by using the I think we would want to automate updates to |
Sounds good @timburks 👍 |
Our recent efforts to configure a multi-module repository did not go well, but the motivating issue remains -- the growing applications in the
cmd
directory add dependencies that aren't needed by consumers of the generated code in theopenapiv2
andopenapiv3
packages.Splitting the repo seems like a more conservative approach to this problem, at least in the sense that it's less reliant on a somewhat exotic and less-understood Go feature that is at least lightly discouraged.
Possible reorganizations:
gnostic-tools
repo, keeping the generated components in place. This avoids breaking users of these components, but would force users of the tools (likeprotoc-gen-openapi
to look elsewhere).gnostic
repo, would have a very limited set of dependencies, and clients could switch to these at their convenience. These would be very similar to generated client libraries in the googleapis org. This also preserves the issues and PR history of the main repo.Of these, I prefer the second. Are there others that we should consider?
@Jefftree @morphar WDYT?
The text was updated successfully, but these errors were encountered: