#Any good first issues?
1 messages · Page 1 of 1 (latest)
Thank you! That is a great question. What kind of contribution would be a good fit for you?
I think there's a "help wanted" label
There’s one - kind/external-help. Can i start with these?
I am thinking to start with sdk. I know go and java. And later on get into more complex areas
@real bolt that's very kind. Yes we used to have more, but did a label cleanup last year and this got lost
One thing you can do is look for a bug to fix that is easy to reproduce and not too hard to fix. Like a "paper cut".
https://github.com/dagger/dagger/issues?q=is%3Aissue state%3Aopen label%3Akind%2Fbug
I will think about good candidates in the meantime
Oh, yes that is perfect. I would start with that list 👍
Thanks for the list. I will start picking up something from it.
@real bolt shout if you need a hand with anything! yes, all help appreciated ❤️
if you want more context on anything, happy to share, i should be able to help with anything engine + go sdk related
Sure will reach out to you if i get stuck. Thank you 🙂
@low parcel I am wondering is there a documentation explaining about the file structure of the project? I am having a hard time setting up the project. All I see is bunch of unrecognized packages and functions. However, they are only in .dagger folders meant for performing operations on rest of the code. I am yet to explore full code. Was able to compile and build a dev cli and run it.
@real bolt we use dagger to build dagger.
Try running dagger without argument from the root of the dagger repo
Thanks @edgy venture , I was able to fix first issue. https://github.com/dagger/dagger/issues/10107. Will raise a pr soon.
dev instructions are in .dagger/README.md if you haven't found those yet.
other tips regarding layout:
cmd/dagger/is the CLIcmd/engine/is the entrypoint for the engine (shipped as a container)core/schema/defines the engine's API, built with the api framework indagql/.dagger call generate -o .to regenerate client bindings, including the go bindings used by the CLI, after you change the API.- the other files in
core/contain most of the core logic, assembling pieces fromengine/. in my experience if you find yourself wanting to editengine/buildkit/, you've probably gone too deep (obviously issue-dependent though) - the go SDK is a little different from all the others, and is used to bootstrap them
core/integration/contains the bulk of our tests. there are multiple test styles in there, generally you want to copy the ones that call a go sdk client, not the ones that call the graphql API directly. run these withdagger call test specific --helpand it'll take care of rebuilding the engine and CLI for you.hack/devwill let you export an engine to docker, and thenwith-dev daggerwill set up PATH to use a cli built bydev. this also lets you run go tests directly likewith-dev go test. you can drop yourself into an containerized shell with a built engine & CLI by doingdagger call dev terminal
this is actually a good question for an LLM 🙂
I don't think we have this documented anywhere currently
Thanks for the detailed explanation. This is very helpful
Another question. I was building the cli after changes using dagger call cli command which was little time consuming during builds. I started the engine locally, and used go commands to build the cli that connected to that locally running engine. Is it the right approach? And are there any options available for setting up a debugger?
the engine locally, and used go commands to build the cli that connected to that locally running engine. Is it the right approach?
yes, that works as well.
And are there any options available for setting up a debugger?
I don't think anyone has attached a debugger in the engine yet 🙏
Okay thanks. I have setup a debugger now with CLI. It can really help in debugging.
One more question, what is the reason of having a fork of graphql go implementationdagql within the project itself? Is it for long term maintenance of the framework? Or there is some some other reason?
ah 😛 it's kind of drifted since being just a basic fork
originally, we just needed a few extra bits and pieces
but, it's now become a very opinionated framework, with a lot of improved caching logic
also, we've kept extending it as well, for example, the introspection apis are more powerful than just standard graphql
got it. Little overwhelming but okay. Still exploring the codebase.
lol wait is it really a fork? I had no idea
it started like that i think
cc @rough garden 😛
it's not a fork
it's a much more opinionated implementation of a graphql server, from scratch, designed for dagger semantics. it started here (should probably archive that repo)
phew ok that's what i thought (forking here is considerably more deranged than having an alternate graphql impl)
we had a fork at some point to work around some cruft, but most likely we would have ended up down this path regardless
our graphql api is also fairly unusual, like it doesn't have normal graphql mutation/get semantics, everything's a get and those gets all represent (cached) function calls and function composition
yeah, and our IDs are all automated
traditional GraphQL has opaque IDs relying on persistence somewhere
the automated IDs are
they're normally quite the pain in the ass
and a single ID type
Okay. I also want to know how to get session token. I am trying to run engine locally and want to call graphql APIs via postman. Major problem is to get the auth token. I used . export _EXPERIMENTAL_DAGGER_RUNNER_HOST=tcp://0.0.0.0:1234 and dagger session commands to get the token, however its impossible to copy the long token from itIt just freezes the entire terminal and no operation works. I have to kill the session. I guess a issue already exists related to this. With trial and error, i was able to figure out API needs A panic was happening due to missing labels. Is working now. Also is there a way to run engine from the local source code instead of downloading image from registry? I want to debug https://github.com/dagger/dagger/issues/9890. I wish to run engine directly by compiling it and attaching a debugger to it.X-Dagger-Client-Metadata and I was able to construct it. The problem I am encountering now is I am unable to get anything from the API. The server is just not responding and the request keeps loading and loading without a response.