-
Notifications
You must be signed in to change notification settings - Fork 8
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
[RFC] Git integration for decentralized OSS and mixed go-imports (bonus) #36
Comments
I had been looking into this, and maybe we can follow a different approach:
We can implement a special proxy that detects a specific import URL, like We can also serve transpiled go code depending on the import path; if Edit: I realized that we can ignore the step of querying the default proxy.golang.org server, because GOPROXY is a list. so we can modify the env variable to something like: @moul WDYT? |
gnomodproxy PoC here: gnolang/gno#727 |
Great! I like the idea of using the official proxy feature to make it transparent from a Go perspective. We could reuse a similar approach for |
Hmm. It's not clear to me from this conversation what the significant advantage to proxying would be. As far as I know, proxy.golang.org exists and makes sense because large Go repositories tend to build over time complex dependency graphs and the time for a first I think that at the scale that we are now, and because there are currently no realms pulling other packages and sources from hundreds of different sources, a proxy would be a solution to a problem we don't have, adds a (default) chokepoint/SPOF (which can be disabled, but I imagine would still be active by default), and poses a problem of trust (ie. that the contents in the proxy are untampered, up-to-date and match the original source's). I'm probably missing something and want to make clear that I'm very much open to a change of heart; but I'd like to better understand what the reasoning behind adding a proxy, and if so at this stage, would be. As for the automatic transpiling; I think this should not be done at the proxy-level, but rather it should be done at the gnoweb/website level, so that working with Gno code from Go works out-of-the-box, without setting up a proxy. For instance, when I make a request to <meta name="go-import" content="gno.land/p/avl git https://test3.gno.land/gitproxy/p/avl"> So we would have a way to download the "repository" at We could also make this transpile to Go code for packages, and to Go code but using SDK clients for realms. |
@thehowl The idea was to use the gomodproxy protocol, not to create a specific proxy itself. It is basically the same as using the HTTP git protocol. I think we will have some advantages doing that approach instead of downloading directly from git endpoints:
So, the idea is instead of using a git repo URL from your example: |
I think that cannot be the case, and we should have at least version tags to support gno.mod in the near future, something that is already solved if we use the gomodproxy specs. |
Disclaimer: This is an early issue and not a current priority. However, with new team members and previous discussions, I wanted to create an official forum for future discussion.
Context: recently, we welcomed @ajnavarro to our team. Before joining us, he worked on the development of go-git. Another member of our core team, @harry-hov, has contributed to @git in the past and is now focused on porting
go mod
togno mod
by fetchinggno
dependencies from the chain, which differs from the waygo
usesgit
for this purpose.Three initial exploration options:
go import
of a gno contract with automatic transpiling of.gno
files.tendermint.org/gno
to boost censorship resistance and migration flexibility. Exploring agit
interface to deliver go sources viagnoweb
,gnoland
, or a standalone service is possible, but probably unnecessary.The text was updated successfully, but these errors were encountered: